Repository: juddi
Updated Branches:
  refs/heads/master 8ecfc7ff4 -> 161d03c06


https://issues.apache.org/jira/browse/JUDDI-841 fixing generated key so it uses 
the publisher's domain


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

Branch: refs/heads/master
Commit: 034954fca5c5e6fef2b1fcd9b1c1b13809dd51cd
Parents: c1a7f8c
Author: Kurt Stam <[email protected]>
Authored: Fri Feb 21 11:52:04 2014 -0500
Committer: Kurt Stam <[email protected]>
Committed: Fri Feb 21 11:52:04 2014 -0500

----------------------------------------------------------------------
 .gitignore                                      |  3 ++
 juddi-core-openjpa/src/.gitignore               |  1 +
 juddi-core-openjpa/src/test/.gitignore          |  1 +
 .../juddi/api/impl/PublicationHelper.java       |  3 ++
 .../juddi/api/impl/UDDIPublicationImpl.java     | 19 ++++----
 .../juddi/api/impl/UDDISubscriptionImpl.java    |  5 +-
 .../juddi/keygen/DefaultKeyGenerator.java       | 51 +++++++++++++++++---
 .../org/apache/juddi/keygen/KeyGenerator.java   |  3 +-
 .../juddi/validation/ValidatePublish.java       | 48 +++++++++---------
 .../juddi/validation/ValidateSubscription.java  | 10 ++--
 .../juddi/api/impl/UDDIPublicationImplExt.java  |  5 +-
 .../apache/juddi/keygen/KeyGeneratorTest.java   | 16 +++++-
 12 files changed, 114 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ea87317
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+target
+*/target/*
+*/derby.log

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core-openjpa/src/.gitignore
----------------------------------------------------------------------
diff --git a/juddi-core-openjpa/src/.gitignore 
b/juddi-core-openjpa/src/.gitignore
new file mode 100644
index 0000000..95811e0
--- /dev/null
+++ b/juddi-core-openjpa/src/.gitignore
@@ -0,0 +1 @@
+/main

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core-openjpa/src/test/.gitignore
----------------------------------------------------------------------
diff --git a/juddi-core-openjpa/src/test/.gitignore 
b/juddi-core-openjpa/src/test/.gitignore
new file mode 100644
index 0000000..34dbc45
--- /dev/null
+++ b/juddi-core-openjpa/src/test/.gitignore
@@ -0,0 +1 @@
+java/

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/main/java/org/apache/juddi/api/impl/PublicationHelper.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/PublicationHelper.java 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/PublicationHelper.java
index eb99196..d2589ab 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/PublicationHelper.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/PublicationHelper.java
@@ -17,6 +17,7 @@
 package org.apache.juddi.api.impl;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import javax.persistence.EntityManager;
@@ -55,5 +56,7 @@ public class PublicationHelper {
                
                return result;
        }
+       
+
 
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
index 946becc..2f896ce 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
@@ -18,6 +18,7 @@
 package org.apache.juddi.api.impl;
 
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 import java.util.ArrayList;
 
@@ -48,7 +49,6 @@ import org.uddi.api_v3.ServiceDetail;
 import org.uddi.api_v3.TModelDetail;
 import org.uddi.v3_service.DispositionReportFaultMessage;
 import org.uddi.v3_service.UDDIPublicationPortType;
-
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -521,9 +521,9 @@ public class UDDIPublicationImpl extends 
AuthenticatedService implements UDDIPub
                        tx.begin();
                        
                        UddiEntityPublisher publisher = 
this.getEntityPublisher(em, body.getAuthInfo());
-                       
+                       publisher.populateKeyGeneratorKeys(em);
                        ValidatePublish validator = new 
ValidatePublish(publisher);
-                       validator.validateSaveBinding(em, body, null);
+                       validator.validateSaveBinding(em, body, null, 
publisher);
        
                        BindingDetail result = new BindingDetail();
                         result.setListDescription(new ListDescription());
@@ -579,9 +579,9 @@ public class UDDIPublicationImpl extends 
AuthenticatedService implements UDDIPub
                        tx.begin();
                        
                        UddiEntityPublisher publisher = 
this.getEntityPublisher(em, body.getAuthInfo());
-                       
+                       publisher.populateKeyGeneratorKeys(em);
                        ValidatePublish validator = new 
