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 2019/06/21 00:56:45 UTC

[juddi] branch feature/JUDDI-558 updated: JUDDI-558 with the correct ticket number this time...some progess...still doesn't really work yet

This is an automated email from the ASF dual-hosted git repository.

alexoree pushed a commit to branch feature/JUDDI-558
in repository https://gitbox.apache.org/repos/asf/juddi.git


The following commit(s) were added to refs/heads/feature/JUDDI-558 by this push:
     new 72f163f  JUDDI-558 with the correct ticket number this time...some progess...still doesn't really work yet
72f163f is described below

commit 72f163f5334e873b97e757797a26c2e8a052a5ae
Author: Alex O'Ree <al...@apache.org>
AuthorDate: Thu Jun 20 20:56:42 2019 -0400

    JUDDI-558 with the correct ticket number this time...some progess...still doesn't really work yet
---
 juddi-core-openjpa/pom.xml                         |   33 +-
 juddi-core/pom.xml                                 |   24 +-
 .../org/apache/juddi/api/impl/JUDDIApiImpl.java    |   21 +
 .../org/apache/juddi/api/impl/UDDIInquiryImpl.java |   29 +-
 .../java/org/apache/juddi/rmi/JUDDIApiService.java |   14 +
 .../juddi/security/AccessControlFactory.java       |    2 +-
 .../juddi/security/AllowAllAccessControlImpl.java  |   59 +-
 .../org/apache/juddi/security/IAccessControl.java  |   36 +-
 .../apache/juddi/security/rbac/RbacRulesModel.java |   79 ++
 .../security/rbac/RoleBasedAccessControlImpl.java  |  369 +++++++
 .../apache/juddi/validation/ValidatePublish.java   |   20 +-
 juddi-core/src/main/resources/messages.properties  |    6 +-
 .../juddi/api/impl/API_010_PublisherTest.java      |    2 +-
 .../juddi/api/impl/API_180_RbacSecurityTest.java   |   47 +
 .../apache/juddi/api/runtime/juddiTestimpl.java    |   16 +
 .../WEB-INF/classes/META-INF/persistence.xml       |    2 +-
 .../juddi/adminconsole/hub/UddiAdminHub.java       |  392 ++++---
 .../juddi/adminconsole/resources/web.properties    |    4 +
 .../juddi/adminconsole/resources/web_es.properties |    1 +
 juddiv3-war/src/main/webapp/admin/admin.jsp        |   43 +-
 .../java/org/apache/juddi/api_v3/AccessLevel.java  |   44 +
 .../main/java/org/apache/juddi/api_v3/Action.java  |   40 +
 .../java/org/apache/juddi/api_v3/EntityType.java   |   42 +
 .../juddi/api_v3/GetPermissionsMessageRequest.java |  146 +++
 .../api_v3/GetPermissionsMessageResponse.java      |   67 ++
 .../org/apache/juddi/api_v3/ObjectFactory.java     |  699 +++++++------
 .../java/org/apache/juddi/api_v3/Permission.java   |  178 ++++
 .../juddi/api_v3/SetPermissionsMessageRequest.java |   96 ++
 .../api_v3/SetPermissionsMessageResponse.java      |   32 +
 .../apache/juddi/v3_service/JUDDIApiPortType.java  | 1081 ++++++++++----------
 .../org/apache/juddi/v3_service/package-info.java  |    8 +-
 uddi-ws/src/main/resources/juddi_api_v1.wsdl       |  487 ++-------
 uddi-ws/src/main/resources/juddi_api_v1.xsd        |  527 ++++++++++
 33 files changed, 3153 insertions(+), 1493 deletions(-)

diff --git a/juddi-core-openjpa/pom.xml b/juddi-core-openjpa/pom.xml
index e8bc864..50becba 100644
--- a/juddi-core-openjpa/pom.xml
+++ b/juddi-core-openjpa/pom.xml
@@ -44,14 +44,29 @@
                 <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.replication, org.apache.juddi.subscription.notify,
-                            org.apache.juddi.validation,org.apache.juddi.validation.vsv, org.apache.juddi.v3.auth,
-                            org.apache.juddi.v3.error
+                        <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.validation.vsv, 
+                            org.apache.juddi.v3.auth,
+                            org.apache.juddi.v3.error, 
+                            org.apache.juddi.security.rbac,
+                            org.apache.juddi.security
                         </Export-Package>
                         <Include-Resource>juddi_install_data=target/classes/juddi_install_data,
                             target/classes/messages.properties
@@ -64,7 +79,7 @@
                 <artifactId>openjpa-maven-plugin</artifactId>
                 <version>2.3.0</version>
                 <configuration>
-                    <includes>**/org/apache/juddi/model/*.class</includes>
+                    <includes>**/org/apache/juddi/model/*.class,**/org/apache/juddi/security/rbac/RbacRulesModel.class</includes>
                     <addDefaultConstructor>true</addDefaultConstructor>
                     <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
                     <persistenceXmlFile>${basedir}/src/test/resources/META-INF/persistence.xml</persistenceXmlFile>
diff --git a/juddi-core/pom.xml b/juddi-core/pom.xml
index 7aab1e0..46b026d 100644
--- a/juddi-core/pom.xml
+++ b/juddi-core/pom.xml
@@ -25,17 +25,27 @@ language governing permissions and * limitations under the License. * */ -->
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Export-Package>org.apache.juddi, org.apache.juddi.api,
+                        <Export-Package>org.apache.juddi, 
+                            org.apache.juddi.api,
                             org.apache.juddi.api.impl,
                             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.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.replication,
-                            org.apache.juddi.validation, org.apache.juddi.validation.vsv, org.apache.juddi.v3.auth,
+                            org.apache.juddi.validation, 
+                            org.apache.juddi.validation.vsv, 
+                            org.apache.juddi.v3.auth,
+                            org.apache.juddi.security.rbac,
+                            org.apache.juddi.security,
                             org.apache.juddi.v3.error</Export-Package>
                         <Include-Resource>juddi_install_data=src/main/resources/juddi_install_data,
                             src/main/resources/messages.properties</Include-Resource>
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 a4ea297..417262a 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
@@ -58,6 +58,8 @@ import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
 import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
 import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
+import org.apache.juddi.api_v3.GetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.GetPermissionsMessageResponse;
 import org.apache.juddi.api_v3.GetPublisherDetail;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.NodeList;
@@ -66,6 +68,8 @@ 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.SetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.SetPermissionsMessageResponse;
 import org.apache.juddi.api_v3.SubscriptionWrapper;
 import org.apache.juddi.api_v3.SyncSubscription;
 import org.apache.juddi.api_v3.SyncSubscriptionDetail;
@@ -83,6 +87,8 @@ import org.apache.juddi.model.ReplicationConfiguration;
 import org.apache.juddi.model.Tmodel;
 import org.apache.juddi.model.UddiEntityPublisher;
 import org.apache.juddi.replication.ReplicationNotifier;
+import org.apache.juddi.security.AccessControlFactory;
+import org.apache.juddi.security.rbac.RbacRulesModel;
 import org.apache.juddi.subscription.NotificationList;
 import org.apache.juddi.subscription.notify.TemporaryMailContainer;
 import org.apache.juddi.subscription.notify.USERFRIENDLYSMTPNotifier;
@@ -1679,4 +1685,19 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy
                         em.close();
                 }
         }
+
+    @Override
+    public GetPermissionsMessageResponse getPermissions(GetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+        //TODO assert read access? or is owner
+        //TODO audit log
+        
+        return AccessControlFactory.getAccessControlInstance().getPermissions(arg0);
+    }
+
+    @Override
+    public SetPermissionsMessageResponse setPermissions(SetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+        //TODO assert own/write access? or is owner
+        //TODO audit log
+        return AccessControlFactory.getAccessControlInstance().setPermissions(arg0);
+    }
 }
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
index 925773a..c5591ed 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
@@ -33,10 +33,8 @@ import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.PersistenceManager;
 import org.apache.juddi.config.Property;
 import org.apache.juddi.mapping.MappingModelToApi;
-import org.apache.juddi.model.BindingTemplate;
 import org.apache.juddi.model.UddiEntityPublisher;
 import org.apache.juddi.security.AccessControlFactory;
-import org.apache.juddi.security.AccessLevel;
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.InvalidKeyPassedException;
 import org.apache.juddi.validation.ValidateInquiry;
@@ -175,7 +173,7 @@ public class UDDIInquiryImpl extends AuthenticatedService implements UDDIInquiry
                             List<org.uddi.api_v3.BindingTemplate> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterBindingTemplates(
                                                this.ctx,
-                                            entityPublisher.getAuthorizedName(), result.getBindingTemplate());
+                                            entityPublisher, result.getBindingTemplate());
                             result.getBindingTemplate().clear();
                             result.getBindingTemplate().addAll(FilterBindingTemplates);
                         }
@@ -210,7 +208,7 @@ public class UDDIInquiryImpl extends AuthenticatedService implements UDDIInquiry
                                         AppConfig.getConfiguration().getBoolean(Property.JUDDI_ENABLE_FIND_BUSINESS_TMODEL_BAG_FILTERING,true)
                                 + " loaded from " + AppConfig.getConfigFileURL());
                         } catch (ConfigurationException ex) {
-                                ex.printStackTrace();
+                                logger.warn("unhandled configuration error", ex);
                         }
 			tx.begin();
                         UddiEntityPublisher entityPublisher=null;
@@ -230,11 +228,10 @@ public class UDDIInquiryImpl extends AuthenticatedService implements UDDIInquiry
                         serviceCounter.update(InquiryQuery.FIND_BUSINESS, QueryStatus.SUCCESS, procTime);                      
                         if (isAuthenticated() && entityPublisher!=null)
                         {
-                            //TODO may need some NPE checks
                             List<org.uddi.api_v3.BusinessInfo> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterBusinessInfo(
                                                this.ctx,
-                                            entityPublisher.getAuthorizedName(), 
+                                            entityPublisher, 
                                             result.getBusinessInfos().getBusinessInfo());
                             result.getBusinessInfos().getBusinessInfo().clear();
                             result.getBusinessInfos().getBusinessInfo().addAll(FilterBindingTemplates);
@@ -264,7 +261,7 @@ public class UDDIInquiryImpl extends AuthenticatedService implements UDDIInquiry
 		EntityTransaction tx = em.getTransaction();
 		try {
 			tx.begin();
-UddiEntityPublisher entityPublisher=null;
+                        UddiEntityPublisher entityPublisher=null;
 			if (isAuthenticated())
 				 entityPublisher = this.getEntityPublisher(em, body.getAuthInfo());
 			
@@ -285,7 +282,7 @@ UddiEntityPublisher entityPublisher=null;
                             List<org.uddi.api_v3.RelatedBusinessInfo> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filtedRelatedBusinessInfos(
                                                this.ctx,
-                                            entityPublisher.getAuthorizedName(),
+                                            entityPublisher,
                                             result.getRelatedBusinessInfos().getRelatedBusinessInfo());
                             result.getRelatedBusinessInfos().getRelatedBusinessInfo().clear();
                             result.getRelatedBusinessInfos().getRelatedBusinessInfo().addAll(FilterBindingTemplates);
@@ -350,7 +347,7 @@ UddiEntityPublisher entityPublisher=null;
                             List<org.uddi.api_v3.ServiceInfo> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterServiceInfo(
                                                this.ctx,
-                                            entityPublisher.getAuthorizedName(), result.getServiceInfos().getServiceInfo());
+                                            entityPublisher, result.getServiceInfos().getServiceInfo());
                             result.getServiceInfos().getServiceInfo().clear();
                             result.getServiceInfos().getServiceInfo().addAll(FilterBindingTemplates);
                         }
@@ -395,11 +392,11 @@ UddiEntityPublisher entityPublisher=null;
 			tx.rollback();
                         long procTime = System.currentTimeMillis() - startTime;
                         serviceCounter.update(InquiryQuery.FIND_TMODEL, QueryStatus.SUCCESS, procTime);                      
-if (isAuthenticated() && entityPublisher!=null)
+                        if (isAuthenticated() && entityPublisher!=null)
                         {
                             List<org.uddi.api_v3.TModelInfo> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterTModelInfo(
-                                               this.ctx,entityPublisher.getAuthorizedName(), 
+                                               this.ctx,entityPublisher, 
                                             result.getTModelInfos().getTModelInfo());
                             result.getTModelInfos().getTModelInfo().clear();
                             result.getTModelInfos().getTModelInfo().addAll(FilterBindingTemplates);
@@ -460,7 +457,7 @@ if (isAuthenticated() && entityPublisher!=null)
                             List<org.uddi.api_v3.BindingTemplate> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterBindingTemplates(
                                                this.ctx,
-                                            entityPublisher.getAuthorizedName(), result.getBindingTemplate());
+                                            entityPublisher, result.getBindingTemplate());
                             result.getBindingTemplate().clear();
                             result.getBindingTemplate().addAll(FilterBindingTemplates);
                         }
@@ -520,7 +517,7 @@ if (isAuthenticated() && entityPublisher!=null)
                         {
                             List<org.uddi.api_v3.BusinessEntity> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterBusinesses(
-                                               this.ctx,entityPublisher.getAuthorizedName(), result.getBusinessEntity());
+                                               this.ctx,entityPublisher, result.getBusinessEntity());
                             result.getBusinessEntity().clear();
                             result.getBusinessEntity().addAll(FilterBindingTemplates);
                         }
@@ -580,7 +577,7 @@ if (isAuthenticated() && entityPublisher!=null)
                         {
                             List<org.uddi.api_v3.OperationalInfo> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterOperationalInfo(
-                                               this.ctx,entityPublisher.getAuthorizedName(), result.getOperationalInfo());
+                                               this.ctx,entityPublisher, result.getOperationalInfo());
                             result.getOperationalInfo().clear();
                             result.getOperationalInfo().addAll(FilterBindingTemplates);
                         }
@@ -640,7 +637,7 @@ if (isAuthenticated() && entityPublisher!=null)
                             List<org.uddi.api_v3.BusinessService> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterServices(
                                                this.ctx,
-                                            entityPublisher.getAuthorizedName(), result.getBusinessService());
+                                            entityPublisher, result.getBusinessService());
                             result.getBusinessService().clear();
                             result.getBusinessService().addAll(FilterBindingTemplates);
                         }
@@ -702,7 +699,7 @@ if (isAuthenticated() && entityPublisher!=null)
                             List<org.uddi.api_v3.TModel> FilterBindingTemplates = 
                                     AccessControlFactory.getAccessControlInstance().filterTModels(
                                             this.ctx,
-                                            entityPublisher.getAuthorizedName(), result.getTModel());
+                                            entityPublisher, result.getTModel());
                             result.getTModel().clear();
                             result.getTModel().addAll(FilterBindingTemplates);
                         }
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 1a922c4..1a15da8 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
@@ -36,6 +36,8 @@ import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
 import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
 import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
+import org.apache.juddi.api_v3.GetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.GetPermissionsMessageResponse;
 import org.apache.juddi.api_v3.GetPublisherDetail;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.NodeList;
@@ -44,6 +46,8 @@ 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.SetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.SetPermissionsMessageResponse;
 import org.apache.juddi.api_v3.SubscriptionWrapper;
 import org.apache.juddi.api_v3.SyncSubscription;
 import org.apache.juddi.api_v3.SyncSubscriptionDetail;
@@ -188,6 +192,16 @@ public class JUDDIApiService extends UnicastRemoteObject implements JUDDIApiPort
                 return juddiAPI.getFailedReplicationChangeRecords(body);
         }
 
+    @Override
+    public GetPermissionsMessageResponse getPermissions(GetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+        return juddiAPI.getPermissions(arg0);
+    }
+
+    @Override
+    public SetPermissionsMessageResponse setPermissions(SetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+        return juddiAPI.setPermissions(arg0);
+    }
+
       
 	
 	
