juddi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From alexo...@apache.org
Subject git commit: JUDDI-706 in progress
Date Mon, 28 Apr 2014 11:05:59 GMT
Repository: juddi
Updated Branches:
  refs/heads/master 2a3689423 -> aa0d7b5ab


JUDDI-706 in progress


Project: http://git-wip-us.apache.org/repos/asf/juddi/repo
Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/aa0d7b5a
Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/aa0d7b5a
Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/aa0d7b5a

Branch: refs/heads/master
Commit: aa0d7b5ab12d889f91564500b189934b16c2909b
Parents: 2a36894
Author: Alex <alexander.oree@us.army.mil>
Authored: Mon Apr 28 07:05:31 2014 -0400
Committer: Alex <alexander.oree@us.army.mil>
Committed: Mon Apr 28 07:05:31 2014 -0400

----------------------------------------------------------------------
 juddi-client/pom.xml                            | 136 +++---
 .../org/apache/juddi/api/impl/JUDDIApiImpl.java | 418 +++++++++++++++----
 .../impl/ServiceCounterLifecycleResource.java   |   2 +
 .../juddi/api/impl/UDDISubscriptionImpl.java    |   6 +-
 .../org/apache/juddi/api/util/JUDDIQuery.java   | 116 +++++
 .../org/apache/juddi/rmi/JUDDIApiService.java   |   5 +-
 .../juddi/validation/ValidatePublish.java       |  17 +
 .../juddi/api/impl/API_010_PublisherTest.java   | 102 ++++-
 .../api_v3/AdminSaveSubscriptionResponse.java   |  40 +-
 .../juddi/v3_service/JUDDIApiPortType.java      |  11 +-
 uddi-ws/src/main/resources/juddi_api_v1.wsdl    |   4 +-
 11 files changed, 693 insertions(+), 164 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/juddi-client/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-client/pom.xml b/juddi-client/pom.xml
index ccbb3e6..42cce3d 100644
--- a/juddi-client/pom.xml
+++ b/juddi-client/pom.xml
@@ -16,73 +16,73 @@
  *
  */ -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.juddi</groupId>
-    <artifactId>juddi-parent</artifactId>
-    <version>3.2.1-SNAPSHOT</version>
-  </parent> 
-  <artifactId>juddi-client</artifactId>
-  <packaging>bundle</packaging>
-  <name>jUDDI Client side Code</name>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.juddi</groupId>
+		<artifactId>juddi-parent</artifactId>
+		<version>3.2.1-SNAPSHOT</version>
+	</parent> 
+	<artifactId>juddi-client</artifactId>
+	<packaging>bundle</packaging>
+	<name>jUDDI Client side Code</name>
 
-  <dependencies>
-    <dependency>
-        <groupId>org.apache.juddi</groupId>
-        <artifactId>uddi-ws</artifactId>
-        <version>${project.parent.version}</version>
-     </dependency>
-     <dependency>
-        <groupId>commons-configuration</groupId>
-        <artifactId>commons-configuration</artifactId>
-        <version>1.9</version>
-     </dependency>
-	    <dependency>
-	<groupId>org.apache.commons</groupId>
-	<artifactId>commons-lang3</artifactId>
-	<version>3.1</version>
-</dependency>
-<dependency>
-	  <groupId>commons-collections</groupId>
-	  <artifactId>commons-collections</artifactId>
-	  <version>3.2</version>
-	 </dependency>
-      <dependency>
-		<groupId>javax.servlet</groupId>
-		<artifactId>servlet-api</artifactId>
-		<version>2.5</version>
-		<scope>provided</scope>
-	 </dependency>
-	 <dependency>
-    	<groupId>wsdl4j</groupId>
-    	<artifactId>wsdl4j</artifactId>
-    	<version>1.6.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-      <version>4.2.5</version>
-    </dependency>
-  </dependencies> 
-  <build>
-  <plugins>
-  <plugin>
-     <groupId>org.apache.maven.plugins</groupId>
-     <artifactId>maven-compiler-plugin</artifactId>
-     <version>3.1</version>
-     <configuration>
-         <showDeprecation>true</showDeprecation>
-     </configuration>
- </plugin>
-  <plugin>
-      <artifactId>maven-assembly-plugin</artifactId>
-      <configuration>
-       
-        <descriptorRefs>
-          <descriptorRef>jar-with-dependencies</descriptorRef>
-        </descriptorRefs>
-      </configuration>
-    </plugin>
- </plugins>
- </build>
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.juddi</groupId>
+			<artifactId>uddi-ws</artifactId>
+			<version>${project.parent.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-configuration</groupId>
+			<artifactId>commons-configuration</artifactId>
+			<version>1.9</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-lang3</artifactId>
+			<version>3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-collections</groupId>
+			<artifactId>commons-collections</artifactId>
+			<version>3.2</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>wsdl4j</groupId>
+			<artifactId>wsdl4j</artifactId>
+			<version>1.6.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.2.5</version>
+		</dependency>
+	</dependencies> 
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<showDeprecation>true</showDeprecation>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<configuration>
+
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/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 7730bc0..7b0331f 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,6 +18,7 @@ package org.apache.juddi.api.impl;
 
 import java.io.StringWriter;
 import java.rmi.RemoteException;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -29,10 +30,14 @@ import javax.persistence.EntityTransaction;
 import javax.persistence.Query;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Marshaller;
+import javax.xml.ws.Holder;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.ClassUtil;
+import static org.apache.juddi.api.impl.JUDDIApiImpl.sub;
+import org.apache.juddi.api.util.JUDDIQuery;
+import org.apache.juddi.api.util.QueryStatus;
 import org.apache.juddi.api_v3.AdminSaveBusinessWrapper;
 import org.apache.juddi.api_v3.AdminSaveTModelWrapper;
 import org.apache.juddi.api_v3.Clerk;
@@ -57,28 +62,28 @@ 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.Publisher;
+import org.apache.juddi.model.SubscriptionMatch;
 import org.apache.juddi.model.Tmodel;
 import org.apache.juddi.model.UddiEntityPublisher;
-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.error.UserMismatchException;
 import org.apache.juddi.v3_service.JUDDIApiPortType;
 import org.apache.juddi.validation.ValidateClerk;
 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.apache.juddi.validation.ValidateSubscription;
 import org.uddi.api_v3.AuthToken;
 import org.uddi.api_v3.BusinessInfo;
 import org.uddi.api_v3.BusinessInfos;
@@ -88,6 +93,7 @@ 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.SaveTModel;
 import org.uddi.api_v3.TModelInfo;
 import org.uddi.api_v3.TModelInfos;
 import org.uddi.sub_v3.GetSubscriptionResults;
@@ -106,11 +112,12 @@ import org.uddi.v3_service.UDDISubscriptionPortType;
  * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
  */
 @WebService(serviceName = "JUDDIApiService",
-     endpointInterface = "org.apache.juddi.v3_service.JUDDIApiPortType",
-     targetNamespace = "urn:juddi-apache-org:v3_service")
+        endpointInterface = "org.apache.juddi.v3_service.JUDDIApiPortType",
+        targetNamespace = "urn:juddi-apache-org:v3_service")
 public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortType {
 
         private Log log = LogFactory.getLog(this.getClass());
+        private UDDIServiceCounter serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass());
 
         /**
          * Saves publisher(s) to the persistence layer. This method is specific
@@ -121,8 +128,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws DispositionReportFaultMessage
          */
         public PublisherDetail savePublisher(SavePublisher body)