ValidatePublish(publisher);
-                       validator.validateSaveBusiness(em, body, null);
+                       validator.validateSaveBusiness(em, body, null, 
publisher);
        
                        BusinessDetail result = new BusinessDetail();
                        
@@ -632,9 +632,9 @@ public class UDDIPublicationImpl extends 
AuthenticatedService implements UDDIPub
                        tx.begin();
        
                        UddiEntityPublisher publisher = 
this.getEntityPublisher(em, body.getAuthInfo());
-                       
+                       publisher.populateKeyGeneratorKeys(em);
                        ValidatePublish validator = new 
ValidatePublish(publisher);
-                       validator.validateSaveService(em, body, null);
+                       validator.validateSaveService(em, body, null, 
publisher);
                        
                        ServiceDetail result = new ServiceDetail();
        
@@ -687,8 +687,8 @@ public class UDDIPublicationImpl extends 
AuthenticatedService implements UDDIPub
                        tx.begin();
        
                        UddiEntityPublisher publisher = 
this.getEntityPublisher(em, body.getAuthInfo());
-       
-                       new ValidatePublish(publisher).validateSaveTModel(em, 
body, null);
+                       publisher.populateKeyGeneratorKeys(em);
+                       new ValidatePublish(publisher).validateSaveTModel(em, 
body, null, publisher);
        
                        TModelDetail result = new TModelDetail();
        
@@ -920,6 +920,5 @@ public class UDDIPublicationImpl extends 
AuthenticatedService implements UDDIPub
                        em.remove(existingUddiEntity);
                
        }
-
        
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
index 9936d08..435d236 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
@@ -22,6 +22,7 @@ import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
 import java.util.UUID;
+
 import javax.jws.WebService;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityTransaction;
@@ -29,6 +30,7 @@ import javax.xml.bind.JAXBException;
 import javax.xml.datatype.DatatypeConfigurationException;
 import javax.xml.datatype.DatatypeFactory;
 import javax.xml.ws.Holder;
+
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -838,7 +840,8 @@ public class UDDISubscriptionImpl extends 
AuthenticatedService implements UDDISu
                        tx.begin();
        
                        UddiEntityPublisher publisher = 
this.getEntityPublisher(em, authInfo);
-                       new 
ValidateSubscription(publisher).validateSubscriptions(em, subscription.value);
+                       publisher.populateKeyGeneratorKeys(em);
+                       new 
ValidateSubscription(publisher).validateSubscriptions(em, subscription.value, 
publisher);
                        
                        List<org.uddi.sub_v3.Subscription> apiSubscriptionList 
