You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by al...@apache.org on 2014/03/06 02:16:20 UTC
[06/12] git commit: JUDDI-648 adding skeleton project JUDDI-197
merging code from 3.3 into trunk JUDDI-241 merging code from 3.3 into trunk
JUDDI-198 merging code from 3.3 into trunk
JUDDI-648 adding skeleton project
JUDDI-197 merging code from 3.3 into trunk
JUDDI-241 merging code from 3.3 into trunk
JUDDI-198 merging code from 3.3 into trunk
Project: http://git-wip-us.apache.org/repos/asf/juddi/repo
Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/215438e4
Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/215438e4
Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/215438e4
Branch: refs/heads/master
Commit: 215438e4945b0353adcc397803f4f4cf0e0ec603
Parents: bc46aeb
Author: alexoree <al...@apache.org>
Authored: Mon Mar 3 13:17:09 2014 -0500
Committer: alexoree <al...@apache.org>
Committed: Mon Mar 3 13:17:09 2014 -0500
----------------------------------------------------------------------
juddi-client-plugins/pom.xml | 46 +
.../juddi/client/plugins/JGroupsTransport.java | 73 +
.../client/plugins/MulticastDNSTransport.java | 71 +
.../client/plugins/WSDiscoveryTransport.java | 71 +
juddi-core-openjpa/pom.xml | 3 +-
.../src/test/resources/META-INF/persistence.xml | 11 +-
juddi-core/pom.xml | 1 +
.../main/java/org/apache/juddi/Registry.java | 146 +-
.../org/apache/juddi/api/impl/JUDDIApiImpl.java | 311 +++-
.../juddi/api/impl/UDDIReplicationImpl.java | 176 ++-
.../juddi/api/impl/UDDIValueSetCachingImpl.java | 79 +-
.../api/impl/UDDIValueSetValidationImpl.java | 250 ++-
.../apache/juddi/mapping/MappingModelToApi.java | 134 +-
.../org/apache/juddi/model/ChangeRecord.java | 98 ++
.../apache/juddi/model/CommunicationGraph.java | 89 ++
.../org/apache/juddi/model/ControlMessage.java | 54 +
.../main/java/org/apache/juddi/model/Edge.java | 131 ++
.../java/org/apache/juddi/model/Operator.java | 92 ++
.../apache/juddi/model/OperatorStatusType.java | 52 +
.../juddi/model/ReplicationConfiguration.java | 199 +++
.../apache/juddi/model/ReplicationMessage.java | 51 +
.../java/org/apache/juddi/model/Signature.java | 13 +
.../org/apache/juddi/model/ValueSetValue.java | 92 ++
.../org/apache/juddi/model/ValueSetValues.java | 87 +
.../apache/juddi/replication/ChangeList.java | 26 +
.../juddi/replication/ReplicationNotifier.java | 197 +++
.../org/apache/juddi/rmi/JUDDIApiService.java | 72 +
.../juddi/validation/ValidatePublish.java | 370 +++--
.../validation/ValidateValueSetValidation.java | 144 +-
.../ValidateValuesFromWebService.java | 156 ++
.../juddi_install_data/root_BusinessEntity.xml | 120 ++
.../impl/API_150_ValueSetValidationTest.java | 233 +++
.../src/test/resources/META-INF/persistence.xml | 9 +
.../juddi/api/impl/rest/UDDIInquiryJAXRS.java | 8 +-
.../src/test/resources/META-INF/persistence.xml | 9 +
juddiv3-war/JAX-WS/CXF/WEB-INF/beans.xml | 7 +-
juddiv3-war/JAX-WS/JBossWS-CXF/WEB-INF/web.xml | 44 +
.../WEB-INF/classes/META-INF/persistence.xml | 10 +
.../WEB-INF/classes/META-INF/persistence.xml | 9 +
.../WEB-INF/classes/META-INF/persistence.xml | 11 +
.../WEB-INF/classes/META-INF/persistence.xml | 11 +
pom.xml | 6 +-
.../api_v3/AdminDeleteSubscriptionRequest.java | 96 ++
.../api_v3/AdminDeleteSubscriptionResponse.java | 32 +
.../apache/juddi/api_v3/AdminSaveBusiness.java | 94 ++
.../juddi/api_v3/AdminSaveBusinessResponse.java | 63 +
.../juddi/api_v3/AdminSaveBusinessWrapper.java | 97 ++
.../api_v3/AdminSaveSubscriptionRequest.java | 124 ++
.../api_v3/AdminSaveSubscriptionResponse.java | 32 +
.../apache/juddi/api_v3/AdminSaveTModel.java | 94 ++
.../juddi/api_v3/AdminSaveTModelResponse.java | 63 +
.../juddi/api_v3/AdminSaveTModelWrapper.java | 97 ++
.../java/org/apache/juddi/api_v3/ClerkList.java | 69 +
.../org/apache/juddi/api_v3/DeleteClerk.java | 95 ++
.../org/apache/juddi/api_v3/DeleteNode.java | 95 ++
.../org/apache/juddi/api_v3/GetAllClerks.java | 60 +
.../juddi/api_v3/GetAllClerksResponse.java | 62 +
.../api_v3/GetAllClientSubscriptionInfo.java | 60 +
.../GetAllClientSubscriptionInfoResponse.java | 67 +
.../org/apache/juddi/api_v3/GetAllNodes.java | 60 +
.../juddi/api_v3/GetAllNodesResponse.java | 62 +
.../juddi/api_v3/GetAllPublisherDetail.java | 17 +-
.../juddi/api_v3/GetReplicationNodes.java | 62 +
.../api_v3/GetReplicationNodesResponse.java | 63 +
.../java/org/apache/juddi/api_v3/NodeList.java | 67 +
.../org/apache/juddi/api_v3/ObjectFactory.java | 635 ++++++--
.../apache/juddi/api_v3/SetAllValidValues.java | 94 ++
.../juddi/api_v3/SetAllValidValuesResponse.java | 63 +
.../juddi/api_v3/SetReplicationNodes.java | 91 ++
.../api_v3/SetReplicationNodesResponse.java | 63 +
.../juddi/api_v3/SubscriptionWrapper.java | 98 ++
.../org/apache/juddi/api_v3/ValidValues.java | 94 ++
.../java/org/apache/juddi/repl_v3/EdgeExt.java | 36 +
.../juddi/v3_service/JUDDIApiPortType.java | 305 +++-
.../org/uddi/repl_v3/ChangeRecordIDType.java | 118 +-
.../java/org/uddi/vscache_v3/ValidValue.java | 7 +
uddi-ws/src/main/resources/juddi_api_v1.wsdl | 1495 ++++++++++++------
77 files changed, 7557 insertions(+), 945 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-client-plugins/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-client-plugins/pom.xml b/juddi-client-plugins/pom.xml
new file mode 100644
index 0000000..754cbf8
--- /dev/null
+++ b/juddi-client-plugins/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.juddi</groupId>
+ <artifactId>juddi-parent</artifactId>
+ <version>3.2.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.apache.juddi.client.plugins</groupId>
+ <artifactId>juddi-client-plugins</artifactId>
+ <version>3.2.1-SNAPSHOT</version>
+ <name>juddi-client-plugins</name>
+ <url>http://maven.apache.org</url>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.juddi</groupId>
+ <artifactId>juddi-client</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jgroups</groupId>
+ <artifactId>jgroups</artifactId>
+ <version>3.4.1.Final</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf.services.ws-discovery</groupId>
+ <artifactId>cxf-services-ws-discovery-api</artifactId>
+ <version>${cxf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.jmdns</groupId>
+ <artifactId>jmdns</artifactId>
+ <version>3.4.1</version>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/JGroupsTransport.java
----------------------------------------------------------------------
diff --git a/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/JGroupsTransport.java b/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/JGroupsTransport.java
new file mode 100644
index 0000000..84945fd
--- /dev/null
+++ b/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/JGroupsTransport.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2001-2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.client.plugins;
+
+import org.apache.juddi.v3.client.transport.Transport;
+import org.apache.juddi.v3.client.transport.TransportException;
+import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.uddi.v3_service.UDDICustodyTransferPortType;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+import org.uddi.v3_service.UDDISubscriptionListenerPortType;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ * Uses JGroups to find other instances of
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ * @since 3.2.1
+ */
+public class JGroupsTransport extends Transport
+{
+
+ @Override
+ public UDDIInquiryPortType getUDDIInquiryService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISecurityPortType getUDDISecurityService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDIPublicationPortType getUDDIPublishService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISubscriptionPortType getUDDISubscriptionService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDICustodyTransferPortType getUDDICustodyTransferService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISubscriptionListenerPortType getUDDISubscriptionListenerService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public JUDDIApiPortType getJUDDIApiService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/MulticastDNSTransport.java
----------------------------------------------------------------------
diff --git a/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/MulticastDNSTransport.java b/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/MulticastDNSTransport.java
new file mode 100644
index 0000000..e363168
--- /dev/null
+++ b/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/MulticastDNSTransport.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.juddi.client.plugins;
+
+import org.apache.juddi.v3.client.transport.Transport;
+import org.apache.juddi.v3.client.transport.TransportException;
+import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.uddi.v3_service.UDDICustodyTransferPortType;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+import org.uddi.v3_service.UDDISubscriptionListenerPortType;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ * @since 3.2.1
+ */
+public class MulticastDNSTransport extends Transport {
+
+ @Override
+ public UDDIInquiryPortType getUDDIInquiryService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISecurityPortType getUDDISecurityService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDIPublicationPortType getUDDIPublishService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISubscriptionPortType getUDDISubscriptionService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDICustodyTransferPortType getUDDICustodyTransferService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISubscriptionListenerPortType getUDDISubscriptionListenerService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public JUDDIApiPortType getJUDDIApiService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/WSDiscoveryTransport.java
----------------------------------------------------------------------
diff --git a/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/WSDiscoveryTransport.java b/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/WSDiscoveryTransport.java
new file mode 100644
index 0000000..4097dbe
--- /dev/null
+++ b/juddi-client-plugins/src/main/java/org/apache/juddi/client/plugins/WSDiscoveryTransport.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.juddi.client.plugins;
+
+import org.apache.juddi.v3.client.transport.Transport;
+import org.apache.juddi.v3.client.transport.TransportException;
+import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.uddi.v3_service.UDDICustodyTransferPortType;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+import org.uddi.v3_service.UDDISubscriptionListenerPortType;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ * @since 3.2.1
+ */
+public class WSDiscoveryTransport extends Transport {
+
+ @Override
+ public UDDIInquiryPortType getUDDIInquiryService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISecurityPortType getUDDISecurityService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDIPublicationPortType getUDDIPublishService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISubscriptionPortType getUDDISubscriptionService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDICustodyTransferPortType getUDDICustodyTransferService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public UDDISubscriptionListenerPortType getUDDISubscriptionListenerService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public JUDDIApiPortType getJUDDIApiService(String endpointURL) throws TransportException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core-openjpa/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-core-openjpa/pom.xml b/juddi-core-openjpa/pom.xml
index 9399984..7e06606 100644
--- a/juddi-core-openjpa/pom.xml
+++ b/juddi-core-openjpa/pom.xml
@@ -35,7 +35,8 @@
<version>1.4.0</version>
<configuration>
<instructions>
- <Export-Package>org.apache.juddi, org.apache.juddi.api, org.apache.juddi.api.impl, org.apache.juddi.api.impl.rest,org.apache.juddi.api.util, org.apache.juddi.config, org.apache.juddi.config, org.apache.juddi.cryptor, org.apache.juddi.keygen, org.apache.juddi.mapping, org.apache.juddi.model, org.apache.juddi.query, org.apache.juddi.query.util, org.apache.juddi.rmi, org.apache.juddi.subscription, org.apache.juddi.subscription.notify, org.apache.juddi.validation, org.apache.juddi.v3.auth, org.apache.juddi.v3.error</Export-Package>
+ <Export-Package>org.apache.juddi, org.apache.juddi.api, org.apache.juddi.api.impl, org.apache.juddi.api.impl.rest,org.apache.juddi.api.util, org.apache.juddi.config, org.apache.juddi.config, org.apache.juddi.cryptor, org.apache.juddi.keygen, org.apache.juddi.mapping, org.apache.juddi.model, org.apache.juddi.query, org.apache.juddi.query.util, org.apache.juddi.rmi, org.apache.juddi.subscription,
+ org.apache.juddi.replication, org.apache.juddi.subscription.notify, org.apache.juddi.validation, org.apache.juddi.v3.auth, org.apache.juddi.v3.error</Export-Package>
<Include-Resource>juddi_install_data=target/classes/juddi_install_data, target/classes/messages.properties</Include-Resource>
</instructions>
</configuration>
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml b/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
index 8833806..3e67b49 100644
--- a/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
+++ b/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
@@ -70,7 +70,16 @@
<class>org.apache.juddi.model.TransferTokenKey</class>
<class>org.apache.juddi.model.UddiEntity</class>
<class>org.apache.juddi.model.UddiEntityPublisher</class>
-
+ <class>org.apache.juddi.model.ValueSetValues</class>
+ <class>org.apache.juddi.model.ValueSetValue</class>
+ <class>org.apache.juddi.model.ChangeRecord</class>
+ <class>org.apache.juddi.model.CommunicationGraph</class>
+ <class>org.apache.juddi.model.Operator</class>
+ <class>org.apache.juddi.model.ReplicationConfiguration</class>
+ <class>org.apache.juddi.model.Edge</class>
+ <class>org.apache.juddi.model.ControlMessage</class>
+ <class>org.apache.juddi.model.ReplicationMessage</class>
+
<properties>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(SchemaAction='dropDB,add')"/>
<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-core/pom.xml b/juddi-core/pom.xml
index 69093cc..18994ad 100644
--- a/juddi-core/pom.xml
+++ b/juddi-core/pom.xml
@@ -35,6 +35,7 @@
org.apache.juddi.query, org.apache.juddi.query.util,
org.apache.juddi.rmi, org.apache.juddi.subscription,
org.apache.juddi.subscription.notify,
+ org.apache.juddi.replication,
org.apache.juddi.validation, org.apache.juddi.v3.auth,
org.apache.juddi.v3.error</Export-Package>
<Include-Resource>juddi_install_data=src/main/resources/juddi_install_data,
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/java/org/apache/juddi/Registry.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/Registry.java b/juddi-core/src/main/java/org/apache/juddi/Registry.java
index 6fb44c0..60477ef 100644
--- a/juddi-core/src/main/java/org/apache/juddi/Registry.java
+++ b/juddi-core/src/main/java/org/apache/juddi/Registry.java
@@ -23,77 +23,87 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.config.AppConfig;
import org.apache.juddi.config.Property;
+import org.apache.juddi.replication.ReplicationNotifier;
import org.apache.juddi.rmi.JNDIRegistration;
import org.apache.juddi.rmi.RMIRegistration;
import org.apache.juddi.subscription.SubscriptionNotifier;
public class Registry {
-
- private static Registry registry = null;
- private static Log log = LogFactory.getLog(Registry.class);
- private static SubscriptionNotifier subscriptionNotifier = null;
- /**
- * Singleton.
- */
- private Registry() {
- super();
- }
- /**
- * Stops the registry.
- * @throws ConfigurationException
- */
- public synchronized static void stop() throws ConfigurationException {
- if (registry!=null) {
- log.info("Stopping jUDDI registry...");
- if (subscriptionNotifier!=null) {
- log.info("Shutting down SubscriptionNotifier");
- subscriptionNotifier.cancel();
- subscriptionNotifier=null;
- }
- if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_JNDI_REGISTRATION, false)) {
- try {
- JNDIRegistration.getInstance().unregister();
- } catch (NamingException e) {
- log.error("Unable to Register jUDDI services with JNDI. " + e.getMessage(), e);
- }
- }
- registry=null;
- log.info("jUDDI shutdown completed.");
- }
- }
- /**
- * Starts the registry.
- * @throws ConfigurationException
- */
- public synchronized static void start() throws ConfigurationException {
- if (registry==null) {
- log.info("Starting jUDDI registry...");
- registry = new Registry();
-
- if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_SUBSCRIPTION_NOTIFICATION, true)) {
- subscriptionNotifier = new SubscriptionNotifier();
- }
- if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_JNDI_REGISTRATION, false)) {
- try {
- int port = AppConfig.getConfiguration().getInteger(Property.JUDDI_RMI_PORT,0);
- JNDIRegistration.getInstance().register(port);
- } catch (NamingException e) {
- log.error("Unable to Register jUDDI services with JNDI. " + e.getMessage(), e);
- }
- }
- if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_RMI_REGISTRATION, false)) {
- try {
- int rmiport = AppConfig.getConfiguration().getInteger(Property.JUDDI_RMI_REGISTRY_PORT,1099);
- int port = AppConfig.getConfiguration().getInteger(Property.JUDDI_RMI_PORT,0);
- RMIRegistration.getInstance(rmiport).register(port);
- } catch (Exception e) {
- log.error("Unable to Register jUDDI services with RMI Registry. " + e.getMessage(), e);
- }
- }
-
- log.info("jUDDI registry started successfully.");
- }
- }
-
-}
+ private static Registry registry = null;
+ private static Log log = LogFactory.getLog(Registry.class);
+ private static SubscriptionNotifier subscriptionNotifier = null;
+ private static ReplicationNotifier replicationNotifier = null;
+
+ /**
+ * Singleton.
+ */
+ private Registry() {
+ super();
+ }
+
+ /**
+ * Stops the registry.
+ *
+ * @throws ConfigurationException
+ */
+ public synchronized static void stop() throws ConfigurationException {
+ if (registry != null) {
+ log.info("Stopping jUDDI registry...");
+ if (subscriptionNotifier != null) {
+ log.info("Shutting down SubscriptionNotifier");
+ subscriptionNotifier.cancel();
+ subscriptionNotifier = null;
+ }
+ if (replicationNotifier != null) {
+ replicationNotifier.cancel();
+ replicationNotifier = null;
+ }
+ if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_JNDI_REGISTRATION, false)) {
+ try {
+ JNDIRegistration.getInstance().unregister();
+ } catch (NamingException e) {
+ log.error("Unable to Register jUDDI services with JNDI. " + e.getMessage(), e);
+ }
+ }
+ registry = null;
+ log.info("jUDDI shutdown completed.");
+ }
+ }
+
+ /**
+ * Starts the registry.
+ *
+ * @throws ConfigurationException
+ */
+ public synchronized static void start() throws ConfigurationException {
+ if (registry == null) {
+ log.info("Starting jUDDI registry...");
+ registry = new Registry();
+ replicationNotifier = new ReplicationNotifier();
+ if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_SUBSCRIPTION_NOTIFICATION, true)) {
+ subscriptionNotifier = new SubscriptionNotifier();
+ }
+ if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_JNDI_REGISTRATION, false)) {
+ try {
+ int port = AppConfig.getConfiguration().getInteger(Property.JUDDI_RMI_PORT, 0);
+ JNDIRegistration.getInstance().register(port);
+ } catch (NamingException e) {
+ log.error("Unable to Register jUDDI services with JNDI. " + e.getMessage(), e);
+ }
+ }
+ if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_RMI_REGISTRATION, false)) {
+ try {
+ int rmiport = AppConfig.getConfiguration().getInteger(Property.JUDDI_RMI_REGISTRY_PORT, 1099);
+ int port = AppConfig.getConfiguration().getInteger(Property.JUDDI_RMI_PORT, 0);
+ RMIRegistration.getInstance(rmiport).register(port);
+ } catch (Exception e) {
+ log.error("Unable to Register jUDDI services with RMI Registry. " + e.getMessage(), e);
+ }
+ }
+
+ log.info("jUDDI registry started successfully.");
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
index daf78a5..cd60244 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
@@ -18,10 +18,13 @@ package org.apache.juddi.api.impl;
import java.io.StringWriter;
import java.rmi.RemoteException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
import javax.jws.WebService;
import javax.persistence.EntityManager;
@@ -29,38 +32,53 @@ import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.ClassUtil;
+import org.apache.juddi.api_v3.AdminSaveBusinessWrapper;
+import org.apache.juddi.api_v3.AdminSaveTModelWrapper;
import org.apache.juddi.api_v3.Clerk;
import org.apache.juddi.api_v3.ClerkDetail;
+import org.apache.juddi.api_v3.ClerkList;
import org.apache.juddi.api_v3.ClientSubscriptionInfoDetail;
+import org.apache.juddi.api_v3.DeleteClerk;
import org.apache.juddi.api_v3.DeleteClientSubscriptionInfo;
+import org.apache.juddi.api_v3.DeleteNode;
import org.apache.juddi.api_v3.DeletePublisher;
import org.apache.juddi.api_v3.GetAllClientSubscriptionInfoDetail;
import org.apache.juddi.api_v3.GetAllPublisherDetail;
import org.apache.juddi.api_v3.GetClientSubscriptionInfoDetail;
import org.apache.juddi.api_v3.GetPublisherDetail;
import org.apache.juddi.api_v3.NodeDetail;
+import org.apache.juddi.api_v3.NodeList;
import org.apache.juddi.api_v3.PublisherDetail;
import org.apache.juddi.api_v3.SaveClerk;
import org.apache.juddi.api_v3.SaveClientSubscriptionInfo;
import org.apache.juddi.api_v3.SaveNode;
import org.apache.juddi.api_v3.SavePublisher;
+import org.apache.juddi.api_v3.SubscriptionWrapper;
import org.apache.juddi.api_v3.SyncSubscription;
import org.apache.juddi.api_v3.SyncSubscriptionDetail;
+import org.apache.juddi.api_v3.ValidValues;
import org.apache.juddi.config.PersistenceManager;
import org.apache.juddi.config.Property;
import org.apache.juddi.mapping.MappingApiToModel;
import org.apache.juddi.mapping.MappingModelToApi;
import org.apache.juddi.model.ClientSubscriptionInfo;
+import org.apache.juddi.model.Node;
import org.apache.juddi.model.Publisher;
+import org.apache.juddi.model.ReplicationConfiguration;
import org.apache.juddi.model.Tmodel;
import org.apache.juddi.model.UddiEntityPublisher;
+import org.apache.juddi.model.ValueSetValue;
+import org.apache.juddi.model.ValueSetValues;
import org.apache.juddi.subscription.NotificationList;
import org.apache.juddi.v3.client.transport.Transport;
import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.FatalErrorException;
import org.apache.juddi.v3.error.InvalidKeyPassedException;
import org.apache.juddi.v3_service.JUDDIApiPortType;
import org.apache.juddi.validation.ValidateClerk;
@@ -68,16 +86,20 @@ import org.apache.juddi.validation.ValidateClientSubscriptionInfo;
import org.apache.juddi.validation.ValidateNode;
import org.apache.juddi.validation.ValidatePublish;
import org.apache.juddi.validation.ValidatePublisher;
+import org.apache.juddi.validation.ValidateValueSetValidation;
import org.uddi.api_v3.AuthToken;
import org.uddi.api_v3.BusinessInfo;
import org.uddi.api_v3.BusinessInfos;
import org.uddi.api_v3.DeleteTModel;
+import org.uddi.api_v3.DispositionReport;
import org.uddi.api_v3.GetRegisteredInfo;
import org.uddi.api_v3.InfoSelection;
import org.uddi.api_v3.RegisteredInfo;
+import org.uddi.api_v3.Result;
import org.uddi.api_v3.TModelInfo;
import org.uddi.api_v3.TModelInfos;
import org.uddi.sub_v3.GetSubscriptionResults;
+import org.uddi.sub_v3.Subscription;
import org.uddi.sub_v3.SubscriptionResultsList;
import org.uddi.v3_service.DispositionReportFaultMessage;
import org.uddi.v3_service.UDDISubscriptionPortType;
@@ -713,7 +735,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
throw (DispositionReportFaultMessage) ce;
}
if (ce instanceof RemoteException) {
- throw (RemoteException) ce;
+ DispositionReportFaultMessage x = new FatalErrorException(new ErrorMessage("errors.subscriptionnotifier.client", ce.getMessage()));
+ throw x;
}
}
}
@@ -722,4 +745,290 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
return syncSubscriptionDetail;
}
+ @Override
+ public NodeList getAllNodes(String authInfo) throws DispositionReportFaultMessage, RemoteException {
+
+ NodeList r = new NodeList();
+
+
+ EntityManager em = PersistenceManager.getEntityManager();
+ EntityTransaction tx = em.getTransaction();
+ try {
+ tx.begin();
+
+ UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
+
+ new ValidatePublish(publisher).validateGetAllNodes();
+
+ StringBuilder sql = new StringBuilder();
+ sql.append("select distinct c from Node c ");
+ sql.toString();
+ Query qry = em.createQuery(sql.toString());
+ List<org.apache.juddi.model.Node> resultList = qry.getResultList();
+ for (int i = 0; i < resultList.size(); i++) {
+ org.apache.juddi.api_v3.Node api = new org.apache.juddi.api_v3.Node();
+ MappingModelToApi.mapNode(resultList.get(i), api);
+ r.getNode().add(api);
+
+ }
+
+ tx.commit();
+
+ } finally {
+ if (tx.isActive()) {
+ tx.rollback();
+ }
+ em.close();
+ }
+
+ return r;
+ }
+
+ @Override
+ public ClerkList getAllClerks(String authInfo) throws DispositionReportFaultMessage, RemoteException {
+
+ ClerkList ret = new ClerkList();
+ EntityManager em = PersistenceManager.getEntityManager();
+ EntityTransaction tx = em.getTransaction();
+ try {
+ tx.begin();
+
+ UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
+
+ new ValidatePublish(publisher).validateGetAllNodes();
+
+ StringBuilder sql = new StringBuilder();
+ sql.append("select distinct c from Clerk c ");
+ sql.toString();
+ Query qry = em.createQuery(sql.toString());
+ List<org.apache.juddi.model.Clerk> resultList = qry.getResultList();
+ for (int i = 0; i < resultList.size(); i++) {
+ Clerk api = new Clerk();
+ MappingModelToApi.mapClerk(resultList.get(i), api);
+ ret.getClerk().add(api);
+
+ }
+ tx.commit();
+
+ } finally {
+ if (tx.isActive()) {
+ tx.rollback();
+ }
+ em.close();
+ }
+
+ return ret;
+
+ }
+
+ @Override
+ public void deleteNode(DeleteNode req) throws DispositionReportFaultMessage , RemoteException{
+ boolean found = false;
+ EntityManager em = PersistenceManager.getEntityManager();
+ EntityTransaction tx = em.getTransaction();
+ try {
+ tx.begin();
+
+
+ UddiEntityPublisher publisher = this.getEntityPublisher(em, req.getAuthInfo());
+ new ValidatePublish(publisher).validateDeleteNode(em, req);
+
+
+
+ org.apache.juddi.model.Node existingUddiEntity = em.find(org.apache.juddi.model.Node.class, req.getNodeID());
+ if (existingUddiEntity != null) {
+
+ //TODO cascade delete all clerks tied to this node
+
+ em.remove(existingUddiEntity);
+ found = true;
+ }
+ tx.commit();
+
+ } finally {
+ if (tx.isActive()) {
+ tx.rollback();
+ }
+ em.close();
+ }
+
+ if (!found) {
+
+
+ throw new InvalidKeyPassedException(new ErrorMessage("errors.deleteNode.NotFound"));
+ }
+ }
+
+ @Override
+ public void deleteClerk(DeleteClerk req) throws DispositionReportFaultMessage, RemoteException {
+
+ boolean found = false;
+ EntityManager em = PersistenceManager.getEntityManager();
+ EntityTransaction tx = em.getTransaction();
+ try {
+ tx.begin();
+
+ UddiEntityPublisher publisher = this.getEntityPublisher(em, req.getAuthInfo());
+
+ new ValidatePublish(publisher).validateDeleteClerk(em, req);
+
+ org.apache.juddi.model.Clerk existingUddiEntity = em.find(org.apache.juddi.model.Clerk.class, req.getClerkID());
+ if (existingUddiEntity != null) {
+ em.remove(existingUddiEntity);
+ found = true;
+ }
+ tx.commit();
+
+ } finally {
+ if (tx.isActive()) {
+ tx.rollback();
+ }
+ em.close();
+ }
+
+ if (!found) {
+ throw new InvalidKeyPassedException(new ErrorMessage("errors.deleteClerk.NotFound"));
+ }
+
+
+ }
+
+ /**
+ * enables tmodel owners to setup valid values for tmodel instance infos
+ * to use, TODO
+ *
+ * @param authInfo
+ * @param values
+ * @return
+ * @throws DispositionReportFaultMessage
+ */
+ @Override
+ public DispositionReport setAllValidValues(String authInfo, List<ValidValues> values) throws DispositionReportFaultMessage, RemoteException {
+
+ EntityManager em = PersistenceManager.getEntityManager();
+ UddiEntityPublisher entityPublisher = getEntityPublisher(em, authInfo);
+
+ new ValidateValueSetValidation(entityPublisher).validateSetAllValidValues(values);
+
+
+ EntityTransaction tx = em.getTransaction();
+ try {
+
+ //TODO is this tModel used anywhere?, if so, validate all instances against the new rule?
+
+ tx.begin();
+
+ //each tmodel/value set
+ for (int i = 0; i < values.size(); i++) {
+ //remove any existing references to the key
+ ValueSetValues find = em.find(ValueSetValues.class, values.get(i).getTModekKey());
+
+ if (find != null) {
+
+ //first pass, add any missing values
+ for (int x = 0; x < values.get(i).getValue().size(); x++) {
+ boolean found = false;
+ for (int k = 0; k < find.getValues().size(); k++) {
+ if (find.getValues().get(k).getValue().equals(values.get(i).getValue().get(x))) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ ValueSetValue valueSetValue = new org.apache.juddi.model.ValueSetValue(values.get(i).getTModekKey(), values.get(i).getValue().get(x));
+ find.getValues().add(valueSetValue);
+ }
+ }
+
+ //second pass, remove any values that were present, but now are not
+ for (int k = 0; k < find.getValues().size(); k++) {
+
+ boolean found = false;
+ for (int x = 0; x < values.get(i).getValue().size(); x++) {
+ if (find.getValues().get(k).getValue().equals(values.get(i).getValue().get(x))) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ em.remove(find.getValues().get(k));
+ }
+ }
+
+ em.persist(find);
+
+ } else {
+ org.apache.juddi.model.ValueSetValues vv = new ValueSetValues();
+ vv.setTModelKey(values.get(i).getTModekKey());
+ List<ValueSetValue> items = new ArrayList<ValueSetValue>();
+ for (int k = 0; k < values.get(i).getValue().size(); k++) {
+ ValueSetValue valueSetValue = new org.apache.juddi.model.ValueSetValue(values.get(i).getTModekKey(), values.get(i).getValue().get(k));
+ valueSetValue.setParent(vv);
+ em.persist(valueSetValue);
+ items.add(valueSetValue);
+ }
+ vv.setValues(items);
+ em.persist(vv);
+ }
+ }
+
+ tx.commit();
+ } finally {
+ if (tx.isActive()) {
+ tx.rollback();
+ }
+ em.close();
+ }
+ DispositionReport r = new DispositionReport();
+ r.getResult().add(new Result());
+ return r;
+ }
+
+ @Override
+ public void adminDeleteSubscription(String authInfo, List<String> subscriptionKey) throws DispositionReportFaultMessage, RemoteException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+
+ @Override
+ public DispositionReport adminSaveBusiness(String authInfo, List<AdminSaveBusinessWrapper> values) throws DispositionReportFaultMessage, RemoteException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public DispositionReport adminSaveTModel(String authInfo, List<AdminSaveTModelWrapper> values) throws DispositionReportFaultMessage, RemoteException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public List<SubscriptionWrapper> getAllClientSubscriptionInfo(String authInfo) throws DispositionReportFaultMessage, RemoteException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+
+ @Override
+ public DispositionReport setReplicationNodes(String authInfo, org.uddi.repl_v3.ReplicationConfiguration replicationConfiguration) throws DispositionReportFaultMessage, RemoteException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public org.uddi.repl_v3.ReplicationConfiguration getReplicationNodes(String authInfo) throws DispositionReportFaultMessage, RemoteException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+
+ public void adminSaveSubscription(
+
+ String authInfo,
+
+ String publisherOrUsername,
+
+ List<Subscription> subscriptions)
+ throws DispositionReportFaultMessage, RemoteException
+ {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
}
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
index e95f4ab..32fe3f8 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
@@ -14,19 +14,36 @@
* limitations under the License.
*
*/
-
package org.apache.juddi.api.impl;
import java.math.BigInteger;
+import java.util.HashMap;
import java.util.List;
-
-import javax.jws.WebService;
+import java.util.Map;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import javax.xml.ws.BindingProvider;
+import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.api.util.PublicationQuery;
import org.apache.juddi.api.util.QueryStatus;
import org.apache.juddi.api.util.ReplicationQuery;
+import org.apache.juddi.config.AppConfig;
+import org.apache.juddi.config.PersistenceManager;
+import org.apache.juddi.config.Property;
+import org.apache.juddi.mapping.MappingApiToModel;
+import org.apache.juddi.model.Node;
+import org.apache.juddi.model.UddiEntityPublisher;
+import org.apache.juddi.v3.client.UDDIService;
+import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.FatalErrorException;
+import org.apache.juddi.validation.ValidatePublish;
import org.apache.juddi.validation.ValidateReplication;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.api_v3.Result;
+import org.uddi.custody_v3.DiscardTransferToken;
import org.uddi.repl_v3.ChangeRecord;
import org.uddi.repl_v3.ChangeRecordIDType;
import org.uddi.repl_v3.DoPing;
@@ -40,73 +57,140 @@ import org.uddi.v3_service.UDDIReplicationPortType;
// endpointInterface="org.uddi.v3_service.UDDIReplicationPortType",
// targetNamespace = "urn:uddi-org:v3_service")
/**
- * This implements the UDDI v3 Replication API web service. It is not complete
- *
+ * UDDI Replication defines four APIs. The first two presented here are used to
+ * perform replication and issue notifications. The latter ancillary APIs
+ * provide support for other aspects of UDDI Replication.
+ * <ul><li>get_changeRecords</li>
+ * <li>notify_changeRecordsAvailable</li>
+ * <li>do_ping</li>
+ * <li>get_highWaterMarks</li>
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree<a/>
*/
public class UDDIReplicationImpl extends AuthenticatedService implements UDDIReplicationPortType {
+
private static Log log = LogFactory.getLog(UDDIReplicationImpl.class);
private UDDIServiceCounter serviceCounter;
public UDDIReplicationImpl() {
- super();
- serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIReplicationImpl.class);
+ super();
+ serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIReplicationImpl.class);
+
}
+ private synchronized UDDIReplicationPortType getReplicationClient(String node) {
+ if (cache.containsKey(node)) {
+ return cache.get(node);
+ }
+ UDDIService svc = new UDDIService();
+ UDDIReplicationPortType replicationClient = svc.getUDDIReplicationPort();
+ EntityManager em = PersistenceManager.getEntityManager();
+ EntityTransaction tx = em.getTransaction();
+ try {
+ Node find = em.find(org.apache.juddi.model.Node.class, node);
+ ((BindingProvider) replicationClient).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, find.getReplicationUrl());
+ cache.put(node, replicationClient);
+ return replicationClient;
+ } catch (Exception ex) {
+ log.fatal("Node not found!" + node, ex);
+ } finally {
+ if (tx.isActive()) {
+ tx.rollback();
+ }
+ em.close();
+ }
+ em.close();
+ return null;
- public String doPing(DoPing body) throws DispositionReportFaultMessage {
- long startTime = System.currentTimeMillis();
+ }
+ private Map<String, UDDIReplicationPortType> cache = new HashMap<String, UDDIReplicationPortType>();
+
+ /**
+ * @since 3.3
+ * @param body
+ * @return
+ * @throws DispositionReportFaultMessage
+ */
+ public String doPing(DoPing body) throws DispositionReportFaultMessage {
+ long startTime = System.currentTimeMillis();
long procTime = System.currentTimeMillis() - startTime;
serviceCounter.update(ReplicationQuery.DO_PING, QueryStatus.SUCCESS, procTime);
+ try {
+ return AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ROOT_BUSINESS);
+ } catch (ConfigurationException ex) {
+ log.fatal("Unable to load configuration!", ex);
+ }
+ throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval"));
+ }
+
+ public List<ChangeRecord> getChangeRecords(String requestingNode,
+ HighWaterMarkVectorType changesAlreadySeen,
+ BigInteger responseLimitCount,
+ HighWaterMarkVectorType responseLimitVector)
+ throws DispositionReportFaultMessage {
+ long startTime = System.currentTimeMillis();
+ long procTime = System.currentTimeMillis() - startTime;
+ serviceCounter.update(ReplicationQuery.GET_CHANGERECORDS,
+ QueryStatus.SUCCESS, procTime);
- ValidateReplication.unsupportedAPICall();
- return null;
- }
+ //TODO fetch all records that have changed since changesAlreadySeen
+ ChangeRecord r = new ChangeRecord();
+
+ ValidateReplication.unsupportedAPICall();
+ return null;
+ }
+
+ public List<ChangeRecordIDType> getHighWaterMarks()
+ throws DispositionReportFaultMessage {
+ long startTime = System.currentTimeMillis();
+ long procTime = System.currentTimeMillis() - startTime;
+ serviceCounter.update(ReplicationQuery.GET_HIGHWATERMARKS, QueryStatus.SUCCESS, procTime);
+ //fetch from database the highest known watermark
+ ValidateReplication.unsupportedAPICall();
+ return null;
+ }
- public List<ChangeRecord> getChangeRecords(String requestingNode,
- HighWaterMarkVectorType changesAlreadySeen,
- BigInteger responseLimitCount,
- HighWaterMarkVectorType responseLimitVector)
- throws DispositionReportFaultMessage {
- long startTime = System.currentTimeMillis();
+ public void notifyChangeRecordsAvailable(NotifyChangeRecordsAvailable body)
+ throws DispositionReportFaultMessage {
+ long startTime = System.currentTimeMillis();
long procTime = System.currentTimeMillis() - startTime;
- serviceCounter.update(ReplicationQuery.GET_CHANGERECORDS,
+ serviceCounter.update(ReplicationQuery.NOTIFY_CHANGERECORDSAVAILABLE,
QueryStatus.SUCCESS, procTime);
+ //some other node just told us there's new records available, call
+ //getChangeRecords from the remote node asynch
- ValidateReplication.unsupportedAPICall();
- return null;
- }
+ ValidateReplication.unsupportedAPICall();
+ }
+ public void transferCustody(TransferCustody body)
+ throws DispositionReportFaultMessage {
+ long startTime = System.currentTimeMillis();
- public List<ChangeRecordIDType> getHighWaterMarks()
- throws DispositionReportFaultMessage {
- long startTime = System.currentTimeMillis();
- long procTime = System.currentTimeMillis() - startTime;
- serviceCounter.update(ReplicationQuery.GET_HIGHWATERMARKS, QueryStatus.SUCCESS, procTime);
- ValidateReplication.unsupportedAPICall();
- return null;
- }
+ //*this node is transfering data to another node
+ //body.getTransferOperationalInfo().
+
+ ValidateReplication.unsupportedAPICall();
- public void notifyChangeRecordsAvailable(NotifyChangeRecordsAvailable body)
- throws DispositionReportFaultMessage {
- long startTime = System.currentTimeMillis();
- long procTime = System.currentTimeMillis() - startTime;
- serviceCounter.update(ReplicationQuery.NOTIFY_CHANGERECORDSAVAILABLE,
- QueryStatus.SUCCESS, procTime);
+ EntityManager em = PersistenceManager.getEntityManager();
+ //EntityTransaction tx = em.getTransaction();
- ValidateReplication.unsupportedAPICall();
- }
+ //The custodial node must verify that it has granted permission to transfer the entities identified and that this permission is still valid. This operation is comprised of two steps:
+ //1. Verification that the transferToken was issued by it, that it has not expired, that it represents the authority to transfer no more and no less than those entities identified by the businessKey and tModelKey elements and that all these entities are still valid and not yet transferred. The transferToken is invalidated if any of these conditions are not met.
+ //2. If the conditions above are met, the custodial node will prevent any further changes to the entities identified by the businessKey and tModelKey elements identified. The entity will remain in this state until the replication stream indicates it has been successfully processed via the replication stream.
- public void transferCustody(TransferCustody body)
- throws DispositionReportFaultMessage {
- long startTime = System.currentTimeMillis();
- long procTime = System.currentTimeMillis() - startTime;
- serviceCounter.update(ReplicationQuery.TRANSFER_CUSTODY,
- QueryStatus.SUCCESS, procTime);
+ //Upon successful verification of the custody transfer request by the custodial node, an empty message is returned by it indicating the success of the request and acknowledging the custody transfer.
- ValidateReplication.unsupportedAPICall();
- }
+ //Following the issue of the empty message, the custodial node will submit into the replication stream a changeRecordNewData providing in the operationalInfo, the nodeID accepting custody of the datum and the authorizedName of the publisher accepting ownership. The acknowledgmentRequested attribute of this change record MUST be set to "true".
+ //TODO enqueue Replication message
+
+ //Finally, the custodial node invalidates the transferToken in order to prevent additional calls of the transfer_entities API.
+ DiscardTransferToken dtt = new DiscardTransferToken();
+ dtt.setKeyBag(body.getKeyBag());
+ dtt.setTransferToken(body.getTransferToken());
+ new UDDICustodyTransferImpl().discardTransferToken(dtt);
+ }
}
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
index 965ecec..cbd443e 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
@@ -14,18 +14,16 @@
* limitations under the License.
*
*/
-
package org.apache.juddi.api.impl;
+import java.util.ArrayList;
import java.util.List;
-import javax.jws.WebService;
import javax.xml.ws.Holder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.api.util.QueryStatus;
-import org.apache.juddi.api.util.SubscriptionQuery;
import org.apache.juddi.api.util.ValueSetCachingQuery;
import org.apache.juddi.validation.ValidateValueSetCaching;
import org.uddi.v3_service.DispositionReportFaultMessage;
@@ -35,30 +33,63 @@ import org.uddi.vscache_v3.ValidValue;
//@WebService(serviceName="UDDIValueSetCachingService",
// endpointInterface="org.uddi.v3_service.UDDIValueSetCachingPortType",
// targetNamespace = "urn:uddi-org:v3_service")
-
-/**
- * This implements the UDDIv3 Value Set Caching API. It is not complete
- *
- */
public class UDDIValueSetCachingImpl extends AuthenticatedService implements UDDIValueSetCachingPortType {
- private static Log logger = LogFactory.getLog(UDDIValueSetCachingImpl.class);
+ private static Log logger = LogFactory.getLog(UDDIValueSetCachingImpl.class);
+ private UDDIServiceCounter serviceCounter;
+
+ public UDDIValueSetCachingImpl() {
+ super();
+ serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass());
+ }
+
+ /**
+ *
+ * @param authInfo An optional element that contains an authentication
+ * token. Authentication tokens are obtained using the get_authToken API
+ * call or through some other means external to this specification.
+ * Providers of get_allValidValues Web services that serve multiple
+ * registries and providers that restrict who can use their service may
+ * require authInfo for this API.
+ * @param modelKey A required uddiKey value that identifies the specific
+ * instance of the tModel which describes the value set or category
+ * group system for which a Web service to get all valid values has been
+ * provided. It uniquely identifies the category, identifier, or
+ * category group system for which valid values are being requested.
+ * @param chunkToken Optional element used to retrieve subsequent groups
+ * of data when the first invocation of this API indicates more data is
+ * available. This occurs when a chunkToken is returned whose value is
+ * not "0" in the validValuesList structure described in the next
+ * section. To retrieve the next chunk of data, the chunkToken returned
+ * should be used as an argument to the next invocation of this API.
+ * @param validValue A validValuesList structure is returned containing
+ * the set of valid values for the external category or identifier
+ * system. The list MUST contain a chunkToken if the Web service
+ * provider wishes to provide the data in packets.
+ * @throws DispositionReportFaultMessage
+ */
+ @Override
+ public void getAllValidValues(String authInfo, String modelKey,
+ Holder<String> chunkToken, Holder<List<ValidValue>> validValue)
+ throws DispositionReportFaultMessage {
+
+ long startTime = System.currentTimeMillis();
+ List<String> validValues = UDDIValueSetValidationImpl.getValidValues(modelKey);
+
+ Holder<List<ValidValue>> ret = new Holder<List<ValidValue>>(new ArrayList<ValidValue>());
+ if (validValues != null) {
+ for (int i = 0; i < validValues.size(); i++) {
+ ValidValue x = new ValidValue(validValues.get(i));
+ ret.value.add(x);
+ }
+ }
+ chunkToken = new Holder<String>();
+ chunkToken.value ="0";
- private UDDIServiceCounter serviceCounter;
+ long procTime = System.currentTimeMillis() - startTime;
+ serviceCounter.update(ValueSetCachingQuery.GET_ALLVALIDVALUES,
+ QueryStatus.SUCCESS, procTime);
- public UDDIValueSetCachingImpl() {
- super();
- serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass());
- }
-
- public void getAllValidValues(String authInfo, String modelKey,
- Holder<String> chunkToken, Holder<List<ValidValue>> validValue)
- throws DispositionReportFaultMessage {
- long startTime = System.currentTimeMillis();
- long procTime = System.currentTimeMillis() - startTime;
- serviceCounter.update(ValueSetCachingQuery.GET_ALLVALIDVALUES,
- QueryStatus.SUCCESS, procTime);
- ValidateValueSetCaching.unsupportedAPICall();
- }
+ }
}
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
index 8ccd1ec..684a53e 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
@@ -14,18 +14,32 @@
* limitations under the License.
*
*/
-
package org.apache.juddi.api.impl;
-import javax.jws.WebService;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.api.util.QueryStatus;
-import org.apache.juddi.api.util.ValueSetCachingQuery;
import org.apache.juddi.api.util.ValueSetValidationQuery;
-import org.apache.juddi.validation.ValidateValueSetValidation;
+import org.apache.juddi.config.PersistenceManager;
+import org.apache.juddi.model.ValueSetValues;
+import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.InvalidValueException;
+import org.apache.juddi.v3.error.ValueNotAllowedException;
+import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.BusinessService;
import org.uddi.api_v3.DispositionReport;
+import org.uddi.api_v3.KeyedReference;
+import org.uddi.api_v3.KeyedReferenceGroup;
+import org.uddi.api_v3.PublisherAssertion;
+import org.uddi.api_v3.Result;
+import org.uddi.api_v3.TModel;
+import org.uddi.api_v3.TModelInstanceInfo;
import org.uddi.v3_service.DispositionReportFaultMessage;
import org.uddi.v3_service.UDDIValueSetValidationPortType;
import org.uddi.vs_v3.ValidateValues;
@@ -33,29 +47,225 @@ import org.uddi.vs_v3.ValidateValues;
//@WebService(serviceName="UDDIValueSetValidationService",
// endpointInterface="org.uddi.v3_service.UDDIValueSetValidationPortType",
// targetNamespace = "urn:uddi-org:v3_service")
-/**
- * This implements the UDDIv3 Value Set Validation API. It is not complete
- *
- */
public class UDDIValueSetValidationImpl extends AuthenticatedService implements
- UDDIValueSetValidationPortType {
- private static Log logger = LogFactory.getLog(UDDIValueSetValidationImpl.class);
+ UDDIValueSetValidationPortType {
private UDDIServiceCounter serviceCounter;
public UDDIValueSetValidationImpl() {
- super();
- serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass());
+ super();
+ serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass());
}
-
- public DispositionReport validateValues(ValidateValues body)
- throws DispositionReportFaultMessage {
- long startTime = System.currentTimeMillis();
+
+ @Override
+ public DispositionReport validateValues(ValidateValues body)
+ throws DispositionReportFaultMessage {
+ long startTime = System.currentTimeMillis();
+
+ if (body == null) {
+ long procTime = System.currentTimeMillis() - startTime;
+ serviceCounter.update(ValueSetValidationQuery.VALIDATE_VALUES,
+ QueryStatus.FAILED, procTime);
+
+ throw new ValueNotAllowedException(new ErrorMessage("errors.valuesetvalidation.noinput"));
+ }
+ /*
+ * The UDDI node that is calling validate_values MUST pass one
+ * or more businessEntity elements, one or more businessService
+ * elements, one or more bindingTemplate elements, one or more
+ * tModel elements, or one or more publisherAssertion elements
+ * as the sole argument to this Web service.
+ * */
+
+
+ /* performs validation on all of the keyedReferences or keyedReferenceGroups */
+
+ /*when the entity being saved is a businessEntity, contained
+ * businessService and bindingTemplate entities may themselves
+ * reference values from the authorized value sets as well. */
+ validateValuesBT(body.getBindingTemplate(), "");
+ validateValuesBE(body.getBusinessEntity());
+ validateValuesBS(body.getBusinessService(), "");
+ validateValuesPA(body.getPublisherAssertion());
+ validateValuesTM(body.getTModel());
+
+ DispositionReport r = new DispositionReport();
+ r.getResult().add(new Result());
long procTime = System.currentTimeMillis() - startTime;
- serviceCounter.update(ValueSetValidationQuery.VALIDATE_VALUES,
+ serviceCounter.update(ValueSetValidationQuery.VALIDATE_VALUES,
QueryStatus.SUCCESS, procTime);
- ValidateValueSetValidation.unsupportedAPICall();
- return null;
- }
+ return r;
+ }
+
+ private void validateValuesBT(List<BindingTemplate> items, String xpath) throws DispositionReportFaultMessage {
+ if (items == null) {
+ return;
+ }
+ for (int i = 0; i < items.size(); i++) {
+ if (items.get(i).getCategoryBag() != null) {
+ validatedValuesKeyRef(items.get(i).getCategoryBag().getKeyedReference(), xpath + "bindingTemplate(" + i + ").categoryBag.");
+ validatedValuesKeyRefGrp(items.get(i).getCategoryBag().getKeyedReferenceGroup(), xpath + "bindingTemplate(" + i + ").categoryBag.");
+ }
+ if (items.get(i).getTModelInstanceDetails() != null) {
+
+ validateTmodelInstanceDetails(items.get(i).getTModelInstanceDetails().getTModelInstanceInfo(), xpath + "bindingTemplate(" + i + ").tModelInstanceDetails.");
+ }
+ }
+ }
+
+ private void validateValuesBE(List<BusinessEntity> items) throws DispositionReportFaultMessage {
+ if (items == null) {
+ return;
+ }
+ for (int i = 0; i < items.size(); i++) {
+ if (items.get(i).getCategoryBag() != null) {
+ validatedValuesKeyRef(items.get(i).getCategoryBag().getKeyedReference(), "businessEntity(" + i + ").categoryBag.");
+ validatedValuesKeyRefGrp(items.get(i).getCategoryBag().getKeyedReferenceGroup(), "businessEntity(" + i + ").categoryBag.");
+ }
+ if (items.get(i).getIdentifierBag() != null) {
+ validatedValuesKeyRef(items.get(i).getIdentifierBag().getKeyedReference(), "businessEntity(" + i + ").identifierBag.");
+ }
+ if (items.get(i).getBusinessServices() != null) {
+ validateValuesBS(items.get(i).getBusinessServices().getBusinessService(), "businessEntity(" + i + ").");
+ }
+ }
+ }
+
+ private void validateValuesBS(List<BusinessService> items, String xpath) throws DispositionReportFaultMessage {
+ if (items == null) {
+ return;
+ }
+ for (int i = 0; i < items.size(); i++) {
+ if (items.get(i).getCategoryBag() != null) {
+ validatedValuesKeyRef(items.get(i).getCategoryBag().getKeyedReference(), xpath + "businessService(" + i + ").categoryBag.");
+ validatedValuesKeyRefGrp(items.get(i).getCategoryBag().getKeyedReferenceGroup(), xpath + "businessService(" + i + ").categoryBag.");
+ }
+ if (items.get(i).getBindingTemplates() != null) {
+ validateValuesBT(items.get(i).getBindingTemplates().getBindingTemplate(), xpath + xpath + "businessService(" + i + ").identifierBag.");
+ }
+ }
+ }
+
+ private void validateValuesPA(List<PublisherAssertion> items) throws DispositionReportFaultMessage {
+ if (items == null) {
+ return;
+ }
+ for (int i = 0; i < items.size(); i++) {
+ if (items.get(i).getKeyedReference() != null) {
+ List<KeyedReference> temp = new ArrayList<KeyedReference>();
+ temp.add(items.get(i).getKeyedReference());
+ validatedValuesKeyRef(temp, "publisherAssertion(" + i + ").");
+ }
+ }
+ }
+
+ private void validateValuesTM(List<TModel> items) throws DispositionReportFaultMessage {
+ if (items == null) {
+ return;
+ }
+ for (int i = 0; i < items.size(); i++) {
+ if (items.get(i).getCategoryBag() != null) {
+ validatedValuesKeyRef(items.get(i).getCategoryBag().getKeyedReference(), "tModel(" + i + ").categoryBag.");
+ validatedValuesKeyRefGrp(items.get(i).getCategoryBag().getKeyedReferenceGroup(), "tModel(" + i + ").categoryBag.");
+ }
+ if (items.get(i).getIdentifierBag() != null) {
+ validatedValuesKeyRef(items.get(i).getIdentifierBag().getKeyedReference(), "tModel(" + i + ").identifierBag.");
+ }
+ }
+ }
+
+ /**
+ * returns null if no valid values are defined (i.e. anything goes)
+ *
+ * @param tModelkey
+ * @return
+ */
+ public static List<String> getValidValues(String tModelKey) {
+ List<String> ret = null;
+ EntityManager em = PersistenceManager.getEntityManager();
+ EntityTransaction tx = em.getTransaction();
+ try {
+ tx.begin();
+ ValueSetValues items = em.find(ValueSetValues.class, tModelKey);
+ if (items != null && items.getValues() != null) {
+ ret = new ArrayList<String>();
+ for (int i = 0; i < items.getValues().size(); i++) {
+ ret.add(items.getValues().get(i).getValue());
+ }
+ }
+ tx.commit();
+ } finally {
+ if (tx.isActive()) {
+ tx.rollback();
+ }
+ em.close();
+ }
+ return ret;
+
+ }
+
+ private void validatedValuesKeyRef(List<KeyedReference> items, String xpath) throws DispositionReportFaultMessage {
+ if (items == null) {
+ return;
+ }
+ String err = "";
+ for (int i = 0; i < items.size(); i++) {
+ List<String> validValues = getValidValues(items.get(i).getTModelKey());
+ if (validValues != null) {
+ //ok we have some work to do
+ boolean valid = false;
+ for (int k = 0; k < validValues.size(); k++) {
+ if (validValues.get(i).equals(items.get(i).getKeyValue())) {
+ valid = true;
+ }
+ }
+ if (!valid) {
+ err += xpath + "keyedReference(" + i + ") ";
+ }
+ }
+ }
+ if (err.length() > 0) {
+ throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", err));
+ }
+ }
+
+ private void validatedValuesKeyRefGrp(List<KeyedReferenceGroup> items, String xpath) throws DispositionReportFaultMessage {
+ if (items == null) {
+ return;
+ }
+ for (int i = 0; i < items.size(); i++) {
+ validatedValuesKeyRef(items.get(i).getKeyedReference(), xpath + "keyReferenceGroup(" + i + ").");
+ }
+ }
+
+ private void validateTmodelInstanceDetails(List<TModelInstanceInfo> tModelInstanceInfo, String xpath) throws DispositionReportFaultMessage {
+ /*
+ if (tModelInstanceInfo == null) {
+ return;
+ }
+ String err = "";
+ for (int i = 0; i < tModelInstanceInfo.size(); i++) {
+ List<String> validValues = getValidValues(tModelInstanceInfo.get(i).getTModelKey());
+ if (validValues != null) {
+ //compare against the instance info
+ if (tModelInstanceInfo.get(i).getInstanceDetails() == null) {
+ err += xpath + ".(" + i + ").instanceDetails=null ";
+ } else {
+ boolean ok = false;
+ for (int k = 0; k < validValues.size(); k++) {
+ if (validValues.get(k).equals(tModelInstanceInfo.get(i).getInstanceDetails().getInstanceParms())) {
+ ok = true;
+ }
+ }
+ if (!ok) {
+ err += xpath + ".(" + i + ").instanceDetails.instanceParams ";
+ }
+ }
+ }
+ }
+ if (err.length() > 0) {
+ throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", err));
+ }*/
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org