-             throws DispositionReportFaultMessage {
-
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
                 try {
@@ -152,7 +159,15 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.SAVE_PUBLISHER,
+                                QueryStatus.SUCCESS, procTime);
                         return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.SAVE_PUBLISHER,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -169,8 +184,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws DispositionReportFaultMessage
          */
         public void deletePublisher(DeletePublisher body)
-             throws DispositionReportFaultMessage {
-
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
                 try {
@@ -226,6 +241,14 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.DELETE_PUBLISHER,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.DELETE_PUBLISHER,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -243,8 +266,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws DispositionReportFaultMessage
          */
         public PublisherDetail getPublisherDetail(GetPublisherDetail body)
-             throws DispositionReportFaultMessage {
-
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 new ValidatePublisher(null).validateGetPublisherDetail(body);
 
                 EntityManager em = PersistenceManager.getEntityManager();
@@ -275,7 +298,15 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_PUBLISHER_DETAIL,
+                                QueryStatus.SUCCESS, procTime);
                         return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_PUBLISHER_DETAIL,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -298,8 +329,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          */
         @SuppressWarnings("unchecked")
         public PublisherDetail getAllPublisherDetail(GetAllPublisherDetail body)
-             throws DispositionReportFaultMessage, RemoteException {
-
+                throws DispositionReportFaultMessage, RemoteException {
+                long startTime = System.currentTimeMillis();
                 new ValidatePublisher(null).validateGetAllPublisherDetail(body);
 
                 EntityManager em = PersistenceManager.getEntityManager();
@@ -324,7 +355,15 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_ALL_PUBLISHER_DETAIL,
+                                QueryStatus.SUCCESS, procTime);
                         return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_ALL_PUBLISHER_DETAIL,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -345,8 +384,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws DispositionReportFaultMessage
          */
         public void adminDeleteTModel(DeleteTModel body)
-             throws DispositionReportFaultMessage {
-
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
                 try {
@@ -363,6 +402,14 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.ADMIN_DELETE_TMODEL,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.ADMIN_DELETE_TMODEL,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -380,8 +427,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws RemoteException
          */
         public void deleteClientSubscriptionInfo(DeleteClientSubscriptionInfo body)
-             throws DispositionReportFaultMessage, RemoteException {
-
+                throws DispositionReportFaultMessage, RemoteException {
+                long startTime = System.currentTimeMillis();
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
                 try {
@@ -398,6 +445,15 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.DELETE_CLIENT_SUB,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.DELETE_CLIENT_SUB,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -417,7 +473,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws RemoteException
          */
         public ClientSubscriptionInfoDetail saveClientSubscriptionInfo(SaveClientSubscriptionInfo body)
-             throws DispositionReportFaultMessage, RemoteException {
+                throws DispositionReportFaultMessage, RemoteException {
+                long startTime = System.currentTimeMillis();
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
                 try {
@@ -447,7 +504,17 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.SAVE_CLIENT_SUB,
+                                QueryStatus.SUCCESS, procTime);
                         return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.SAVE_CLIENT_SUB,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -466,8 +533,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          */
         @SuppressWarnings("unchecked")
         public ClientSubscriptionInfoDetail getAllClientSubscriptionInfoDetail(GetAllClientSubscriptionInfoDetail body)
-             throws DispositionReportFaultMessage {
-
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 new ValidateClientSubscriptionInfo(null).validateGetAllClientSubscriptionDetail(body);
 
                 EntityManager em = PersistenceManager.getEntityManager();
@@ -492,7 +559,16 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB,
+                                QueryStatus.SUCCESS, procTime);
                         return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -512,8 +588,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws DispositionReportFaultMessage
          */
         public ClientSubscriptionInfoDetail getClientSubscriptionInfoDetail(GetClientSubscriptionInfoDetail body)
-             throws DispositionReportFaultMessage {
-
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 new ValidateClientSubscriptionInfo(null).validateGetClientSubscriptionInfoDetail(body);
 
                 EntityManager em = PersistenceManager.getEntityManager();
@@ -529,6 +605,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         for (String subscriptionKey : subscriptionKeyList) {
 
                                 org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = null;
+
                                 try {
                                         modelClientSubscriptionInfo = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, subscriptionKey);
                                 } catch (ClassCastException e) {
@@ -545,7 +622,16 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_CLIENT_SUB,
+                                QueryStatus.SUCCESS, procTime);
                         return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_CLIENT_SUB,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -565,8 +651,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws DispositionReportFaultMessage
          */
         public ClerkDetail saveClerk(SaveClerk body)
-             throws DispositionReportFaultMessage {
-
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
                 try {
@@ -596,7 +682,16 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.SAVE_CLERK,
+                                QueryStatus.SUCCESS, procTime);
                         return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.SAVE_CLERK,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -616,8 +711,8 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @throws DispositionReportFaultMessage
          */
         public NodeDetail saveNode(SaveNode body)
-             throws DispositionReportFaultMessage {
-
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
                 try {
@@ -647,7 +742,16 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.SAVE_NODE,
+                                QueryStatus.SUCCESS, procTime);
                         return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.SAVE_NODE,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -667,14 +771,14 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          */
         @SuppressWarnings("unchecked")
         public SyncSubscriptionDetail invokeSyncSubscription(
-             SyncSubscription body) throws DispositionReportFaultMessage,
-             RemoteException {
-
+                SyncSubscription body) throws DispositionReportFaultMessage,
+                RemoteException {
+                long startTime = System.currentTimeMillis();
                 //validate
                 SyncSubscriptionDetail syncSubscriptionDetail = new SyncSubscriptionDetail();
 
                 Map<String, org.apache.juddi.api_v3.ClientSubscriptionInfo> clientSubscriptionInfoMap
-                     = new HashMap<String, org.apache.juddi.api_v3.ClientSubscriptionInfo>();
+                        = new HashMap<String, org.apache.juddi.api_v3.ClientSubscriptionInfo>();
                 //find the clerks to go with these subscriptions
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
@@ -685,6 +789,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         for (GetSubscriptionResults getSubscriptionResult : body.getGetSubscriptionResultsList()) {
                                 String subscriptionKey = getSubscriptionResult.getSubscriptionKey();
                                 org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = null;
+
                                 try {
                                         modelClientSubscriptionInfo = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, subscriptionKey);
                                 } catch (ClassCastException e) {
@@ -698,6 +803,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.INVOKE_SYNCSUB,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -712,26 +823,35 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                                 Clerk toClerk = clientSubscriptionInfoMap.get(subscriptionKey).getToClerk();
                                 String clazz = fromClerk.getNode().getProxyTransport();
                                 Class<?> transportClass = ClassUtil.forName(clazz, this.getClass());
-                                Transport transport = (Transport) transportClass.getConstructor(String.class).newInstance(fromClerk.getNode().getName());
+                                Transport transport = (Transport) transportClass.getConstructor(String.class
+                                ).newInstance(fromClerk.getNode().getName());
                                 UDDISubscriptionPortType subscriptionService = transport.getUDDISubscriptionService(fromClerk.getNode().getSubscriptionUrl());
                                 SubscriptionResultsList list = subscriptionService.getSubscriptionResults(getSubscriptionResult);
 
                                 JAXBContext context = JAXBContext.newInstance(list.getClass());
                                 Marshaller marshaller = context.createMarshaller();
                                 StringWriter sw = new StringWriter();
+
                                 marshaller.marshal(list, sw);
 
-                                log.info("Notification received by UDDISubscriptionListenerService : " + sw.toString());
+                                log.info(
+                                        "Notification received by UDDISubscriptionListenerService : " + sw.toString());
 
                                 NotificationList<String> nl = NotificationList.getInstance();
-                                nl.getNotifications().add(sw.toString());
+
+                                nl.getNotifications()
+                                        .add(sw.toString());
 
                                 //update the registry with the notification list.
                                 XRegisterHelper.handle(fromClerk, toClerk, list);
 
-                                syncSubscriptionDetail.getSubscriptionResultsList().add(list);
+                                syncSubscriptionDetail.getSubscriptionResultsList()
+                                        .add(list);
                         } catch (Exception ce) {
                                 log.error(ce.getMessage(), ce);
+                                long procTime = System.currentTimeMillis() - startTime;
+                                serviceCounter.update(JUDDIQuery.SAVE_NODE,
+                                        QueryStatus.FAILED, procTime);
                                 if (ce instanceof DispositionReportFaultMessage) {
                                         throw (DispositionReportFaultMessage) ce;
                                 }
@@ -743,12 +863,15 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                 }
                 //for now sending a clean object back
 
+                long procTime = System.currentTimeMillis() - startTime;
+                serviceCounter.update(JUDDIQuery.INVOKE_SYNCSUB,
+                        QueryStatus.SUCCESS, procTime);
                 return syncSubscriptionDetail;
         }
 
         @Override
         public NodeList getAllNodes(String authInfo) throws DispositionReportFaultMessage, RemoteException {
-
+                long startTime = System.currentTimeMillis();
                 NodeList r = new NodeList();
 
                 EntityManager em = PersistenceManager.getEntityManager();
@@ -773,7 +896,14 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         }
 
                         tx.commit();
-
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_ALL_NODES,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_ALL_NODES,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -786,7 +916,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
 
         @Override
         public ClerkList getAllClerks(String authInfo) throws DispositionReportFaultMessage, RemoteException {
-
+                long startTime = System.currentTimeMillis();
                 ClerkList ret = new ClerkList();
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
@@ -809,6 +939,14 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
 
                         }
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_ALL_CLERKS,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.GET_ALL_CLERKS,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
 
                 } finally {
                         if (tx.isActive()) {
@@ -823,6 +961,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
 
         @Override
         public void deleteNode(DeleteNode req) throws DispositionReportFaultMessage, RemoteException {
+                long startTime = System.currentTimeMillis();
                 boolean found = false;
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
@@ -833,13 +972,23 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         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) {
+                        if (existingUddiEntity
+                                != null) {
 
                                 //TODO cascade delete all clerks tied to this node
                                 em.remove(existingUddiEntity);
                                 found = true;
                         }
+
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.DELETE_NODE,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.DELETE_NODE,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
 
                 } finally {
                         if (tx.isActive()) {
@@ -856,7 +1005,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
 
         @Override
         public void deleteClerk(DeleteClerk req) throws DispositionReportFaultMessage, RemoteException {
-
+                long startTime = System.currentTimeMillis();
                 boolean found = false;
                 EntityManager em = PersistenceManager.getEntityManager();
                 EntityTransaction tx = em.getTransaction();
@@ -868,11 +1017,21 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         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) {
+                        if (existingUddiEntity
+                                != null) {
                                 em.remove(existingUddiEntity);
                                 found = true;
                         }
+
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.DELETE_CLERK,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.DELETE_CLERK,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
 
                 } finally {
                         if (tx.isActive()) {
@@ -896,83 +1055,174 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
          * @return
          * @throws DispositionReportFaultMessage
          
+         @Override
+         public DispositionReport setAllValidValues(String authInfo, List<ValidValues> values) throws DispositionReportFaultMessage, RemoteException {
+         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+         /*  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) {
+         find.setValidatorClass(values.get(i).getValidationClass());
+         em.persist(find);
+
+         } else {
+         org.apache.juddi.model.ValueSetValues vv = new ValueSetValues();
+         vv.setTModelKey(values.get(i).getTModekKey());
+         vv.setValidatorClass(values.get(i).getValidationClass());
+         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 DispositionReport setAllValidValues(String authInfo, List<ValidValues> values) throws DispositionReportFaultMessage, RemoteException {
-throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-              /*  EntityManager em = PersistenceManager.getEntityManager();
-                UddiEntityPublisher entityPublisher = getEntityPublisher(em, authInfo);
+        public void adminDeleteSubscription(String authInfo, List<String> subscriptionKey) throws DispositionReportFaultMessage, RemoteException {
+                long startTime = System.currentTimeMillis();
+                long procTime = System.currentTimeMillis() - startTime;
+                serviceCounter.update(JUDDIQuery.ADMIN_DELETE_SUB,
+                        QueryStatus.SUCCESS, procTime);
+                ValidatePublish.unsupportedAPICall();
 
-                new ValidateValueSetValidation(entityPublisher).validateSetAllValidValues(values);
+        }
 
+        @Override
+        public DispositionReport adminSaveBusiness(String authInfo, List<AdminSaveBusinessWrapper> values) throws DispositionReportFaultMessage, RemoteException {
+                long startTime = System.currentTimeMillis();
+                long procTime = System.currentTimeMillis() - startTime;
+                serviceCounter.update(JUDDIQuery.ADMIN_SAVE_BUSINESS,
+                        QueryStatus.SUCCESS, procTime);
+                ValidatePublish.unsupportedAPICall();
+                return null;
+        }
+
+        @Override
+        public DispositionReport adminSaveTModel(String authInfo, List<AdminSaveTModelWrapper> values) throws DispositionReportFaultMessage, RemoteException {
+                long startTime = System.currentTimeMillis();
+                EntityManager em = PersistenceManager.getEntityManager();
                 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
+                        UddiEntityPublisher requestor = this.getEntityPublisher(em, authInfo);
+                        if (!((Publisher) requestor).isAdmin()) {
+                                throw new UserMismatchException(new ErrorMessage("errors.AdminReqd"));
+                        }
                         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) {
-                                        find.setValidatorClass(values.get(i).getValidationClass());
-                                        em.persist(find);
-
-                                } else {
-                                        org.apache.juddi.model.ValueSetValues vv = new ValueSetValues();
-                                        vv.setTModelKey(values.get(i).getTModekKey());
-                                        vv.setValidatorClass(values.get(i).getValidationClass());
-                                        em.persist(vv);
-                                }
+                                //impersonate the user
+                                AuthToken authToken = sec.getAuthToken(values.get(i).getPublisherID());
+                                SaveTModel stm = new SaveTModel();
+                                stm.setAuthInfo(authToken.getAuthInfo());
+                                stm.getTModel().addAll(values.get(i).getTModel());
+                                pub.saveTModel(stm);
                         }
 
                         tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.ADMIN_SAVE_TMODEL,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.ADMIN_SAVE_TMODEL,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
                 } 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.
+                long startTime = System.currentTimeMillis();
+                long procTime = System.currentTimeMillis() - startTime;
+                serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB,
+                        QueryStatus.SUCCESS, procTime);
+                //returns ALL client subscriptions
+                ValidatePublish.unsupportedAPICall();
+                return null;
         }
 
         @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.
+                long startTime = System.currentTimeMillis();
+                long procTime = System.currentTimeMillis() - startTime;
+                serviceCounter.update(JUDDIQuery.SET_REPLICATION_NODES,
+                        QueryStatus.SUCCESS, procTime);
+                ValidatePublish.unsupportedAPICall();
+                return null;
         }
 
         @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.
+                long startTime = System.currentTimeMillis();
+                long procTime = System.currentTimeMillis() - startTime;
+                serviceCounter.update(JUDDIQuery.GET_REPLICATION_NODES,
+                        QueryStatus.SUCCESS, procTime);
+                ValidatePublish.unsupportedAPICall();
+                return null;
         }
 
+        static UDDISubscriptionImpl sub = new UDDISubscriptionImpl();
+        static UDDISecurityImpl sec = new UDDISecurityImpl();
+        static UDDIPublicationImpl pub = new UDDIPublicationImpl();
+
         @Override
+        public void adminSaveSubscription(String authInfo, String publisherOrUsername, Holder<List<Subscription>> subscriptions) throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+                        UddiEntityPublisher requestor = this.getEntityPublisher(em, authInfo);
+                        if (!((Publisher) requestor).isAdmin()) {
+                                throw new UserMismatchException(new ErrorMessage("errors.AdminReqd"));
+                        }
+                        //impersonate the user
+                        AuthToken authToken = sec.getAuthToken(publisherOrUsername);
+                        sub.saveSubscription(authToken.getAuthInfo(), subscriptions);
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.ADMIN_SAVE_SUB,
+                                QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(JUDDIQuery.ADMIN_SAVE_SUB,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
 
-        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/aa0d7b5a/juddi-core/src/main/java/org/apache/juddi/api/impl/ServiceCounterLifecycleResource.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/ServiceCounterLifecycleResource.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/ServiceCounterLifecycleResource.java
index 7bc1335..d6bc323 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/ServiceCounterLifecycleResource.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/ServiceCounterLifecycleResource.java
@@ -6,6 +6,7 @@ import java.util.Map;
 
 import org.apache.juddi.api.util.CustodyTransferQuery;
 import org.apache.juddi.api.util.InquiryQuery;
+import org.apache.juddi.api.util.JUDDIQuery;
 import org.apache.juddi.api.util.PublicationQuery;
 import org.apache.juddi.api.util.ReplicationQuery;
 import org.apache.juddi.api.util.SecurityQuery;
@@ -38,6 +39,7 @@ public class ServiceCounterLifecycleResource {
                 implForQuery.put(UDDISubscriptionListenerImpl.class.getName(), SubscriptionListenerQuery.getQueries());
                 implForQuery.put(UDDIValueSetCachingImpl.class.getName(), ValueSetCachingQuery.getQueries());
                 implForQuery.put(UDDIValueSetValidationImpl.class.getName(), ValueSetValidationQuery.getQueries());
+                implForQuery.put(JUDDIApiImpl.class.getName(), JUDDIQuery.getQueries());
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
index 435d236..3c24102 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
@@ -903,7 +903,7 @@ public class UDDISubscriptionImpl extends AuthenticatedService implements UDDISu
 	 * @param apiSubscription - renewal subscription request
 	 * @throws DispositionReportFaultMessage 
 	 */
-	private void doRenewal(org.apache.juddi.model.Subscription existingSubscription, org.uddi.sub_v3.Subscription apiSubscription) throws DispositionReportFaultMessage {
+	protected void doRenewal(org.apache.juddi.model.Subscription existingSubscription, org.uddi.sub_v3.Subscription apiSubscription) throws DispositionReportFaultMessage {
 		if (apiSubscription.getSubscriptionFilter() == null) {
 			String rawFilter = existingSubscription.getSubscriptionFilter();
 			try {
@@ -924,7 +924,7 @@ public class UDDISubscriptionImpl extends AuthenticatedService implements UDDISu
 	 * @param apiSubscription
 	 * @throws DispositionReportFaultMessage
 	 */
-	private void doSubscriptionExpirationDate(org.uddi.sub_v3.Subscription apiSubscription) throws DispositionReportFaultMessage {
+	protected void doSubscriptionExpirationDate(org.uddi.sub_v3.Subscription apiSubscription) throws DispositionReportFaultMessage {
 
 		int subscriptionExpirationDays = DEFAULT_SUBSCRIPTIONEXPIRATION_DAYS;
 		try { 
@@ -963,7 +963,7 @@ public class UDDISubscriptionImpl extends AuthenticatedService implements UDDISu
 	 * @return a list of subscription matches
 	 * @throws DispositionReportFaultMessage
 	 */
-	private List<?> getSubscriptionMatches(SubscriptionFilter subscriptionFilter, EntityManager em) 
+	protected List<?> getSubscriptionMatches(SubscriptionFilter subscriptionFilter, EntityManager em) 
 			 throws DispositionReportFaultMessage {
 		
 		

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
new file mode 100644
index 0000000..3b550e6
--- /dev/null
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
@@ -0,0 +1,116 @@
+/*
+ * 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.api.util;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+/**
+ *
+ * @author alex
+ */
+public enum JUDDIQuery implements UDDIQuery {
+
+        SAVE_PUBLISHER("save_publisher"),
+        DELETE_PUBLISHER("delete_publisher"),
+        GET_PUBLISHER_DETAIL("get_publisherDetail"),
+        GET_ALL_PUBLISHER_DETAIL("get_allPublisherDetail"),
+        ADMIN_DELETE_TMODEL("admin_deleteTmodel"),
+        DELETE_CLIENT_SUB("delete_clientSubscriptionInfo"),
+        SAVE_CLIENT_SUB("save_clientSubscriptionInfo"),
+        GET_ALL_CLIENT_SUB("get_allClientSubscriptionInfo"),
+        GET_CLIENT_SUB("get_clientSubscriptionInfo"),
+        SAVE_CLERK("save_clerk"),
+        SAVE_NODE("save_node"),
+        GET_ALL_NODES("get_allNodes"),
+        DELETE_NODE("delete_node"),
+        GET_ALL_CLERKS("get_allClerks"),
+        DELETE_CLERK("delete_clerk"),
+        ADMIN_DELETE_SUB("admin_deleteSubcriptionInfo"),
+        ADMIN_SAVE_TMODEL("admin_saveTmodel"),
+        ADMIN_SAVE_BUSINESS("admin_saveBusiness"),
+        SET_REPLICATION_NODES("set_replioationNodes"),
+        GET_REPLICATION_NODES("get_replicationNodes"),
+        ADMIN_SAVE_SUB("admin_saveClientSubscription"),
+        INVOKE_SYNCSUB("invoke_synchSubscription");
+
+        private String _query;
+        private static Hashtable<String, JUDDIQuery> _inquiryQueries = null;
+
+        JUDDIQuery(final String query) {
+                _query = query;
+        }
+
+        public String getQuery() {
+                return _query;
+        }
+
+        public synchronized static void initInquiryQueries() {
+                if (_inquiryQueries == null) {
+                        _inquiryQueries = new Hashtable();
+                        _inquiryQueries.put("save_publisher", JUDDIQuery.SAVE_PUBLISHER);
+                        _inquiryQueries.put("delete_publisher", JUDDIQuery.DELETE_PUBLISHER);
+                        _inquiryQueries.put("get_publisherDetail", JUDDIQuery.GET_PUBLISHER_DETAIL);
+                        _inquiryQueries.put("get_allPublisherDetail", JUDDIQuery.GET_ALL_PUBLISHER_DETAIL);
+                        _inquiryQueries.put("admin_deleteTmodel", JUDDIQuery.ADMIN_DELETE_TMODEL);
+                        _inquiryQueries.put("delete_clientSubscriptionInfo", JUDDIQuery.DELETE_CLIENT_SUB);
+                        _inquiryQueries.put("save_clientSubscriptionInfo", JUDDIQuery.SAVE_CLIENT_SUB);
+                        _inquiryQueries.put("get_allClientSubscriptionInfo", JUDDIQuery.GET_ALL_CLIENT_SUB);
+                        _inquiryQueries.put("get_clientSubscriptionInfo", JUDDIQuery.GET_CLIENT_SUB);
+                        _inquiryQueries.put("save_clerk", JUDDIQuery.SAVE_CLERK);
+                        _inquiryQueries.put("save_node", JUDDIQuery.SAVE_NODE);
+                        _inquiryQueries.put("get_allNodes", JUDDIQuery.GET_ALL_NODES);
+
+                        _inquiryQueries.put("delete_node", JUDDIQuery.DELETE_NODE);
+
+                        _inquiryQueries.put("get_allClerks", JUDDIQuery.GET_ALL_CLERKS);
+                        _inquiryQueries.put("delete_clerk", JUDDIQuery.DELETE_CLERK);
+                        _inquiryQueries.put("admin_deleteSubcriptionInfo", JUDDIQuery.ADMIN_DELETE_SUB);
+                        _inquiryQueries.put("admin_saveTmodel", JUDDIQuery.ADMIN_SAVE_TMODEL);
+                        _inquiryQueries.put("admin_saveBusiness", JUDDIQuery.ADMIN_SAVE_BUSINESS);
+                        _inquiryQueries.put("set_replioationNodes", JUDDIQuery.SET_REPLICATION_NODES);
+                        _inquiryQueries.put("get_replicationNodes", JUDDIQuery.GET_REPLICATION_NODES);
+                        _inquiryQueries.put("admin_saveClientSubscription", JUDDIQuery.ADMIN_SAVE_SUB);
+                        
+                        _inquiryQueries.put("invoke_synchSubscription", JUDDIQuery.INVOKE_SYNCSUB);
+        
+                        
+                }
+        }
+
+        public static List<String> getQueries() {
+                if (_inquiryQueries == null) {
+                        initInquiryQueries();
+                }
+
+                List list = new ArrayList<String>(_inquiryQueries.keySet());
+                return list;
+        }
+
+        public static JUDDIQuery fromQuery(final String query) {
+                if (_inquiryQueries == null) {
+                        initInquiryQueries();
+                }
+
+                if (_inquiryQueries.contains(query)) {
+                        return _inquiryQueries.get(query);
+                } else {
+                        throw new IllegalArgumentException("Unrecognized query " + query);
+                }
+        }
+
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java b/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
index 946a452..55e6497 100644
--- a/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
+++ b/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
@@ -19,6 +19,7 @@ package org.apache.juddi.rmi;
 import java.rmi.RemoteException;
 import java.rmi.server.UnicastRemoteObject;
 import java.util.List;
+import javax.xml.ws.Holder;
 
 import org.apache.juddi.api.impl.JUDDIApiImpl;
 import org.apache.juddi.api_v3.AdminSaveBusinessWrapper;
@@ -168,9 +169,11 @@ public class JUDDIApiService extends UnicastRemoteObject implements JUDDIApiPort
         }
 
         @Override
-        public void adminSaveSubscription(String authInfo, String publisherOrUsername, List<Subscription> subscriptions) throws DispositionReportFaultMessage, RemoteException {
+        public void adminSaveSubscription(String authInfo, String publisherOrUsername, Holder<List<Subscription>> subscriptions) throws DispositionReportFaultMessage {
                 juddiAPI.adminSaveSubscription(authInfo, publisherOrUsername, subscriptions);
         }
+
+      
 	
 	
 

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
index edd51e0..c24f70d 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
@@ -90,6 +90,7 @@ import org.uddi.api_v3.SaveBusiness;
 import org.uddi.api_v3.SaveService;
 import org.uddi.api_v3.SaveTModel;
 import org.uddi.api_v3.TModel;
+import org.uddi.sub_v3.Subscription;
 import org.uddi.v3_service.DispositionReportFaultMessage;
 
 /**
@@ -1567,6 +1568,22 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
+        public void validateSaveSubscriptionAdmin(EntityManager em, String publisherOrUsername, List<Subscription> subscriptions) throws DispositionReportFaultMessage {
+            
+            // No null input
+                if (subscriptions == null || subscriptions.isEmpty()) {
+                        throw new FatalErrorException(new ErrorMessage("errors.NullInput"));
+                }
+                
+                if (!((Publisher) publisher).isAdmin()) {
+                    throw new UserMismatchException(new ErrorMessage("errors.deletepublisher.AdminReqd"));
+                }
+                UddiEntityPublisher user = new UddiEntityPublisher(publisherOrUsername);
+                ValidateSubscription vsub = new ValidateSubscription(user);
+                for (int i=0; i < subscriptions.size(); i++){
+                    vsub.validateSubscriptions(em, subscriptions, user);
+                }
+        }
         public void validateSavePublisher(EntityManager em, SavePublisher body) throws DispositionReportFaultMessage {
 
                 // No null input

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_010_PublisherTest.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_010_PublisherTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_010_PublisherTest.java
index aee7858..74b4db1 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_010_PublisherTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_010_PublisherTest.java
@@ -17,7 +17,12 @@ package org.apache.juddi.api.impl;
 import static junit.framework.Assert.assertEquals;
 
 import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
 import java.util.List;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.ws.Holder;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
@@ -31,13 +36,22 @@ import org.apache.juddi.api_v3.SavePublisher;
 import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.Property;
 import org.apache.juddi.jaxb.EntityCreator;
+import org.apache.juddi.v3.client.UDDIConstants;
 import org.apache.juddi.v3.error.InvalidKeyPassedException;
+import org.apache.juddi.v3.error.UserMismatchException;
 import org.apache.juddi.v3.tck.TckPublisher;
 import org.apache.juddi.v3.tck.TckSecurity;
+import org.apache.juddi.v3.tck.TckSubscription;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.FindQualifiers;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.TModel;
+import org.uddi.sub_v3.Subscription;
+import org.uddi.sub_v3.SubscriptionFilter;
 import org.uddi.v3_service.DispositionReportFaultMessage;
 import org.uddi.v3_service.UDDISecurityPortType;
 
@@ -54,7 +68,7 @@ public class API_010_PublisherTest {
         private static Log logger = LogFactory.getLog(API_010_PublisherTest.class);
         private JUDDIApiImpl publisher = new JUDDIApiImpl();
         private UDDISecurityPortType security = new UDDISecurityImpl();
-        
+        private static TckSubscription tckSubscription = new TckSubscription(new UDDISubscriptionImpl(), new UDDISecurityImpl(), new UDDIInquiryImpl());
 
         @BeforeClass
         public static void startRegistry() throws ConfigurationException {
@@ -242,4 +256,90 @@ public class API_010_PublisherTest {
                 return TckSecurity.getAuthToken(security, TckPublisher.getSamPublisherId(), TckPublisher.getSamPassword());
         }
 
+        /**
+         * Joe saves a subscription on Sam's behalf
+         *
+         * @throws Exception
+         */
+        @Test
+        public void testAdminSaveSubscriptionAuthorized() throws Exception {
+                saveJoePublisher();
+                saveSamSyndicator();
+                DatatypeFactory fac = DatatypeFactory.newInstance();
+                List<Subscription> subs = new ArrayList<Subscription>();
+                Subscription s = new Subscription();
+
+                s.setMaxEntities(10);
+                s.setBrief(false);
+                GregorianCalendar gcal = new GregorianCalendar();
+                gcal.setTimeInMillis(System.currentTimeMillis());
+                gcal.add(Calendar.HOUR, 1);
+                s.setExpiresAfter(fac.newXMLGregorianCalendar(gcal));
+                s.setSubscriptionFilter(new SubscriptionFilter());
+                s.getSubscriptionFilter().setFindBusiness(new FindBusiness());
+                s.getSubscriptionFilter().getFindBusiness().setFindQualifiers(new FindQualifiers());
+                s.getSubscriptionFilter().getFindBusiness().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+                s.getSubscriptionFilter().getFindBusiness().getName().add(new Name(UDDIConstants.WILDCARD, null));
+                subs.add(s);
+                Holder<List<Subscription>> items = new Holder<List<Subscription>>();
+                items.value = subs;
+                publisher.adminSaveSubscription(authInfoJoe(), TckPublisher.getSamPublisherId(), items);
+                for (int i = 0; i < items.value.size(); i++) {
+                        tckSubscription.deleteSubscription(authInfoSam(), items.value.get(i).getSubscriptionKey());
+                }
+
+                deleteJoePublisher();
+                deleteSamSyndicator();
+
+        }
+
+        /**
+         * Sam saves a subscription on Sam's behalf (not authorized
+         *
+         * @throws Exception
+         */
+        @Test(expected = UserMismatchException.class)
+        public void testAdminSaveSubscriptionNotAuthorized() throws Exception {
+                saveJoePublisher();
+                saveSamSyndicator();
+                DatatypeFactory fac = DatatypeFactory.newInstance();
+                List<Subscription> subs = new ArrayList<Subscription>();
+                Subscription s = new Subscription();
+
+                s.setMaxEntities(10);
+                s.setBrief(false);
+                GregorianCalendar gcal = new GregorianCalendar();
+                gcal.setTimeInMillis(System.currentTimeMillis());
+                gcal.add(Calendar.HOUR, 1);
+                s.setExpiresAfter(fac.newXMLGregorianCalendar(gcal));
+                s.setSubscriptionFilter(new SubscriptionFilter());
+                s.getSubscriptionFilter().setFindBusiness(new FindBusiness());
+                s.getSubscriptionFilter().getFindBusiness().setFindQualifiers(new FindQualifiers());
+                s.getSubscriptionFilter().getFindBusiness().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+                s.getSubscriptionFilter().getFindBusiness().getName().add(new Name(UDDIConstants.WILDCARD, null));
+                subs.add(s);
+                Holder<List<Subscription>> items = new Holder<List<Subscription>>();
+                items.value = subs;
+                publisher.adminSaveSubscription(authInfoSam(), TckPublisher.getJoePublisherId(), items);
+                deleteJoePublisher();
+                deleteSamSyndicator();
+
+        }
+
+        @Test
+        public void testAdminSaveTModel() throws Exception {
+                saveJoePublisher();
+                saveSamSyndicator();
+                List<org.apache.juddi.api_v3.AdminSaveTModelWrapper> values = new ArrayList<org.apache.juddi.api_v3.AdminSaveTModelWrapper>();
+                org.apache.juddi.api_v3.AdminSaveTModelWrapper x = new org.apache.juddi.api_v3.AdminSaveTModelWrapper();
+                x.setPublisherID(TckPublisher.getSamPublisherId());
+                TModel tm = new TModel();
+                tm.setName(new Name("testAdminSaveTModel joe on sam's behalf", null));
+                
+                x.getTModel().add(tm);
+                publisher.adminSaveTModel(authInfoJoe(), values);
+                deleteJoePublisher();
+                deleteSamSyndicator();
+        }
+        
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/uddi-ws/src/main/java/org/apache/juddi/api_v3/AdminSaveSubscriptionResponse.java
----------------------------------------------------------------------
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/AdminSaveSubscriptionResponse.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/AdminSaveSubscriptionResponse.java
index 7a89cd1..718dbd0 100644
--- a/uddi-ws/src/main/java/org/apache/juddi/api_v3/AdminSaveSubscriptionResponse.java
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/AdminSaveSubscriptionResponse.java
@@ -1,9 +1,13 @@
 
 package org.apache.juddi.api_v3;
 
+import java.util.ArrayList;
+import java.util.List;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
+import org.uddi.sub_v3.Subscription;
 
 
 /**
@@ -16,6 +20,7 @@ import javax.xml.bind.annotation.XmlType;
  *   &lt;complexContent>
  *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
  *       &lt;sequence>
+ *         &lt;element name="subscriptions" type="{urn:uddi-org:sub_v3}subscription" maxOccurs="unbounded"/>
  *       &lt;/sequence>
  *     &lt;/restriction>
  *   &lt;/complexContent>
@@ -25,8 +30,41 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "adminSave_SubscriptionResponse")
+@XmlType(name = "adminSave_SubscriptionResponse", propOrder = {
+    "subscriptions"
+})
 public class AdminSaveSubscriptionResponse {
 
+    @XmlElement(required = true)
+    protected List<Subscription> subscriptions;
+
+    /**
+     * Gets the value of the subscriptions property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the subscriptions property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSubscriptions().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Subscription }
+     * 
+     * 
+     */
+    public List<Subscription> getSubscriptions() {
+        if (subscriptions == null) {
+            subscriptions = new ArrayList<Subscription>();
+        }
+        return this.subscriptions;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
----------------------------------------------------------------------
diff --git a/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java b/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
index 471353a..ce0de2e 100644
--- a/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
+++ b/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
@@ -9,6 +9,7 @@ import javax.jws.WebResult;
 import javax.jws.WebService;
 import javax.jws.soap.SOAPBinding;
 import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.ws.Holder;
 import javax.xml.ws.RequestWrapper;
 import javax.xml.ws.ResponseWrapper;
 import org.apache.juddi.api_v3.AdminSaveBusinessWrapper;
@@ -32,7 +33,6 @@ 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.uddi.api_v3.DeleteTModel;
 import org.uddi.api_v3.DispositionReport;
 import org.uddi.v3_service.DispositionReportFaultMessage;
@@ -433,7 +433,7 @@ public interface JUDDIApiPortType {
         throws DispositionReportFaultMessage, RemoteException
     ;
 
-    /**
+ /**
      * 
      * 		saves a client subscription, useful for restore functions
      * 		@since 3.3
@@ -452,9 +452,10 @@ public interface JUDDIApiPortType {
         String authInfo,
         @WebParam(name = "publisherOrUsername", targetNamespace = "urn:juddi-apache-org:api_v3")
         String publisherOrUsername,
-        @WebParam(name = "subscriptions", targetNamespace = "urn:juddi-apache-org:api_v3")
-        List<Subscription> subscriptions)
-        throws DispositionReportFaultMessage, RemoteException
+        @WebParam(name = "subscriptions", targetNamespace = "urn:juddi-apache-org:api_v3", mode = WebParam.Mode.INOUT)
+        Holder<List<Subscription>> subscriptions)
+        throws DispositionReportFaultMessage
     ;
 
+
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/aa0d7b5a/uddi-ws/src/main/resources/juddi_api_v1.wsdl
----------------------------------------------------------------------
diff --git a/uddi-ws/src/main/resources/juddi_api_v1.wsdl b/uddi-ws/src/main/resources/juddi_api_v1.wsdl
index e701c9b..ac7996f 100644
--- a/uddi-ws/src/main/resources/juddi_api_v1.wsdl
+++ b/uddi-ws/src/main/resources/juddi_api_v1.wsdl
@@ -389,7 +389,9 @@ xmlns:uddi="urn:uddi-org:api_v3">
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="adminSave_SubscriptionResponse">
-    <xs:sequence />
+    <xs:sequence >
+		<xs:element maxOccurs="unbounded" name="subscriptions" type="subr:subscription"/>
+	</xs:sequence>	
   </xs:complexType>
   
   


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org


Mime
View raw message