= subscription.value;
                        for (org.uddi.sub_v3.Subscription apiSubscription : 
apiSubscriptionList) {

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/main/java/org/apache/juddi/keygen/DefaultKeyGenerator.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/keygen/DefaultKeyGenerator.java 
b/juddi-core/src/main/java/org/apache/juddi/keygen/DefaultKeyGenerator.java
index 9ca875a..80c61d0 100644
--- a/juddi-core/src/main/java/org/apache/juddi/keygen/DefaultKeyGenerator.java
+++ b/juddi-core/src/main/java/org/apache/juddi/keygen/DefaultKeyGenerator.java
@@ -17,11 +17,14 @@
 
 package org.apache.juddi.keygen;
 
+import java.util.Iterator;
+import java.util.List;
 import java.util.UUID;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.Property;
+import org.apache.juddi.model.UddiEntityPublisher;
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.FatalErrorException;
 import org.uddi.v3_service.DispositionReportFaultMessage;
@@ -29,19 +32,51 @@ import org.uddi.v3_service.DispositionReportFaultMessage;
 /**
  * The default jUDDI key generator.  Generates a key like this:
  * 
+ * uddiScheme : domain : UUID
+ * 
+ * where domain is the shortest keyGenerator domain. 
+ * 
+ * If no domain is set for this publihser, or the publisher is 'uddi' then
+ * it defaults to the RootDomain:
+ * 
  * uddiScheme : RootDomain : UUID
  * 
  * @author <a href="mailto:[email protected]";>Jeff Faath</a>
  */
 public class DefaultKeyGenerator implements KeyGenerator {
 
-       public String generate() throws DispositionReportFaultMessage {
-               String rootPartition = "";
-               try 
-               { rootPartition = 
AppConfig.getConfiguration().getString(Property.JUDDI_ROOT_PARTITION); }
-               catch(ConfigurationException ce) 
-               { throw new FatalErrorException(new 
ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_ROOT_PARTITION));}
-               
-               return rootPartition + PARTITION_SEPARATOR + UUID.randomUUID();
+       public String generate(UddiEntityPublisher publisher) throws 
DispositionReportFaultMessage {
+               String domain = getDomain(publisher);
+               if (domain==null) {
+                       String rootPartition = "";
+                       try 
+                       { rootPartition = 
AppConfig.getConfiguration().getString(Property.JUDDI_ROOT_PARTITION); }
+                       catch(ConfigurationException ce) 
+                       { throw new FatalErrorException(new 
ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_ROOT_PARTITION));}
+                       domain = rootPartition;
+               }
+               return domain + PARTITION_SEPARATOR + UUID.randomUUID();
        }
+       
+       public static String getDomain(UddiEntityPublisher publisher) {
+               String domain = null;
+               if (publisher==null || 
"uddi".equalsIgnoreCase(publisher.getAuthorizedName())) return domain; 
//default to the rootPartition
+               List<String> domains = publisher.getKeyGeneratorKeys();
+               if (domains!=null && !domains.isEmpty()) {
+                       Iterator<String> iter = domains.iterator();
+                       int partsMax = 1000;
+                       //pick the KeyGenerator with the fewest amount of 
parts, ignoring the subdomain keys. 
+                       while (iter.hasNext()) {
+                               String thisDomain = iter.next();
+                               String[] parts = thisDomain.split(":");
+                               if (domain == null || (2 <= parts.length && 
parts.length < partsMax)) {
+                                       partsMax = parts.length;
+                                       domain = thisDomain;
+                               }
+                       }
+                       domain = domain.substring(0, domain.lastIndexOf(":"));
+               }
+               return domain;
+       }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/main/java/org/apache/juddi/keygen/KeyGenerator.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/keygen/KeyGenerator.java 
b/juddi-core/src/main/java/org/apache/juddi/keygen/KeyGenerator.java
index 4e6073c..f9705fa 100644
--- a/juddi-core/src/main/java/org/apache/juddi/keygen/KeyGenerator.java
+++ b/juddi-core/src/main/java/org/apache/juddi/keygen/KeyGenerator.java
@@ -17,6 +17,7 @@
 
 package org.apache.juddi.keygen;
 
+import org.apache.juddi.model.UddiEntityPublisher;
 import org.uddi.v3_service.DispositionReportFaultMessage;
 
 /**
@@ -30,5 +31,5 @@ public interface KeyGenerator {
        /*
         * Generates a key that is used to save a UDDI entity.
         */
-       public String generate() throws DispositionReportFaultMessage;
+       public String generate(UddiEntityPublisher publisher) throws 
DispositionReportFaultMessage;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java 
b/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
index c6e4c3b..be89d4d 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
@@ -326,7 +326,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
-        public void validateSaveBusiness(EntityManager em, SaveBusiness body, 
Configuration config) throws DispositionReportFaultMessage {
+        public void validateSaveBusiness(EntityManager em, SaveBusiness body, 
Configuration config, UddiEntityPublisher publisher) throws 
DispositionReportFaultMessage {
 
                 if (config == null) {
                         try {
@@ -347,7 +347,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
 
                 for (org.uddi.api_v3.BusinessEntity entity : entityList) {
-                        validateBusinessEntity(em, entity, config);
+                        validateBusinessEntity(em, entity, config, publisher);
                 }
         }
 
@@ -379,7 +379,7 @@ public class ValidatePublish extends ValidateUDDIApi {
 
         }
 
-        public void validateSaveService(EntityManager em, SaveService body, 
Configuration config) throws DispositionReportFaultMessage {
+        public void validateSaveService(EntityManager em, SaveService body, 
Configuration config, UddiEntityPublisher publisher) throws 
DispositionReportFaultMessage {
 
                 if (config == null) {
                         try {
@@ -401,7 +401,7 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 for (org.uddi.api_v3.BusinessService entity : entityList) {
                         // Entity specific data validation
-                        validateBusinessService(em, entity, null, config);
+                        validateBusinessService(em, entity, null, config, 
publisher);
                 }
         }
 
@@ -432,7 +432,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
-        public void validateSaveBinding(EntityManager em, SaveBinding body, 
Configuration config) throws DispositionReportFaultMessage {
+        public void validateSaveBinding(EntityManager em, SaveBinding body, 
Configuration config, UddiEntityPublisher publisher) throws 
DispositionReportFaultMessage {
 
                 if (config == null) {
                         try {
@@ -453,7 +453,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
 
                 for (org.uddi.api_v3.BindingTemplate entity : entityList) {
-                        validateBindingTemplate(em, entity, null, config);
+                        validateBindingTemplate(em, entity, null, config, 
publisher);
                 }
         }
 
@@ -484,7 +484,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
-        public void validateSaveTModel(EntityManager em, SaveTModel body, 
Configuration config) throws DispositionReportFaultMessage {
+        public void validateSaveTModel(EntityManager em, SaveTModel body, 
Configuration config, UddiEntityPublisher publisher) throws 
DispositionReportFaultMessage {
 
                 if (config == null) {
                         try {
@@ -505,7 +505,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
 
                 for (org.uddi.api_v3.TModel entity : entityList) {
-                        validateTModel(em, entity, config);
+                        validateTModel(em, entity, config, publisher);
                 }
         }
 
@@ -642,7 +642,8 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
-        public void validateBusinessEntity(EntityManager em, 
org.uddi.api_v3.BusinessEntity businessEntity, Configuration config) throws 
DispositionReportFaultMessage {
+        public void validateBusinessEntity(EntityManager em, 
org.uddi.api_v3.BusinessEntity businessEntity, 
+                       Configuration config, UddiEntityPublisher publisher) 
throws DispositionReportFaultMessage {
 
                 // A supplied businessEntity can't be null
                 if (businessEntity == null) {
@@ -654,7 +655,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 String entityKey = businessEntity.getBusinessKey();
                 if (entityKey == null || entityKey.length() == 0) {
                         KeyGenerator keyGen = 
KeyGeneratorFactory.getKeyGenerator();
-                        entityKey = keyGen.generate();
+                        entityKey = keyGen.generate(publisher);
                         businessEntity.setBusinessKey(entityKey);
                 } else {
                         // Per section 4.4: keys must be case-folded
@@ -696,11 +697,12 @@ public class ValidatePublish extends ValidateUDDIApi {
                 validateCategoryBag(businessEntity.getCategoryBag(), config, 
false);
                 validateIdentifierBag(businessEntity.getIdentifierBag(), 
config, false);
                 validateDescriptions(businessEntity.getDescription());
-                validateBusinessServices(em, 
businessEntity.getBusinessServices(), businessEntity, config);
+                validateBusinessServices(em, 
businessEntity.getBusinessServices(), businessEntity, config, publisher);
 
         }
 
-        public void validateBusinessServices(EntityManager em, 
org.uddi.api_v3.BusinessServices businessServices, 
org.uddi.api_v3.BusinessEntity parent, Configuration config)
+        public void validateBusinessServices(EntityManager em, 
org.uddi.api_v3.BusinessServices businessServices, 
+                       org.uddi.api_v3.BusinessEntity parent, Configuration 
config, UddiEntityPublisher publisher)
                 throws DispositionReportFaultMessage {
                 // Business services is optional
                 if (businessServices == null) {
@@ -712,12 +714,13 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
 
                 for (org.uddi.api_v3.BusinessService businessService : 
businessServiceList) {
-                        validateBusinessService(em, businessService, parent, 
config);
+                        validateBusinessService(em, businessService, parent, 
config, publisher);
                 }
 
         }
 
-        public void validateBusinessService(EntityManager em, 
org.uddi.api_v3.BusinessService businessService, org.uddi.api_v3.BusinessEntity 
parent, Configuration config)
+        public void validateBusinessService(EntityManager em, 
org.uddi.api_v3.BusinessService businessService, 
+                       org.uddi.api_v3.BusinessEntity parent, Configuration 
config, UddiEntityPublisher publisher)
                 throws DispositionReportFaultMessage {
 
                 // A supplied businessService can't be null
@@ -781,7 +784,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                         boolean entityExists = false;
                         if (entityKey == null || entityKey.length() == 0) {
                                 KeyGenerator keyGen = 
KeyGeneratorFactory.getKeyGenerator();
-                                entityKey = keyGen.generate();
+                                entityKey = keyGen.generate(publisher);
                                 businessService.setServiceKey(entityKey);
                         } else {
 
@@ -866,12 +869,13 @@ public class ValidatePublish extends ValidateUDDIApi {
                         validateNames(businessService.getName());
                         validateCategoryBag(businessService.getCategoryBag(), 
config, false);
                         validateDescriptions(businessService.getDescription());
-                        validateBindingTemplates(em, 
businessService.getBindingTemplates(), businessService, config);
+                        validateBindingTemplates(em, 
businessService.getBindingTemplates(), businessService, config, publisher);
                 }
 
         }
 
-        public void validateBindingTemplates(EntityManager em, 
org.uddi.api_v3.BindingTemplates bindingTemplates, 
org.uddi.api_v3.BusinessService parent, Configuration config)
+        public void validateBindingTemplates(EntityManager em, 
org.uddi.api_v3.BindingTemplates bindingTemplates, 
+                       org.uddi.api_v3.BusinessService parent, Configuration 
config, UddiEntityPublisher publisher)
                 throws DispositionReportFaultMessage {
                 // Binding templates is optional
                 if (bindingTemplates == null) {
@@ -884,13 +888,13 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
 
                 for (org.uddi.api_v3.BindingTemplate bindingTemplate : 
bindingTemplateList) {
-                        validateBindingTemplate(em, bindingTemplate, parent, 
config);
+                        validateBindingTemplate(em, bindingTemplate, parent, 
config, publisher);
                 }
 
         }
 
         public void validateBindingTemplate(EntityManager em, 
org.uddi.api_v3.BindingTemplate bindingTemplate,
-                org.uddi.api_v3.BusinessService parent, Configuration config)
+                org.uddi.api_v3.BusinessService parent, Configuration config, 
UddiEntityPublisher publisher)
                 throws DispositionReportFaultMessage {
 
                 // A supplied bindingTemplate can't be null
@@ -930,7 +934,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 if (entityKey == null || entityKey.length() == 0) {
                         validateNotSigned(bindingTemplate);
                         KeyGenerator keyGen = 
KeyGeneratorFactory.getKeyGenerator();
-                        entityKey = keyGen.generate();
+                        entityKey = keyGen.generate(publisher);
                         bindingTemplate.setBindingKey(entityKey);
                 } else {
 
@@ -1024,7 +1028,7 @@ public class ValidatePublish extends ValidateUDDIApi {
 
         }
 
-        public void validateTModel(EntityManager em, org.uddi.api_v3.TModel 
tModel, Configuration config) throws DispositionReportFaultMessage {
+        public void validateTModel(EntityManager em, org.uddi.api_v3.TModel 
tModel, Configuration config, UddiEntityPublisher publisher) throws 
DispositionReportFaultMessage {
                 // A supplied tModel can't be null
                 if (tModel == null) {
                         throw new ValueNotAllowedException(new 
ErrorMessage("errors.tmodel.NullInput"));
@@ -1034,7 +1038,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 String entityKey = tModel.getTModelKey();
                 if (entityKey == null || entityKey.length() == 0) {
                         KeyGenerator keyGen = 
KeyGeneratorFactory.getKeyGenerator();
-                        entityKey = keyGen.generate();
+                        entityKey = keyGen.generate(publisher);
                         validateNotSigned(tModel);
                         tModel.setTModelKey(entityKey);
                 } else {

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
 
b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
index 17f41f4..f334f78 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
@@ -20,8 +20,6 @@ import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.HashSet;
 import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import javax.persistence.EntityManager;
 import javax.xml.datatype.DatatypeConfigurationException;
@@ -56,7 +54,7 @@ public class ValidateSubscription extends ValidateUDDIApi {
     }
     private DatatypeFactory df = null;
 
-    public void validateSubscriptions(EntityManager em, 
List<org.uddi.sub_v3.Subscription> entityList) throws 
DispositionReportFaultMessage {
+    public void validateSubscriptions(EntityManager em, 
List<org.uddi.sub_v3.Subscription> entityList, UddiEntityPublisher publisher) 
throws DispositionReportFaultMessage {
 
         // No null or empty list
         if (entityList == null || entityList.size() == 0) {
@@ -64,11 +62,11 @@ public class ValidateSubscription extends ValidateUDDIApi {
         }
 
         for (org.uddi.sub_v3.Subscription entity : entityList) {
-            validateSubscription(em, entity);
+            validateSubscription(em, entity, publisher);
         }
     }
 
-    private void validateSubscription(EntityManager em, 
org.uddi.sub_v3.Subscription subscription) throws DispositionReportFaultMessage 
{
+    private void validateSubscription(EntityManager em, 
org.uddi.sub_v3.Subscription subscription, UddiEntityPublisher publisher) 
throws DispositionReportFaultMessage {
 
         // A supplied subscription can't be null
         if (subscription == null) {
@@ -86,7 +84,7 @@ public class ValidateSubscription extends ValidateUDDIApi {
         //no key specified, make a new one
         if (entityKey == null || entityKey.length() == 0) {
             KeyGenerator keyGen = KeyGeneratorFactory.getKeyGenerator();
-            entityKey = keyGen.generate();
+            entityKey = keyGen.generate(publisher);
             subscription.setSubscriptionKey(entityKey);
         } else {
             //key specified, validate it

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/test/java/org/apache/juddi/api/impl/UDDIPublicationImplExt.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/test/java/org/apache/juddi/api/impl/UDDIPublicationImplExt.java
 
b/juddi-core/src/test/java/org/apache/juddi/api/impl/UDDIPublicationImplExt.java
index 0209aeb..44e0c6d 100644
--- 
a/juddi-core/src/test/java/org/apache/juddi/api/impl/UDDIPublicationImplExt.java
+++ 
b/juddi-core/src/test/java/org/apache/juddi/api/impl/UDDIPublicationImplExt.java
@@ -17,9 +17,11 @@ package org.apache.juddi.api.impl;
 
 import java.util.Date;
 import java.util.List;
+
 import javax.persistence.EntityManager;
 import javax.persistence.EntityTransaction;
 import javax.xml.ws.WebServiceContext;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.config.PersistenceManager;
@@ -62,9 +64,8 @@ public class UDDIPublicationImplExt extends 
UDDIPublicationImpl {
                         tx.begin();
 
                         UddiEntityPublisher publisher = 
this.getEntityPublisher(em, body.getAuthInfo());
-
                         ValidatePublish validator = new 
ValidatePublish(publisher);
-                        validator.validateSaveBusiness(em, body, null);
+                        validator.validateSaveBusiness(em, body, null, 
publisher);
 
                         BusinessDetail result = new BusinessDetail();
 

http://git-wip-us.apache.org/repos/asf/juddi/blob/034954fc/juddi-core/src/test/java/org/apache/juddi/keygen/KeyGeneratorTest.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/test/java/org/apache/juddi/keygen/KeyGeneratorTest.java 
b/juddi-core/src/test/java/org/apache/juddi/keygen/KeyGeneratorTest.java
index e8f2336..9a33ff1 100644
--- a/juddi-core/src/test/java/org/apache/juddi/keygen/KeyGeneratorTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/keygen/KeyGeneratorTest.java
@@ -14,10 +14,14 @@
  */
 package org.apache.juddi.keygen;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.config.Property;
+import org.apache.juddi.model.UddiEntityPublisher;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -70,8 +74,18 @@ public class KeyGeneratorTest
                try {
                        KeyGenerator keyGenerator = 
KeyGeneratorFactory.forceNewKeyGenerator();
                        
Assert.assertEquals(org.apache.juddi.keygen.DefaultKeyGenerator.class, 
keyGenerator.getClass());
-                       String key = keyGenerator.generate();
+                       String key = keyGenerator.generate(null);
                        Assert.assertNotNull(key);
+                       
Assert.assertTrue(key.startsWith("uddi:juddi.apache.org"));
+                       UddiEntityPublisher publisher = new 
UddiEntityPublisher();
+                       
+                       List<String> keyGeneratorKeys = new ArrayList<String>();
+                       keyGeneratorKeys.add("uddi:mydomain.org:keyGenerator");
+                       publisher.setKeyGeneratorKeys(keyGeneratorKeys);
+                       String key2 = keyGenerator.generate(publisher);
+                       Assert.assertNotNull(key2);
+                       Assert.assertTrue(key2.startsWith("uddi:mydomain.org"));
+                       
                } catch (Exception e) {
                        logger.error(e.getMessage(),e);
                        Assert.fail("unexpected");


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to