diff --git a/juddi-core/src/main/java/org/apache/juddi/security/AccessControlFactory.java b/juddi-core/src/main/java/org/apache/juddi/security/AccessControlFactory.java
index a14940a..8493d7f 100644
--- a/juddi-core/src/main/java/org/apache/juddi/security/AccessControlFactory.java
+++ b/juddi-core/src/main/java/org/apache/juddi/security/AccessControlFactory.java
@@ -42,7 +42,7 @@ public class AccessControlFactory {
      * @see DefaultCorseAccessControlImpl
      * @see Property
      */
-    public static IAccessControl getAccessControlInstance() {
+    public static synchronized IAccessControl getAccessControlInstance() {
         if (instance != null) {
             return instance;
         }
diff --git a/juddi-core/src/main/java/org/apache/juddi/security/AllowAllAccessControlImpl.java b/juddi-core/src/main/java/org/apache/juddi/security/AllowAllAccessControlImpl.java
index 72eb84e..9891a44 100644
--- a/juddi-core/src/main/java/org/apache/juddi/security/AllowAllAccessControlImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/security/AllowAllAccessControlImpl.java
@@ -15,8 +15,17 @@
  */
 package org.apache.juddi.security;
 
+import java.rmi.RemoteException;
+import java.util.ArrayList;
 import java.util.List;
 import javax.xml.ws.WebServiceContext;
+import org.apache.juddi.api_v3.GetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.GetPermissionsMessageResponse;
+import org.apache.juddi.api_v3.SetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.SetPermissionsMessageResponse;
+import org.apache.juddi.model.UddiEntityPublisher;
+import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.FatalErrorException;
 import org.uddi.api_v3.BindingTemplate;
 import org.uddi.api_v3.BusinessEntity;
 import org.uddi.api_v3.BusinessInfo;
@@ -26,59 +35,71 @@ import org.uddi.api_v3.RelatedBusinessInfo;
 import org.uddi.api_v3.ServiceInfo;
 import org.uddi.api_v3.TModel;
 import org.uddi.api_v3.TModelInfo;
+import org.uddi.v3_service.DispositionReportFaultMessage;
 
 /**
  * Default implementation, performs no additional filtering of data
+ *
  * @since 3.4
  * @author Alex O'Ree
  */
 public class AllowAllAccessControlImpl implements IAccessControl {
 
- 
+    @Override
+    public List<BusinessService> filterServices(WebServiceContext arg0, UddiEntityPublisher user, List<BusinessService> arg2) {
+        return new ArrayList<>(arg2);
+    }
+
+    @Override
+    public List<BusinessEntity> filterBusinesses(WebServiceContext arg0, UddiEntityPublisher user, List<BusinessEntity> arg2) {
+        return new ArrayList<>(arg2);
+    }
 
     @Override
-    public List<BusinessService> filterServices(WebServiceContext arg0, String arg1, List<BusinessService> arg2) {
-        return arg2;
+    public List<BusinessInfo> filterBusinessInfo(WebServiceContext arg0, UddiEntityPublisher user, List<BusinessInfo> arg2) {
+        return new ArrayList<>(arg2);
     }
 
     @Override
-    public List<BusinessEntity> filterBusinesses(WebServiceContext arg0, String arg1, List<BusinessEntity> arg2) {
-        return arg2;
+    public List<TModel> filterTModels(WebServiceContext arg0, UddiEntityPublisher user, List<TModel> arg2) {
+        return new ArrayList<>(arg2);
     }
 
     @Override
-    public List<BusinessInfo> filterBusinessInfo(WebServiceContext arg0, String arg1, List<BusinessInfo> arg2) {
-        return arg2;
+    public List<BindingTemplate> filterBindingTemplates(WebServiceContext arg0, UddiEntityPublisher user, List<BindingTemplate> arg2) {
+        return new ArrayList<>(arg2);
     }
 
     @Override
-    public List<TModel> filterTModels(WebServiceContext arg0, String arg1, List<TModel> arg2) {
-        return arg2;
+    public List<RelatedBusinessInfo> filtedRelatedBusinessInfos(WebServiceContext arg0, UddiEntityPublisher user, List<RelatedBusinessInfo> arg2) {
+        return new ArrayList<>(arg2);
     }
 
     @Override
-    public List<BindingTemplate> filterBindingTemplates(WebServiceContext arg0, String arg1, List<BindingTemplate> arg2) {
-        return arg2;
+    public List<ServiceInfo> filterServiceInfo(WebServiceContext arg0, UddiEntityPublisher user, List<ServiceInfo> arg2) {
+        return new ArrayList<>(arg2);
     }
 
     @Override
-    public List<RelatedBusinessInfo> filtedRelatedBusinessInfos(WebServiceContext arg0, String arg1, List<RelatedBusinessInfo> arg2) {
-        return arg2;
+    public List<TModelInfo> filterTModelInfo(WebServiceContext arg0, UddiEntityPublisher user, List<TModelInfo> arg2) {
+        return new ArrayList<>(arg2);
     }
 
     @Override
-    public List<ServiceInfo> filterServiceInfo(WebServiceContext arg0, String arg1, List<ServiceInfo> arg2) {
-        return arg2;
+    public List<OperationalInfo> filterOperationalInfo(WebServiceContext arg0, UddiEntityPublisher user, List<OperationalInfo> arg2) {
+        return new ArrayList<>(arg2);
     }
 
     @Override
-    public List<TModelInfo> filterTModelInfo(WebServiceContext arg0, String arg1, List<TModelInfo> arg2) {
-        return arg2;
+    public GetPermissionsMessageResponse getPermissions(GetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+        GetPermissionsMessageResponse r = new GetPermissionsMessageResponse();
+       
+        return r;
     }
 
     @Override
-    public List<OperationalInfo> filterOperationalInfo(WebServiceContext arg0, String arg1, List<OperationalInfo> arg2) {
-        return arg2;
+    public SetPermissionsMessageResponse setPermissions(SetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+          throw new FatalErrorException(new ErrorMessage("errors.Unsupported"));
     }
 
 }
diff --git a/juddi-core/src/main/java/org/apache/juddi/security/IAccessControl.java b/juddi-core/src/main/java/org/apache/juddi/security/IAccessControl.java
index 1c889a8..cfdac64 100644
--- a/juddi-core/src/main/java/org/apache/juddi/security/IAccessControl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/security/IAccessControl.java
@@ -15,8 +15,20 @@
  */
 package org.apache.juddi.security;
 
+import java.rmi.RemoteException;
+import java.util.ArrayList;
 import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Query;
 import javax.xml.ws.WebServiceContext;
+import org.apache.juddi.api_v3.GetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.GetPermissionsMessageResponse;
+import org.apache.juddi.api_v3.SetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.SetPermissionsMessageResponse;
+import org.apache.juddi.config.PersistenceManager;
+import org.apache.juddi.model.UddiEntityPublisher;
+import org.apache.juddi.security.rbac.RbacRulesModel;
 import org.uddi.api_v3.BindingTemplate;
 import org.uddi.api_v3.BusinessEntity;
 import org.uddi.api_v3.BusinessInfo;
@@ -26,6 +38,7 @@ import org.uddi.api_v3.RelatedBusinessInfo;
 import org.uddi.api_v3.ServiceInfo;
 import org.uddi.api_v3.TModel;
 import org.uddi.api_v3.TModelInfo;
+import org.uddi.v3_service.DispositionReportFaultMessage;
 
 /**
  * Provides an interface for a pluggable Fine Grained Access Control mechanism
@@ -37,21 +50,26 @@ import org.uddi.api_v3.TModelInfo;
  */
 public interface IAccessControl {
 
-    public List<BusinessService> filterServices(WebServiceContext ctx, String username, List<BusinessService> services);
+    public List<BusinessService> filterServices(WebServiceContext ctx, UddiEntityPublisher username, List<BusinessService> services);
 
-    public List<BusinessEntity> filterBusinesses(WebServiceContext ctx, String username, List<BusinessEntity> business);
+    public List<BusinessEntity> filterBusinesses(WebServiceContext ctx, UddiEntityPublisher username, List<BusinessEntity> business);
 
-    public List<BusinessInfo> filterBusinessInfo(WebServiceContext ctx, String username, List<BusinessInfo> business);
+    public List<BusinessInfo> filterBusinessInfo(WebServiceContext ctx, UddiEntityPublisher username, List<BusinessInfo> business);
 
-    public List<TModel> filterTModels(WebServiceContext ctx, String username, List<TModel> tmodels);
+    public List<TModel> filterTModels(WebServiceContext ctx, UddiEntityPublisher username, List<TModel> tmodels);
 
-    public List<BindingTemplate> filterBindingTemplates(WebServiceContext ctx, String username, List<BindingTemplate> bindings);
+    public List<BindingTemplate> filterBindingTemplates(WebServiceContext ctx, UddiEntityPublisher username, List<BindingTemplate> bindings);
 
-    public List<RelatedBusinessInfo> filtedRelatedBusinessInfos(WebServiceContext ctx, String username, List<RelatedBusinessInfo> bindings);
+    public List<RelatedBusinessInfo> filtedRelatedBusinessInfos(WebServiceContext ctx, UddiEntityPublisher username, List<RelatedBusinessInfo> bindings);
 
-    public List<ServiceInfo> filterServiceInfo(WebServiceContext ctx, String authorizedName, List<ServiceInfo> serviceInfo);
+    public List<ServiceInfo> filterServiceInfo(WebServiceContext ctx, UddiEntityPublisher authorizedName, List<ServiceInfo> serviceInfo);
 
-    public List<TModelInfo> filterTModelInfo(WebServiceContext ctx, String authorizedName, List<TModelInfo> tModelInfo);
+    public List<TModelInfo> filterTModelInfo(WebServiceContext ctx, UddiEntityPublisher authorizedName, List<TModelInfo> tModelInfo);
+
+    public List<OperationalInfo> filterOperationalInfo(WebServiceContext ctx, UddiEntityPublisher authorizedName, List<OperationalInfo> operationalInfo);
+
+    public GetPermissionsMessageResponse getPermissions(GetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException;
+
+    public SetPermissionsMessageResponse setPermissions(SetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException;
 
-    public List<OperationalInfo> filterOperationalInfo(WebServiceContext ctx, String authorizedName, List<OperationalInfo> operationalInfo);
 }
diff --git a/juddi-core/src/main/java/org/apache/juddi/security/rbac/RbacRulesModel.java b/juddi-core/src/main/java/org/apache/juddi/security/rbac/RbacRulesModel.java
new file mode 100644
index 0000000..259296b
--- /dev/null
+++ b/juddi-core/src/main/java/org/apache/juddi/security/rbac/RbacRulesModel.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2019 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.security.rbac;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import org.apache.juddi.security.AccessLevel;
+
+/**
+ *
+ * @author Alex O'Ree
+ */
+@Entity
+@Table(name = "j3_rbac_rules")
+public class RbacRulesModel implements Serializable {
+
+    private String id;
+    private String containerRole;
+    private String level;
+
+    /**
+     * this can be a binding, business, service, tmodel, etc
+     */
+    private String uddiEntityId;
+
+    @Column(name = "entity_id", nullable = false, length = 51)
+    public String getUddiEntityId() {
+        return uddiEntityId;
+    }
+
+    public void setUddiEntityId(String uddiEntityId) {
+        this.uddiEntityId = uddiEntityId;
+    }
+
+    @Column(name = "container_role", nullable = false, length = 51)
+    public String getContainerRole() {
+        return containerRole;
+    }
+
+    public void setContainerRole(String containerRole) {
+        this.containerRole = containerRole;
+    }
+
+    @Column(name = "access_level", nullable = false, length = 51)
+    public AccessLevel getAccessLevel() {
+        return AccessLevel.valueOf(level);
+    }
+
+    public void setAccessLevel(AccessLevel level) {
+        this.level = level.name();
+    }
+
+    @Id
+    @Column(name = "rule_id", nullable = false, length = 51)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+}
diff --git a/juddi-core/src/main/java/org/apache/juddi/security/rbac/RoleBasedAccessControlImpl.java b/juddi-core/src/main/java/org/apache/juddi/security/rbac/RoleBasedAccessControlImpl.java
new file mode 100644
index 0000000..852ed96
--- /dev/null
+++ b/juddi-core/src/main/java/org/apache/juddi/security/rbac/RoleBasedAccessControlImpl.java
@@ -0,0 +1,369 @@
+/*
+ * Copyright 2019 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.security.rbac;
+
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Query;
+import javax.xml.ws.WebServiceContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.api_v3.Action;
+import org.apache.juddi.api_v3.GetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.GetPermissionsMessageResponse;
+import org.apache.juddi.api_v3.Permission;
+import org.apache.juddi.api_v3.SetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.SetPermissionsMessageResponse;
+import org.apache.juddi.config.PersistenceManager;
+import org.apache.juddi.config.ResourceConfig;
+import org.apache.juddi.model.UddiEntity;
+import org.apache.juddi.model.UddiEntityPublisher;
+import org.apache.juddi.security.AccessLevel;
+import org.apache.juddi.security.IAccessControl;
+import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.BusinessInfo;
+import org.uddi.api_v3.BusinessService;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.OperationalInfo;
+import org.uddi.api_v3.RelatedBusinessInfo;
+import org.uddi.api_v3.ServiceInfo;
+import org.uddi.api_v3.TModel;
+import org.uddi.api_v3.TModelInfo;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+/**
+ * RBAC functionality, to be pulled from J2EE container, such as Tomcat or
+ * Jboss, for obtaining user roles.<br><br>
+ * Permissions are then calculated based on an inheritance model, similar to
+ * most systems. I.e.<br><br>
+ * If a permission doesn't exist for a binding, the service's permission set
+ * then applies. If the service's permission set is not defined, then the
+ * business's permission set applies.
+ * <br><br>
+ * If the requestor does not have permission for the entity, all content is
+ * nulled out and replaced with a 'redacted' string. This will preserve
+ * functionality for pagination operations, limits, offsets, etc.
+ *
+ * @author Alex O'Ree
+ * @since 3.4
+ */
+public class RoleBasedAccessControlImpl implements IAccessControl {
+
+    private static final Log log = LogFactory.getLog(RoleBasedAccessControlImpl.class);
+    private static final String REDACTED = ResourceConfig.getGlobalMessage("rbac.redacted");
+
+    private void redact(BusinessService bs) {
+        bs.setBusinessKey(REDACTED);
+        bs.setServiceKey(REDACTED);
+        bs.setBindingTemplates(null);
+        bs.setCategoryBag(null);
+        bs.getDescription().clear();
+        bs.getSignature().clear();
+        bs.getName().clear();
+        bs.getName().add(new Name(REDACTED, "en"));
+
+    }
+
+    private boolean hasReadAccess(WebServiceContext ctx, List<RbacRulesModel> rules) {
+        for (RbacRulesModel r : rules) {
+            if (ctx.isUserInRole(r.getContainerRole())) {
+                if (r.getAccessLevel() == AccessLevel.NONE) //explicit deny
+                {
+                    return false;
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private List<RbacRulesModel> getPermissionSet(String serviceKey) {
+        EntityManager em = PersistenceManager.getEntityManager();
+        EntityTransaction tx = em.getTransaction();
+        List<RbacRulesModel> set = new ArrayList<>();
+        try {
+            tx.begin();
+
+            Query createQuery = em.createQuery("select c from RbacRulesModel c where c.uddiEntityId=:id");
+            createQuery.setParameter("id", serviceKey);
+            set = createQuery.getResultList();
+
+        } finally {
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+            em.close();
+        }
+        return set;
+
+    }
+
+    private UddiEntity loadEntity(String serviceKey, Class clazz) {
+
+        EntityManager em = PersistenceManager.getEntityManager();
+        EntityTransaction tx = em.getTransaction();
+        try {
+            tx.begin();
+            try {
+                return (UddiEntity) em.find(clazz, serviceKey);
+            } catch (ClassCastException e) {
+            }
+
+        } finally {
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+            em.close();
+        }
+        return null;
+    }
+
+    private void redact(BindingTemplate bt) {
+        bt.setBindingKey(REDACTED);
+        bt.getDescription().clear();
+        bt.getSignature().clear();
+        bt.setHostingRedirector(null);
+        bt.setAccessPoint(null);
+        bt.setTModelInstanceDetails(null);
+        bt.setAccessPoint(null);
+        bt.setCategoryBag(null);
+    }
+
+    @Override
+    public List<BusinessService> filterServices(WebServiceContext ctx, UddiEntityPublisher username, List<BusinessService> items) {
+
+        //load access rules from database
+        for (BusinessService bs : items) {
+            //get the permission for this entity.
+            UddiEntity ue = loadEntity(bs.getServiceKey(), org.apache.juddi.model.BusinessService.class);
+            if (ue == null) {
+                redact(bs);
+                continue;   //access denied
+            }
+            if (username.isOwner(ue)) {
+                //keep it
+                continue;
+            }
+
+            List<RbacRulesModel> rules = getPermissionSet(bs.getServiceKey());
+            if (rules.isEmpty()) {
+                //get the rules for the parent business
+                rules = getPermissionSet(bs.getBusinessKey());
+
+            }
+            if (rules.isEmpty()) {
+                redact(bs);
+                continue;   //access denied
+            }
+            if (!hasReadAccess(ctx, rules)) {
+                redact(bs); //also access denied, either no matching role or an explicit deny
+                continue;
+            }
+            filterBindingTemplates(ctx, username, bs.getBindingTemplates().getBindingTemplate());
+
+        }
+        return new ArrayList(items);
+    }
+
+    @Override
+    public List<BusinessEntity> filterBusinesses(WebServiceContext ctx, UddiEntityPublisher username, List<BusinessEntity> items) {
+
+        //load access rules from database
+        for (BusinessEntity bs : items) {
+            //get the permission for this entity.
+            UddiEntity ue = loadEntity(bs.getBusinessKey(), org.apache.juddi.model.BusinessService.class);
+            if (ue == null) {
+                redact(bs);
+                continue;   //access denied
+            }
+            if (username.isOwner(ue)) {
+                //keep it
+                continue;
+            }
+
+            List<RbacRulesModel> rules = getPermissionSet(bs.getBusinessKey());
+            if (rules.isEmpty()) {
+                redact(bs);
+                continue;   //access denied
+            }
+            if (!hasReadAccess(ctx, rules)) {
+                redact(bs); //also access denied, either no matching role or an explicit deny
+                continue;
+            }
+            filterServices(ctx, username, bs.getBusinessServices().getBusinessService());
+
+        }
+        return new ArrayList(items);
+
+    }
+
+    @Override
+    public List<BusinessInfo> filterBusinessInfo(WebServiceContext ctx, UddiEntityPublisher username, List<BusinessInfo> items) {
+        return new ArrayList(items);
+    }
+
+    @Override
+    public List<TModel> filterTModels(WebServiceContext ctx, UddiEntityPublisher username, List<TModel> items) {
+        return new ArrayList(items);
+    }
+
+    @Override
+    public List<BindingTemplate> filterBindingTemplates(WebServiceContext ctx, UddiEntityPublisher username, List<BindingTemplate> items) {
+
+        //load access rules from database
+        for (BindingTemplate bs : items) {
+            //get the permission for this entity.
+            UddiEntity ue = loadEntity(bs.getBindingKey(), org.apache.juddi.model.BindingTemplate.class);
+            if (ue == null) {
+                redact(bs);
+                continue;   //access denied
+            }
+            if (username.isOwner(ue)) {
+                //keep it
+                continue;
+            }
+
+            List<RbacRulesModel> rules = getPermissionSet(bs.getBindingKey());
+            if (rules.isEmpty()) {
+                rules = getPermissionSet(bs.getServiceKey());
+            }
+
+            if (rules.isEmpty()) {
+                redact(bs);
+                continue;   //access denied
+            }
+            if (!hasReadAccess(ctx, rules)) {
+                redact(bs); //also access denied, either no matching role or an explicit deny
+            }
+
+        }
+        return new ArrayList(items);
+
+    }
+
+    @Override
+    public List<RelatedBusinessInfo> filtedRelatedBusinessInfos(WebServiceContext ctx, UddiEntityPublisher username, List<RelatedBusinessInfo> items) {
+        //TODO
+        return new ArrayList(items);
+    }
+
+    @Override
+    public List<ServiceInfo> filterServiceInfo(WebServiceContext ctx, UddiEntityPublisher username, List<ServiceInfo> items) {
+
+        for (ServiceInfo si : items) {
+            UddiEntity ue = loadEntity(si.getServiceKey(), org.apache.juddi.model.BusinessService.class);
+            if (ue == null) {
+                si.setServiceKey(REDACTED);
+                continue;   //access denied
+            }
+            if (username.isOwner(ue)) {
+                //keep it
+                continue;
+            }
+
+            List<RbacRulesModel> rules = getPermissionSet(si.getServiceKey());
+
+            if (!rules.isEmpty() && !hasReadAccess(ctx, rules)) {
+                si.setServiceKey(REDACTED);
+            }
+            if (rules.isEmpty()) {
+                rules = getPermissionSet(si.getBusinessKey());
+                if (rules.isEmpty()) {
+                    si.setBusinessKey(REDACTED);
+                } else {
+                    if (!hasReadAccess(ctx, rules)) {
+                        si.setBusinessKey(REDACTED);
+                    }
+                }
+            }
+
+        }
+        return new ArrayList<>(items);
+    }
+
+    @Override
+    public List<TModelInfo> filterTModelInfo(WebServiceContext ctx, UddiEntityPublisher username, List<TModelInfo> items) {
+        //TODO
+        return new ArrayList(items);
+    }
+
+    @Override
+    public List<OperationalInfo> filterOperationalInfo(WebServiceContext ctx, UddiEntityPublisher username, List<OperationalInfo> items) {
+        //TODO
+        return new ArrayList(items);
+    }
+
+    private void redact(BusinessEntity bs) {
+        bs.setBusinessKey(REDACTED);
+        bs.setBusinessServices(null);
+        bs.setCategoryBag(null);
+        bs.setContacts(null);
+        bs.setDiscoveryURLs(null);
+        bs.setIdentifierBag(null);
+        bs.getDescription().clear();
+        bs.getSignature().clear();
+        bs.getName().clear();
+        bs.getName().add(new Name(REDACTED, "en"));
+    }
+
+    @Override
+    public GetPermissionsMessageResponse getPermissions(GetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+
+        EntityManager em = PersistenceManager.getEntityManager();
+        EntityTransaction tx = em.getTransaction();
+        List<RbacRulesModel> set = new ArrayList<>();
+        try {
+            tx.begin();
+            Query createQuery = null;
+            if (arg0.getEntityId() != null && arg0.getEntityId().length() > 0) {
+                createQuery = em.createQuery("select c from RbacRulesModel c where c.uddiEntityId=:id");
+                createQuery.setParameter("id", arg0.getEntityId());
+            } else {
+                createQuery = em.createQuery("select c from RbacRulesModel c");
+            }
+            
+            set = createQuery.getResultList();
+
+        } finally {
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+            em.close();
+        }
+        GetPermissionsMessageResponse response = new GetPermissionsMessageResponse();
+        for (RbacRulesModel item : set) {
+            Permission permission = new Permission();
+            permission.setEntityId(item.getUddiEntityId());
+            permission.setLevel(org.apache.juddi.api_v3.AccessLevel.fromValue(item.getAccessLevel().name()));
+            permission.setAction(Action.NOOP);
+            permission.setTarget(item.getContainerRole());
+            //TODO permission.setType(item.);
+            response.getLevel().add(permission);
+        }
+
+        return response;
+    }
+
+    @Override
+    public SetPermissionsMessageResponse setPermissions(SetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+}
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 2d788e9..4294c41 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
@@ -207,7 +207,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                         //if you're are the owner, access granted
                         //if you are an admin && this item belongs to this node, access granted
                         //else denied
-                        AccessCheck(obj, entityKey);
+                        accessCheck(obj, entityKey);
                         i++;
                 }
         }
@@ -244,7 +244,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.BindingTemplateNotFound", entityKey));
                         }
 
-                        AccessCheck(obj, entityKey);
+                        accessCheck(obj, entityKey);
 
                         i++;
                 }
@@ -281,13 +281,13 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.TModelNotFound", entityKey));
                         }
 
-                        AccessCheck(obj, entityKey);
+                        accessCheck(obj, entityKey);
 
                         i++;
                 }
         }
 
-        private void AccessCheck(Object obj, String entityKey) throws UserMismatchException {
+        private void accessCheck(Object obj, String entityKey) throws UserMismatchException {
                 boolean accessCheck = false; //assume access denied
                 if (!((UddiEntity) obj).getNodeId().equals(nodeID)) {
                         //prevent changes to data owned by another node in a replicated environment
@@ -706,7 +706,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 entityExists = true;
 
                                 // Make sure publisher owns this entity.
-                                AccessCheck(obj, entityKey);
+                                accessCheck(obj, entityKey);
 
                         } else {
                                 // Inside this block, we have a key proposed by the publisher on a new entity
@@ -842,7 +842,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                         }
 
                                         // Make sure publisher owns this entity.
-                                        AccessCheck(obj, entityKey);
+                                        accessCheck(obj, entityKey);
 
                                         // If existing service trying to be saved has a different parent key, then we have a problem
                                         if (!parentKey.equalsIgnoreCase(bs.getBusinessEntity().getEntityKey())) {
@@ -887,7 +887,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                         }
 
                                         // Make sure publisher owns this parent entity.
-                                        AccessCheck(parentTemp, parentKey);
+                                        accessCheck(parentTemp, parentKey);
                                         // if (!publisher.isOwner((UddiEntity) parentTemp)) {
                                         //        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwnerParent", parentKey));
                                         //}
@@ -997,7 +997,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 }
 
                                 // Make sure publisher owns this entity.
-                                AccessCheck(obj, entityKey);
+                                accessCheck(obj, entityKey);
                                 //if (!publisher.isOwner((UddiEntity) obj)&& !((Publisher) publisher).isAdmin()) {
 //                                        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
                                 //                              }
@@ -1035,7 +1035,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 }
 
                                 // Make sure publisher owns this parent entity.
-                                AccessCheck(parentTemp, parentKey);
+                                accessCheck(parentTemp, parentKey);
 //                                if (!publisher.isOwner((UddiEntity) parentTemp)) {
 //                                        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwnerParent", parentKey));
 //                                }
@@ -1092,7 +1092,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 entityExists = true;
 
                                 // Make sure publisher owns this entity.
-                                AccessCheck(obj, entityKey);
+                                accessCheck(obj, entityKey);
                                 //if (!publisher.isOwner((UddiEntity) obj)&& !((Publisher) publisher).isAdmin()) {
                                 //        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
                                 // }
diff --git a/juddi-core/src/main/resources/messages.properties b/juddi-core/src/main/resources/messages.properties
index 0306a17..90c38e6 100644
--- a/juddi-core/src/main/resources/messages.properties
+++ b/juddi-core/src/main/resources/messages.properties
@@ -308,4 +308,8 @@ errors.usermismatch.InvalidNode=The user is not authorized to alter the given en
 
 errors.usermismatch.assertion=You have to be either the owner of the 'from' or 'to' business in order to delete a publisher assertion.
 errors.assertionNotFound=The referenced publisher assertion isn't in the database!
-errors.digitalsignature.validationfailure=The digital signature the following element failed to validate. Because of this, the request was rejected. Key and validation error as follows. 
\ No newline at end of file
+errors.digitalsignature.validationfailure=The digital signature the following element failed to validate. Because of this, the request was rejected. Key and validation error as follows. 
+
+
+#rbac related messages
+rbac.redacted=Redacted
\ No newline at end of file
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 74b4db1..3184902 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
@@ -65,7 +65,7 @@ import org.uddi.v3_service.UDDISecurityPortType;
  */
 public class API_010_PublisherTest {
 
-        private static Log logger = LogFactory.getLog(API_010_PublisherTest.class);
+        private static final 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());
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_180_RbacSecurityTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_180_RbacSecurityTest.java
new file mode 100644
index 0000000..802c9af
--- /dev/null
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_180_RbacSecurityTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2019 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.impl;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.Registry;
+import org.apache.juddi.v3.tck.TckSubscription;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ *
+ * @author Alex O'Ree
+ */
+public class API_180_RbacSecurityTest {
+    
+        private static final 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 {
+                Registry.start();
+        }
+
+        @AfterClass
+        public static void stopRegistry() throws ConfigurationException {
+                Registry.stop();
+        }
+}
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java b/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
index 9032d34..6033142 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
@@ -33,6 +33,8 @@ import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
 import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
 import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
+import org.apache.juddi.api_v3.GetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.GetPermissionsMessageResponse;
 import org.apache.juddi.api_v3.GetPublisherDetail;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.NodeList;
@@ -41,6 +43,8 @@ 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.SetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.SetPermissionsMessageResponse;
 import org.apache.juddi.api_v3.SubscriptionWrapper;
 import org.apache.juddi.api_v3.SyncSubscription;
 import org.apache.juddi.api_v3.SyncSubscriptionDetail;
@@ -200,5 +204,17 @@ public class juddiTestimpl implements JUDDIApiPortType {
                  CLIServerTest.sink = true;
                 return null;
         }
+
+    @Override
+    public GetPermissionsMessageResponse getPermissions(GetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+          CLIServerTest.sink = true;
+                return null;
+    }
+
+    @Override
+    public SetPermissionsMessageResponse setPermissions(SetPermissionsMessageRequest arg0) throws DispositionReportFaultMessage, RemoteException {
+          CLIServerTest.sink = true;
+                return null;
+    }
         
 }
diff --git a/juddiv3-war/JPA/OpenJPA/WEB-INF/classes/META-INF/persistence.xml b/juddiv3-war/JPA/OpenJPA/WEB-INF/classes/META-INF/persistence.xml
index 2e1cf93..ae59827 100644
--- a/juddiv3-war/JPA/OpenJPA/WEB-INF/classes/META-INF/persistence.xml
+++ b/juddiv3-war/JPA/OpenJPA/WEB-INF/classes/META-INF/persistence.xml
@@ -96,7 +96,7 @@ under the License.
      <class>org.apache.juddi.model.ControlMessage</class>
     <class>org.apache.juddi.model.ReplicationConfigurationNode</class>
     <class>org.apache.juddi.model.EdgeReceiverAlternate</class>
-	
+    <class>org.apache.juddi.security.rbac.RbacRulesModel</class>
     <properties>
       <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(SchemaAction='add')"/>
       <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>
diff --git a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java
index aea74a5..9ae8c44 100644
--- a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java
+++ b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java
@@ -77,6 +77,8 @@ import org.apache.juddi.api.impl.JUDDIApiImpl;
 import org.apache.juddi.api.impl.UDDIInquiryImpl;
 import org.apache.juddi.api.impl.UDDIPublicationImpl;
 import org.apache.juddi.api.impl.UDDIReplicationImpl;
+import org.apache.juddi.api_v3.AccessLevel;
+import org.apache.juddi.api_v3.Action;
 import org.apache.juddi.api_v3.AdminSaveBusiness;
 import org.apache.juddi.api_v3.AdminSaveSubscriptionRequest;
 import org.apache.juddi.api_v3.AdminSaveSubscriptionResponse;
@@ -85,11 +87,17 @@ import org.apache.juddi.api_v3.ClerkList;
 import org.apache.juddi.api_v3.ClientSubscriptionInfo;
 import org.apache.juddi.api_v3.DeleteClerk;
 import org.apache.juddi.api_v3.DeleteNode;
+import org.apache.juddi.api_v3.EntityType;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
 import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
 import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
 import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
+import org.apache.juddi.api_v3.GetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.GetPermissionsMessageResponse;
 import org.apache.juddi.api_v3.NodeList;
+import org.apache.juddi.api_v3.Permission;
+import org.apache.juddi.api_v3.SetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.SetPermissionsMessageResponse;
 import org.apache.juddi.api_v3.SubscriptionWrapper;
 import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.PersistenceManager;
@@ -171,7 +179,7 @@ public class UddiAdminHub {
                         try {
                                 security.discardAuthToken(da);
                         } catch (Exception ex) {
-                                HandleException(ex);
+                                handleException(ex);
                         }
                 }
                 token = null;
@@ -253,10 +261,10 @@ public class UddiAdminHub {
                 in.close();
                 session = _session;
                 properties = p;
-                EnsureConfig();
+                ensureConfig();
         }
 
-        private void EnsureConfig() {
+        private void ensureConfig() {
                 if (clientConfig == null) {
                         try {
                                 UDDIClient client = new UDDIClient();
@@ -292,7 +300,7 @@ public class UddiAdminHub {
                                 }
 
                         } catch (Exception ex) {
-                                HandleException(ex);
+                                handleException(ex);
                         }
                 }
 
@@ -306,7 +314,7 @@ public class UddiAdminHub {
          * @param ex
          * @return
          */
-        private String HandleException(Exception ex) {
+        private String handleException(Exception ex) {
                 if (ex instanceof DispositionReportFaultMessage) {
                         DispositionReportFaultMessage f = (DispositionReportFaultMessage) ex;
                         log.error(ex.getMessage() + (f.detail != null && f.detail.getMessage() != null ? StringEscapeUtils.escapeHtml(f.detail.getMessage()) : ""));
@@ -336,7 +344,7 @@ public class UddiAdminHub {
          */
         public boolean isSecure() {
 
-                EnsureConfig();
+                ensureConfig();
                 return WS_securePorts;
         }
 
@@ -348,7 +356,7 @@ public class UddiAdminHub {
          * @throws ConfigurationException g
          */
         public ClientConfig GetJuddiClientConfig() throws ConfigurationException {
-                EnsureConfig();
+                ensureConfig();
                 return clientConfig;
         }
 
@@ -413,17 +421,21 @@ public class UddiAdminHub {
                                 return getChangeRecord(parameters);
                         } else if (action.equalsIgnoreCase("getFailedReplicationChangeRecords")) {
                                 return getFailedReplicationChangeRecords(parameters);
+                        } else if (action.equalsIgnoreCase("get_permissions")) {
+                                return getPermissions(parameters);
+                        } else if (action.equalsIgnoreCase("set_permissions")) {
+                                return setPermissions(parameters);
                         }
 
                 } catch (Exception ex) {
-                        return "Error!" + HandleException(ex);
+                        return "Error!" + handleException(ex);
                 }
                 return "not yet implemented!";
         }
 
         private String save_Clerk(HttpServletRequest parameters) {
                 SaveClerk sc = new SaveClerk();
-                sc.setAuthInfo(GetToken());
+                sc.setAuthInfo(getToken());
                 Clerk c = new Clerk();
                 c.setName(parameters.getParameter("CLERKsetName"));
                 Node node = new Node();
@@ -452,15 +464,15 @@ public class UddiAdminHub {
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sc.setAuthInfo(GetToken());
+                                sc.setAuthInfo(getToken());
                                 try {
                                         juddi.saveClerk(sc);
                                 } catch (Exception ex1) {
-                                        return "Error!" + HandleException(ex1);
+                                        return "Error!" + handleException(ex1);
                                 }
 
                         } else {
-                                return "Error!" + HandleException(ex);
+                                return "Error!" + handleException(ex);
                         }
                 }
                 return "Success";
@@ -468,7 +480,7 @@ public class UddiAdminHub {
 
         private String save_Node(HttpServletRequest parameters) {
                 SaveNode sn = new SaveNode();
-                sn.setAuthInfo(GetToken());
+                sn.setAuthInfo(getToken());
                 Node node = new Node();
                 node.setClientName(parameters.getParameter("NODEsetClientName"));
                 node.setCustodyTransferUrl(parameters.getParameter("NODEsetCustodyTransferUrl"));
@@ -492,15 +504,15 @@ public class UddiAdminHub {
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sn.setAuthInfo(GetToken());
+                                sn.setAuthInfo(getToken());
                                 try {
                                         juddi.saveNode(sn);
                                 } catch (Exception ex1) {
-                                        return "Error!" + HandleException(ex1);
+                                        return "Error!" + handleException(ex1);
                                 }
 
                         } else {
-                                return "Error!" + HandleException(ex);
+                                return "Error!" + handleException(ex);
                         }
                 }
                 return "Success";
@@ -523,7 +535,7 @@ public class UddiAdminHub {
                         smtp.notifySubscriptionListener(body);
                         return "Success";
                 } catch (Exception ex) {
-                        return "Failure!" + HandleException(ex);
+                        return "Failure!" + handleException(ex);
                 }
         }
 
@@ -531,24 +543,24 @@ public class UddiAdminHub {
                 NodeList allNodes = null;
                 try {
 
-                        allNodes = juddi.getAllNodes(GetToken());
+                        allNodes = juddi.getAllNodes(getToken());
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        allNodes = juddi.getAllNodes(GetToken());
+                                        allNodes = juddi.getAllNodes(getToken());
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 try {
-                        return PrettyPrintJaxbObject(allNodes);
+                        return prettyPrintJaxbObject(allNodes);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
                 
         }
@@ -557,24 +569,24 @@ public class UddiAdminHub {
                 ClerkList allNodes = null;
                 try {
 
-                        allNodes = juddi.getAllClerks(GetToken());
+                        allNodes = juddi.getAllClerks(getToken());
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        allNodes = juddi.getAllClerks(GetToken());
+                                        allNodes = juddi.getAllClerks(getToken());
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                  try {
-                        return PrettyPrintJaxbObject(allNodes);
+                        return prettyPrintJaxbObject(allNodes);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
@@ -582,24 +594,24 @@ public class UddiAdminHub {
                 List<SubscriptionWrapper> allClientSubscriptionInfo = null;
                 try {
 
-                        allClientSubscriptionInfo = juddi.getAllClientSubscriptionInfo(GetToken());
+                        allClientSubscriptionInfo = juddi.getAllClientSubscriptionInfo(getToken());
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        allClientSubscriptionInfo = juddi.getAllClientSubscriptionInfo(GetToken());
+                                        allClientSubscriptionInfo = juddi.getAllClientSubscriptionInfo(getToken());
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                  try {
-                        return PrettyPrintJaxbObject(allClientSubscriptionInfo);
+                        return prettyPrintJaxbObject(allClientSubscriptionInfo);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
@@ -607,30 +619,30 @@ public class UddiAdminHub {
                 ReplicationConfiguration cfg = null;
                 try {
 
-                        cfg = juddi.getReplicationNodes(GetToken());
+                        cfg = juddi.getReplicationNodes(getToken());
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        cfg = juddi.getReplicationNodes(GetToken());
+                                        cfg = juddi.getReplicationNodes(getToken());
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                  try {
-                        return PrettyPrintJaxbObject(cfg);
+                        return prettyPrintJaxbObject(cfg);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
         private String deleteNode(HttpServletRequest parameters) {
                 DeleteNode cfg = new DeleteNode();
-                cfg.setAuthInfo(GetToken());
+                cfg.setAuthInfo(getToken());
                 cfg.setNodeID(parameters.getParameter("delete_NodeName"));
                 try {
 
@@ -640,13 +652,13 @@ public class UddiAdminHub {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        cfg.setAuthInfo(GetToken());
+                                        cfg.setAuthInfo(getToken());
                                         juddi.deleteNode(cfg);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
 
@@ -658,18 +670,18 @@ public class UddiAdminHub {
                 keys.add(parameters.getParameter("admin_DeleteSubscriptionKey"));
                 try {
 
-                        juddi.adminDeleteSubscription(GetToken(), keys);
+                        juddi.adminDeleteSubscription(getToken(), keys);
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        juddi.adminDeleteSubscription(GetToken(), keys);
+                                        juddi.adminDeleteSubscription(getToken(), keys);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
 
@@ -678,7 +690,7 @@ public class UddiAdminHub {
 
         private String deleteClerk(HttpServletRequest parameters) {
                 DeleteClerk cfg = new DeleteClerk();
-                cfg.setAuthInfo(GetToken());
+                cfg.setAuthInfo(getToken());
                 cfg.setClerkID(parameters.getParameter("delete_ClerkName"));
                 try {
 
@@ -688,13 +700,13 @@ public class UddiAdminHub {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        cfg.setAuthInfo(GetToken());
+                                        cfg.setAuthInfo(getToken());
                                         juddi.deleteClerk(cfg);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
 
@@ -706,24 +718,24 @@ public class UddiAdminHub {
                 DispositionReport setReplicationNodes = null;
                 try {
 
-                        setReplicationNodes = juddi.setReplicationNodes(GetToken(), cfg);
+                        setReplicationNodes = juddi.setReplicationNodes(getToken(), cfg);
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        setReplicationNodes = juddi.setReplicationNodes(GetToken(), cfg);
+                                        setReplicationNodes = juddi.setReplicationNodes(getToken(), cfg);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                  try {
-                        return PrettyPrintJaxbObject(setReplicationNodes);
+                        return prettyPrintJaxbObject(setReplicationNodes);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
@@ -733,24 +745,24 @@ public class UddiAdminHub {
                 DispositionReport setReplicationNodes = null;
                 try {
 
-                        setReplicationNodes = juddi.adminSaveBusiness(GetToken(), cfg.getValues());
+                        setReplicationNodes = juddi.adminSaveBusiness(getToken(), cfg.getValues());
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        setReplicationNodes = juddi.adminSaveBusiness(GetToken(), cfg.getValues());
+                                        setReplicationNodes = juddi.adminSaveBusiness(getToken(), cfg.getValues());
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                  try {
-                        return PrettyPrintJaxbObject(setReplicationNodes);
+                        return prettyPrintJaxbObject(setReplicationNodes);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
@@ -761,24 +773,24 @@ public class UddiAdminHub {
                 DispositionReport setReplicationNodes = null;
                 try {
 
-                        setReplicationNodes = juddi.adminSaveTModel(GetToken(), cfg.getValues());
+                        setReplicationNodes = juddi.adminSaveTModel(getToken(), cfg.getValues());
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        setReplicationNodes = juddi.adminSaveTModel(GetToken(), cfg.getValues());
+                                        setReplicationNodes = juddi.adminSaveTModel(getToken(), cfg.getValues());
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                  try {
-                        return PrettyPrintJaxbObject(setReplicationNodes);
+                        return prettyPrintJaxbObject(setReplicationNodes);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
@@ -789,32 +801,32 @@ public class UddiAdminHub {
                 Holder<List<Subscription>> holder = new Holder<List<Subscription>>(cfg.getSubscriptions());
                 try {
 
-                        juddi.adminSaveSubscription(GetToken(), cfg.getPublisherOrUsername(), holder);
+                        juddi.adminSaveSubscription(getToken(), cfg.getPublisherOrUsername(), holder);
                 } catch (Exception ex) {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
                                 try {
-                                        juddi.adminSaveSubscription(GetToken(), cfg.getPublisherOrUsername(), holder);
+                                        juddi.adminSaveSubscription(getToken(), cfg.getPublisherOrUsername(), holder);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 AdminSaveSubscriptionResponse res = new AdminSaveSubscriptionResponse();
                 res.getSubscriptions().addAll(holder.value);
                  try {
-                        return PrettyPrintJaxbObject(res);
+                        return prettyPrintJaxbObject(res);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
         private String getEntityHistory(HttpServletRequest parameters) {
                 GetEntityHistoryMessageRequest sn = new GetEntityHistoryMessageRequest();
-                sn.setAuthInfo(GetToken());
+                sn.setAuthInfo(getToken());
                 sn.setEntityKey(parameters.getParameter("get_EntityHistoryKey"));
                 GetEntityHistoryMessageResponse entityHistory = null;
                 try {
@@ -824,24 +836,24 @@ public class UddiAdminHub {
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sn.setAuthInfo(GetToken());
+                                sn.setAuthInfo(getToken());
                                 try {
                                         entityHistory = juddi.getEntityHistory(sn);
                                 } catch (Exception ex1) {
-                                        return "Error!" + HandleException(ex1);
+                                        return "Error!" + handleException(ex1);
                                 }
 
                         } else {
-                                return "Error!" + HandleException(ex);
+                                return "Error!" + handleException(ex);
                         }
                 }
                 if (entityHistory == null) {
                         return "Something went wrong!";
                 }
                 try {
-                        return PrettyPrintJaxbObject(entityHistory);
+                        return prettyPrintJaxbObject(entityHistory);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
 
         }
@@ -854,7 +866,7 @@ public class UddiAdminHub {
 
                 try {
 
-                        ReplicationConfiguration replicationNodes = new JUDDIApiImpl().getReplicationNodes(GetToken());
+                        ReplicationConfiguration replicationNodes = new JUDDIApiImpl().getReplicationNodes(getToken());
                         if (replicationNodes.getOperator().size() > 1) {
                                 throw new Exception("Replication is configured with " + replicationNodes.getOperator() + " nodes. Node rename aborted");
                         }
@@ -873,7 +885,7 @@ public class UddiAdminHub {
                         UDDIInquiryImpl inquire = new UDDIInquiryImpl();
 
                         GetBusinessDetail gbd = new GetBusinessDetail();
-                        gbd.setAuthInfo(GetToken());
+                        gbd.setAuthInfo(getToken());
                         gbd.getBusinessKey().add(newnode);
                         BusinessDetail businessDetail = null;
                         try {
@@ -899,7 +911,7 @@ public class UddiAdminHub {
                                         }
                                 }
                                 SaveBusiness sb = new SaveBusiness();
-                                sb.setAuthInfo(GetToken());
+                                sb.setAuthInfo(getToken());
                                 sb.getBusinessEntity().add(get);
                                 //if there's something wrong with the new key, this will throw
                                 BusinessDetail saveBusiness = pub.saveBusiness(sb);
@@ -922,7 +934,7 @@ public class UddiAdminHub {
                         tx.commit();
                         try {
                                 DeleteBusiness db = new DeleteBusiness();
-                                db.setAuthInfo(GetToken());
+                                db.setAuthInfo(getToken());
                                 db.getBusinessKey().add(currentnode);
                                 pub.deleteBusiness(db);
                         } catch (Exception ex) {
@@ -935,7 +947,7 @@ public class UddiAdminHub {
 
                         return "Sucess, Records update: " + records + " current node id is now " + AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 } finally {
                         if (tx.isActive()) {
                                 tx.rollback();
@@ -956,10 +968,10 @@ public class UddiAdminHub {
                                 new ChangeRecordIDType(parameters.getParameter("nodeid"),
                                         Long.parseLong(parameters.getParameter("recordid"))));
                         ChangeRecords changeRecords = new UDDIReplicationImpl().getChangeRecords(req);
-                        return PrettyPrintJaxbObject(changeRecords);
+                        return prettyPrintJaxbObject(changeRecords);
 
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
@@ -970,7 +982,7 @@ public class UddiAdminHub {
          * @return
          * @throws Exception
          */
-        private String PrettyPrintJaxbObject(Object jaxb) throws Exception {
+        private String prettyPrintJaxbObject(Object jaxb) throws Exception {
                 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                 dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
                 DocumentBuilder db = dbf.newDocumentBuilder();
@@ -991,13 +1003,71 @@ public class UddiAdminHub {
                 String xmlString = result.getWriter().toString();
                
                 return "<pre>" + StringEscapeUtils.escapeXml(xmlString) + "</pre>";
+            }
+
+        private String setPermissions(HttpServletRequest parameters) {
+            SetPermissionsMessageRequest sb = new SetPermissionsMessageRequest();
+            try {
+
+                sb.setAuthInfo(getToken());
+                sb.getLevel().add(new Permission());
+                sb.getLevel().get(0).setAction(Action.ADD);
+                 sb.getLevel().get(0).setEntityId(parameters.getParameter("set_permissionsID"));
+                  sb.getLevel().get(0).setLevel(AccessLevel.fromValue(parameters.getParameter("set_permissionsAL")));
+                   sb.getLevel().get(0).setTarget(parameters.getParameter("set_permissionsURG"));
+                   // sb.getLevel().get(0).setType(EntityType.TMODEL);
+                SetPermissionsMessageResponse permissions = juddi.setPermissions(sb);
+                return prettyPrintJaxbObject(permissions);
+
+            } catch (Exception ex) {
+                if (isExceptionExpiration(ex)) {
+                    token = null;
+                    sb.setAuthInfo(getToken());
+                    try {
+                        SetPermissionsMessageResponse permissions = juddi.setPermissions(sb);
+                        return prettyPrintJaxbObject(permissions);
+                    } catch (Exception e) {
+                        return handleException(e);
+                    }
+
+                } else {
+                    return handleException(ex);
+                }
+            }
+        }
+        private String getPermissions(HttpServletRequest parameters) {
+                GetPermissionsMessageRequest sb = new GetPermissionsMessageRequest();
+                try {
+                    sb.setLimit(BigInteger.valueOf(200));
+                    sb.setOffset(BigInteger.ZERO);
+                    sb.setAuthInfo(getToken());
+                    if (parameters.getParameter("get_permissionsID")!=null)
+                        sb.setEntityId(parameters.getParameter("get_permissionsID"));
+                    GetPermissionsMessageResponse permissions = juddi.getPermissions(sb);
+                    return prettyPrintJaxbObject(permissions);
+                    
+                } catch (Exception ex) {
+                    if (isExceptionExpiration(ex)) {
+                                token = null;
+                                sb.setAuthInfo(getToken());
+                                try {
+                                       GetPermissionsMessageResponse permissions = juddi.getPermissions(sb);
+                                        return prettyPrintJaxbObject(permissions);
+                                } catch (Exception e) {
+                                        return handleException(e);
+                                }
+
+                        } else {
+                                return handleException(ex);
+                        }
+                }
         }
 
         private String getFailedReplicationChangeRecords(HttpServletRequest parameters) {
                 try {
 
                         GetFailedReplicationChangeRecordsMessageRequest req = new GetFailedReplicationChangeRecordsMessageRequest();
-                        req.setAuthInfo(GetToken());
+                        req.setAuthInfo(getToken());
                         req.setMaxRecords(Integer.parseInt(parameters.getParameter("getFailedReplicationChangeRecordsMaxCount")));
                         req.setOffset(0);
                         req.setOffset(Integer.parseInt(parameters.getParameter("getFailedReplicationChangeRecordsOffset")));
@@ -1007,21 +1077,21 @@ public class UddiAdminHub {
                         } catch (Exception ex) {
                                 if (isExceptionExpiration(ex)) {
                                         token = null;
-                                        req.setAuthInfo(GetToken());
+                                        req.setAuthInfo(getToken());
                                         try {
                                                 failedReplicationChangeRecords = juddi.getFailedReplicationChangeRecords(req);
                                         } catch (Exception ex1) {
-                                                return "Error!" + HandleException(ex1);
+                                                return "Error!" + handleException(ex1);
                                         }
 
                                 } else {
-                                        return "Error!" + HandleException(ex);
+                                        return "Error!" + handleException(ex);
                                 }
                         }
 
-                        return PrettyPrintJaxbObject(failedReplicationChangeRecords);
+                        return prettyPrintJaxbObject(failedReplicationChangeRecords);
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
         }
 
@@ -1037,8 +1107,8 @@ public class UddiAdminHub {
                 UDDI_AUTH
         }
 
-        private String GetToken() {
-                EnsureConfig();
+        private String getToken() {
+                ensureConfig();
                 if (style != AuthStyle.UDDI_AUTH) {
                         BindingProvider bp = null;
                         if (WS_Transport) {
@@ -1062,7 +1132,7 @@ public class UddiAdminHub {
                                         AuthToken authToken = security.getAuthToken(req);
                                         token = authToken.getAuthInfo();
                                 } catch (Exception ex) {
-                                        return HandleException(ex);
+                                        return handleException(ex);
                                 }
                         }
                 }
@@ -1071,22 +1141,22 @@ public class UddiAdminHub {
 
         private String delete_publisher(HttpServletRequest parameters) {
                 DeletePublisher sb = new DeletePublisher();
-                sb.setAuthInfo(GetToken());
+                sb.setAuthInfo(getToken());
                 sb.getPublisherId().add(parameters.getParameter("delete_publisherKEY"));
                 try {
                         juddi.deletePublisher(sb);
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sb.setAuthInfo(GetToken());
+                                sb.setAuthInfo(getToken());
                                 try {
                                         juddi.deletePublisher(sb);
                                 } catch (Exception e) {
-                                        return HandleException(e);
+                                        return handleException(e);
                                 }
 
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 return "Success";
@@ -1095,22 +1165,22 @@ public class UddiAdminHub {
         private String getAllPublisherDetail(HttpServletRequest parameters) {
                 StringBuilder ret = new StringBuilder();
                 GetAllPublisherDetail sb = new GetAllPublisherDetail();
-                sb.setAuthInfo(GetToken());
+                sb.setAuthInfo(getToken());
                 PublisherDetail d = null;
                 try {
                         d = juddi.getAllPublisherDetail(sb);
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sb.setAuthInfo(GetToken());
+                                sb.setAuthInfo(getToken());
                                 try {
                                         d = juddi.getAllPublisherDetail(sb);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
 
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 if (d != null) {
@@ -1118,7 +1188,7 @@ public class UddiAdminHub {
                         for (int i = 0; i < d.getPublisher().size(); i++) {
                                 ret.append("<tr><td>").append(StringEscapeUtils.escapeHtml(d.getPublisher().get(i).getPublisherName()))
                                         .append("</td><td>");
-                                ret.append(PrintPublisherDetail(d.getPublisher().get(i)))
+                                ret.append(printPublisherDetail(d.getPublisher().get(i)))
                                         .append("</td></tr>");
                         }
                         ret.append("</table>");
@@ -1128,7 +1198,7 @@ public class UddiAdminHub {
                 return ret.toString();
         }
 
-        private String PrintPublisherDetail(Publisher p) {
+        private String printPublisherDetail(Publisher p) {
                 StringBuilder ret = new StringBuilder();
 
                 ret.append("Authorized Name = ").append(StringEscapeUtils.escapeHtml(p.getAuthorizedName()))
@@ -1163,22 +1233,22 @@ public class UddiAdminHub {
                 StringBuilder ret = new StringBuilder();
                 GetPublisherDetail sb = new GetPublisherDetail();
                 sb.getPublisherId().add(parameters.getParameter("get_publisherDetailKEY"));
-                sb.setAuthInfo(GetToken());
+                sb.setAuthInfo(getToken());
                 PublisherDetail d = null;
                 try {
                         d = juddi.getPublisherDetail(sb);
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sb.setAuthInfo(GetToken());
+                                sb.setAuthInfo(getToken());
                                 try {
                                         d = juddi.getPublisherDetail(sb);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
 
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 if (d != null) {
@@ -1186,7 +1256,7 @@ public class UddiAdminHub {
                         for (int i = 0; i < d.getPublisher().size(); i++) {
                                 ret.append("<tr><td>").append(StringEscapeUtils.escapeHtml(d.getPublisher().get(i).getPublisherName()))
                                         .append("</td><td>");
-                                ret.append(PrintPublisherDetail(d.getPublisher().get(i)))
+                                ret.append(printPublisherDetail(d.getPublisher().get(i)))
                                         .append("</td></tr>");
                         }
                         ret.append("</table>");
@@ -1204,27 +1274,27 @@ public class UddiAdminHub {
                 try {
                         StringReader sr = new StringReader(parameters.getParameter("invoke_SyncSubscriptionXML").trim());
                         sb = (JAXB.unmarshal(sr, SyncSubscription.class));
-                        sb.setAuthInfo(GetToken());
+                        sb.setAuthInfo(getToken());
                         d = juddi.invokeSyncSubscription(sb);
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sb.setAuthInfo(GetToken());
+                                sb.setAuthInfo(getToken());
                                 try {
                                         d = juddi.invokeSyncSubscription(sb);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
 
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 if (d != null) {
                         try {
-                                ret.append(PrettyPrintJaxbObject(d));
+                                ret.append(prettyPrintJaxbObject(d));
                         } catch (Exception ex) {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
 
                 } else {
@@ -1233,7 +1303,7 @@ public class UddiAdminHub {
                 return ret.toString();
         }
 
-        private static String PrettyPrintXML(String input) {
+        private static String prettyPrintXML(String input) {
                 try {
                         TransformerFactory transFactory = TransformerFactory.newInstance();
                         transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
@@ -1305,29 +1375,29 @@ public class UddiAdminHub {
                 try {
                         StringReader sr = new StringReader(parameters.getParameter("ClientSubscriptionInfoDetailXML").trim());
                         sb = (JAXB.unmarshal(sr, SaveClientSubscriptionInfo.class));
-                        sb.setAuthInfo(GetToken());
+                        sb.setAuthInfo(getToken());
                         d = juddi.saveClientSubscriptionInfo(sb);
                 } catch (Exception ex) {
                         if (ex instanceof DispositionReportFaultMessage) {
                                 DispositionReportFaultMessage f = (DispositionReportFaultMessage) ex;
                                 if (f.getFaultInfo().countainsErrorCode(DispositionReport.E_AUTH_TOKEN_EXPIRED)) {
                                         token = null;
-                                        sb.setAuthInfo(GetToken());
+                                        sb.setAuthInfo(getToken());
                                         try {
                                                 d = juddi.saveClientSubscriptionInfo(sb);
                                         } catch (Exception ex1) {
-                                                return HandleException(ex1);
+                                                return handleException(ex1);
                                         }
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 if (d != null) {
                         try {
-                                ret.append(PrettyPrintJaxbObject(d));
+                                ret.append(prettyPrintJaxbObject(d));
                         } catch (Exception ex) {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
 
                 } else {
@@ -1390,7 +1460,7 @@ public class UddiAdminHub {
                 }
 
                 PublisherDetail d = null;
-                sb.setAuthInfo(GetToken());
+                sb.setAuthInfo(getToken());
                 try {
                         if (parameters.getParameter("savePublisherMaxBindings") != null) {
                                 p.setMaxBindingsPerService(Integer.parseInt(parameters.getParameter("savePublisherMaxBindings")));
@@ -1423,14 +1493,14 @@ public class UddiAdminHub {
 
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sb.setAuthInfo(GetToken());
+                                sb.setAuthInfo(getToken());
                                 try {
                                         d = juddi.savePublisher(sb);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 return "Success";
@@ -1439,20 +1509,20 @@ public class UddiAdminHub {
         private String adminDelete_tmodel(HttpServletRequest parameters) {
                 DeleteTModel sb = new DeleteTModel();
                 sb.getTModelKey().add(parameters.getParameter("adminDelete_tmodelKEY"));
-                sb.setAuthInfo(GetToken());
+                sb.setAuthInfo(getToken());
                 try {
                         juddi.adminDeleteTModel(sb);
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sb.setAuthInfo(GetToken());
+                                sb.setAuthInfo(getToken());
                                 try {
                                         juddi.adminDeleteTModel(sb);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 return "Success";
@@ -1461,21 +1531,21 @@ public class UddiAdminHub {
         private String delete_ClientSubscriptionInfo(HttpServletRequest parameters) {
                 DeleteClientSubscriptionInfo sb = new DeleteClientSubscriptionInfo();
                 sb.getSubscriptionKey().add(parameters.getParameter("delete_ClientSubscriptionInfoKEY"));
-                sb.setAuthInfo(GetToken());
+                sb.setAuthInfo(getToken());
                 try {
                         juddi.deleteClientSubscriptionInfo(sb);
                 } catch (Exception ex) {
                         if (isExceptionExpiration(ex)) {
                                 token = null;
-                                sb.setAuthInfo(GetToken());
+                                sb.setAuthInfo(getToken());
                                 try {
                                         juddi.deleteClientSubscriptionInfo(sb);
                                 } catch (Exception ex1) {
-                                        return HandleException(ex1);
+                                        return handleException(ex1);
                                 }
 
                         } else {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 return "Success";
@@ -1493,7 +1563,7 @@ public class UddiAdminHub {
         }
 
         public String verifyLogin() {
-                EnsureConfig();
+                ensureConfig();
                 if (style != AuthStyle.UDDI_AUTH) {
                         if (WS_Transport) {
                                 BindingProvider bp = null;
@@ -1516,7 +1586,7 @@ public class UddiAdminHub {
                                 juddi.getPublisherDetail(publisherDetail);
 
                         } catch (Exception ex) {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                         /*
                          bp = (BindingProvider) juddi;
@@ -1543,7 +1613,7 @@ public class UddiAdminHub {
                                         security = transport.getUDDISecurityService();
                                 }
                         } catch (Exception ex) {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                         if (session.getAttribute("username") != null
                                 && session.getAttribute("password") != null) {
@@ -1555,7 +1625,7 @@ public class UddiAdminHub {
                                         token = authToken.getAuthInfo();
                                         return null;
                                 } catch (Exception ex) {
-                                        return HandleException(ex);
+                                        return handleException(ex);
                                 }
                         }
                 }
@@ -1568,7 +1638,7 @@ public class UddiAdminHub {
                 try {
                         if (method.equalsIgnoreCase("save_ClientSubscriptionInfo")) {
                                 SaveClientSubscriptionInfo x = (SaveClientSubscriptionInfo) request;
-                                x.setAuthInfo(GetToken());
+                                x.setAuthInfo(getToken());
                                 ClientSubscriptionInfoDetail saveClientSubscriptionInfo = null;
                                 try {
                                         result = juddi.saveClientSubscriptionInfo(x);
@@ -1577,7 +1647,7 @@ public class UddiAdminHub {
                                 } catch (Exception ex) {
                                         if (isExceptionExpiration(ex)) {
                                                 token = null;
-                                                x.setAuthInfo(GetToken());
+                                                x.setAuthInfo(getToken());
                                                 result = juddi.saveClientSubscriptionInfo(x);
                                                 sw.append("Success:<br>");
                                                 //JAXB.marshal(saveClientSubscriptionInfo, sw);
@@ -1590,7 +1660,7 @@ public class UddiAdminHub {
                         }
                         if (method.equalsIgnoreCase("invoke_SyncSubscription")) {
                                 SyncSubscription x = (SyncSubscription) request;
-                                x.setAuthInfo(GetToken());
+                                x.setAuthInfo(getToken());
                                 SyncSubscriptionDetail invokeSyncSubscription = null;
                                 try {
                                         result = juddi.invokeSyncSubscription(x);
@@ -1599,7 +1669,7 @@ public class UddiAdminHub {
                                 } catch (Exception ex) {
                                         if (isExceptionExpiration(ex)) {
                                                 token = null;
-                                                x.setAuthInfo(GetToken());
+                                                x.setAuthInfo(getToken());
                                                 result = juddi.invokeSyncSubscription(x);
                                                 sw.append("Success:<br>");
                                                 //JAXB.marshal(invokeSyncSubscription, sw);
@@ -1616,15 +1686,15 @@ public class UddiAdminHub {
                                 DispositionReport adminSaveBusiness = null;
 
                                 try {
-                                        result = juddi.adminSaveBusiness(GetToken(), x.getValues());
+                                        result = juddi.adminSaveBusiness(getToken(), x.getValues());
                                         sw.append("Success:<br>");
                                         //JAXB.marshal(adminSaveBusiness, sw);
 
                                 } catch (Exception ex) {
                                         if (isExceptionExpiration(ex)) {
                                                 token = null;
-                                                x.setAuthInfo(GetToken());
-                                                result = juddi.adminSaveBusiness(GetToken(), x.getValues());
+                                                x.setAuthInfo(getToken());
+                                                result = juddi.adminSaveBusiness(getToken(), x.getValues());
                                                 sw.append("Success:<br>");
                                                // JAXB.marshal(adminSaveBusiness, sw);
 
@@ -1638,15 +1708,15 @@ public class UddiAdminHub {
 
                                 DispositionReport adminSaveTModel = null;
                                 try {
-                                        result = juddi.adminSaveTModel(GetToken(), x.getValues());
+                                        result = juddi.adminSaveTModel(getToken(), x.getValues());
                                         sw.append("Success:<br>");
                                         //JAXB.marshal(adminSaveTModel, sw);
 
                                 } catch (Exception ex) {
                                         if (isExceptionExpiration(ex)) {
                                                 token = null;
-                                                x.setAuthInfo(GetToken());
-                                                result = juddi.adminSaveTModel(GetToken(), x.getValues());
+                                                x.setAuthInfo(getToken());
+                                                result = juddi.adminSaveTModel(getToken(), x.getValues());
                                                 sw.append("Success:<br>");
                                                 //JAXB.marshal(adminSaveTModel, sw);
 
@@ -1661,14 +1731,14 @@ public class UddiAdminHub {
                                 AdminSaveSubscriptionRequest x = (AdminSaveSubscriptionRequest) request;
                                 Holder<List<Subscription>> holder = new Holder<List<Subscription>>(x.getSubscriptions());
                                 try {
-                                        juddi.adminSaveSubscription(GetToken(), x.getPublisherOrUsername(), holder);
+                                        juddi.adminSaveSubscription(getToken(), x.getPublisherOrUsername(), holder);
                                         sw.append("Success:<br>");
                                         result=holder;
                                 } catch (Exception ex) {
                                         if (isExceptionExpiration(ex)) {
                                                 token = null;
 
-                                                juddi.adminSaveSubscription(GetToken(), x.getPublisherOrUsername(), holder);
+                                                juddi.adminSaveSubscription(getToken(), x.getPublisherOrUsername(), holder);
                                                 sw.append("Success:<br>");
                                                 result=holder;
 
@@ -1681,14 +1751,14 @@ public class UddiAdminHub {
                                 ReplicationConfiguration x = (ReplicationConfiguration) request;
                                 //    Holder<List<Subscription>> holder = new Holder<List<Subscription>>(x.getSubscriptions());
                                 try {
-                                        result = juddi.setReplicationNodes(GetToken(), x);
+                                        result = juddi.setReplicationNodes(getToken(), x);
                                         sw.append("Success:<br>");
                                        // JAXB.marshal(setReplicationNodes, sw);
                                 } catch (Exception ex) {
                                         if (isExceptionExpiration(ex)) {
                                                 token = null;
 
-                                                result = juddi.setReplicationNodes(GetToken(), x);
+                                                result = juddi.setReplicationNodes(getToken(), x);
                                                 sw.append("Success:<br>");
                                                 //JAXB.marshal(setReplicationNodes, sw);
 
@@ -1699,13 +1769,13 @@ public class UddiAdminHub {
                         }
 
                 } catch (Exception ex) {
-                        return HandleException(ex);
+                        return handleException(ex);
                 }
                 if (result!=null){
                         try {
-                                return sw.toString() + "<br>" + PrettyPrintJaxbObject(result);
+                                return sw.toString() + "<br>" + prettyPrintJaxbObject(result);
                         } catch (Exception ex) {
-                                return HandleException(ex);
+                                return handleException(ex);
                         }
                 }
                 return "Error! no work was done?";
diff --git a/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties b/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties
index 8ffaee0..0522c2f 100644
--- a/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties
+++ b/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web.properties
@@ -382,3 +382,7 @@ items.transport=Transport
 items.clientname=Client Name
 pages.admin.changes=Change Records
 pages.admin.changes.content=Browse through each change made to your registry
+items.entity=Entity ID
+items.urg=Username, role, or group
+items.level=Access Level
+
diff --git a/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties b/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties
index 0ba7b2c..1341a50 100644
--- a/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties
+++ b/juddiv3-war/src/main/resources/org/apache/juddi/adminconsole/resources/web_es.properties
@@ -383,3 +383,4 @@ items.transport=Transporte
 items.clientname=Nombre del Cliente
 pages.admin.changes=Registros de Cambio
 pages.admin.changes.content=Navegar a trav\u00e9s de cada cambio realizado en su registro\n
+items.entity=ID de entidad
\ No newline at end of file
diff --git a/juddiv3-war/src/main/webapp/admin/admin.jsp b/juddiv3-war/src/main/webapp/admin/admin.jsp
index bbc4bd5..8c52c0e 100644
--- a/juddiv3-war/src/main/webapp/admin/admin.jsp
+++ b/juddiv3-war/src/main/webapp/admin/admin.jsp
@@ -21,6 +21,7 @@
 --%>
 
 
+<%@page import="org.apache.juddi.api_v3.AccessLevel"%>
 <%@page import="org.apache.juddi.config.Property"%>
 <%@page import="org.apache.juddi.config.AppConfig"%>
 <%@page import="org.apache.juddi.api_v3.Publisher"%>
@@ -94,7 +95,12 @@
                                 <option>admin_SaveTModel</option>
                                 <option>adminDelete_tmodel</option>                                 
                                 <option>send_EmailTest</option>
-                               
+                                
+                                
+                                <option>------ Fine Grain Permissions -----</option>
+                                <option>get_permissions</option>
+                                <option>set_permissions</option>
+                                
                                 
                         </select>
 
@@ -182,8 +188,39 @@
                                         
                                         
                                 <div id="send_EmailTest" style="display:none">
-                                <%=ResourceLoader.GetResource(session, "items.email")%>  <input type="text" id="send_EmailTestEMAIL"  class="forminput" placeholder="Enter email"><br>    
+                                <%=ResourceLoader.GetResource(session, "items.email")%>  <input type="text" id="send_EmailTestEMAIL"  
+                                       class="forminput" placeholder="Enter email"><br>    
+                                </div>
+
+                                <div id="get_permissions" style="display:none">
+                                <%=ResourceLoader.GetResource(session, "items.entity")%>  <input type="text" id="get_permissionsID"  
+                                       class="forminput" placeholder="<%=ResourceLoader.GetResource(session, "items.entity")%>"><br>    
+                                </div>
+                                
+                                <div id="set_permissions" style="display:none">
+                                <%=ResourceLoader.GetResource(session, "items.entity")%>  <input type="text" id="set_permissionsID"  
+                                       class="forminput" placeholder="<%=ResourceLoader.GetResource(session, "items.entity")%>"><br>    
+                               <%=ResourceLoader.GetResource(session, "items.urg")%>  <input type="text" id="set_permissionsURG"  
+                                      class="forminput" placeholder="<%=ResourceLoader.GetResource(session, "items.urg")%>"><br>    
+                                <%=ResourceLoader.GetResource(session, "items.level")%>  
+                                <select id="set_permissionsAL"  class="forminput" >
+                                    <%
+                                    for(AccessLevel al:AccessLevel.values()){
+                                    %>
+                                    
+                                    <option value="<%=al.name()%>" ><%=al.name()%></option>
+                                    <%
+                                    
+                                    }%>
+                                   
+                                </select><br>    
+                                
                                 </div>
+                                
+                                
+                                
+                                
+                                
                                 <div id="get_AllNodes" style="display:none">
                                     No input required.
                                 </div>
@@ -282,6 +319,8 @@
                                         $("#get_EntityHistory").hide();
                                         $("#change_NodeID").hide();
                                         $("#getFailedReplicationChangeRecords").hide();
+                                         $("#set_permissions").hide();
+                                          $("#get_permissions").hide();
                                        
                         
                                         $("#" + x).show();
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/AccessLevel.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/AccessLevel.java
new file mode 100644
index 0000000..294bc8d
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/AccessLevel.java
@@ -0,0 +1,44 @@
+
+package org.apache.juddi.api_v3;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AccessLevel.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="AccessLevel">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="NONE"/>
+ *     &lt;enumeration value="READ"/>
+ *     &lt;enumeration value="WRITE"/>
+ *     &lt;enumeration value="OWN"/>
+ *     &lt;enumeration value="CREATE"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "AccessLevel")
+@XmlEnum
+public enum AccessLevel {
+
+    NONE,
+    READ,
+    WRITE,
+    OWN,
+    CREATE;
+
+    public String value() {
+        return name();
+    }
+
+    public static AccessLevel fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/Action.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/Action.java
new file mode 100644
index 0000000..37110f9
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/Action.java
@@ -0,0 +1,40 @@
+
+package org.apache.juddi.api_v3;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Action.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="Action">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="ADD"/>
+ *     &lt;enumeration value="REMOVE"/>
+ *     &lt;enumeration value="NOOP"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "Action")
+@XmlEnum
+public enum Action {
+
+    ADD,
+    REMOVE,
+    NOOP;
+
+    public String value() {
+        return name();
+    }
+
+    public static Action fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/EntityType.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/EntityType.java
new file mode 100644
index 0000000..d6c4e3e
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/EntityType.java
@@ -0,0 +1,42 @@
+
+package org.apache.juddi.api_v3;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for EntityType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="EntityType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="BUSINESS"/>
+ *     &lt;enumeration value="SERVICE"/>
+ *     &lt;enumeration value="BINDING"/>
+ *     &lt;enumeration value="TMODEL"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "EntityType")
+@XmlEnum
+public enum EntityType {
+
+    BUSINESS,
+    SERVICE,
+    BINDING,
+    TMODEL;
+
+    public String value() {
+        return name();
+    }
+
+    public static EntityType fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetPermissionsMessageRequest.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetPermissionsMessageRequest.java
new file mode 100644
index 0000000..21b50d1
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetPermissionsMessageRequest.java
@@ -0,0 +1,146 @@
+
+package org.apache.juddi.api_v3;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for getPermissionsMessageRequest complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="getPermissionsMessageRequest">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="authInfo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="entityId" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="limit" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ *         &lt;element name="offset" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "getPermissionsMessageRequest", propOrder = {
+    "authInfo",
+    "entityId",
+    "limit",
+    "offset"
+})
+public class GetPermissionsMessageRequest {
+
+    protected String authInfo;
+    @XmlElement(required = true)
+    protected String entityId;
+    @XmlElement(required = true)
+    protected BigInteger limit;
+    @XmlElement(required = true)
+    protected BigInteger offset;
+
+    /**
+     * Gets the value of the authInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAuthInfo() {
+        return authInfo;
+    }
+
+    /**
+     * Sets the value of the authInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAuthInfo(String value) {
+        this.authInfo = value;
+    }
+
+    /**
+     * Gets the value of the entityId property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEntityId() {
+        return entityId;
+    }
+
+    /**
+     * Sets the value of the entityId property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEntityId(String value) {
+        this.entityId = value;
+    }
+
+    /**
+     * Gets the value of the limit property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getLimit() {
+        return limit;
+    }
+
+    /**
+     * Sets the value of the limit property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setLimit(BigInteger value) {
+        this.limit = value;
+    }
+
+    /**
+     * Gets the value of the offset property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getOffset() {
+        return offset;
+    }
+
+    /**
+     * Sets the value of the offset property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setOffset(BigInteger value) {
+        this.offset = value;
+    }
+
+}
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetPermissionsMessageResponse.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetPermissionsMessageResponse.java
new file mode 100644
index 0000000..e49fa3c
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/GetPermissionsMessageResponse.java
@@ -0,0 +1,67 @@
+
+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.XmlType;
+
+
+/**
+ * <p>Java class for getPermissionsMessageResponse complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="getPermissionsMessageResponse">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="level" type="{urn:juddi-apache-org:api_v3}Permission" maxOccurs="4999" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "getPermissionsMessageResponse", propOrder = {
+    "level"
+})
+public class GetPermissionsMessageResponse {
+
+    protected List<Permission> level;
+
+    /**
+     * Gets the value of the level 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 level property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getLevel().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Permission }
+     * 
+     * 
+     */
+    public List<Permission> getLevel() {
+        if (level == null) {
+            level = new ArrayList<Permission>();
+        }
+        return this.level;
+    }
+
+}
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java
index de93e8e..f547868 100644
--- a/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/ObjectFactory.java
@@ -1,19 +1,4 @@
-/*
- * Copyright 2001-2008 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_v3;
 
 import javax.xml.bind.JAXBElement;
@@ -40,45 +25,49 @@ import org.uddi.api_v3.DeleteTModel;
 @XmlRegistry
 public class ObjectFactory {
 
-    private final static QName _AdminDeleteSubscriptionResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminDelete_SubscriptionResponse");
-    private final static QName _GetReplicationNodesResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_ReplicationNodesResponse");
-    private final static QName _GetAllPublisherDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_allPublisherDetail");
-    private final static QName _SetReplicationNodes_QNAME = new QName("urn:juddi-apache-org:api_v3", "set_ReplicationNodes");
-    private final static QName _DeleteClerk_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_Clerk");
-    private final static QName _SyncSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "sync_subscription");
+    private final static QName _InvokeSyncSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "invoke_SyncSubscription");
+    private final static QName _DeleteNode_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_Node");
     private final static QName _AdminSaveTModelResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_tModelResponse");
-    private final static QName _AdminSaveTModel_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_tModel");
     private final static QName _GetAllNodes_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_AllNodes");
     private final static QName _GetAllClientSubscriptionInfo_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_allClientSubscriptionInfo");
-    private final static QName _AdminSaveBusinessResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_BusinessResponse");
+    private final static QName _PublisherDetailResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "publisherDetailResponse");
+    private final static QName _GetAllClerksResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_AllClerksResponse");
+    private final static QName _GetReplicationNodesResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_ReplicationNodesResponse");
+    private final static QName _AdminDeleteSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminDelete_Subscription");
     private final static QName _GetAllClientSubscriptionInfoResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_allClientSubscriptionInfoResponse");
-    private final static QName _SyncSubscriptionDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "sync_subscriptionDetail");
-    private final static QName _GetFailedReplicationChangeRecordsMessageResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "getFailedReplicationChangeRecordsMessageResponse");
-    private final static QName _GetFailedReplicationChangeRecordsMessage_QNAME = new QName("urn:juddi-apache-org:api_v3", "getFailedReplicationChangeRecordsMessage");
-    private final static QName _InvokeSyncSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "invoke_SyncSubscription");
-    private final static QName _AdminSaveSubscriptionResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_SubscriptionResponse");
-    private final static QName _DeleteNode_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_Node");
+    private final static QName _SetPermissionsMessage_QNAME = new QName("urn:juddi-apache-org:api_v3", "setPermissionsMessage");
     private final static QName _GetAllClerks_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_AllClerks");
-    private final static QName _GetPublisherDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_publisherDetail");
-    private final static QName _SavePublisher_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_publisher");
-    private final static QName _DeletePublisher_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_publisher");
-    private final static QName _AdminDeleteSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminDelete_Subscription");
+    private final static QName _PublisherDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "publisherDetail");
+    private final static QName _Publisher_QNAME = new QName("urn:juddi-apache-org:api_v3", "publisher");
+    private final static QName _GetFailedReplicationChangeRecordsMessage_QNAME = new QName("urn:juddi-apache-org:api_v3", "getFailedReplicationChangeRecordsMessage");
+    private final static QName _GetEntityHistoryMessageResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "getEntityHistoryMessageResponse");
+    private final static QName _SetPermissionsMessageResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "setPermissionsMessageResponse");
     private final static QName _SaveClerkRequest_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_ClerkRequest");
+    private final static QName _AdminDeleteTmodel_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminDelete_tmodel");
+    private final static QName _GetPublisherDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_publisherDetail");
+    private final static QName _GetAllPublisherDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_allPublisherDetail");
+    private final static QName _GetAllNodesResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_AllNodesResponse");
+    private final static QName _AdminSaveTModel_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_tModel");
     private final static QName _DeleteClientSubscriptionInfo_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_ClientSubscriptionInfo");
+    private final static QName _SaveClientSubscriptionInfoRequest_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_ClientSubscriptionInfoRequest");
+    private final static QName _GetPermissionsMessageResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "getPermissionsMessageResponse");
+    private final static QName _SyncSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "sync_subscription");
+    private final static QName _AdminDeleteSubscriptionResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminDelete_SubscriptionResponse");
+    private final static QName _AdminSaveSubscriptionResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_SubscriptionResponse");
     private final static QName _SaveNodeRequest_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_NodeRequest");
-    private final static QName _GetAllNodesResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_AllNodesResponse");
-    private final static QName _GetAllClerksResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_AllClerksResponse");
+    private final static QName _AdminSaveBusinessResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_BusinessResponse");
+    private final static QName _DeletePublisher_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_publisher");
+    private final static QName _GetFailedReplicationChangeRecordsMessageResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "getFailedReplicationChangeRecordsMessageResponse");
+    private final static QName _SavePublisher_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_publisher");
+    private final static QName _GetPermissionsMessage_QNAME = new QName("urn:juddi-apache-org:api_v3", "getPermissionsMessage");
     private final static QName _AdminSaveBusiness_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_Business");
+    private final static QName _SetReplicationNodesResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "set_ReplicationNodesResponse");
     private final static QName _GetReplicationNodes_QNAME = new QName("urn:juddi-apache-org:api_v3", "get_ReplicationNodes");
-    private final static QName _PublisherDetailResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "publisherDetailResponse");
+    private final static QName _SyncSubscriptionDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "sync_subscriptionDetail");
+    private final static QName _SetReplicationNodes_QNAME = new QName("urn:juddi-apache-org:api_v3", "set_ReplicationNodes");
     private final static QName _AdminSaveSubscription_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminSave_Subscription");
-    private final static QName _SetReplicationNodesResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "set_ReplicationNodesResponse");
-    private final static QName _PublisherDetail_QNAME = new QName("urn:juddi-apache-org:api_v3", "publisherDetail");
-    private final static QName _SaveClientSubscriptionInfoRequest_QNAME = new QName("urn:juddi-apache-org:api_v3", "save_ClientSubscriptionInfoRequest");
-    private final static QName _Publisher_QNAME = new QName("urn:juddi-apache-org:api_v3", "publisher");
     private final static QName _GetEntityHistoryMessage_QNAME = new QName("urn:juddi-apache-org:api_v3", "getEntityHistoryMessage");
-    private final static QName _GetEntityHistoryMessageResponse_QNAME = new QName("urn:juddi-apache-org:api_v3", "getEntityHistoryMessageResponse");
-    private final static QName _AdminDeleteTmodel_QNAME = new QName("urn:juddi-apache-org:api_v3", "adminDelete_tmodel");
+    private final static QName _DeleteClerk_QNAME = new QName("urn:juddi-apache-org:api_v3", "delete_Clerk");
 
     /**
      * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.apache.juddi.api_v3
@@ -88,91 +77,83 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link DeleteClientSubscriptionInfo }
-     * 
-     */
-    public DeleteClientSubscriptionInfo createDeleteClientSubscriptionInfo() {
-        return new DeleteClientSubscriptionInfo();
-    }
-
-    /**
-     * Create an instance of {@link AdminDeleteSubscriptionRequest }
+     * Create an instance of {@link SyncSubscriptionDetailResponse }
      * 
      */
-    public AdminDeleteSubscriptionRequest createAdminDeleteSubscriptionRequest() {
-        return new AdminDeleteSubscriptionRequest();
+    public SyncSubscriptionDetailResponse createSyncSubscriptionDetailResponse() {
+        return new SyncSubscriptionDetailResponse();
     }
 
     /**
-     * Create an instance of {@link SaveClerk }
+     * Create an instance of {@link ClerkDetail }
      * 
      */
-    public SaveClerk createSaveClerk() {
-        return new SaveClerk();
+    public ClerkDetail createClerkDetail() {
+        return new ClerkDetail();
     }
 
     /**
-     * Create an instance of {@link GetPublisherDetail }
+     * Create an instance of {@link PublisherDetail }
      * 
      */
-    public GetPublisherDetail createGetPublisherDetail() {
-        return new GetPublisherDetail();
+    public PublisherDetail createPublisherDetail() {
+        return new PublisherDetail();
     }
 
     /**
-     * Create an instance of {@link SetReplicationNodesResponse }
+     * Create an instance of {@link NodeDetail }
      * 
      */
-    public SetReplicationNodesResponse createSetReplicationNodesResponse() {
-        return new SetReplicationNodesResponse();
+    public NodeDetail createNodeDetail() {
+        return new NodeDetail();
     }
 
     /**
-     * Create an instance of {@link GetAllPublisherDetail }
+     * Create an instance of {@link ClientSubscriptionInfoDetail }
      * 
      */
-    public GetAllPublisherDetail createGetAllPublisherDetail() {
-        return new GetAllPublisherDetail();
+    public ClientSubscriptionInfoDetail createClientSubscriptionInfoDetail() {
+        return new ClientSubscriptionInfoDetail();
     }
 
     /**
-     * Create an instance of {@link SetReplicationNodes }
+     * Create an instance of {@link GetAllNodes }
      * 
      */
-    public SetReplicationNodes createSetReplicationNodes() {
-        return new SetReplicationNodes();
+    public GetAllNodes createGetAllNodes() {
+        return new GetAllNodes();
     }
 
     /**
-     * Create an instance of {@link GetAllClientSubscriptionInfoResponse }
+     * Create an instance of {@link SyncSubscription }
      * 
      */
-    public GetAllClientSubscriptionInfoResponse createGetAllClientSubscriptionInfoResponse() {
-        return new GetAllClientSubscriptionInfoResponse();
+    public SyncSubscription createSyncSubscription() {
+        return new SyncSubscription();
     }
 
     /**
-     * Create an instance of {@link Publisher }
+     * Create an instance of {@link GetPermissionsMessageResponse }
      * 
      */
-    public Publisher createPublisher() {
-        return new Publisher();
+    public GetPermissionsMessageResponse createGetPermissionsMessageResponse() {
+        return new GetPermissionsMessageResponse();
     }
 
     /**
-     * Create an instance of {@link GetFailedReplicationChangeRecordsMessageResponse }
+     * Create an instance of {@link GetAllClientSubscriptionInfo }
      * 
      */
-    public GetFailedReplicationChangeRecordsMessageResponse createGetFailedReplicationChangeRecordsMessageResponse() {
-        return new GetFailedReplicationChangeRecordsMessageResponse();
+    public GetAllClientSubscriptionInfo createGetAllClientSubscriptionInfo() {
+        return new GetAllClientSubscriptionInfo();
     }
 
     /**
-     * Create an instance of {@link GetEntityHistoryMessageResponse }
+     * Create an instance of {@link AdminSaveBusiness }
      * 
      */
-    public GetEntityHistoryMessageResponse createGetEntityHistoryMessageResponse() {
-        return new GetEntityHistoryMessageResponse();
+    public AdminSaveBusiness createAdminSaveBusiness() {
+        return new AdminSaveBusiness();
     }
 
     /**
@@ -184,115 +165,115 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link SyncSubscription }
+     * Create an instance of {@link AdminSaveTModelResponse }
      * 
      */
-    public SyncSubscription createSyncSubscription() {
-        return new SyncSubscription();
+    public AdminSaveTModelResponse createAdminSaveTModelResponse() {
+        return new AdminSaveTModelResponse();
     }
 
     /**
-     * Create an instance of {@link PublisherDetail }
+     * Create an instance of {@link SavePublisher }
      * 
      */
-    public PublisherDetail createPublisherDetail() {
-        return new PublisherDetail();
+    public SavePublisher createSavePublisher() {
+        return new SavePublisher();
     }
 
     /**
-     * Create an instance of {@link SyncSubscriptionRequest }
+     * Create an instance of {@link GetAllClerks }
      * 
      */
-    public SyncSubscriptionRequest createSyncSubscriptionRequest() {
-        return new SyncSubscriptionRequest();
+    public GetAllClerks createGetAllClerks() {
+        return new GetAllClerks();
     }
 
     /**
-     * Create an instance of {@link SavePublisher }
+     * Create an instance of {@link AdminSaveSubscriptionRequest }
      * 
      */
-    public SavePublisher createSavePublisher() {
-        return new SavePublisher();
+    public AdminSaveSubscriptionRequest createAdminSaveSubscriptionRequest() {
+        return new AdminSaveSubscriptionRequest();
     }
 
     /**
-     * Create an instance of {@link DeleteClerk }
+     * Create an instance of {@link SetReplicationNodes }
      * 
      */
-    public DeleteClerk createDeleteClerk() {
-        return new DeleteClerk();
+    public SetReplicationNodes createSetReplicationNodes() {
+        return new SetReplicationNodes();
     }
 
     /**
-     * Create an instance of {@link GetAllNodesResponse }
+     * Create an instance of {@link GetEntityHistoryMessageRequest }
      * 
      */
-    public GetAllNodesResponse createGetAllNodesResponse() {
-        return new GetAllNodesResponse();
+    public GetEntityHistoryMessageRequest createGetEntityHistoryMessageRequest() {
+        return new GetEntityHistoryMessageRequest();
     }
 
     /**
-     * Create an instance of {@link GetFailedReplicationChangeRecordsMessageRequest }
+     * Create an instance of {@link GetPermissionsMessageRequest }
      * 
      */
-    public GetFailedReplicationChangeRecordsMessageRequest createGetFailedReplicationChangeRecordsMessageRequest() {
-        return new GetFailedReplicationChangeRecordsMessageRequest();
+    public GetPermissionsMessageRequest createGetPermissionsMessageRequest() {
+        return new GetPermissionsMessageRequest();
     }
 
     /**
-     * Create an instance of {@link GetEntityHistoryMessageRequest }
+     * Create an instance of {@link DeleteClerk }
      * 
      */
-    public GetEntityHistoryMessageRequest createGetEntityHistoryMessageRequest() {
-        return new GetEntityHistoryMessageRequest();
+    public DeleteClerk createDeleteClerk() {
+        return new DeleteClerk();
     }
 
     /**
-     * Create an instance of {@link SaveNode }
+     * Create an instance of {@link DeleteClientSubscriptionInfo }
      * 
      */
-    public SaveNode createSaveNode() {
-        return new SaveNode();
+    public DeleteClientSubscriptionInfo createDeleteClientSubscriptionInfo() {
+        return new DeleteClientSubscriptionInfo();
     }
 
     /**
-     * Create an instance of {@link SyncSubscriptionDetail }
+     * Create an instance of {@link GetAllClientSubscriptionInfoResponse }
      * 
      */
-    public SyncSubscriptionDetail createSyncSubscriptionDetail() {
-        return new SyncSubscriptionDetail();
+    public GetAllClientSubscriptionInfoResponse createGetAllClientSubscriptionInfoResponse() {
+        return new GetAllClientSubscriptionInfoResponse();
     }
 
     /**
-     * Create an instance of {@link AdminSaveSubscriptionResponse }
+     * Create an instance of {@link SetPermissionsMessageRequest }
      * 
      */
-    public AdminSaveSubscriptionResponse createAdminSaveSubscriptionResponse() {
-        return new AdminSaveSubscriptionResponse();
+    public SetPermissionsMessageRequest createSetPermissionsMessageRequest() {
+        return new SetPermissionsMessageRequest();
     }
 
     /**
-     * Create an instance of {@link GetAllClientSubscriptionInfo }
+     * Create an instance of {@link GetReplicationNodesResponse }
      * 
      */
-    public GetAllClientSubscriptionInfo createGetAllClientSubscriptionInfo() {
-        return new GetAllClientSubscriptionInfo();
+    public GetReplicationNodesResponse createGetReplicationNodesResponse() {
+        return new GetReplicationNodesResponse();
     }
 
     /**
-     * Create an instance of {@link GetAllNodes }
+     * Create an instance of {@link AdminDeleteSubscriptionRequest }
      * 
      */
-    public GetAllNodes createGetAllNodes() {
-        return new GetAllNodes();
+    public AdminDeleteSubscriptionRequest createAdminDeleteSubscriptionRequest() {
+        return new AdminDeleteSubscriptionRequest();
     }
 
     /**
-     * Create an instance of {@link GetAllClerksResponse }
+     * Create an instance of {@link AdminSaveBusinessResponse }
      * 
      */
-    public GetAllClerksResponse createGetAllClerksResponse() {
-        return new GetAllClerksResponse();
+    public AdminSaveBusinessResponse createAdminSaveBusinessResponse() {
+        return new AdminSaveBusinessResponse();
     }
 
     /**
@@ -304,251 +285,254 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link AdminDeleteSubscriptionResponse }
+     * Create an instance of {@link GetFailedReplicationChangeRecordsMessageResponse }
      * 
      */
-    public AdminDeleteSubscriptionResponse createAdminDeleteSubscriptionResponse() {
-        return new AdminDeleteSubscriptionResponse();
+    public GetFailedReplicationChangeRecordsMessageResponse createGetFailedReplicationChangeRecordsMessageResponse() {
+        return new GetFailedReplicationChangeRecordsMessageResponse();
     }
 
     /**
-     * Create an instance of {@link AdminSaveTModelResponse }
+     * Create an instance of {@link DeletePublisher }
      * 
      */
-    public AdminSaveTModelResponse createAdminSaveTModelResponse() {
-        return new AdminSaveTModelResponse();
+    public DeletePublisher createDeletePublisher() {
+        return new DeletePublisher();
     }
 
     /**
-     * Create an instance of {@link GetReplicationNodesResponse }
+     * Create an instance of {@link DeleteNode }
      * 
      */
-    public GetReplicationNodesResponse createGetReplicationNodesResponse() {
-        return new GetReplicationNodesResponse();
+    public DeleteNode createDeleteNode() {
+        return new DeleteNode();
     }
 
     /**
-     * Create an instance of {@link AdminSaveBusinessResponse }
+     * Create an instance of {@link GetAllPublisherDetail }
      * 
      */
-    public AdminSaveBusinessResponse createAdminSaveBusinessResponse() {
-        return new AdminSaveBusinessResponse();
+    public GetAllPublisherDetail createGetAllPublisherDetail() {
+        return new GetAllPublisherDetail();
     }
 
     /**
-     * Create an instance of {@link AdminSaveSubscriptionRequest }
+     * Create an instance of {@link SyncSubscriptionDetail }
      * 
      */
-    public AdminSaveSubscriptionRequest createAdminSaveSubscriptionRequest() {
-        return new AdminSaveSubscriptionRequest();
+    public SyncSubscriptionDetail createSyncSubscriptionDetail() {
+        return new SyncSubscriptionDetail();
     }
 
     /**
-     * Create an instance of {@link GetReplicationNodes }
+     * Create an instance of {@link SaveNode }
      * 
      */
-    public GetReplicationNodes createGetReplicationNodes() {
-        return new GetReplicationNodes();
+    public SaveNode createSaveNode() {
+        return new SaveNode();
     }
 
     /**
-     * Create an instance of {@link DeletePublisher }
+     * Create an instance of {@link GetPublisherDetail }
      * 
      */
-    public DeletePublisher createDeletePublisher() {
-        return new DeletePublisher();
+    public GetPublisherDetail createGetPublisherDetail() {
+        return new GetPublisherDetail();
     }
 
     /**
-     * Create an instance of {@link GetAllClerks }
+     * Create an instance of {@link GetAllNodesResponse }
      * 
      */
-    public GetAllClerks createGetAllClerks() {
-        return new GetAllClerks();
+    public GetAllNodesResponse createGetAllNodesResponse() {
+        return new GetAllNodesResponse();
     }
 
     /**
-     * Create an instance of {@link AdminSaveBusiness }
+     * Create an instance of {@link GetAllClerksResponse }
      * 
      */
-    public AdminSaveBusiness createAdminSaveBusiness() {
-        return new AdminSaveBusiness();
+    public GetAllClerksResponse createGetAllClerksResponse() {
+        return new GetAllClerksResponse();
     }
 
     /**
-     * Create an instance of {@link DeleteNode }
+     * Create an instance of {@link SetPermissionsMessageResponse }
      * 
      */
-    public DeleteNode createDeleteNode() {
-        return new DeleteNode();
+    public SetPermissionsMessageResponse createSetPermissionsMessageResponse() {
+        return new SetPermissionsMessageResponse();
     }
 
     /**
-     * Create an instance of {@link SyncSubscriptionDetailResponse }
+     * Create an instance of {@link GetEntityHistoryMessageResponse }
      * 
      */
-    public SyncSubscriptionDetailResponse createSyncSubscriptionDetailResponse() {
-        return new SyncSubscriptionDetailResponse();
+    public GetEntityHistoryMessageResponse createGetEntityHistoryMessageResponse() {
+        return new GetEntityHistoryMessageResponse();
     }
 
     /**
-     * Create an instance of {@link SubscriptionWrapper }
+     * Create an instance of {@link SaveClerk }
      * 
      */
-    public SubscriptionWrapper createSubscriptionWrapper() {
-        return new SubscriptionWrapper();
+    public SaveClerk createSaveClerk() {
+        return new SaveClerk();
     }
 
     /**
-     * Create an instance of {@link ClerkList }
+     * Create an instance of {@link GetReplicationNodes }
      * 
      */
-    public ClerkList createClerkList() {
-        return new ClerkList();
+    public GetReplicationNodes createGetReplicationNodes() {
+        return new GetReplicationNodes();
     }
 
     /**
-     * Create an instance of {@link NodeList }
+     * Create an instance of {@link SetReplicationNodesResponse }
      * 
      */
-    public NodeList createNodeList() {
-        return new NodeList();
+    public SetReplicationNodesResponse createSetReplicationNodesResponse() {
+        return new SetReplicationNodesResponse();
     }
 
     /**
-     * Create an instance of {@link ClientSubscriptionInfoDetail }
+     * Create an instance of {@link Publisher }
      * 
      */
-    public ClientSubscriptionInfoDetail createClientSubscriptionInfoDetail() {
-        return new ClientSubscriptionInfoDetail();
+    public Publisher createPublisher() {
+        return new Publisher();
     }
 
     /**
-     * Create an instance of {@link ClerkDetail }
+     * Create an instance of {@link AdminDeleteSubscriptionResponse }
      * 
      */
-    public ClerkDetail createClerkDetail() {
-        return new ClerkDetail();
+    public AdminDeleteSubscriptionResponse createAdminDeleteSubscriptionResponse() {
+        return new AdminDeleteSubscriptionResponse();
     }
 
     /**
-     * Create an instance of {@link AdminSaveBusinessWrapper }
+     * Create an instance of {@link AdminSaveSubscriptionResponse }
      * 
      */
-    public AdminSaveBusinessWrapper createAdminSaveBusinessWrapper() {
-        return new AdminSaveBusinessWrapper();
+    public AdminSaveSubscriptionResponse createAdminSaveSubscriptionResponse() {
+        return new AdminSaveSubscriptionResponse();
     }
 
     /**
-     * Create an instance of {@link ClientSubscriptionInfo }
+     * Create an instance of {@link SyncSubscriptionRequest }
      * 
      */
-    public ClientSubscriptionInfo createClientSubscriptionInfo() {
-        return new ClientSubscriptionInfo();
+    public SyncSubscriptionRequest createSyncSubscriptionRequest() {
+        return new SyncSubscriptionRequest();
     }
 
     /**
-     * Create an instance of {@link Node }
+     * Create an instance of {@link GetFailedReplicationChangeRecordsMessageRequest }
      * 
      */
-    public Node createNode() {
-        return new Node();
+    public GetFailedReplicationChangeRecordsMessageRequest createGetFailedReplicationChangeRecordsMessageRequest() {
+        return new GetFailedReplicationChangeRecordsMessageRequest();
     }
 
     /**
-     * Create an instance of {@link Clerk }
+     * Create an instance of {@link Permission }
      * 
      */
-    public Clerk createClerk() {
-        return new Clerk();
+    public Permission createPermission() {
+        return new Permission();
     }
 
     /**
-     * Create an instance of {@link AdminSaveTModelWrapper }
+     * Create an instance of {@link NodeList }
      * 
      */
-    public AdminSaveTModelWrapper createAdminSaveTModelWrapper() {
-        return new AdminSaveTModelWrapper();
+    public NodeList createNodeList() {
+        return new NodeList();
     }
 
     /**
-     * Create an instance of {@link NodeDetail }
+     * Create an instance of {@link Node }
      * 
      */
-    public NodeDetail createNodeDetail() {
-        return new NodeDetail();
+    public Node createNode() {
+        return new Node();
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminDeleteSubscriptionResponse }{@code >}}
+     * Create an instance of {@link ClerkList }
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminDelete_SubscriptionResponse")
-    public JAXBElement<AdminDeleteSubscriptionResponse> createAdminDeleteSubscriptionResponse(AdminDeleteSubscriptionResponse value) {
-        return new JAXBElement<AdminDeleteSubscriptionResponse>(_AdminDeleteSubscriptionResponse_QNAME, AdminDeleteSubscriptionResponse.class, null, value);
+    public ClerkList createClerkList() {
+        return new ClerkList();
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetReplicationNodesResponse }{@code >}}
+     * Create an instance of {@link AdminSaveTModelWrapper }
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_ReplicationNodesResponse")
-    public JAXBElement<GetReplicationNodesResponse> createGetReplicationNodesResponse(GetReplicationNodesResponse value) {
-        return new JAXBElement<GetReplicationNodesResponse>(_GetReplicationNodesResponse_QNAME, GetReplicationNodesResponse.class, null, value);
+    public AdminSaveTModelWrapper createAdminSaveTModelWrapper() {
+        return new AdminSaveTModelWrapper();
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllPublisherDetail }{@code >}}
+     * Create an instance of {@link ClientSubscriptionInfo }
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_allPublisherDetail")
-    public JAXBElement<GetAllPublisherDetail> createGetAllPublisherDetail(GetAllPublisherDetail value) {
-        return new JAXBElement<GetAllPublisherDetail>(_GetAllPublisherDetail_QNAME, GetAllPublisherDetail.class, null, value);
+    public ClientSubscriptionInfo createClientSubscriptionInfo() {
+        return new ClientSubscriptionInfo();
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SetReplicationNodes }{@code >}}
+     * Create an instance of {@link SubscriptionWrapper }
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "set_ReplicationNodes")
-    public JAXBElement<SetReplicationNodes> createSetReplicationNodes(SetReplicationNodes value) {
-        return new JAXBElement<SetReplicationNodes>(_SetReplicationNodes_QNAME, SetReplicationNodes.class, null, value);
+    public SubscriptionWrapper createSubscriptionWrapper() {
+        return new SubscriptionWrapper();
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link DeleteClerk }{@code >}}
+     * Create an instance of {@link AdminSaveBusinessWrapper }
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "delete_Clerk")
-    public JAXBElement<DeleteClerk> createDeleteClerk(DeleteClerk value) {
-        return new JAXBElement<DeleteClerk>(_DeleteClerk_QNAME, DeleteClerk.class, null, value);
+    public AdminSaveBusinessWrapper createAdminSaveBusinessWrapper() {
+        return new AdminSaveBusinessWrapper();
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SyncSubscription }{@code >}}
+     * Create an instance of {@link Clerk }
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "sync_subscription")
-    public JAXBElement<SyncSubscription> createSyncSubscription(SyncSubscription value) {
-        return new JAXBElement<SyncSubscription>(_SyncSubscription_QNAME, SyncSubscription.class, null, value);
+    public Clerk createClerk() {
+        return new Clerk();
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveTModelResponse }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SyncSubscriptionRequest }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_tModelResponse")
-    public JAXBElement<AdminSaveTModelResponse> createAdminSaveTModelResponse(AdminSaveTModelResponse value) {
-        return new JAXBElement<AdminSaveTModelResponse>(_AdminSaveTModelResponse_QNAME, AdminSaveTModelResponse.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "invoke_SyncSubscription")
+    public JAXBElement<SyncSubscriptionRequest> createInvokeSyncSubscription(SyncSubscriptionRequest value) {
+        return new JAXBElement<SyncSubscriptionRequest>(_InvokeSyncSubscription_QNAME, SyncSubscriptionRequest.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveTModel }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link DeleteNode }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_tModel")
-    public JAXBElement<AdminSaveTModel> createAdminSaveTModel(AdminSaveTModel value) {
-        return new JAXBElement<AdminSaveTModel>(_AdminSaveTModel_QNAME, AdminSaveTModel.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "delete_Node")
+    public JAXBElement<DeleteNode> createDeleteNode(DeleteNode value) {
+        return new JAXBElement<DeleteNode>(_DeleteNode_QNAME, DeleteNode.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveTModelResponse }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_tModelResponse")
+    public JAXBElement<AdminSaveTModelResponse> createAdminSaveTModelResponse(AdminSaveTModelResponse value) {
+        return new JAXBElement<AdminSaveTModelResponse>(_AdminSaveTModelResponse_QNAME, AdminSaveTModelResponse.class, null, value);
     }
 
     /**
@@ -570,12 +554,39 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveBusinessResponse }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link PublisherDetail }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_BusinessResponse")
-    public JAXBElement<AdminSaveBusinessResponse> createAdminSaveBusinessResponse(AdminSaveBusinessResponse value) {
-        return new JAXBElement<AdminSaveBusinessResponse>(_AdminSaveBusinessResponse_QNAME, AdminSaveBusinessResponse.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "publisherDetailResponse")
+    public JAXBElement<PublisherDetail> createPublisherDetailResponse(PublisherDetail value) {
+        return new JAXBElement<PublisherDetail>(_PublisherDetailResponse_QNAME, PublisherDetail.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllClerksResponse }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_AllClerksResponse")
+    public JAXBElement<GetAllClerksResponse> createGetAllClerksResponse(GetAllClerksResponse value) {
+        return new JAXBElement<GetAllClerksResponse>(_GetAllClerksResponse_QNAME, GetAllClerksResponse.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetReplicationNodesResponse }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_ReplicationNodesResponse")
+    public JAXBElement<GetReplicationNodesResponse> createGetReplicationNodesResponse(GetReplicationNodesResponse value) {
+        return new JAXBElement<GetReplicationNodesResponse>(_GetReplicationNodesResponse_QNAME, GetReplicationNodesResponse.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminDeleteSubscriptionRequest }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminDelete_Subscription")
+    public JAXBElement<AdminDeleteSubscriptionRequest> createAdminDeleteSubscription(AdminDeleteSubscriptionRequest value) {
+        return new JAXBElement<AdminDeleteSubscriptionRequest>(_AdminDeleteSubscription_QNAME, AdminDeleteSubscriptionRequest.class, null, value);
     }
 
     /**
@@ -588,21 +599,39 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SyncSubscriptionDetail }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SetPermissionsMessageRequest }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "sync_subscriptionDetail")
-    public JAXBElement<SyncSubscriptionDetail> createSyncSubscriptionDetail(SyncSubscriptionDetail value) {
-        return new JAXBElement<SyncSubscriptionDetail>(_SyncSubscriptionDetail_QNAME, SyncSubscriptionDetail.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "setPermissionsMessage")
+    public JAXBElement<SetPermissionsMessageRequest> createSetPermissionsMessage(SetPermissionsMessageRequest value) {
+        return new JAXBElement<SetPermissionsMessageRequest>(_SetPermissionsMessage_QNAME, SetPermissionsMessageRequest.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetFailedReplicationChangeRecordsMessageResponse }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllClerks }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getFailedReplicationChangeRecordsMessageResponse")
-    public JAXBElement<GetFailedReplicationChangeRecordsMessageResponse> createGetFailedReplicationChangeRecordsMessageResponse(GetFailedReplicationChangeRecordsMessageResponse value) {
-        return new JAXBElement<GetFailedReplicationChangeRecordsMessageResponse>(_GetFailedReplicationChangeRecordsMessageResponse_QNAME, GetFailedReplicationChangeRecordsMessageResponse.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_AllClerks")
+    public JAXBElement<GetAllClerks> createGetAllClerks(GetAllClerks value) {
+        return new JAXBElement<GetAllClerks>(_GetAllClerks_QNAME, GetAllClerks.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link PublisherDetail }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "publisherDetail")
+    public JAXBElement<PublisherDetail> createPublisherDetail(PublisherDetail value) {
+        return new JAXBElement<PublisherDetail>(_PublisherDetail_QNAME, PublisherDetail.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Publisher }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "publisher")
+    public JAXBElement<Publisher> createPublisher(Publisher value) {
+        return new JAXBElement<Publisher>(_Publisher_QNAME, Publisher.class, null, value);
     }
 
     /**
@@ -615,39 +644,39 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SyncSubscriptionRequest }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetEntityHistoryMessageResponse }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "invoke_SyncSubscription")
-    public JAXBElement<SyncSubscriptionRequest> createInvokeSyncSubscription(SyncSubscriptionRequest value) {
-        return new JAXBElement<SyncSubscriptionRequest>(_InvokeSyncSubscription_QNAME, SyncSubscriptionRequest.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getEntityHistoryMessageResponse")
+    public JAXBElement<GetEntityHistoryMessageResponse> createGetEntityHistoryMessageResponse(GetEntityHistoryMessageResponse value) {
+        return new JAXBElement<GetEntityHistoryMessageResponse>(_GetEntityHistoryMessageResponse_QNAME, GetEntityHistoryMessageResponse.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveSubscriptionResponse }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SetPermissionsMessageResponse }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_SubscriptionResponse")
-    public JAXBElement<AdminSaveSubscriptionResponse> createAdminSaveSubscriptionResponse(AdminSaveSubscriptionResponse value) {
-        return new JAXBElement<AdminSaveSubscriptionResponse>(_AdminSaveSubscriptionResponse_QNAME, AdminSaveSubscriptionResponse.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "setPermissionsMessageResponse")
+    public JAXBElement<SetPermissionsMessageResponse> createSetPermissionsMessageResponse(SetPermissionsMessageResponse value) {
+        return new JAXBElement<SetPermissionsMessageResponse>(_SetPermissionsMessageResponse_QNAME, SetPermissionsMessageResponse.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link DeleteNode }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SaveClerk }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "delete_Node")
-    public JAXBElement<DeleteNode> createDeleteNode(DeleteNode value) {
-        return new JAXBElement<DeleteNode>(_DeleteNode_QNAME, DeleteNode.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "save_ClerkRequest")
+    public JAXBElement<SaveClerk> createSaveClerkRequest(SaveClerk value) {
+        return new JAXBElement<SaveClerk>(_SaveClerkRequest_QNAME, SaveClerk.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllClerks }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link DeleteTModel }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_AllClerks")
-    public JAXBElement<GetAllClerks> createGetAllClerks(GetAllClerks value) {
-        return new JAXBElement<GetAllClerks>(_GetAllClerks_QNAME, GetAllClerks.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminDelete_tmodel")
+    public JAXBElement<DeleteTModel> createAdminDeleteTmodel(DeleteTModel value) {
+        return new JAXBElement<DeleteTModel>(_AdminDeleteTmodel_QNAME, DeleteTModel.class, null, value);
     }
 
     /**
@@ -660,48 +689,84 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SavePublisher }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllPublisherDetail }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "save_publisher")
-    public JAXBElement<SavePublisher> createSavePublisher(SavePublisher value) {
-        return new JAXBElement<SavePublisher>(_SavePublisher_QNAME, SavePublisher.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_allPublisherDetail")
+    public JAXBElement<GetAllPublisherDetail> createGetAllPublisherDetail(GetAllPublisherDetail value) {
+        return new JAXBElement<GetAllPublisherDetail>(_GetAllPublisherDetail_QNAME, GetAllPublisherDetail.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link DeletePublisher }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllNodesResponse }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "delete_publisher")
-    public JAXBElement<DeletePublisher> createDeletePublisher(DeletePublisher value) {
-        return new JAXBElement<DeletePublisher>(_DeletePublisher_QNAME, DeletePublisher.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_AllNodesResponse")
+    public JAXBElement<GetAllNodesResponse> createGetAllNodesResponse(GetAllNodesResponse value) {
+        return new JAXBElement<GetAllNodesResponse>(_GetAllNodesResponse_QNAME, GetAllNodesResponse.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminDeleteSubscriptionRequest }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveTModel }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminDelete_Subscription")
-    public JAXBElement<AdminDeleteSubscriptionRequest> createAdminDeleteSubscription(AdminDeleteSubscriptionRequest value) {
-        return new JAXBElement<AdminDeleteSubscriptionRequest>(_AdminDeleteSubscription_QNAME, AdminDeleteSubscriptionRequest.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_tModel")
+    public JAXBElement<AdminSaveTModel> createAdminSaveTModel(AdminSaveTModel value) {
+        return new JAXBElement<AdminSaveTModel>(_AdminSaveTModel_QNAME, AdminSaveTModel.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SaveClerk }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link DeleteClientSubscriptionInfo }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "save_ClerkRequest")
-    public JAXBElement<SaveClerk> createSaveClerkRequest(SaveClerk value) {
-        return new JAXBElement<SaveClerk>(_SaveClerkRequest_QNAME, SaveClerk.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "delete_ClientSubscriptionInfo")
+    public JAXBElement<DeleteClientSubscriptionInfo> createDeleteClientSubscriptionInfo(DeleteClientSubscriptionInfo value) {
+        return new JAXBElement<DeleteClientSubscriptionInfo>(_DeleteClientSubscriptionInfo_QNAME, DeleteClientSubscriptionInfo.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link DeleteClientSubscriptionInfo }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SaveClientSubscriptionInfo }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "delete_ClientSubscriptionInfo")
-    public JAXBElement<DeleteClientSubscriptionInfo> createDeleteClientSubscriptionInfo(DeleteClientSubscriptionInfo value) {
-        return new JAXBElement<DeleteClientSubscriptionInfo>(_DeleteClientSubscriptionInfo_QNAME, DeleteClientSubscriptionInfo.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "save_ClientSubscriptionInfoRequest")
+    public JAXBElement<SaveClientSubscriptionInfo> createSaveClientSubscriptionInfoRequest(SaveClientSubscriptionInfo value) {
+        return new JAXBElement<SaveClientSubscriptionInfo>(_SaveClientSubscriptionInfoRequest_QNAME, SaveClientSubscriptionInfo.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetPermissionsMessageResponse }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getPermissionsMessageResponse")
+    public JAXBElement<GetPermissionsMessageResponse> createGetPermissionsMessageResponse(GetPermissionsMessageResponse value) {
+        return new JAXBElement<GetPermissionsMessageResponse>(_GetPermissionsMessageResponse_QNAME, GetPermissionsMessageResponse.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link SyncSubscription }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "sync_subscription")
+    public JAXBElement<SyncSubscription> createSyncSubscription(SyncSubscription value) {
+        return new JAXBElement<SyncSubscription>(_SyncSubscription_QNAME, SyncSubscription.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminDeleteSubscriptionResponse }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminDelete_SubscriptionResponse")
+    public JAXBElement<AdminDeleteSubscriptionResponse> createAdminDeleteSubscriptionResponse(AdminDeleteSubscriptionResponse value) {
+        return new JAXBElement<AdminDeleteSubscriptionResponse>(_AdminDeleteSubscriptionResponse_QNAME, AdminDeleteSubscriptionResponse.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveSubscriptionResponse }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_SubscriptionResponse")
+    public JAXBElement<AdminSaveSubscriptionResponse> createAdminSaveSubscriptionResponse(AdminSaveSubscriptionResponse value) {
+        return new JAXBElement<AdminSaveSubscriptionResponse>(_AdminSaveSubscriptionResponse_QNAME, AdminSaveSubscriptionResponse.class, null, value);
     }
 
     /**
@@ -714,57 +779,57 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllNodesResponse }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveBusinessResponse }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_AllNodesResponse")
-    public JAXBElement<GetAllNodesResponse> createGetAllNodesResponse(GetAllNodesResponse value) {
-        return new JAXBElement<GetAllNodesResponse>(_GetAllNodesResponse_QNAME, GetAllNodesResponse.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_BusinessResponse")
+    public JAXBElement<AdminSaveBusinessResponse> createAdminSaveBusinessResponse(AdminSaveBusinessResponse value) {
+        return new JAXBElement<AdminSaveBusinessResponse>(_AdminSaveBusinessResponse_QNAME, AdminSaveBusinessResponse.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetAllClerksResponse }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link DeletePublisher }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_AllClerksResponse")
-    public JAXBElement<GetAllClerksResponse> createGetAllClerksResponse(GetAllClerksResponse value) {
-        return new JAXBElement<GetAllClerksResponse>(_GetAllClerksResponse_QNAME, GetAllClerksResponse.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "delete_publisher")
+    public JAXBElement<DeletePublisher> createDeletePublisher(DeletePublisher value) {
+        return new JAXBElement<DeletePublisher>(_DeletePublisher_QNAME, DeletePublisher.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveBusiness }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetFailedReplicationChangeRecordsMessageResponse }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_Business")
-    public JAXBElement<AdminSaveBusiness> createAdminSaveBusiness(AdminSaveBusiness value) {
-        return new JAXBElement<AdminSaveBusiness>(_AdminSaveBusiness_QNAME, AdminSaveBusiness.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getFailedReplicationChangeRecordsMessageResponse")
+    public JAXBElement<GetFailedReplicationChangeRecordsMessageResponse> createGetFailedReplicationChangeRecordsMessageResponse(GetFailedReplicationChangeRecordsMessageResponse value) {
+        return new JAXBElement<GetFailedReplicationChangeRecordsMessageResponse>(_GetFailedReplicationChangeRecordsMessageResponse_QNAME, GetFailedReplicationChangeRecordsMessageResponse.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetReplicationNodes }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SavePublisher }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_ReplicationNodes")
-    public JAXBElement<GetReplicationNodes> createGetReplicationNodes(GetReplicationNodes value) {
-        return new JAXBElement<GetReplicationNodes>(_GetReplicationNodes_QNAME, GetReplicationNodes.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "save_publisher")
+    public JAXBElement<SavePublisher> createSavePublisher(SavePublisher value) {
+        return new JAXBElement<SavePublisher>(_SavePublisher_QNAME, SavePublisher.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link PublisherDetail }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetPermissionsMessageRequest }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "publisherDetailResponse")
-    public JAXBElement<PublisherDetail> createPublisherDetailResponse(PublisherDetail value) {
-        return new JAXBElement<PublisherDetail>(_PublisherDetailResponse_QNAME, PublisherDetail.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getPermissionsMessage")
+    public JAXBElement<GetPermissionsMessageRequest> createGetPermissionsMessage(GetPermissionsMessageRequest value) {
+        return new JAXBElement<GetPermissionsMessageRequest>(_GetPermissionsMessage_QNAME, GetPermissionsMessageRequest.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveSubscriptionRequest }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveBusiness }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_Subscription")
-    public JAXBElement<AdminSaveSubscriptionRequest> createAdminSaveSubscription(AdminSaveSubscriptionRequest value) {
-        return new JAXBElement<AdminSaveSubscriptionRequest>(_AdminSaveSubscription_QNAME, AdminSaveSubscriptionRequest.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_Business")
+    public JAXBElement<AdminSaveBusiness> createAdminSaveBusiness(AdminSaveBusiness value) {
+        return new JAXBElement<AdminSaveBusiness>(_AdminSaveBusiness_QNAME, AdminSaveBusiness.class, null, value);
     }
 
     /**
@@ -777,57 +842,57 @@ public class ObjectFactory {
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link PublisherDetail }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetReplicationNodes }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "publisherDetail")
-    public JAXBElement<PublisherDetail> createPublisherDetail(PublisherDetail value) {
-        return new JAXBElement<PublisherDetail>(_PublisherDetail_QNAME, PublisherDetail.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "get_ReplicationNodes")
+    public JAXBElement<GetReplicationNodes> createGetReplicationNodes(GetReplicationNodes value) {
+        return new JAXBElement<GetReplicationNodes>(_GetReplicationNodes_QNAME, GetReplicationNodes.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link SaveClientSubscriptionInfo }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SyncSubscriptionDetail }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "save_ClientSubscriptionInfoRequest")
-    public JAXBElement<SaveClientSubscriptionInfo> createSaveClientSubscriptionInfoRequest(SaveClientSubscriptionInfo value) {
-        return new JAXBElement<SaveClientSubscriptionInfo>(_SaveClientSubscriptionInfoRequest_QNAME, SaveClientSubscriptionInfo.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "sync_subscriptionDetail")
+    public JAXBElement<SyncSubscriptionDetail> createSyncSubscriptionDetail(SyncSubscriptionDetail value) {
+        return new JAXBElement<SyncSubscriptionDetail>(_SyncSubscriptionDetail_QNAME, SyncSubscriptionDetail.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link Publisher }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link SetReplicationNodes }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "publisher")
-    public JAXBElement<Publisher> createPublisher(Publisher value) {
-        return new JAXBElement<Publisher>(_Publisher_QNAME, Publisher.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "set_ReplicationNodes")
+    public JAXBElement<SetReplicationNodes> createSetReplicationNodes(SetReplicationNodes value) {
+        return new JAXBElement<SetReplicationNodes>(_SetReplicationNodes_QNAME, SetReplicationNodes.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetEntityHistoryMessageRequest }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link AdminSaveSubscriptionRequest }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getEntityHistoryMessage")
-    public JAXBElement<GetEntityHistoryMessageRequest> createGetEntityHistoryMessage(GetEntityHistoryMessageRequest value) {
-        return new JAXBElement<GetEntityHistoryMessageRequest>(_GetEntityHistoryMessage_QNAME, GetEntityHistoryMessageRequest.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminSave_Subscription")
+    public JAXBElement<AdminSaveSubscriptionRequest> createAdminSaveSubscription(AdminSaveSubscriptionRequest value) {
+        return new JAXBElement<AdminSaveSubscriptionRequest>(_AdminSaveSubscription_QNAME, AdminSaveSubscriptionRequest.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link GetEntityHistoryMessageResponse }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link GetEntityHistoryMessageRequest }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getEntityHistoryMessageResponse")
-    public JAXBElement<GetEntityHistoryMessageResponse> createGetEntityHistoryMessageResponse(GetEntityHistoryMessageResponse value) {
-        return new JAXBElement<GetEntityHistoryMessageResponse>(_GetEntityHistoryMessageResponse_QNAME, GetEntityHistoryMessageResponse.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "getEntityHistoryMessage")
+    public JAXBElement<GetEntityHistoryMessageRequest> createGetEntityHistoryMessage(GetEntityHistoryMessageRequest value) {
+        return new JAXBElement<GetEntityHistoryMessageRequest>(_GetEntityHistoryMessage_QNAME, GetEntityHistoryMessageRequest.class, null, value);
     }
 
     /**
-     * Create an instance of {@link JAXBElement }{@code <}{@link DeleteTModel }{@code >}}
+     * Create an instance of {@link JAXBElement }{@code <}{@link DeleteClerk }{@code >}}
      * 
      */
-    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "adminDelete_tmodel")
-    public JAXBElement<DeleteTModel> createAdminDeleteTmodel(DeleteTModel value) {
-        return new JAXBElement<DeleteTModel>(_AdminDeleteTmodel_QNAME, DeleteTModel.class, null, value);
+    @XmlElementDecl(namespace = "urn:juddi-apache-org:api_v3", name = "delete_Clerk")
+    public JAXBElement<DeleteClerk> createDeleteClerk(DeleteClerk value) {
+        return new JAXBElement<DeleteClerk>(_DeleteClerk_QNAME, DeleteClerk.class, null, value);
     }
 
 }
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/Permission.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/Permission.java
new file mode 100644
index 0000000..9c17de7
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/Permission.java
@@ -0,0 +1,178 @@
+
+package org.apache.juddi.api_v3;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Permission complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="Permission">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="Level" type="{urn:juddi-apache-org:api_v3}AccessLevel"/>
+ *         &lt;element name="entityId" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="target" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="type" type="{urn:juddi-apache-org:api_v3}EntityType"/>
+ *         &lt;element name="action" type="{urn:juddi-apache-org:api_v3}Action"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Permission", propOrder = {
+    "level",
+    "entityId",
+    "target",
+    "type",
+    "action"
+})
+public class Permission {
+
+    @XmlElement(name = "Level", required = true)
+    @XmlSchemaType(name = "string")
+    protected AccessLevel level;
+    @XmlElement(required = true)
+    protected String entityId;
+    @XmlElement(required = true)
+    protected String target;
+    @XmlElement(required = false)
+    @XmlSchemaType(name = "string")
+    protected EntityType type;
+    @XmlElement(required = true)
+    @XmlSchemaType(name = "string")
+    protected Action action;
+
+    /**
+     * Gets the value of the level property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AccessLevel }
+     *     
+     */
+    public AccessLevel getLevel() {
+        return level;
+    }
+
+    /**
+     * Sets the value of the level property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AccessLevel }
+     *     
+     */
+    public void setLevel(AccessLevel value) {
+        this.level = value;
+    }
+
+    /**
+     * Gets the value of the entityId property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEntityId() {
+        return entityId;
+    }
+
+    /**
+     * Sets the value of the entityId property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEntityId(String value) {
+        this.entityId = value;
+    }
+
+    /**
+     * Gets the value of the target property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTarget() {
+        return target;
+    }
+
+    /**
+     * Sets the value of the target property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTarget(String value) {
+        this.target = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EntityType }
+     *     
+     */
+    public EntityType getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EntityType }
+     *     
+     */
+    public void setType(EntityType value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the action property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Action }
+     *     
+     */
+    public Action getAction() {
+        return action;
+    }
+
+    /**
+     * Sets the value of the action property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Action }
+     *     
+     */
+    public void setAction(Action value) {
+        this.action = value;
+    }
+
+}
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/SetPermissionsMessageRequest.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/SetPermissionsMessageRequest.java
new file mode 100644
index 0000000..ea7c0d4
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/SetPermissionsMessageRequest.java
@@ -0,0 +1,96 @@
+
+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;
+
+
+/**
+ * <p>Java class for setPermissionsMessageRequest complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="setPermissionsMessageRequest">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="authInfo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="level" type="{urn:juddi-apache-org:api_v3}Permission" maxOccurs="4999" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "setPermissionsMessageRequest", propOrder = {
+    "authInfo",
+    "level"
+})
+public class SetPermissionsMessageRequest {
+
+    protected String authInfo;
+    @XmlElement(required = true)
+    protected List<Permission> level;
+
+    /**
+     * Gets the value of the authInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAuthInfo() {
+        return authInfo;
+    }
+
+    /**
+     * Sets the value of the authInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAuthInfo(String value) {
+        this.authInfo = value;
+    }
+
+    /**
+     * Gets the value of the level 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 level property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getLevel().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Permission }
+     * 
+     * 
+     */
+    public List<Permission> getLevel() {
+        if (level == null) {
+            level = new ArrayList<Permission>();
+        }
+        return this.level;
+    }
+
+}
diff --git a/uddi-ws/src/main/java/org/apache/juddi/api_v3/SetPermissionsMessageResponse.java b/uddi-ws/src/main/java/org/apache/juddi/api_v3/SetPermissionsMessageResponse.java
new file mode 100644
index 0000000..811cab4
--- /dev/null
+++ b/uddi-ws/src/main/java/org/apache/juddi/api_v3/SetPermissionsMessageResponse.java
@@ -0,0 +1,32 @@
+
+package org.apache.juddi.api_v3;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for setPermissionsMessageResponse complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="setPermissionsMessageResponse">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "setPermissionsMessageResponse")
+public class SetPermissionsMessageResponse {
+
+
+}
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 1707014..bea45bb 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
@@ -1,519 +1,562 @@
-/*
- * Copyright 2001-2008 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.v3_service;
-
-import java.rmi.RemoteException;
-import java.util.List;
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-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;
-import org.apache.juddi.api_v3.AdminSaveTModelWrapper;
-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.GetAllPublisherDetail;
-import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
-import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
-import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
-import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
-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.uddi.api_v3.DeleteTModel;
-import org.uddi.api_v3.DispositionReport;
-import org.uddi.v3_service.DispositionReportFaultMessage;
-import org.uddi.repl_v3.ReplicationConfiguration;
-import org.uddi.sub_v3.Subscription;
-
-
-/**
- *  This portType defines all of the jUDDI publisher operations.
- *   This is above and beyond the original UDDI v3 specification and is NOT part of the standard.
- *   Method behavior within this class may change from version to version. These methods are
- *   primarily meant for administrative functions.
- * 
- * This class was generated by the JAX-WS RI.
- * JAX-WS RI 2.2.4-b01
- * Generated source version: 2.2
- * 
- */
-@WebService(name = "JUDDI_Api_PortType", targetNamespace = "urn:juddi-apache-org:v3_service")
-@XmlSeeAlso({
-    org.uddi.repl_v3.ObjectFactory.class,
-    org.apache.juddi.api_v3.ObjectFactory.class,
-    org.uddi.api_v3.ObjectFactory.class,
-    org.uddi.custody_v3.ObjectFactory.class,
-    org.uddi.policy_v3.ObjectFactory.class,
-    org.uddi.policy_v3_instanceparms.ObjectFactory.class,
-    org.uddi.sub_v3.ObjectFactory.class,
-    org.w3._2000._09.xmldsig_.ObjectFactory.class
-})
-public interface JUDDIApiPortType {
-
-
-    /**
-     * 
-     * @param parameters
-     * @return
-     *     returns org.apache.juddi.api_v3.PublisherDetail
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "get_publisherDetail", action = "get_publisherDetail")
-    @WebResult(name = "publisherDetail", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "parameters")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public PublisherDetail getPublisherDetail(
-        @WebParam(name = "get_publisherDetail", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "parameters")
-        GetPublisherDetail parameters)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param body
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "delete_ClientSubscriptionInfo", action = "delete_ClientSubscriptionInfo")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public void deleteClientSubscriptionInfo(
-        @WebParam(name = "delete_ClientSubscriptionInfo", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        DeleteClientSubscriptionInfo body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param body
-     * @return
-     *     returns org.apache.juddi.api_v3.PublisherDetail
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "get_allPublisherDetail", action = "get_allPublisherDetail")
-    @WebResult(name = "publisherDetail", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public PublisherDetail getAllPublisherDetail(
-        @WebParam(name = "get_allPublisherDetail", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        GetAllPublisherDetail body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param body
-     * @return
-     *     returns org.apache.juddi.api_v3.ClerkDetail
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "save_Clerk", action = "save_Clerk")
-    @WebResult(name = "save_ClerkResponse", targetNamespace = "urn:juddi-apache-org:v3_service", partName = "save_ClerkResponse")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public ClerkDetail saveClerk(
-        @WebParam(name = "save_ClerkRequest", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        SaveClerk body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param body
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "delete_publisher", action = "delete_publisher")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public void deletePublisher(
-        @WebParam(name = "delete_publisher", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        DeletePublisher body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param body
-     * @return
-     *     returns org.apache.juddi.api_v3.NodeDetail
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "save_Node", action = "save_Node")
-    @WebResult(name = "save_NodeResponse", targetNamespace = "urn:juddi-apache-org:v3_service", partName = "save_NodeResponse")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public NodeDetail saveNode(
-        @WebParam(name = "save_NodeRequest", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        SaveNode body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param body
-     * @return
-     *     returns org.apache.juddi.api_v3.PublisherDetail
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "save_publisher", action = "save_publisher")
-    @WebResult(name = "save_publisherResponse", targetNamespace = "urn:juddi-apache-org:v3_service", partName = "save_publisherResponse")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public PublisherDetail savePublisher(
-        @WebParam(name = "save_publisher", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        SavePublisher body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param body
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "adminDelete_tModel", action = "adminDelete_tmodel")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public void adminDeleteTModel(
-        @WebParam(name = "adminDelete_tmodel", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        DeleteTModel body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param body
-     * @return
-     *     returns org.apache.juddi.api_v3.ClientSubscriptionInfoDetail
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "save_ClientSubscriptionInfo", action = "save_ClientSubscriptionInfo")
-    @WebResult(name = "save_ClientSubscriptionInfoResponse", targetNamespace = "urn:juddi-apache-org:v3_service", partName = "save_ClientSubscriptionInfoResponse")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public ClientSubscriptionInfoDetail saveClientSubscriptionInfo(
-        @WebParam(name = "save_ClientSubscriptionInfoRequest", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        SaveClientSubscriptionInfo body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * @param syncSubscription
-     * @return
-     *     returns org.apache.juddi.api_v3.SyncSubscriptionDetail
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "invoke_SyncSubscription", action = "invoke_SyncSubscription")
-    @WebResult(name = "syncSubscriptionDetail", targetNamespace = "urn:juddi-apache-org:api_v3")
-    @RequestWrapper(localName = "invoke_SyncSubscription", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.SyncSubscriptionRequest")
-    @ResponseWrapper(localName = "invoke_SyncSubscriptionResponse", targetNamespace = "urn:juddi-apache-org:v3_service", className = "org.apache.juddi.api_v3.SyncSubscriptionDetailResponse")
-    public SyncSubscriptionDetail invokeSyncSubscription(
-        @WebParam(name = "syncSubscription", targetNamespace = "urn:juddi-apache-org:api_v3")
-        SyncSubscription syncSubscription)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		gets all nodes persisted in the database, useful for replication scenarios
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param authInfo
-     * @return
-     *     returns org.apache.juddi.api_v3.NodeList
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "get_AllNodes", action = "get_AllNodes")
-    @WebResult(name = "nodeList", targetNamespace = "urn:juddi-apache-org:api_v3")
-    @RequestWrapper(localName = "get_AllNodes", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllNodes")
-    @ResponseWrapper(localName = "get_AllNodesResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllNodesResponse")
-    public NodeList getAllNodes(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		gets all Clerks persisted in the database, useful for replication scenarios. Clerks provide a mapping for credentials to a Node
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param authInfo
-     * @return
-     *     returns org.apache.juddi.api_v3.ClerkList
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "get_AllClerks", action = "get_AllClerks")
-    @WebResult(name = "clerkList", targetNamespace = "urn:juddi-apache-org:api_v3")
-    @RequestWrapper(localName = "get_AllClerks", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllClerks")
-    @ResponseWrapper(localName = "get_AllClerksResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllClerksResponse")
-    public ClerkList getAllClerks(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		removes a node from the database, useful for replication scenarios. 
-     * 		Note: when removing a node, all associated clerks will be removed with it.
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param body
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "delete_Node", action = "delete_Node")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public void deleteNode(
-        @WebParam(name = "delete_Node", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        DeleteNode body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		removes a clerk from the database, useful for replication scenarios. 
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param request
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "delete_Clerk", action = "delete_Clerk")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public void deleteClerk(
-        @WebParam(name = "delete_Clerk", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "request")
-        DeleteClerk request)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		saves a business just like from the Publication API, however administrators can use this to perform restores from backup.
-     * 		It allows an administrator to save the business, setting the ownership to any user, thus maintaining access control rules.
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param values
-     * @param authInfo
-     * @return
-     *     returns org.uddi.api_v3.DispositionReport
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "adminSave_Business", action = "adminSave_Business")
-    @WebResult(name = "dispositionReport", targetNamespace = "urn:juddi-apache-org:api_v3")
-    @RequestWrapper(localName = "adminSave_Business", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveBusiness")
-    @ResponseWrapper(localName = "adminSave_BusinessResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveBusinessResponse")
-    public DispositionReport adminSaveBusiness(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo,
-        @WebParam(name = "values", targetNamespace = "urn:juddi-apache-org:api_v3")
-        List<AdminSaveBusinessWrapper> values)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		saves a tModel just like from the Publication API, however administrators can use this to perform restores from backup.
-     * 		It allows an administrator to save the tModel, setting the ownership to any user, thus maintaining access control rules.
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param values
-     * @param authInfo
-     * @return
-     *     returns org.uddi.api_v3.DispositionReport
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "adminSave_tModel", action = "adminSave_tModel")
-    @WebResult(name = "dispositionReport", targetNamespace = "urn:juddi-apache-org:api_v3")
-    @RequestWrapper(localName = "adminSave_tModel", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveTModel")
-    @ResponseWrapper(localName = "adminSave_tModelResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveTModelResponse")
-    public DispositionReport adminSaveTModel(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo,
-        @WebParam(name = "values", targetNamespace = "urn:juddi-apache-org:api_v3")
-        List<AdminSaveTModelWrapper> values)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		returns all Nodes that have been enabled for replication. 
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param authInfo
-     * @return
-     *     returns org.uddi.repl_v3.ReplicationConfiguration
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "get_ReplicationNodes", action = "get_ReplicationNodes")
-    @WebResult(name = "replicationConfiguration", targetNamespace = "urn:uddi-org:repl_v3")
-    @RequestWrapper(localName = "get_ReplicationNodes", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetReplicationNodes")
-    @ResponseWrapper(localName = "get_ReplicationNodesResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetReplicationNodesResponse")
-    public ReplicationConfiguration getReplicationNodes(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		sets all Nodes for replication.  Any previously set Nodes will be removed from the replication list.
-     * 		Optionally, all data from remote nodes that 
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param replicationConfiguration
-     * @param authInfo
-     * @return
-     *     returns org.uddi.api_v3.DispositionReport
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "set_ReplicationNodes", action = "set_ReplicationNodes")
-    @WebResult(name = "dispositionReport", targetNamespace = "urn:juddi-apache-org:api_v3")
-    @RequestWrapper(localName = "set_ReplicationNodes", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.SetReplicationNodes")
-    @ResponseWrapper(localName = "set_ReplicationNodesResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.SetReplicationNodesResponse")
-    public DispositionReport setReplicationNodes(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo,
-        @WebParam(name = "replicationConfiguration", targetNamespace = "urn:uddi-org:repl_v3")
-        ReplicationConfiguration replicationConfiguration)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     * 		gets all client subscriptions. useful for backup and restore operations
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param authInfo
-     * @return
-     *     returns java.util.List<org.apache.juddi.api_v3.SubscriptionWrapper>
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "get_allClientSubscriptionInfo", action = "get_allClientSubscriptionInfo")
-    @WebResult(name = "subscriptions", targetNamespace = "urn:juddi-apache-org:api_v3")
-    @RequestWrapper(localName = "get_allClientSubscriptionInfo", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllClientSubscriptionInfo")
-    @ResponseWrapper(localName = "get_allClientSubscriptionInfoResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllClientSubscriptionInfoResponse")
-    public List<SubscriptionWrapper> getAllClientSubscriptionInfo(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-   
-    /**
-     * 
-     * 		deletes a client subscription
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param subscriptionKey
-     * @param authInfo
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "adminDelete_Subscription", action = "adminDelete_Subscription")
-    @RequestWrapper(localName = "adminDelete_Subscription", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminDeleteSubscriptionRequest")
-    @ResponseWrapper(localName = "adminDelete_SubscriptionResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminDeleteSubscriptionResponse")
-    public void adminDeleteSubscription(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo,
-        @WebParam(name = "subscriptionKey", targetNamespace = "urn:juddi-apache-org:api_v3")
-        List<String> subscriptionKey)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
- /**
-     * 
-     * 		saves a client subscription, useful for restore functions
-     * 		@since 3.3
-     * 	  
-     * 
-     * @param publisherOrUsername
-     * @param subscriptions
-     * @param authInfo
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(operationName = "adminSave_Subscription", action = "adminSave_Subscription")
-    @RequestWrapper(localName = "adminSave_Subscription", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveSubscriptionRequest")
-    @ResponseWrapper(localName = "adminSave_SubscriptionResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveSubscriptionResponse")
-    public void adminSaveSubscription(
-        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String authInfo,
-        @WebParam(name = "publisherOrUsername", targetNamespace = "urn:juddi-apache-org:api_v3")
-        String publisherOrUsername,
-        @WebParam(name = "subscriptions", targetNamespace = "urn:juddi-apache-org:api_v3", mode = WebParam.Mode.INOUT)
-        Holder<List<Subscription>> subscriptions)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-
-    /**
-     * 
-     *     gets a given entities change record history
-     *     @since 3.3
-     *     
-     * 
-     * @param body
-     * @return
-     *     returns org.apache.juddi.api_v3.GetEntityHistoryMessageResponse
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(action = "getEntityHistory")
-    @WebResult(name = "getEntityHistoryMessageResponse", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "response")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public GetEntityHistoryMessageResponse getEntityHistory(
-        @WebParam(name = "getEntityHistoryMessage", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        GetEntityHistoryMessageRequest body)
-        throws DispositionReportFaultMessage
-    ,RemoteException;
-
-    /**
-     * 
-     *     gets a list of change records that were received from another node but failed to save locally, usually due to a key conflict
-     *     @since 3.3
-     *     
-     * 
-     * @param body
-     * @return
-     *     returns org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse
-     * @throws DispositionReportFaultMessage
-     */
-    @WebMethod(action = "getFailedReplicationChangeRecords")
-    @WebResult(name = "getFailedReplicationChangeRecordsMessageResponse", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "response")
-    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-    public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(
-        @WebParam(name = "getFailedReplicationChangeRecordsMessage", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
-        GetFailedReplicationChangeRecordsMessageRequest body)
-        throws DispositionReportFaultMessage, RemoteException
-    ;
-    
-}
+/*
+ * Copyright 2001-2008 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.v3_service;
+
+import java.rmi.RemoteException;
+import java.util.List;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+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;
+import org.apache.juddi.api_v3.AdminSaveTModelWrapper;
+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.GetAllPublisherDetail;
+import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
+import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
+import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
+import org.apache.juddi.api_v3.GetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.GetPermissionsMessageResponse;
+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.SetPermissionsMessageRequest;
+import org.apache.juddi.api_v3.SetPermissionsMessageResponse;
+import org.apache.juddi.api_v3.SubscriptionWrapper;
+import org.apache.juddi.api_v3.SyncSubscription;
+import org.apache.juddi.api_v3.SyncSubscriptionDetail;
+import org.uddi.api_v3.DeleteTModel;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.repl_v3.ReplicationConfiguration;
+import org.uddi.sub_v3.Subscription;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+
+/**
+ *  This portType defines all of the jUDDI publisher operations.
+ *   This is above and beyond the original UDDI v3 specification and is NOT part of the standard.
+ *   Method behavior within this class may change from version to version. These methods are
+ *   primarily meant for administrative functions.
+ * 
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.2.4-b01
+ * Generated source version: 2.2
+ * 
+ */
+@WebService(name = "JUDDI_Api_PortType", targetNamespace = "urn:juddi-apache-org:v3_service")
+@XmlSeeAlso({
+    org.uddi.repl_v3.ObjectFactory.class,
+    org.apache.juddi.api_v3.ObjectFactory.class,
+    org.uddi.api_v3.ObjectFactory.class,
+    org.uddi.custody_v3.ObjectFactory.class,
+    org.uddi.policy_v3.ObjectFactory.class,
+    org.uddi.policy_v3_instanceparms.ObjectFactory.class,
+    org.uddi.sub_v3.ObjectFactory.class,
+    org.w3._2000._09.xmldsig_.ObjectFactory.class
+})
+public interface JUDDIApiPortType {
+
+
+    /**
+     * 
+     * @param parameters
+     * @return
+     *     returns org.apache.juddi.api_v3.PublisherDetail
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "get_publisherDetail", action = "get_publisherDetail")
+    @WebResult(name = "publisherDetail", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "parameters")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public PublisherDetail getPublisherDetail(
+        @WebParam(name = "get_publisherDetail", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "parameters")
+        GetPublisherDetail parameters)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param body
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "delete_ClientSubscriptionInfo", action = "delete_ClientSubscriptionInfo")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public void deleteClientSubscriptionInfo(
+        @WebParam(name = "delete_ClientSubscriptionInfo", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        DeleteClientSubscriptionInfo body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.PublisherDetail
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "get_allPublisherDetail", action = "get_allPublisherDetail")
+    @WebResult(name = "publisherDetail", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public PublisherDetail getAllPublisherDetail(
+        @WebParam(name = "get_allPublisherDetail", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        GetAllPublisherDetail body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.ClerkDetail
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "save_Clerk", action = "save_Clerk")
+    @WebResult(name = "save_ClerkResponse", targetNamespace = "urn:juddi-apache-org:v3_service", partName = "save_ClerkResponse")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public ClerkDetail saveClerk(
+        @WebParam(name = "save_ClerkRequest", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        SaveClerk body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param body
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "delete_publisher", action = "delete_publisher")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public void deletePublisher(
+        @WebParam(name = "delete_publisher", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        DeletePublisher body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.NodeDetail
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "save_Node", action = "save_Node")
+    @WebResult(name = "save_NodeResponse", targetNamespace = "urn:juddi-apache-org:v3_service", partName = "save_NodeResponse")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public NodeDetail saveNode(
+        @WebParam(name = "save_NodeRequest", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        SaveNode body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.PublisherDetail
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "save_publisher", action = "save_publisher")
+    @WebResult(name = "save_publisherResponse", targetNamespace = "urn:juddi-apache-org:v3_service", partName = "save_publisherResponse")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public PublisherDetail savePublisher(
+        @WebParam(name = "save_publisher", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        SavePublisher body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param body
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "adminDelete_tModel", action = "adminDelete_tmodel")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public void adminDeleteTModel(
+        @WebParam(name = "adminDelete_tmodel", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        DeleteTModel body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.ClientSubscriptionInfoDetail
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "save_ClientSubscriptionInfo", action = "save_ClientSubscriptionInfo")
+    @WebResult(name = "save_ClientSubscriptionInfoResponse", targetNamespace = "urn:juddi-apache-org:v3_service", partName = "save_ClientSubscriptionInfoResponse")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public ClientSubscriptionInfoDetail saveClientSubscriptionInfo(
+        @WebParam(name = "save_ClientSubscriptionInfoRequest", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        SaveClientSubscriptionInfo body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * @param syncSubscription
+     * @return
+     *     returns org.apache.juddi.api_v3.SyncSubscriptionDetail
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "invoke_SyncSubscription", action = "invoke_SyncSubscription")
+    @WebResult(name = "syncSubscriptionDetail", targetNamespace = "urn:juddi-apache-org:api_v3")
+    @RequestWrapper(localName = "invoke_SyncSubscription", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.SyncSubscriptionRequest")
+    @ResponseWrapper(localName = "invoke_SyncSubscriptionResponse", targetNamespace = "urn:juddi-apache-org:v3_service", className = "org.apache.juddi.api_v3.SyncSubscriptionDetailResponse")
+    public SyncSubscriptionDetail invokeSyncSubscription(
+        @WebParam(name = "syncSubscription", targetNamespace = "urn:juddi-apache-org:api_v3")
+        SyncSubscription syncSubscription)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		gets all nodes persisted in the database, useful for replication scenarios
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param authInfo
+     * @return
+     *     returns org.apache.juddi.api_v3.NodeList
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "get_AllNodes", action = "get_AllNodes")
+    @WebResult(name = "nodeList", targetNamespace = "urn:juddi-apache-org:api_v3")
+    @RequestWrapper(localName = "get_AllNodes", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllNodes")
+    @ResponseWrapper(localName = "get_AllNodesResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllNodesResponse")
+    public NodeList getAllNodes(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		gets all Clerks persisted in the database, useful for replication scenarios. Clerks provide a mapping for credentials to a Node
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param authInfo
+     * @return
+     *     returns org.apache.juddi.api_v3.ClerkList
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "get_AllClerks", action = "get_AllClerks")
+    @WebResult(name = "clerkList", targetNamespace = "urn:juddi-apache-org:api_v3")
+    @RequestWrapper(localName = "get_AllClerks", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllClerks")
+    @ResponseWrapper(localName = "get_AllClerksResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllClerksResponse")
+    public ClerkList getAllClerks(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		removes a node from the database, useful for replication scenarios. 
+     * 		Note: when removing a node, all associated clerks will be removed with it.
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param body
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "delete_Node", action = "delete_Node")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public void deleteNode(
+        @WebParam(name = "delete_Node", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        DeleteNode body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		removes a clerk from the database, useful for replication scenarios. 
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param request
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "delete_Clerk", action = "delete_Clerk")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public void deleteClerk(
+        @WebParam(name = "delete_Clerk", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "request")
+        DeleteClerk request)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		saves a business just like from the Publication API, however administrators can use this to perform restores from backup.
+     * 		It allows an administrator to save the business, setting the ownership to any user, thus maintaining access control rules.
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param values
+     * @param authInfo
+     * @return
+     *     returns org.uddi.api_v3.DispositionReport
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "adminSave_Business", action = "adminSave_Business")
+    @WebResult(name = "dispositionReport", targetNamespace = "urn:juddi-apache-org:api_v3")
+    @RequestWrapper(localName = "adminSave_Business", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveBusiness")
+    @ResponseWrapper(localName = "adminSave_BusinessResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveBusinessResponse")
+    public DispositionReport adminSaveBusiness(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo,
+        @WebParam(name = "values", targetNamespace = "urn:juddi-apache-org:api_v3")
+        List<AdminSaveBusinessWrapper> values)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		saves a tModel just like from the Publication API, however administrators can use this to perform restores from backup.
+     * 		It allows an administrator to save the tModel, setting the ownership to any user, thus maintaining access control rules.
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param values
+     * @param authInfo
+     * @return
+     *     returns org.uddi.api_v3.DispositionReport
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "adminSave_tModel", action = "adminSave_tModel")
+    @WebResult(name = "dispositionReport", targetNamespace = "urn:juddi-apache-org:api_v3")
+    @RequestWrapper(localName = "adminSave_tModel", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveTModel")
+    @ResponseWrapper(localName = "adminSave_tModelResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveTModelResponse")
+    public DispositionReport adminSaveTModel(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo,
+        @WebParam(name = "values", targetNamespace = "urn:juddi-apache-org:api_v3")
+        List<AdminSaveTModelWrapper> values)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		returns all Nodes that have been enabled for replication. 
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param authInfo
+     * @return
+     *     returns org.uddi.repl_v3.ReplicationConfiguration
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "get_ReplicationNodes", action = "get_ReplicationNodes")
+    @WebResult(name = "replicationConfiguration", targetNamespace = "urn:uddi-org:repl_v3")
+    @RequestWrapper(localName = "get_ReplicationNodes", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetReplicationNodes")
+    @ResponseWrapper(localName = "get_ReplicationNodesResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetReplicationNodesResponse")
+    public ReplicationConfiguration getReplicationNodes(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		sets all Nodes for replication.  Any previously set Nodes will be removed from the replication list.
+     * 		Optionally, all data from remote nodes that 
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param replicationConfiguration
+     * @param authInfo
+     * @return
+     *     returns org.uddi.api_v3.DispositionReport
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "set_ReplicationNodes", action = "set_ReplicationNodes")
+    @WebResult(name = "dispositionReport", targetNamespace = "urn:juddi-apache-org:api_v3")
+    @RequestWrapper(localName = "set_ReplicationNodes", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.SetReplicationNodes")
+    @ResponseWrapper(localName = "set_ReplicationNodesResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.SetReplicationNodesResponse")
+    public DispositionReport setReplicationNodes(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo,
+        @WebParam(name = "replicationConfiguration", targetNamespace = "urn:uddi-org:repl_v3")
+        ReplicationConfiguration replicationConfiguration)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		gets all client subscriptions. useful for backup and restore operations
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param authInfo
+     * @return
+     *     returns java.util.List<org.apache.juddi.api_v3.SubscriptionWrapper>
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "get_allClientSubscriptionInfo", action = "get_allClientSubscriptionInfo")
+    @WebResult(name = "subscriptions", targetNamespace = "urn:juddi-apache-org:api_v3")
+    @RequestWrapper(localName = "get_allClientSubscriptionInfo", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllClientSubscriptionInfo")
+    @ResponseWrapper(localName = "get_allClientSubscriptionInfoResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.GetAllClientSubscriptionInfoResponse")
+    public List<SubscriptionWrapper> getAllClientSubscriptionInfo(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+   
+    /**
+     * 
+     * 		deletes a client subscription
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param subscriptionKey
+     * @param authInfo
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "adminDelete_Subscription", action = "adminDelete_Subscription")
+    @RequestWrapper(localName = "adminDelete_Subscription", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminDeleteSubscriptionRequest")
+    @ResponseWrapper(localName = "adminDelete_SubscriptionResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminDeleteSubscriptionResponse")
+    public void adminDeleteSubscription(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo,
+        @WebParam(name = "subscriptionKey", targetNamespace = "urn:juddi-apache-org:api_v3")
+        List<String> subscriptionKey)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     * 		saves a client subscription, useful for restore functions
+     * 		@since 3.3
+     * 	  
+     * 
+     * @param publisherOrUsername
+     * @param subscriptions
+     * @param authInfo
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(operationName = "adminSave_Subscription", action = "adminSave_Subscription")
+    @RequestWrapper(localName = "adminSave_Subscription", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveSubscriptionRequest")
+    @ResponseWrapper(localName = "adminSave_SubscriptionResponse", targetNamespace = "urn:juddi-apache-org:api_v3", className = "org.apache.juddi.api_v3.AdminSaveSubscriptionResponse")
+    public void adminSaveSubscription(
+        @WebParam(name = "authInfo", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String authInfo,
+        @WebParam(name = "publisherOrUsername", targetNamespace = "urn:juddi-apache-org:api_v3")
+        String publisherOrUsername,
+        @WebParam(name = "subscriptions", targetNamespace = "urn:juddi-apache-org:api_v3", mode = WebParam.Mode.INOUT)
+        Holder<List<Subscription>> subscriptions)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+
+    /**
+     * 
+     *     gets a given entities change record history
+     *     @since 3.3
+     *     
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.GetEntityHistoryMessageResponse
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(action = "getEntityHistory")
+    @WebResult(name = "getEntityHistoryMessageResponse", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "response")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public GetEntityHistoryMessageResponse getEntityHistory(
+        @WebParam(name = "getEntityHistoryMessage", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        GetEntityHistoryMessageRequest body)
+        throws DispositionReportFaultMessage
+    ,RemoteException;
+
+    /**
+     * 
+     *     gets a list of change records that were received from another node but failed to save locally, usually due to a key conflict
+     *     @since 3.3
+     *     
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(action = "getFailedReplicationChangeRecords")
+    @WebResult(name = "getFailedReplicationChangeRecordsMessageResponse", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "response")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(
+        @WebParam(name = "getFailedReplicationChangeRecordsMessage", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        GetFailedReplicationChangeRecordsMessageRequest body)
+        throws DispositionReportFaultMessage,RemoteException;
+
+    /**
+     * 
+     *             gets a permission set for a UDDI entity by ID.
+     *             This does not include inherited permissions from a parent object.
+     *             @since 3.4
+     *         
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.GetPermissionsMessageResponse
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(action = "getPermissions")
+    @WebResult(name = "getPermissionsMessageResponse", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "response")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public GetPermissionsMessageResponse getPermissions(
+        @WebParam(name = "getPermissionsMessage", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        GetPermissionsMessageRequest body)
+        throws DispositionReportFaultMessage,RemoteException;
+
+    /**
+     * 
+     *             sets a the permissions for a UDDI entity. If no permissions are set, all 
+     *             previously set permissions are removed.
+     *             @since 3.4
+     *         
+     * 
+     * @param body
+     * @return
+     *     returns org.apache.juddi.api_v3.SetPermissionsMessageResponse
+     * @throws DispositionReportFaultMessage
+     */
+    @WebMethod(action = "setPermissions")
+    @WebResult(name = "setPermissionsMessageResponse", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "response")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public SetPermissionsMessageResponse setPermissions(
+        @WebParam(name = "setPermissionsMessage", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        SetPermissionsMessageRequest body)
+        throws DispositionReportFaultMessage,RemoteException;
+
+}
diff --git a/uddi-ws/src/main/java/org/apache/juddi/v3_service/package-info.java b/uddi-ws/src/main/java/org/apache/juddi/v3_service/package-info.java
index f7cb74c..42c9075 100644
--- a/uddi-ws/src/main/java/org/apache/juddi/v3_service/package-info.java
+++ b/uddi-ws/src/main/java/org/apache/juddi/v3_service/package-info.java
@@ -14,8 +14,8 @@
  * limitations under the License.
  *
  */
- /**
+/**
  * This WSDL defines the jUDDI API Service. It is an extension to the UDDIv3 specification that is specific to jUDDI and provides primarily administrative functionality of jUDDI.
- * 
- */
-package org.apache.juddi.v3_service;
+ * 
+ */
+package org.apache.juddi.v3_service;
diff --git a/uddi-ws/src/main/resources/juddi_api_v1.wsdl b/uddi-ws/src/main/resources/juddi_api_v1.wsdl
index 68f4051..846be4f 100644
--- a/uddi-ws/src/main/resources/juddi_api_v1.wsdl
+++ b/uddi-ws/src/main/resources/juddi_api_v1.wsdl
@@ -39,423 +39,17 @@ xmlns:uddi="urn:uddi-org:api_v3">
   
   <xsd:schema targetNamespace="urn:uddi-org:api_v3" elementFormDefault="qualified" >
   <xsd:import  schemaLocation="uddi_v3.xsd" namespace="urn:uddi-org:api_v3" />
+  <xsd:import  schemaLocation="juddi_api_v1.xsd" namespace="urn:juddi-apache-org:api_v3" />
   </xsd:schema>
 
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:juddi-apache-org:api_v3" xmlns:ns3="urn:uddi-org:sub_v3" xmlns:ns2="urn:uddi-org:api_v3" xmlns:ns1="http://www.w3.org/2000/09/xmldsig#" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:juddi-apache-org:api_v3" xmlns:uddi="urn:uddi-org:api_v3" xmlns:subr="urn:uddi-org:sub_v3" xmlns:repl="urn:uddi-org:repl_v3">
-
-  <xs:import schemaLocation="www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" namespace="http://www.w3.org/2000/09/xmldsig#"/>
-  <xs:import  schemaLocation="uddi_v3.xsd" namespace="urn:uddi-org:api_v3" />
-  <xs:import  schemaLocation="uddi_v3subscription.xsd" namespace="urn:uddi-org:sub_v3"/>
-  <xs:import  schemaLocation="uddi_v3replication.xsd" namespace="urn:uddi-org:repl_v3" />
-  
-  <xs:element name="delete_publisher" type="tns:delete_publisher"/>
-  <xs:element name="get_allPublisherDetail" type="tns:get_allPublisherDetail"/>
-  <xs:element name="get_publisherDetail" type="tns:get_publisher_detail"/>
-  <xs:element name="publisher" type="tns:publisher"/>
-  <xs:element name="publisherDetail" type="tns:publisherDetail"/>
-  <xs:element name="publisherDetailResponse" type="tns:publisherDetail"/>  
-  <xs:element name="save_publisher" type="tns:save_publisher"/>
-  <xs:element name="sync_subscription" type="tns:syncSubscription"/>
-  <xs:element name="sync_subscriptionDetail" type="tns:syncSubscriptionDetail"/>
-  <xs:complexType name="get_publisher_detail">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="publisherId" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="publisherDetail">
-    <xs:sequence>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="publisher" nillable="true" type="tns:publisher"/>
-    </xs:sequence>
-    <xs:attribute name="truncated" type="xs:boolean"/>
-  </xs:complexType>
-  <xs:complexType name="publisher">
-    <xs:sequence>
-      <xs:element name="publisherName" type="xs:string"/>
-      <xs:element minOccurs="0" name="emailAddress" type="xs:string"/>
-      <xs:element minOccurs="0" name="isAdmin" type="xs:boolean"/>
-      <xs:element minOccurs="0" name="isEnabled" type="xs:boolean"/>
-      <xs:element minOccurs="0" name="maxBindingsPerService" type="xs:int"/>
-      <xs:element minOccurs="0" name="maxBusinesses" type="xs:int"/>
-      <xs:element minOccurs="0" name="maxServicePerBusiness" type="xs:int"/>
-      <xs:element minOccurs="0" name="maxTModels" type="xs:int"/>
-      <xs:element maxOccurs="unbounded" minOccurs="0" ref="ns1:Signature"/>
-    </xs:sequence>
-    <xs:attribute name="authorizedName" type="xs:string" use="required"/>
-  </xs:complexType>
-  <xs:complexType name="delete_clientSubscriptionInfo">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="subscriptionKey" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="save_clerk">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="clerk" type="tns:clerk"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="clerk">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="name" type="xs:string"/>
-      <xs:element minOccurs="0" name="node" type="tns:node"/>
-      <xs:element minOccurs="0" name="publisher" type="xs:string"/>
-      <xs:element minOccurs="0" name="password" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="node">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="name" type="xs:string"/>
-      <xs:element minOccurs="0" name="clientName" type="xs:string"/>
-      <xs:element minOccurs="0" name="description" type="xs:string"/>
-      <xs:element minOccurs="0" name="custodyTransferUrl" type="xs:string"/>
-      <xs:element minOccurs="0" name="inquiryUrl" type="xs:string"/>
-      <xs:element minOccurs="0" name="publishUrl" type="xs:string"/>
-      <xs:element minOccurs="0" name="securityUrl" type="xs:string"/>
-      <xs:element minOccurs="0" name="subscriptionUrl" type="xs:string"/>
-      <xs:element minOccurs="0" name="subscriptionListenerUrl" type="xs:string"/>
-	  <xs:element minOccurs="0" name="replicationUrl" type="xs:string"/>
-      <xs:element minOccurs="0" name="juddiApiUrl" type="xs:string"/>
-      <xs:element minOccurs="0" name="proxyTransport" type="xs:string"/>
-      <xs:element minOccurs="0" name="factoryInitial" type="xs:string"/>
-      <xs:element minOccurs="0" name="factoryURLPkgs" type="xs:string"/>
-      <xs:element minOccurs="0" name="factoryNamingProvider" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="clerkDetail">
-    <xs:sequence>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="clerk" nillable="true" type="tns:clerk"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="get_allPublisherDetail">
-    <xs:sequence>
-      <xs:element minOccurs="0" ref="ns2:authInfo"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="delete_publisher">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="publisherId" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="save_publisher">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="publisher" type="tns:publisher"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  
-  
-  <xs:complexType name="get_AllNodes">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-    <xs:complexType name="get_AllNodesResponse">
-    <xs:sequence>
-      <xs:element  name="nodeList" nillable="true" type="tns:nodeList"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="nodeList">
-    <xs:sequence>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="node" type="tns:node"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  
-  <xs:complexType name="get_AllClerks">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-    <xs:complexType name="get_AllClerksResponse">
-    <xs:sequence>
-      <xs:element  name="clerkList" nillable="true" type="tns:clerkList"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  <xs:complexType name="clerkList">
-    <xs:sequence>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="clerk" nillable="true" type="tns:clerk"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  
-  <xs:complexType name="delete_Node">
-    <xs:sequence>
-      <xs:element name="authInfo" type="xs:string"/>
-	  <xs:element name="nodeID" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  
-  <xs:complexType name="delete_Clerk">
-    <xs:sequence>
-      <xs:element name="authInfo" type="xs:string"/>
-	  <xs:element name="clerkID" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-
-  
-  
-  <xs:complexType name="get_ReplicationNodes">
-    <xs:sequence>
-      <xs:element name="authInfo" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  <xs:complexType name="get_ReplicationNodesResponse">
-    <xs:sequence>
-		<xs:element ref="repl:replicationConfiguration" />
-    </xs:sequence>
-  </xs:complexType>
-  
-  
-  
-  <xs:complexType name="set_ReplicationNodes">
-    <xs:sequence>
-      <xs:element name="authInfo" type="xs:string"/>
-	  <xs:element ref="repl:replicationConfiguration" />
-    </xs:sequence>
-  </xs:complexType>
-  
-    <xs:complexType name="set_ReplicationNodesResponse">
-    <xs:sequence>
-		<xs:element name="dispositionReport" type="uddi:dispositionReport"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  
-  <xs:complexType name="subscriptionWrapper">
-    <xs:sequence>
-      <xs:element name="publisherIdOrUsername" type="xs:string"/>
-	  <xs:element ref="subr:subscription" maxOccurs="unbounded" />
-    </xs:sequence>
-  </xs:complexType>
-  
-  <xs:complexType name="get_allClientSubscriptionInfo">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-    <xs:complexType name="get_allClientSubscriptionInfoResponse">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" name="subscriptions" type="tns:subscriptionWrapper"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  
-  <xs:complexType name="adminSave_Business">
-	<xs:sequence>
-		<xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-		<xs:element minOccurs="0" maxOccurs="unbounded" name="values" type="tns:adminSave_BusinessWrapper"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  <xs:complexType name="adminSave_BusinessResponse">
-	<xs:sequence>
-		<xs:element name="dispositionReport" type="uddi:dispositionReport"/>    </xs:sequence>
-  </xs:complexType>
-  
-  <xs:complexType name="adminSave_BusinessWrapper">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="publisherID" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" ref="uddi:businessEntity"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  
-
-
-<xs:complexType name="adminSave_tModel">
-	<xs:sequence>
-		<xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-		<xs:element minOccurs="0" maxOccurs="unbounded" name="values" type="tns:adminSave_tModelWrapper"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  <xs:complexType name="adminSave_tModelResponse">
-	<xs:sequence>
-		<xs:element name="dispositionReport" type="uddi:dispositionReport"/>    </xs:sequence>
-  </xs:complexType>
-  
-  <xs:complexType name="adminSave_tModelWrapper">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="publisherID" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="tModel" nillable="true" type="uddi:tModel"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-
-
-
-
-  
-  <xs:complexType name="save_node">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="node" type="tns:node"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="nodeDetail">
-    <xs:sequence>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="node" nillable="true" type="tns:node"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="save_clientSubscriptionInfo">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="clientSubscriptionInfo" type="tns:clientSubscriptionInfo"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="clientSubscriptionInfo">
-    <xs:sequence>
-      <xs:element name="subscriptionKey" type="xs:string"/>
-      <xs:element name="fromClerk" type="tns:clerk"/>
-      <xs:element name="toClerk" type="tns:clerk"/>
-      <xs:element minOccurs="0" name="lastModified" type="xs:dateTime"/>
-	  <xs:element minOccurs="0" name="lastNotified" type="xs:dateTime"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="clientSubscriptionInfoDetail">
-    <xs:sequence>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="clientSubscriptionInfo" nillable="true" type="tns:clientSubscriptionInfo"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="syncSubscriptionRequest">
-    <xs:sequence>
-	<xs:element minOccurs="0" name="syncSubscription" type="tns:syncSubscription"/>
-	  </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="syncSubscription">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="get_subscriptionResultsList" nillable="true" type="ns3:get_subscriptionResults"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="syncSubscriptionDetail">
-    <xs:sequence>
-      <xs:element maxOccurs="unbounded" minOccurs="0" name="subscriptionResultsList" nillable="true" type="ns3:subscriptionResultsList"/>
-    </xs:sequence>
-  </xs:complexType>
-  
-  <xs:complexType name="syncSubscriptionDetailResponse">
-    <xs:sequence>
-      <xs:element name="syncSubscriptionDetail" nillable="true" type="tns:syncSubscriptionDetail"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="delete_ClientSubscriptionInfo" nillable="true" type="tns:delete_clientSubscriptionInfo"/>
-  <xs:element name="save_ClerkRequest"  type="tns:save_clerk"/>
-  <xs:element name="save_NodeRequest"  type="tns:save_node"/>
-  
-  
-  
-  <xs:element name="delete_Clerk" nillable="true" type="tns:delete_Clerk"/>
-  <!--<xs:element name="delete_ClerkResponse" nillable="true" type="tns:delete_ClerkResponse"/>-->
-  
-  <xs:element name="get_AllNodes" nillable="true" type="tns:get_AllNodes"/>
-  <xs:element name="get_AllNodesResponse" nillable="true" type="tns:get_AllNodesResponse"/>
-  <xs:element name="get_AllClerks" nillable="true" type="tns:get_AllClerks"/>
-  <xs:element name="get_AllClerksResponse" nillable="true" type="tns:get_AllClerksResponse"/>
-  
-    <xs:element name="delete_Node" nillable="true" type="tns:delete_Node"/>
-  <!--<xs:element name="delete_NodeResponse" nillable="true" type="tns:delete_NodeResponse"/>-->
- 
-    <xs:element name="get_ReplicationNodes" nillable="true" type="tns:get_ReplicationNodes"/>
-  <xs:element name="get_ReplicationNodesResponse" nillable="true" type="tns:get_ReplicationNodesResponse"/>
- 
-   <xs:element name="set_ReplicationNodes" nillable="true" type="tns:set_ReplicationNodes"/>
-  <xs:element name="set_ReplicationNodesResponse" nillable="true" type="tns:set_ReplicationNodesResponse"/>
-  
-  <xs:element name="get_allClientSubscriptionInfo" nillable="true" type="tns:get_allClientSubscriptionInfo"/>
-  <xs:element name="get_allClientSubscriptionInfoResponse" nillable="true" type="tns:get_allClientSubscriptionInfoResponse"/>
-  
-  
-  <xs:element name="adminSave_Business" nillable="true" type="tns:adminSave_Business"/>
-  <xs:element name="adminSave_BusinessResponse" nillable="true" type="tns:adminSave_BusinessResponse"/>
-  
-  <xs:element name="adminSave_tModel" nillable="true" type="tns:adminSave_tModel"/>
-  <xs:element name="adminSave_tModelResponse" nillable="true" type="tns:adminSave_tModelResponse"/>
-
-  <xs:element name="adminDelete_tmodel" nillable="true" type="ns2:delete_tModel"/>
-  <xs:element name="save_ClientSubscriptionInfoRequest" nillable="true" type="tns:save_clientSubscriptionInfo"/>
-  
-  <xs:element name="invoke_SyncSubscription" nillable="true" type="tns:syncSubscriptionRequest"/>
-  <xs:element name="adminDelete_Subscription" nillable="true" type="tns:adminDelete_SubscriptionRequest"/>
-  <xs:element name="adminDelete_SubscriptionResponse" nillable="true" type="tns:adminDelete_SubscriptionResponse"/>
-  <xs:complexType name="adminDelete_SubscriptionRequest">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="subscriptionKey" type="xs:string"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="adminDelete_SubscriptionResponse">
-    <xs:sequence />
-  </xs:complexType>
-  
-  <xs:element name="adminSave_Subscription" nillable="true" type="tns:adminSave_SubscriptionRequest"/>
-  <xs:element name="adminSave_SubscriptionResponse" nillable="true" type="tns:adminSave_SubscriptionResponse"/>
-  <xs:complexType name="adminSave_SubscriptionRequest">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-	  <xs:element minOccurs="0" name="publisherOrUsername" type="xs:string"/>
-      <xs:element maxOccurs="unbounded" name="subscriptions" type="subr:subscription"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="adminSave_SubscriptionResponse">
-    <xs:sequence >
-		<xs:element maxOccurs="unbounded" name="subscriptions" type="subr:subscription"/>
-	</xs:sequence>	
-  </xs:complexType>
-  
-  
-  <xs:element name="getEntityHistoryMessage" nillable="true" type="tns:getEntityHistoryMessageRequest"/>
-  <xs:element name="getEntityHistoryMessageResponse" nillable="true" type="tns:getEntityHistoryMessageResponse"/>
-  <xs:complexType name="getEntityHistoryMessageRequest">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element minOccurs="0" name="entityKey" type="xs:string"/>
-      <xs:element name="maxRecords" type="xs:long"/>
-      <xs:element name="offset" type="xs:long"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="getEntityHistoryMessageResponse">
-    <xs:sequence >
-    <xs:element  ref="repl:changeRecords"/>
-  </xs:sequence>  
-  </xs:complexType>
-
-
-
- <xs:element name="getFailedReplicationChangeRecordsMessage" nillable="true" type="tns:getFailedReplicationChangeRecordsMessageRequest"/>
-  <xs:element name="getFailedReplicationChangeRecordsMessageResponse" nillable="true" type="tns:getFailedReplicationChangeRecordsMessageResponse"/>
-  <xs:complexType name="getFailedReplicationChangeRecordsMessageRequest">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
-      <xs:element name="maxRecords" type="xs:long"/>
-      <xs:element name="offset" type="xs:long"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="getFailedReplicationChangeRecordsMessageResponse">
-    <xs:sequence >
-    <xs:element  ref="repl:changeRecords"/>
-  </xs:sequence>  
-  </xs:complexType>
-
-
-
-  
-  
-</xs:schema>
 
 
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:juddi-apache-org:v3_service" xmlns:ns0="urn:juddi-apache-org:api_v3" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:juddi-apache-org:v3_service">
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+            xmlns:tns="urn:juddi-apache-org:v3_service" 
+            xmlns:ns0="urn:juddi-apache-org:api_v3" 
+            attributeFormDefault="unqualified" 
+            elementFormDefault="qualified" 
+            targetNamespace="urn:juddi-apache-org:v3_service">
 
   
   <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="www.w3.org/2001/xml.xsd"/>
@@ -465,7 +59,7 @@ xmlns:uddi="urn:uddi-org:api_v3">
   <xsd:import  schemaLocation="uddi_v3subscription.xsd" namespace="urn:uddi-org:sub_v3"/>
   <xsd:import  schemaLocation="uddi_v3replication.xsd" namespace="urn:uddi-org:repl_v3" />
   
-  <xsd:import namespace="urn:juddi-apache-org:api_v3"/>
+  <xsd:import schemaLocation="juddi_api_v1.xsd"  namespace="urn:juddi-apache-org:api_v3"/>
   <xsd:element name="save_ClerkResponse" nillable="true" type="ns0:clerkDetail"/>
   <xsd:element name="save_publisherResponse" nillable="true" type="ns0:publisherDetail"/>
   <xsd:element name="save_NodeResponse" nillable="true" type="ns0:nodeDetail"/>
@@ -473,6 +67,9 @@ xmlns:uddi="urn:uddi-org:api_v3">
   <xsd:element name="invoke_SyncSubscriptionResponse" nillable="true" type="ns0:syncSubscriptionDetailResponse"/>
 </xsd:schema>
  </wsdl:types>
+ 
+ 
+ 
   <wsdl:message name="get_allPublisherDetail">
     <wsdl:part element="ns1:get_allPublisherDetail" name="body">
     </wsdl:part>
@@ -645,8 +242,18 @@ xmlns:uddi="urn:uddi-org:api_v3">
     <wsdl:part element="ns1:getFailedReplicationChangeRecordsMessageResponse" name="response"></wsdl:part>
   </wsdl:message>
 
-  
-
+  <wsdl:message name="getPermissionsMessage">
+      <wsdl:part element="ns1:getPermissionsMessage" name="body"></wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="getPermissionsMessageResponse">
+      <wsdl:part element="ns1:getPermissionsMessageResponse" name="response"></wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="setPermissionsMessage">
+      <wsdl:part element="ns1:setPermissionsMessage" name="body"></wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="setPermissionsMessageResponse">
+      <wsdl:part element="ns1:setPermissionsMessageResponse" name="response"></wsdl:part>
+  </wsdl:message>
 
 
   
@@ -861,6 +468,30 @@ xmlns:uddi="urn:uddi-org:api_v3">
       <wsdl:fault name="error" message="uddiport:dispositionReportFaultMessage"/>
     </wsdl:operation>
 	
+    
+    <!-- new with 3.4 -->
+     
+    <wsdl:operation name="getPermissions">
+        <wsdl:documentation>
+            gets a permission set for a UDDI entity by ID.
+            This does not include inherited permissions from a parent object.
+            @since 3.4
+        </wsdl:documentation>
+        <wsdl:input message="tns:getPermissionsMessage" name="getPermissions"></wsdl:input>
+        <wsdl:output message="tns:getPermissionsMessageResponse" name="getPermissionsResponse"></wsdl:output>
+        <wsdl:fault name="error" message="uddiport:dispositionReportFaultMessage"/>
+    </wsdl:operation>
+    <wsdl:operation name="setPermissions">
+        <wsdl:documentation>
+            sets a the permissions for a UDDI entity. If no permissions are set, all 
+            previously set permissions are removed.
+            @since 3.4
+        </wsdl:documentation>
+        <wsdl:input message="tns:setPermissionsMessage" name="setPermissions"></wsdl:input>
+        <wsdl:output message="tns:setPermissionsMessageResponse" name="setPermissionsResponse"></wsdl:output>
+        <wsdl:fault name="error" message="uddiport:dispositionReportFaultMessage"/>
+    </wsdl:operation>
+    
 	
   </wsdl:portType>
 
@@ -1119,6 +750,30 @@ xmlns:uddi="urn:uddi-org:api_v3">
       </wsdl:output>
     <wsdl:fault name="error"><soap:fault name="error" use="literal"/></wsdl:fault>
     </wsdl:operation>
+    
+    <!-- new with 3.4 -->
+     <wsdl:operation name="getPermissions">
+   
+      <soap:operation soapAction="getPermissions" style="document"/>
+      <wsdl:input name="getPermissions">
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="getPermissionsResponse">
+        <soap:body use="literal"/>
+      </wsdl:output>
+    <wsdl:fault name="error"><soap:fault name="error" use="literal"/></wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="setPermissions">
+   
+      <soap:operation soapAction="setPermissions" style="document"/>
+      <wsdl:input name="setPermissions">
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="setPermissionsResponse">
+        <soap:body use="literal"/>
+      </wsdl:output>
+    <wsdl:fault name="error"><soap:fault name="error" use="literal"/></wsdl:fault>
+    </wsdl:operation>
 
 
 
diff --git a/uddi-ws/src/main/resources/juddi_api_v1.xsd b/uddi-ws/src/main/resources/juddi_api_v1.xsd
new file mode 100644
index 0000000..735ab6e
--- /dev/null
+++ b/uddi-ws/src/main/resources/juddi_api_v1.xsd
@@ -0,0 +1,527 @@
+<?xml version="1.0"?>
+<!--
+Copyright 2019 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.
+-->
+
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+           xmlns:tns="urn:juddi-apache-org:api_v3" 
+           xmlns:ns3="urn:uddi-org:sub_v3" 
+           xmlns:ns2="urn:uddi-org:api_v3" 
+           xmlns:ns1="http://www.w3.org/2000/09/xmldsig#" 
+           attributeFormDefault="unqualified" 
+           elementFormDefault="qualified" 
+           targetNamespace="urn:juddi-apache-org:api_v3" 
+           xmlns:uddi="urn:uddi-org:api_v3" 
+           xmlns:subr="urn:uddi-org:sub_v3" 
+           xmlns:repl="urn:uddi-org:repl_v3">
+
+    <xs:import schemaLocation="www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" namespace="http://www.w3.org/2000/09/xmldsig#"/>
+    <xs:import  schemaLocation="uddi_v3.xsd" namespace="urn:uddi-org:api_v3" />
+    <xs:import  schemaLocation="uddi_v3subscription.xsd" namespace="urn:uddi-org:sub_v3"/>
+    <xs:import  schemaLocation="uddi_v3replication.xsd" namespace="urn:uddi-org:repl_v3" />
+  
+    <xs:element name="delete_publisher" type="tns:delete_publisher"/>
+    <xs:element name="get_allPublisherDetail" type="tns:get_allPublisherDetail"/>
+    <xs:element name="get_publisherDetail" type="tns:get_publisher_detail"/>
+    <xs:element name="publisher" type="tns:publisher"/>
+    <xs:element name="publisherDetail" type="tns:publisherDetail"/>
+    <xs:element name="publisherDetailResponse" type="tns:publisherDetail"/>  
+    <xs:element name="save_publisher" type="tns:save_publisher"/>
+    <xs:element name="sync_subscription" type="tns:syncSubscription"/>
+    <xs:element name="sync_subscriptionDetail" type="tns:syncSubscriptionDetail"/>
+    <xs:complexType name="get_publisher_detail">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="publisherId" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="publisherDetail">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="publisher" nillable="true" type="tns:publisher"/>
+        </xs:sequence>
+        <xs:attribute name="truncated" type="xs:boolean"/>
+    </xs:complexType>
+    <xs:complexType name="publisher">
+        <xs:sequence>
+            <xs:element name="publisherName" type="xs:string"/>
+            <xs:element minOccurs="0" name="emailAddress" type="xs:string"/>
+            <xs:element minOccurs="0" name="isAdmin" type="xs:boolean"/>
+            <xs:element minOccurs="0" name="isEnabled" type="xs:boolean"/>
+            <xs:element minOccurs="0" name="maxBindingsPerService" type="xs:int"/>
+            <xs:element minOccurs="0" name="maxBusinesses" type="xs:int"/>
+            <xs:element minOccurs="0" name="maxServicePerBusiness" type="xs:int"/>
+            <xs:element minOccurs="0" name="maxTModels" type="xs:int"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" ref="ns1:Signature"/>
+        </xs:sequence>
+        <xs:attribute name="authorizedName" type="xs:string" use="required"/>
+    </xs:complexType>
+    <xs:complexType name="delete_clientSubscriptionInfo">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="subscriptionKey" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="save_clerk">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="clerk" type="tns:clerk"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="clerk">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="name" type="xs:string"/>
+            <xs:element minOccurs="0" name="node" type="tns:node"/>
+            <xs:element minOccurs="0" name="publisher" type="xs:string"/>
+            <xs:element minOccurs="0" name="password" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="node">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="name" type="xs:string"/>
+            <xs:element minOccurs="0" name="clientName" type="xs:string"/>
+            <xs:element minOccurs="0" name="description" type="xs:string"/>
+            <xs:element minOccurs="0" name="custodyTransferUrl" type="xs:string"/>
+            <xs:element minOccurs="0" name="inquiryUrl" type="xs:string"/>
+            <xs:element minOccurs="0" name="publishUrl" type="xs:string"/>
+            <xs:element minOccurs="0" name="securityUrl" type="xs:string"/>
+            <xs:element minOccurs="0" name="subscriptionUrl" type="xs:string"/>
+            <xs:element minOccurs="0" name="subscriptionListenerUrl" type="xs:string"/>
+            <xs:element minOccurs="0" name="replicationUrl" type="xs:string"/>
+            <xs:element minOccurs="0" name="juddiApiUrl" type="xs:string"/>
+            <xs:element minOccurs="0" name="proxyTransport" type="xs:string"/>
+            <xs:element minOccurs="0" name="factoryInitial" type="xs:string"/>
+            <xs:element minOccurs="0" name="factoryURLPkgs" type="xs:string"/>
+            <xs:element minOccurs="0" name="factoryNamingProvider" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="clerkDetail">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="clerk" nillable="true" type="tns:clerk"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="get_allPublisherDetail">
+        <xs:sequence>
+            <xs:element minOccurs="0" ref="ns2:authInfo"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="delete_publisher">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="publisherId" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="save_publisher">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="publisher" type="tns:publisher"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+  
+  
+    <xs:complexType name="get_AllNodes">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="get_AllNodesResponse">
+        <xs:sequence>
+            <xs:element  name="nodeList" nillable="true" type="tns:nodeList"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="nodeList">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="node" type="tns:node"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+  
+    <xs:complexType name="get_AllClerks">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="get_AllClerksResponse">
+        <xs:sequence>
+            <xs:element  name="clerkList" nillable="true" type="tns:clerkList"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="clerkList">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="clerk" nillable="true" type="tns:clerk"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+  
+    <xs:complexType name="delete_Node">
+        <xs:sequence>
+            <xs:element name="authInfo" type="xs:string"/>
+            <xs:element name="nodeID" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+  
+    <xs:complexType name="delete_Clerk">
+        <xs:sequence>
+            <xs:element name="authInfo" type="xs:string"/>
+            <xs:element name="clerkID" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+
+  
+  
+    <xs:complexType name="get_ReplicationNodes">
+        <xs:sequence>
+            <xs:element name="authInfo" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="get_ReplicationNodesResponse">
+        <xs:sequence>
+            <xs:element ref="repl:replicationConfiguration" />
+        </xs:sequence>
+    </xs:complexType>
+  
+  
+  
+    <xs:complexType name="set_ReplicationNodes">
+        <xs:sequence>
+            <xs:element name="authInfo" type="xs:string"/>
+            <xs:element ref="repl:replicationConfiguration" />
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="set_ReplicationNodesResponse">
+        <xs:sequence>
+            <xs:element name="dispositionReport" type="uddi:dispositionReport"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+  
+    <xs:complexType name="subscriptionWrapper">
+        <xs:sequence>
+            <xs:element name="publisherIdOrUsername" type="xs:string"/>
+            <xs:element ref="subr:subscription" maxOccurs="unbounded" />
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="get_allClientSubscriptionInfo">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="get_allClientSubscriptionInfoResponse">
+        <xs:sequence>
+            <xs:element minOccurs="0" maxOccurs="unbounded" name="subscriptions" type="tns:subscriptionWrapper"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+  
+    <xs:complexType name="adminSave_Business">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element minOccurs="0" maxOccurs="unbounded" name="values" type="tns:adminSave_BusinessWrapper"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="adminSave_BusinessResponse">
+        <xs:sequence>
+            <xs:element name="dispositionReport" type="uddi:dispositionReport"/>    
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="adminSave_BusinessWrapper">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="publisherID" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" ref="uddi:businessEntity"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+  
+
+
+    <xs:complexType name="adminSave_tModel">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element minOccurs="0" maxOccurs="unbounded" name="values" type="tns:adminSave_tModelWrapper"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="adminSave_tModelResponse">
+        <xs:sequence>
+            <xs:element name="dispositionReport" type="uddi:dispositionReport"/>    
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="adminSave_tModelWrapper">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="publisherID" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="tModel" nillable="true" type="uddi:tModel"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+
+
+
+
+  
+    <xs:complexType name="save_node">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="node" type="tns:node"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="nodeDetail">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="node" nillable="true" type="tns:node"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="save_clientSubscriptionInfo">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="clientSubscriptionInfo" type="tns:clientSubscriptionInfo"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="clientSubscriptionInfo">
+        <xs:sequence>
+            <xs:element name="subscriptionKey" type="xs:string"/>
+            <xs:element name="fromClerk" type="tns:clerk"/>
+            <xs:element name="toClerk" type="tns:clerk"/>
+            <xs:element minOccurs="0" name="lastModified" type="xs:dateTime"/>
+            <xs:element minOccurs="0" name="lastNotified" type="xs:dateTime"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="clientSubscriptionInfoDetail">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="clientSubscriptionInfo" nillable="true" type="tns:clientSubscriptionInfo"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="syncSubscriptionRequest">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="syncSubscription" type="tns:syncSubscription"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="syncSubscription">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="get_subscriptionResultsList" nillable="true" type="ns3:get_subscriptionResults"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="syncSubscriptionDetail">
+        <xs:sequence>
+            <xs:element maxOccurs="unbounded" minOccurs="0" name="subscriptionResultsList" nillable="true" type="ns3:subscriptionResultsList"/>
+        </xs:sequence>
+    </xs:complexType>
+  
+    <xs:complexType name="syncSubscriptionDetailResponse">
+        <xs:sequence>
+            <xs:element name="syncSubscriptionDetail" nillable="true" type="tns:syncSubscriptionDetail"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:element name="delete_ClientSubscriptionInfo" nillable="true" type="tns:delete_clientSubscriptionInfo"/>
+    <xs:element name="save_ClerkRequest"  type="tns:save_clerk"/>
+    <xs:element name="save_NodeRequest"  type="tns:save_node"/>
+  
+  
+  
+    <xs:element name="delete_Clerk" nillable="true" type="tns:delete_Clerk"/>
+    <!--<xs:element name="delete_ClerkResponse" nillable="true" type="tns:delete_ClerkResponse"/>-->
+  
+    <xs:element name="get_AllNodes" nillable="true" type="tns:get_AllNodes"/>
+    <xs:element name="get_AllNodesResponse" nillable="true" type="tns:get_AllNodesResponse"/>
+    <xs:element name="get_AllClerks" nillable="true" type="tns:get_AllClerks"/>
+    <xs:element name="get_AllClerksResponse" nillable="true" type="tns:get_AllClerksResponse"/>
+  
+    <xs:element name="delete_Node" nillable="true" type="tns:delete_Node"/>
+    <!--<xs:element name="delete_NodeResponse" nillable="true" type="tns:delete_NodeResponse"/>-->
+ 
+    <xs:element name="get_ReplicationNodes" nillable="true" type="tns:get_ReplicationNodes"/>
+    <xs:element name="get_ReplicationNodesResponse" nillable="true" type="tns:get_ReplicationNodesResponse"/>
+ 
+    <xs:element name="set_ReplicationNodes" nillable="true" type="tns:set_ReplicationNodes"/>
+    <xs:element name="set_ReplicationNodesResponse" nillable="true" type="tns:set_ReplicationNodesResponse"/>
+  
+    <xs:element name="get_allClientSubscriptionInfo" nillable="true" type="tns:get_allClientSubscriptionInfo"/>
+    <xs:element name="get_allClientSubscriptionInfoResponse" nillable="true" type="tns:get_allClientSubscriptionInfoResponse"/>
+  
+  
+    <xs:element name="adminSave_Business" nillable="true" type="tns:adminSave_Business"/>
+    <xs:element name="adminSave_BusinessResponse" nillable="true" type="tns:adminSave_BusinessResponse"/>
+  
+    <xs:element name="adminSave_tModel" nillable="true" type="tns:adminSave_tModel"/>
+    <xs:element name="adminSave_tModelResponse" nillable="true" type="tns:adminSave_tModelResponse"/>
+
+    <xs:element name="adminDelete_tmodel" nillable="true" type="ns2:delete_tModel"/>
+    <xs:element name="save_ClientSubscriptionInfoRequest" nillable="true" type="tns:save_clientSubscriptionInfo"/>
+  
+    <xs:element name="invoke_SyncSubscription" nillable="true" type="tns:syncSubscriptionRequest"/>
+    <xs:element name="adminDelete_Subscription" nillable="true" type="tns:adminDelete_SubscriptionRequest"/>
+    <xs:element name="adminDelete_SubscriptionResponse" nillable="true" type="tns:adminDelete_SubscriptionResponse"/>
+    <xs:complexType name="adminDelete_SubscriptionRequest">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="subscriptionKey" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="adminDelete_SubscriptionResponse">
+        <xs:sequence />
+    </xs:complexType>
+  
+    <xs:element name="adminSave_Subscription" nillable="true" type="tns:adminSave_SubscriptionRequest"/>
+    <xs:element name="adminSave_SubscriptionResponse" nillable="true" type="tns:adminSave_SubscriptionResponse"/>
+    <xs:complexType name="adminSave_SubscriptionRequest">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element minOccurs="0" name="publisherOrUsername" type="xs:string"/>
+            <xs:element maxOccurs="unbounded" name="subscriptions" type="subr:subscription"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="adminSave_SubscriptionResponse">
+        <xs:sequence >
+            <xs:element maxOccurs="unbounded" name="subscriptions" type="subr:subscription"/>
+        </xs:sequence>	
+    </xs:complexType>
+  
+  
+    <xs:element name="getEntityHistoryMessage" nillable="true" type="tns:getEntityHistoryMessageRequest"/>
+    <xs:element name="getEntityHistoryMessageResponse" nillable="true" type="tns:getEntityHistoryMessageResponse"/>
+    <xs:complexType name="getEntityHistoryMessageRequest">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element minOccurs="0" name="entityKey" type="xs:string"/>
+            <xs:element name="maxRecords" type="xs:long"/>
+            <xs:element name="offset" type="xs:long"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="getEntityHistoryMessageResponse">
+        <xs:sequence >
+            <xs:element  ref="repl:changeRecords"/>
+        </xs:sequence>  
+    </xs:complexType>
+
+
+
+    <xs:element name="getFailedReplicationChangeRecordsMessage" nillable="true" type="tns:getFailedReplicationChangeRecordsMessageRequest"/>
+    <xs:element name="getFailedReplicationChangeRecordsMessageResponse" nillable="true" type="tns:getFailedReplicationChangeRecordsMessageResponse"/>
+    <xs:complexType name="getFailedReplicationChangeRecordsMessageRequest">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element name="maxRecords" type="xs:long"/>
+            <xs:element name="offset" type="xs:long"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="getFailedReplicationChangeRecordsMessageResponse">
+        <xs:sequence >
+            <xs:element  ref="repl:changeRecords"/>
+        </xs:sequence>  
+    </xs:complexType>
+
+
+    <xs:simpleType name="AccessLevel">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="NONE"/>
+            <xs:enumeration value="READ"/>
+            <xs:enumeration value="WRITE"/>
+            <xs:enumeration value="OWN"/>
+            <xs:enumeration value="CREATE"/>
+        </xs:restriction>
+    </xs:simpleType>
+  
+    <xs:simpleType name="EntityType">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="BUSINESS"/>
+            <xs:enumeration value="SERVICE"/>
+            <xs:enumeration value="BINDING"/>
+            <xs:enumeration value="TMODEL"/>
+        </xs:restriction>
+    </xs:simpleType>
+  
+    <xs:simpleType name="Action">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="ADD"/>
+            <xs:enumeration value="REMOVE"/>
+            <xs:enumeration value="NOOP"/>
+      
+        </xs:restriction>
+    </xs:simpleType>
+  
+    <xs:complexType  name="Permission">
+        <xs:sequence>
+            <xs:element name="Level" type="tns:AccessLevel"/>
+            <xs:element name="entityId" type="xs:string"/>
+            <xs:element name="target" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        usually a username, group, role, or attribute
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="type" type="tns:EntityType" />
+          
+        
+            <xs:element name="action" type="tns:Action" />
+        </xs:sequence>
+    </xs:complexType>
+  
+
+    <xs:element name="getPermissionsMessage" nillable="true" type="tns:getPermissionsMessageRequest"/>
+    <xs:element name="getPermissionsMessageResponse" nillable="true" type="tns:getPermissionsMessageResponse"/>
+    <xs:complexType name="getPermissionsMessageRequest">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element name="entityId" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        optional, if not present, all permissioms up to the limit are returned
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="limit" type="xs:integer"/>
+            <xs:element name="offset" type="xs:integer"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="getPermissionsMessageResponse">
+        <xs:sequence >
+            <xs:element name="level" type="tns:Permission" minOccurs="0" maxOccurs="4999"/>
+        </xs:sequence>  
+    </xs:complexType>
+
+
+    <xs:element name="setPermissionsMessage" nillable="true" type="tns:setPermissionsMessageRequest"/>
+    <xs:element name="setPermissionsMessageResponse" nillable="true" type="tns:setPermissionsMessageResponse"/>
+    <xs:complexType name="setPermissionsMessageRequest">
+        <xs:sequence>
+            <xs:element minOccurs="0" name="authInfo" type="xs:string"/>
+            <xs:element name="level" type="tns:Permission" minOccurs="0" maxOccurs="4999"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="setPermissionsMessageResponse">
+        <xs:sequence >
+  
+        </xs:sequence>  
+    </xs:complexType>
+     
+    
+
+  
+  
+</xs:schema>
\ No newline at end of file


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