Merge branch 'master' into bug/JUDDI-977
diff --git a/juddi-client-cli/pom.xml b/juddi-client-cli/pom.xml
index 9340343..b9b1b3b 100644
--- a/juddi-client-cli/pom.xml
+++ b/juddi-client-cli/pom.xml
@@ -57,14 +57,6 @@
     </dependencies>
     <build>
         <plugins>
-            <!-- examples are not very useful from a maven repo, so don't put it there -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-deploy-plugin</artifactId>
-                <configuration>
-                    <skip>true</skip>
-                </configuration>
-            </plugin>
             <plugin>
               <artifactId>maven-assembly-plugin</artifactId>
               <configuration>
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java
index db8c970..f6c7999 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java
@@ -238,7 +238,7 @@
                                         UDDIClerk.WSDL[] wsdls = new UDDIClerk.WSDL[numberOfWslds];
                                         for (int w = 0; w < wsdls.length; w++) {
 
-                                                UDDIClerk.WSDL wsdl = uddiClerk.new WSDL();
+                                                UDDIClerk.WSDL wsdl = new UDDIClerk.WSDL();
                                                 String fileName = config.getString("client.clerks.clerk(" + i + ").wsdl(" + w + ")");
                                                 wsdl.setFileName(fileName);
                                                 if (!new File(fileName).exists()) {
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
index f500a52..29c54b9 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
@@ -1489,7 +1489,7 @@
         /**
          * Internal classed used for wsdl registration
          */
-        public class WSDL {
+        public static class WSDL {
 
                 private String businessKey;
                 private String keyDomain;
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java
index f210b49..6c973c1 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java
@@ -31,7 +31,7 @@
 public class UDDIClerkServlet extends HttpServlet {
 	
 	private static final long serialVersionUID = -91998529871296125L;
-	private Log logger = LogFactory.getLog(UDDIClerkServlet.class);
+	private static final Log logger = LogFactory.getLog(UDDIClerkServlet.class);
 	private UDDIClient manager = null;
 	
 	/**
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/WebHelper.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/WebHelper.java
index 5935e05..67345ee 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/WebHelper.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/WebHelper.java
@@ -75,7 +75,7 @@
 			
 			logger.info("Reading the clientName from the clientConfig file " + clientConfigFile);
 			UDDIClient client = new UDDIClient(clientConfigFile);
-			if (clientConfigFile==null && client.getName()==null) {
+			if (client.getName()==null) {
 				logger.warn("Deprecated, client name set to 'default', however it should be provided in the uddi.xml");
 				clientName = "default";
 			}
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AES128Cryptor.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AES128Cryptor.java
index a622acf..a309236 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AES128Cryptor.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AES128Cryptor.java
@@ -16,16 +16,15 @@
  */

 package org.apache.juddi.v3.client.cryptor;

 

+import java.io.UnsupportedEncodingException;

 import java.security.InvalidAlgorithmParameterException;

 import java.security.InvalidKeyException;

 import java.security.NoSuchAlgorithmException;

 import java.security.spec.InvalidKeySpecException;

 

 import javax.crypto.BadPaddingException;

-import javax.crypto.Cipher;

 import javax.crypto.IllegalBlockSizeException;

 import javax.crypto.NoSuchPaddingException;

-import javax.crypto.spec.SecretKeySpec;

 

 /**

  * AES 128 bit encryption

@@ -54,12 +53,12 @@
         }

 

         @Override

-        public String encrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {

+        public String encrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {

                 return super.encrypt(str);

         }

 

         @Override

-        public String decrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {

+        public String decrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {

                 return super.decrypt(str);

         }

 

diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AES256Cryptor.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AES256Cryptor.java
index afec33b..fb9237f 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AES256Cryptor.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AES256Cryptor.java
@@ -16,16 +16,15 @@
  */

 package org.apache.juddi.v3.client.cryptor;

 

+import java.io.UnsupportedEncodingException;

 import java.security.InvalidAlgorithmParameterException;

 import java.security.InvalidKeyException;

 import java.security.NoSuchAlgorithmException;

 import java.security.spec.InvalidKeySpecException;

 

 import javax.crypto.BadPaddingException;

-import javax.crypto.Cipher;

 import javax.crypto.IllegalBlockSizeException;

 import javax.crypto.NoSuchPaddingException;

-import javax.crypto.spec.SecretKeySpec;

 

 /**

  * AES 256 bit encryption. <h1> Requires Unlimited Strength Java Cryptographic

@@ -55,12 +54,12 @@
         }

 

         @Override

-        public String encrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {

+        public String encrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {

                 return super.encrypt(str);

         }

 

         @Override

-        public String decrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {

+        public String decrypt(String str) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {

                 return super.decrypt(str);

         }

 

diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AESCryptorAbstract.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AESCryptorAbstract.java
index 7d934b5..5e2ae60 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AESCryptorAbstract.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/AESCryptorAbstract.java
@@ -16,6 +16,7 @@
  */

 package org.apache.juddi.v3.client.cryptor;

 

+import java.io.UnsupportedEncodingException;

 import java.security.InvalidAlgorithmParameterException;

 import java.security.InvalidKeyException;

 import java.security.NoSuchAlgorithmException;

@@ -83,13 +84,14 @@
             InvalidAlgorithmParameterException,

             InvalidKeyException,

             IllegalBlockSizeException,

-            BadPaddingException {

+            BadPaddingException,

+            UnsupportedEncodingException {

         byte[] raw = hexToBytes(getKey()); //

         SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

         // Instantiate the cipher

         Cipher cipher = Cipher.getInstance("AES");

         cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

-        byte[] encrypted = cipher.doFinal(cleartext.getBytes());

+        byte[] encrypted = cipher.doFinal(cleartext.getBytes("UTF-8"));

         return asHex(encrypted);

     }

     

@@ -103,7 +105,8 @@
             InvalidAlgorithmParameterException,

             InvalidKeyException,

             IllegalBlockSizeException,

-            BadPaddingException {

+            BadPaddingException,

+            UnsupportedEncodingException{

         byte[] raw = hexToBytes(getKey()); //

         SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

         // Instantiate the cipher

@@ -111,7 +114,7 @@
         cipher.init(Cipher.DECRYPT_MODE, skeySpec);

         byte[] original = cipher.doFinal(hexToBytes(str));

         

-        return new String(original);

+        return new String(original, "UTF-8");

     }

 

     private static String asHex(byte buf[]) {

diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/Cryptor.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/Cryptor.java
index 0cd8312..9f8dbcd 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/Cryptor.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/Cryptor.java
@@ -16,6 +16,7 @@
  */

 package org.apache.juddi.v3.client.cryptor;

 

+import java.io.UnsupportedEncodingException;

 import java.security.InvalidAlgorithmParameterException;

 import java.security.InvalidKeyException;

 import java.security.NoSuchAlgorithmException;

@@ -40,6 +41,7 @@
          * @throws InvalidKeyException

          * @throws IllegalBlockSizeException

          * @throws BadPaddingException

+         * @throws java.io.UnsupportedEncodingException

          */

         String encrypt(String str)

                 throws NoSuchPaddingException,

@@ -47,7 +49,8 @@
                 InvalidAlgorithmParameterException,

                 InvalidKeyException,

                 IllegalBlockSizeException,

-                BadPaddingException;

+                BadPaddingException,

+                UnsupportedEncodingException;

 

         /**

          * decrypts the string

@@ -62,13 +65,15 @@
          * @throws InvalidKeyException

          * @throws IllegalBlockSizeException

          * @throws BadPaddingException

+         * @throws java.io.UnsupportedEncodingException

          */

         public String decrypt(String str) throws NoSuchPaddingException,

                 NoSuchAlgorithmException,

                 InvalidAlgorithmParameterException,

                 InvalidKeyException,

                 IllegalBlockSizeException,

-                BadPaddingException;

+                BadPaddingException,

+                UnsupportedEncodingException;

 

         public String newKey();

 }

diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/DefaultCryptor.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/DefaultCryptor.java
index a42cd42..040ca27 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/DefaultCryptor.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/DefaultCryptor.java
@@ -16,6 +16,7 @@
  */

 package org.apache.juddi.v3.client.cryptor;

 

+import java.io.UnsupportedEncodingException;

 import java.security.InvalidAlgorithmParameterException;

 import java.security.InvalidKeyException;

 import java.security.NoSuchAlgorithmException;

@@ -95,10 +96,11 @@
              InvalidAlgorithmParameterException,

              InvalidKeyException,

              IllegalBlockSizeException,

-             BadPaddingException {

+             BadPaddingException,

+             UnsupportedEncodingException {

                 byte[] encs = crypt(Cipher.ENCRYPT_MODE, str.getBytes());

                 encs = Base64.encodeBase64(encs);

-                return new String(encs);

+                return new String(encs, "UTF-8");

         }

 

         public String decrypt(String str) throws NoSuchPaddingException,

@@ -106,9 +108,10 @@
              InvalidAlgorithmParameterException,

              InvalidKeyException,

              IllegalBlockSizeException,

-             BadPaddingException {

-                byte[] encs = crypt(Cipher.DECRYPT_MODE, Base64.decodeBase64(str.getBytes()));

-                return new String(encs);

+             BadPaddingException,

+             UnsupportedEncodingException {

+                byte[] encs = crypt(Cipher.DECRYPT_MODE, Base64.decodeBase64(str.getBytes("UTF-8")));

+                return new String(encs, "UTF-8");

         }

 

         @Override

diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/DigSigUtil.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/DigSigUtil.java
index fd8628d..b773c19 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/DigSigUtil.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/DigSigUtil.java
@@ -582,7 +582,7 @@
                                                 TrustAnchor ta = pkixResult.getTrustAnchor();
                                                 X509Certificate cert = ta.getTrustedCert();
 
-                                                logger.info("trust chain validated X509 public key " + signingcert.getSubjectDN().toString());
+                                                logger.info("trust chain validated X509 public key " + signingcert.getSubjectDN().toString() + " issued by " + cert.getPublicKey().toString());
                                         } catch (Exception ex) {
                                                 OutErrorMessage.set("Certificate status Trust validation failed: " + ex.getMessage() + "." + OutErrorMessage.get());
                                         }
@@ -702,11 +702,12 @@
                 }
                 
                 if (!ksLoaded) {
+                        FileInputStream fis=null;
                         try {
                                 //File f = new File(map.getProperty(TRUSTSTORE_FILE));
                                 if (f.exists())
                                 {
-                                        FileInputStream fis = new FileInputStream(f);
+                                        fis = new FileInputStream(f);
                                         ks.load(fis, (map.getProperty(TRUSTSTORE_FILE_PASSWORD)).toCharArray());
                                         fis.close();
                                         ksLoaded = true;
@@ -715,7 +716,10 @@
                         } catch (Exception x) {
                                 logger.warn("unable to load truststore from file "+map.getProperty(TRUSTSTORE_FILE)+" "+ x.getMessage());
                                 logger.debug("unable to load truststore from file "+ x.getMessage(), x);
-                                
+                        }
+                        finally {
+                                if (fis!=null)
+                                        fis.close();
                         }
                 }
 
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/TransportSecurityHelper.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/TransportSecurityHelper.java
index d88cb7d..ed8b07e 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/TransportSecurityHelper.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/TransportSecurityHelper.java
@@ -29,7 +29,7 @@
 
 /**
  *
- * @author alex
+ * @author alexoree@apache.org
  */
 public class TransportSecurityHelper {
 
@@ -42,7 +42,7 @@
                         String st = System.getProperty("javax.net.ssl.trustStore");
                         log.info("Attempting to initialize keystore and truststore from " + s + " " + st);
                         if (s == null) {
-                                log.warn("keystore isn't defined! " + s);
+                                log.warn("keystore isn't defined!");
                                 return false;
                         } else if (st == null) {
                                 log.warn("truststore isn't defined! " + s);
@@ -75,6 +75,7 @@
                                 }
 
                                 if (keystore.exists()) {
+                                        FileInputStream fis = null;
                                         try {
                                                 log.info("Using keystore from " + keystore.getAbsolutePath() + " current dir is " + currentdir.getAbsolutePath());
 
@@ -86,22 +87,37 @@
                                                         = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
 
                                                 KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
-                                                ks.load(new FileInputStream(keystore), pwd.toCharArray());
+                                                try {
+                                                        fis = new FileInputStream(keystore);
+                                                        ks.load(fis, pwd.toCharArray());
+                                                } catch (Exception ex) {
+                                                        log.warn("unable to load key store " + keystore.getAbsolutePath(), ex);
+                                                } finally {
+                                                        if (fis != null) {
+                                                                fis.close();
+                                                        }
+                                                }
 
                                                 kmf.init(ks, pwd.toCharArray());
 
                                                 String alg = TrustManagerFactory.getDefaultAlgorithm();
                                                 TrustManagerFactory tmFact = TrustManagerFactory.getInstance(alg);
 
-                                                FileInputStream fis = new FileInputStream(st);
+                                                fis = new FileInputStream(st);
                                                 KeyStore kst = KeyStore.getInstance("jks");
-                                                kst.load(fis, pwdt.toCharArray());
-                                                fis.close();
+                                                try {
+                                                        kst.load(fis, pwdt.toCharArray());
+                                                } catch (Exception ex) {
+                                                        log.warn("unable to load key store " + st, ex);
+                                                } finally {
+                                                        if (fis != null) {
+                                                                fis.close();
+                                                        }
+                                                }
 
                                                 tmFact.init(kst);
 
-                                                TrustManager[] tms = tmFact.getTrustManagers();
-
+                                                //TrustManager[] tms = tmFact.getTrustManagers();
                                                 sc.init(kmf.getKeyManagers(), null, null);
                                                 HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
                                                 ((BindingProvider) webServicePort).getRequestContext().put("com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory", sc.getSocketFactory());
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/TripleDESCrytor.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/TripleDESCrytor.java
index 0fe75b6..fcd90bc 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/TripleDESCrytor.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/TripleDESCrytor.java
@@ -70,7 +70,7 @@
             cipher.init(Cipher.ENCRYPT_MODE, key);
             byte[] plainText = clear.getBytes(UNICODE_FORMAT);
             byte[] encryptedText = cipher.doFinal(plainText);
-            encryptedString = new String(Base64.encodeBase64(encryptedText));
+            encryptedString = new String(Base64.encodeBase64(encryptedText), UNICODE_FORMAT);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -88,7 +88,7 @@
             kgen.init(168);
             SecretKey skey = kgen.generateKey();
             byte[] raw = skey.getEncoded();
-            return new String(Base64.encodeBase64(raw));
+            return new String(Base64.encodeBase64(raw),UNICODE_FORMAT);
         } catch (Exception ex) {
             ex.printStackTrace();;
         }
@@ -100,9 +100,9 @@
         String encryptedString = str;
         try {
             cipher.init(Cipher.DECRYPT_MODE, key);
-            byte[] encryptedText = Base64.decodeBase64(str.getBytes());
+            byte[] encryptedText = Base64.decodeBase64(str.getBytes(UNICODE_FORMAT));
             byte[] plainTest = cipher.doFinal(encryptedText);
-            encryptedString = new String(plainTest);
+            encryptedString = new String(plainTest, UNICODE_FORMAT);
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/MapUDDIv2Tov3.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/MapUDDIv2Tov3.java
index 343876b..b7c04ec 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/MapUDDIv2Tov3.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/MapUDDIv2Tov3.java
@@ -286,7 +286,7 @@
         }
 
         private static TModelInstanceDetails MapTModelInstanceDetails(org.uddi.api_v2.TModelInstanceDetails tModelInstanceDetails) {
-                if (tModelInstanceDetails == null | tModelInstanceDetails.getTModelInstanceInfo().isEmpty()) {
+                if (tModelInstanceDetails == null || tModelInstanceDetails.getTModelInstanceInfo()==null || tModelInstanceDetails.getTModelInstanceInfo().isEmpty()) {
                         return null;
                 }
                 TModelInstanceDetails r = new TModelInstanceDetails();
@@ -618,7 +618,6 @@
                                 if (next instanceof DispositionReport) {
 
                                         DispositionReport z = (DispositionReport) next;
-                                        Result x = new Result();
                                         r.addAll(MapResult(z.getFaultInfo().getResult()));
 
                                 }
@@ -1085,6 +1084,7 @@
                                      assertionStatusReport.getAssertionStatusItem().get(i).getKeyedReference().getKeyName(),
                                      assertionStatusReport.getAssertionStatusItem().get(i).getKeyedReference().getKeyValue()));
                         }
+                        r.add(x);
                 }
                 return r;
         }
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/PolicyLocalFirst.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/PolicyLocalFirst.java
index 49afcf8..51de784 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/PolicyLocalFirst.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/PolicyLocalFirst.java
@@ -33,12 +33,16 @@
 	 */
 	public PolicyLocalFirst(Properties properties) {
 		super(properties);
-		if (properties!=null) {
+		init(properties);
+	}
+        
+        private static synchronized void init(Properties properties){
+                if (properties!=null) {
 			local = properties.getProperty(JUDDI_CLIENT_LOCAL, DEFAULT_CLIENT_LOCAL);
 		} else {
 			local = DEFAULT_CLIENT_LOCAL;
 		}
-	}
+        }
 	
 	public String select(Topology topology) {
 		
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
index 7f79c98..e270761 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
@@ -76,7 +76,8 @@
 		this.clerk = clerk;

 		this.urlLocalizer = urlLocalizer;

 		this.properties = properties;

-		if (properties == null) properties = clerk.getUDDINode().getProperties();

+		if (properties == null) 

+                        this.properties = clerk.getUDDINode().getProperties();

 	}

 	

 	public ServiceLocator withCache(URL baseCallbackURL) throws ConfigurationException {

diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java
index 18e202d..4c9baaa 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java
@@ -213,9 +213,7 @@
 	

 	public void removeAll() {

 		log.info("Flushing the client side " + clerk.getManagerName() + " UDDIServiceCache ");

-		for (String key : serviceLocationMap.keySet()) {

-			serviceLocationMap.get(key);

-		}

+                serviceLocationMap.clear();

 	}

 	/**

 	 * Adds or updates epr information for the given serviceKey.

diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/JAXWSTransport.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/JAXWSTransport.java
index 1593e64..be36ea5 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/JAXWSTransport.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/JAXWSTransport.java
@@ -102,7 +102,7 @@
                         }
                         if (endpointURL != null) {
                                 if (endpointURL.toLowerCase().startsWith("http:")){
-                                        logger.warn("You should consider use a secure protocol (https) when sending your password!");
+                                        logger.warn("You should consider using a secure protocol (https) when sending your password!");
                                 }
                                 Map<String, Object> requestContext = ((BindingProvider) securityService).getRequestContext();
                                 requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/JAXWSv2TranslationTransport.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/JAXWSv2TranslationTransport.java
index f78f1d8..6f25000 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/JAXWSv2TranslationTransport.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/JAXWSv2TranslationTransport.java
@@ -154,7 +154,7 @@
                                 endpointURL = client.getClientConfig().getUDDINode(nodeName).getPublishUrl();
                         }
                          if (endpointURL.toLowerCase().startsWith("http:")){
-                                        logger.warn("You should consider use a secure protocol (https) when sending your password!");
+                                        logger.warn("You should consider using a secure protocol (https) when sending your password!");
                                 }
                         Map<String, Object> requestContext = ((BindingProvider) securityv2).getRequestContext();
                         requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/Inquiry3to2.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/Inquiry3to2.java
index 24cfad9..3557b2c 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/Inquiry3to2.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/Inquiry3to2.java
@@ -169,6 +169,7 @@
                                 oi.setNodeID(z.getOperator());
                                 oi.setAuthorizedName(z.getBusinessEntity().get(0).getAuthorizedName());
                         } catch (Exception ex) {
+                                logger.warn(ex.getMessage(), ex);
                         }
                         if (oi.getAuthorizedName() != null) {
                                 continue;
@@ -181,6 +182,7 @@
                                 oi.setNodeID(z.getOperator());
                                 oi.setAuthorizedName(z.getTModel().get(0).getAuthorizedName());
                         } catch (Exception ex) {
+                                logger.warn(ex.getMessage(), ex);
                         }
                         if (oi.getAuthorizedName() != null) {
                                 continue;
@@ -201,6 +203,7 @@
                                 oi.setNodeID(z.getOperator());
                                 oi.setAuthorizedName(z2.getBusinessEntity().get(0).getAuthorizedName());
                         } catch (Exception ex) {
+                                logger.warn(ex.getMessage(), ex);
                         }
                         ret.getOperationalInfo().add(oi);
                         ret.setTruncated(false);
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java
index 4d7886a..fb6384e 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java
@@ -119,7 +119,7 @@
                 Transformer trans = transFactory.newTransformer();

                 StringWriter sw = new StringWriter();

                 trans.transform(new DOMSource(element), new StreamResult(sw));

-                return new String(sw.toString());

+                return sw.toString();

         }

 

         @SuppressWarnings("unchecked")

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java
index 0868501..3fde39f 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java
@@ -47,13 +47,21 @@
  */

 public abstract class AuthenticatedService {

 

+        /**

+         * @return the node

+         */

+        public static String getNode() {

+            return node;

+        }

+

+        public static final String UTF8 = "UTF-8";

         public static final int AUTHTOKEN_ACTIVE = 1;

         public static final int AUTHTOKEN_RETIRED = 0;

         static final Log logger = LogFactory.getLog(AuthenticatedService.class);

         /**

          * the node id of this server instance, as loaded from the config file

          */

-        protected static String node = "UNDEFINED_NODE_NAME";

+        private static String node = "UNDEFINED_NODE_NAME";

         protected String baseUrlSSL = "UNDEFINED";

         protected String baseUrl = "UNDEFINED";

 

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 b451556..817c284 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
@@ -444,11 +444,11 @@
                                 if (obj == null) {

                                         throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.TModelNotFound", entityKey));

                                 }

-                                if (!obj.getNodeId().equals(node)) {

-                                        throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.TModelNodeOwner", entityKey + " this node " + node + " owning node " + obj.getNodeId()));

+                                if (!obj.getNodeId().equals(getNode())) {

+                                        throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.TModelNodeOwner", entityKey + " this node " + getNode() + " owning node " + obj.getNodeId()));

                                 }

                                 em.remove(obj);

-                                changes.add(UDDIPublicationImpl.getChangeRecord_deleteTModelDelete(entityKey, node));

+                                changes.add(UDDIPublicationImpl.getChangeRecord_deleteTModelDelete(entityKey, getNode()));

 

                         }

 

@@ -1365,7 +1365,7 @@
                         if (!((Publisher) publisher).isAdmin()) {

                                 throw new UserMismatchException(new ErrorMessage("errors.AdminReqd"));

                         }

-                        new ValidateReplication(publisher).validateSetReplicationNodes(replicationConfiguration, em, node, AppConfig.getConfiguration());

+                        new ValidateReplication(publisher).validateSetReplicationNodes(replicationConfiguration, em, getNode(), AppConfig.getConfiguration());

 

                         org.apache.juddi.model.ReplicationConfiguration model = null;

                         logger.info(publisher.getAuthorizedName() + " is setting the replication config from " + getRequestorsIPAddress());// + " " + sw.toString());

@@ -1430,7 +1430,7 @@
         }

 

         @Override

-        public org.uddi.repl_v3.ReplicationConfiguration getReplicationNodes(String authInfo) throws DispositionReportFaultMessage, RemoteException {

+        public synchronized org.uddi.repl_v3.ReplicationConfiguration getReplicationNodes(String authInfo) throws DispositionReportFaultMessage, RemoteException {

                 long startTime = System.currentTimeMillis();

                 org.uddi.repl_v3.ReplicationConfiguration r = new org.uddi.repl_v3.ReplicationConfiguration();

 

@@ -1467,7 +1467,7 @@
 

                         r.setCommunicationGraph(new CommunicationGraph());

                         Operator op = new Operator();

-                        op.setOperatorNodeID(node);

+                        op.setOperatorNodeID(getNode());

                         op.setSoapReplicationURL(baseUrlSSL + "replication/services/replication");

 

                         op.getContact().add(new Contact());

@@ -1475,7 +1475,7 @@
                         op.setOperatorStatus(OperatorStatusType.NORMAL);

 

                         r.getOperator().add(op);

-                        r.getCommunicationGraph().getNode().add(node);

+                        r.getCommunicationGraph().getNode().add(getNode());

                         r.getCommunicationGraph().getControlledMessage().add("*");

                         long procTime = System.currentTimeMillis() - startTime;

                         r.setSerialNumber(0);

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java
index 3421d81..a05582e 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java
@@ -59,6 +59,7 @@
 import org.apache.juddi.v3.client.UDDIService;

 import org.apache.juddi.v3.error.ErrorMessage;

 import org.apache.juddi.v3.error.FatalErrorException;

+import org.apache.juddi.v3.error.InvalidValueException;

 import org.apache.juddi.v3.error.TransferNotAllowedException;

 import org.apache.juddi.validation.ValidateCustodyTransfer;

 import org.uddi.api_v3.OperationalInfo;

@@ -94,6 +95,10 @@
         public UDDICustodyTransferImpl() {

                 super();

                 serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass());

+                init();

+        }

+        

+        private static synchronized void init() {

                 if (df == null) {

                         try {

                                 df = DatatypeFactory.newInstance();

@@ -120,7 +125,12 @@
 

                         org.uddi.custody_v3.TransferToken apiTransferToken = body.getTransferToken();

                         if (apiTransferToken != null) {

-                                String transferTokenId = new String(apiTransferToken.getOpaqueToken());

+                                String transferTokenId;

+                                try {

+                                    transferTokenId = new String(apiTransferToken.getOpaqueToken(), UTF8);

+                                } catch (UnsupportedEncodingException ex) {

+                                    throw new InvalidValueException(new ErrorMessage("errors.stringEncoding"));

+                                }

                                 org.apache.juddi.model.TransferToken modelTransferToken = em.find(org.apache.juddi.model.TransferToken.class, transferTokenId);

                                 if (modelTransferToken != null) {

                                         em.remove(modelTransferToken);

@@ -194,8 +204,12 @@
                         String transferKey = TRANSFER_TOKEN_PREFIX + UUID.randomUUID();

                         org.apache.juddi.model.TransferToken transferToken = new org.apache.juddi.model.TransferToken();

                         transferToken.setTransferToken(transferKey);

-                        // For output

-                        opaqueToken.value = transferKey.getBytes();

+                        try {

+                            // For output

+                            opaqueToken.value = transferKey.getBytes(UTF8);

+                        } catch (UnsupportedEncodingException ex) {

+                            throw new InvalidValueException(new ErrorMessage("errors.stringEncoding"));

+                        }

 

                         GregorianCalendar gc = new GregorianCalendar();

                         gc.add(GregorianCalendar.DAY_OF_MONTH, transferExpirationDays);

@@ -286,21 +300,21 @@
                                         transferCustody.setKeyBag(body.getKeyBag());

                                         transferCustody.setTransferOperationalInfo(new TransferOperationalInfo());

                                         transferCustody.getTransferOperationalInfo().setAuthorizedName(publisher.getAuthorizedName());

-                                        transferCustody.getTransferOperationalInfo().setNodeID(node);

+                                        transferCustody.getTransferOperationalInfo().setNodeID(getNode());

 

                                         //and trigger the transfer

-                                        logger.info("AUDIT, transfering " + transferCustody.getKeyBag().getKey().size() + " entities to " + publisher.getAuthorizedName() + " at node " + node + " from source " + sourceNode);

+                                        logger.info("AUDIT, transfering " + transferCustody.getKeyBag().getKey().size() + " entities to " + publisher.getAuthorizedName() + " at node " + getNode() + " from source " + sourceNode);

                                         replicationClient.transferCustody(transferCustody);

                                 } catch (DispositionReportFaultMessage df) {

-                                        logger.error("Unable to transfer entities from " + sourceNode + " to node " + node + " to user " + publisher.getAuthorizedName(), df);

+                                        logger.error("Unable to transfer entities from " + sourceNode + " to node " + getNode() + " to user " + publisher.getAuthorizedName(), df);

                                         throw new TransferNotAllowedException(new ErrorMessage("E_transferBlocked", df.getMessage()));

                                 } catch (Exception ex) {

-                                        logger.error("Unable to transfer entities from " + sourceNode + " to node " + node + " to user " + publisher.getAuthorizedName(), ex);

+                                        logger.error("Unable to transfer entities from " + sourceNode + " to node " + getNode() + " to user " + publisher.getAuthorizedName(), ex);

                                         throw new TransferNotAllowedException(new ErrorMessage("E_transferBlocked", ex.getMessage()));

                                 }

 

                         } else {

-                                changes.addAll(executeTransfer(body, em, publisher.getAuthorizedName(), node));

+                                changes.addAll(executeTransfer(body, em, publisher.getAuthorizedName(), getNode()));

                                 //all of the items to be transfer are owned locally by *this node.

 

                         }

@@ -310,7 +324,7 @@
                         for (ChangeRecord c : changes) {

                                 try {

                                         c.setChangeID(new ChangeRecordIDType());

-                                        c.getChangeID().setNodeID(node);

+                                        c.getChangeID().setNodeID(getNode());

                                         c.getChangeID().setOriginatingUSN(null);

                                         ReplicationNotifier.Enqueue(MappingApiToModel.mapChangeRecord(c));

                                 } catch (UnsupportedEncodingException ex) {

@@ -444,7 +458,12 @@
 

                 // After transfer is finished, the token can be removed

                 org.uddi.custody_v3.TransferToken apiTransferToken = body.getTransferToken();

-                String transferTokenId = new String(apiTransferToken.getOpaqueToken());

+                String transferTokenId;

+                try {

+                    transferTokenId = new String(apiTransferToken.getOpaqueToken(), UTF8);

+                } catch (UnsupportedEncodingException ex) {

+                    throw new InvalidValueException(new ErrorMessage("errors.stringEncoding"));

+                }

                 org.apache.juddi.model.TransferToken modelTransferToken = em.find(org.apache.juddi.model.TransferToken.class, transferTokenId);

                 em.remove(modelTransferToken);

                 return changes;

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 af2e32f..8067a76 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
@@ -157,7 +157,9 @@
         			org.apache.juddi.model.BusinessService modelBusinessService = null;

         			try {

         				modelBusinessService=em.find(org.apache.juddi.model.BusinessService.class, serviceKey);

-        			} catch (Exception e) {}

+        			} catch (Exception e) {

+                                        log.debug(e.getMessage(), e);

+                                }

 	                if (modelBusinessService == null)

 	                    throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.ServiceNotFound", serviceKey));

 

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 eb1885c..8c74893 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
@@ -163,14 +163,14 @@
 

                                                 em.merge(existingPubAssertion);

                                                 persistNewAssertion = false;

-                                                changes.add(getChangeRecord_deletePublisherAssertion(apiPubAssertion, node, existingPubAssertion.getToCheck().equalsIgnoreCase("false"), existingPubAssertion.getFromCheck().equalsIgnoreCase("false"), System.currentTimeMillis()));

+                                                changes.add(getChangeRecord_deletePublisherAssertion(apiPubAssertion, getNode(), existingPubAssertion.getToCheck().equalsIgnoreCase("false"), existingPubAssertion.getFromCheck().equalsIgnoreCase("false"), System.currentTimeMillis()));

                                         } else {

                                                 // Otherwise, it is a new relationship between these entities.  Remove the old one so the new one can be added.

                                                 // TODO: the model only seems to allow one assertion per two business (primary key is fromKey and toKey). Spec seems to imply as 

                                                 // many relationships as desired (the differentiator would be the keyedRef values).

                                                 removeExistingPublisherAssertionSignatures(existingPubAssertion.getBusinessEntityByFromKey().getEntityKey(), existingPubAssertion.getBusinessEntityByToKey().getEntityKey(), em);

                                                 em.remove(existingPubAssertion);

-                                                changes.add(getChangeRecord_deletePublisherAssertion(apiPubAssertion, node, true, true, System.currentTimeMillis()));

+                                                changes.add(getChangeRecord_deletePublisherAssertion(apiPubAssertion, getNode(), true, true, System.currentTimeMillis()));

                                         }

                                 }

 

@@ -194,7 +194,7 @@
 

                                         em.persist(modelPubAssertion);

 

-                                        changes.add(getChangeRecord_NewAssertion(apiPubAssertion, modelPubAssertion, node));

+                                        changes.add(getChangeRecord_NewAssertion(apiPubAssertion, modelPubAssertion, getNode()));

 

                                 }

 

@@ -237,7 +237,7 @@
                         List<ChangeRecord> changes = new ArrayList<ChangeRecord>();

                         for (String entityKey : entityKeyList) {

                                 deleteBinding(entityKey, em);

-                                changes.add(getChangeRecord_deleteBinding(entityKey, node));

+                                changes.add(getChangeRecord_deleteBinding(entityKey, getNode()));

                         }

                         tx.commit();

                         for (int i = 0; i < changes.size(); i++) {

@@ -296,7 +296,7 @@
                         List<ChangeRecord> changes = new ArrayList<ChangeRecord>();

                         for (String entityKey : entityKeyList) {

                                 deleteBusiness(entityKey, em);

-                                changes.add(getChangeRecord_deleteBusiness(entityKey, node));

+                                changes.add(getChangeRecord_deleteBusiness(entityKey, getNode()));

                         }

 

                         tx.commit();

@@ -378,7 +378,7 @@
                                         em.persist(existingPubAssertion);

                                 }

 

-                                changes.add(getChangeRecord_deletePublisherAssertion(entity, node, tokey, fromkey, existingPubAssertion.getModified().getTime()));

+                                changes.add(getChangeRecord_deletePublisherAssertion(entity, getNode(), tokey, fromkey, existingPubAssertion.getModified().getTime()));

                         }

 

                         tx.commit();

@@ -463,7 +463,7 @@
                         List<ChangeRecord> changes = new ArrayList<ChangeRecord>();

                         for (String entityKey : entityKeyList) {

                                 deleteService(entityKey, em);

-                                changes.add(getChangeRecord_deleteService(entityKey, node));

+                                changes.add(getChangeRecord_deleteService(entityKey, getNode()));

                         }

 

                         tx.commit();

@@ -525,7 +525,7 @@
                         List<ChangeRecord> changes = new ArrayList<ChangeRecord>();

                         for (String entityKey : entityKeyList) {

                                 deleteTModel(entityKey, em);

-                                changes.add(getChangeRecord_deleteTModelHide(entityKey, node));

+                                changes.add(getChangeRecord_deleteTModelHide(entityKey, getNode()));

                         }

 

                         tx.commit();

@@ -762,7 +762,7 @@
                                 result.getListDescription().setActualCount(result.getListDescription().getActualCount() + 1);

                                 result.getListDescription().setIncludeCount(result.getListDescription().getIncludeCount() + 1);

                                 validator.validateSaveBindingMax(em, modelBindingTemplate.getBusinessService().getEntityKey());

-                                changes.add(getChangeRecord(modelBindingTemplate, apiBindingTemplate, node));

+                                changes.add(getChangeRecord(modelBindingTemplate, apiBindingTemplate, getNode()));

                         }

 

                         tx.commit();

@@ -822,7 +822,7 @@
                                 log.debug("Saving business " + modelBusinessEntity.getEntityKey());

 

                                 em.persist(modelBusinessEntity);

-                                changes.add(getChangeRecord(modelBusinessEntity, apiBusinessEntity, node));

+                                changes.add(getChangeRecord(modelBusinessEntity, apiBusinessEntity, getNode()));

                                 result.getBusinessEntity().add(apiBusinessEntity);

                         }

 

@@ -895,7 +895,7 @@
                                 result.getBusinessService().add(apiBusinessService);

 

                                 validator.validateSaveServiceMax(em, modelBusinessService.getBusinessEntity().getEntityKey());

-                                changes.add(getChangeRecord(modelBusinessService, apiBusinessService, node));

+                                changes.add(getChangeRecord(modelBusinessService, apiBusinessService, getNode()));

                         }

 

                         tx.commit();

@@ -955,7 +955,7 @@
                                 em.persist(modelTModel);

 

                                 result.getTModel().add(apiTModel);

-                                changes.add(getChangeRecord(modelTModel, apiTModel, node));

+                                changes.add(getChangeRecord(modelTModel, apiTModel, getNode()));

                                 /*

                                  //TODO JUDDI-915

                                  if (obj != null) {

@@ -1049,7 +1049,7 @@
                                         del.setModified(new Date());

                                         em.merge(del);

                                 }

-                                changes.add(getChangeRecord_deletePublisherAssertion(api, node, to, from, System.currentTimeMillis()));

+                                changes.add(getChangeRecord_deletePublisherAssertion(api, getNode(), to, from, System.currentTimeMillis()));

                         }

                         //DeletePublisherAssertionByBusinessQuery.delete(em, businessKeysFound);

 

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
index 92ef637..fcb1fd8 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
@@ -41,6 +41,7 @@
 import javax.xml.bind.JAXB;

 import javax.xml.bind.annotation.XmlSeeAlso;

 import javax.xml.ws.BindingProvider;

+import static org.apache.juddi.api.impl.AuthenticatedService.getNode;

 import org.apache.juddi.api.util.QueryStatus;

 import org.apache.juddi.api.util.ReplicationQuery;

 import org.apache.juddi.config.AppConfig;

@@ -118,8 +119,8 @@
                         queue = new ConcurrentLinkedQueue<NotifyChangeRecordsAvailable>();

                 }

                 for (String s : addedNodes) {

-                        if (!s.equals(node)) {

-                                logger.info("This node: " + node + ". New replication node queue for synchronization: " + s);

+                        if (!s.equals(getNode())) {

+                                logger.info("This node: " + getNode() + ". New replication node queue for synchronization: " + s);

                                 HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType();

                                 highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(s, 0L));

                                 queue.add(new NotifyChangeRecordsAvailable(s, highWaterMarkVectorType));

@@ -187,15 +188,16 @@
                 } catch (Exception ex) {

                         logger.warn("Config error!", ex);

                 }

-                if (pub == null) {

-                        pub = new UDDIPublicationImpl();

-                }

+               

                 serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIReplicationImpl.class);

-                Init();

+                init();

 

         }

 

-        private synchronized void Init() {

+        private synchronized void init() {

+                if (pub == null) {

+                        pub = new UDDIPublicationImpl();

+                }

                 if (queue == null) {

                         queue = new ConcurrentLinkedQueue<NotifyChangeRecordsAvailable>();

                 }

@@ -203,17 +205,6 @@
 

         }

 

-        private boolean Excluded(HighWaterMarkVectorType changesAlreadySeen, ChangeRecord r) {

-                if (changesAlreadySeen != null) {

-                        for (int i = 0; i < changesAlreadySeen.getHighWaterMark().size(); i++) {

-                                if (changesAlreadySeen.getHighWaterMark().get(i).getNodeID().equals(r.getChangeID().getNodeID())

-                                        && changesAlreadySeen.getHighWaterMark().get(i).getOriginatingUSN().equals(r.getChangeID().getOriginatingUSN())) {

-                                        return true;

-                                }

-                        }

-                }

-                return false;

-        }

 

         /**

          * handles when a remote node tells me that there's an update(s)

@@ -243,7 +234,7 @@
                         //ok someone told me there's a change available

                         while (!queue.isEmpty()) {

                                 NotifyChangeRecordsAvailable poll = queue.poll();

-                                if (poll != null && !poll.getNotifyingNode().equalsIgnoreCase(node)) {

+                                if (poll != null && !poll.getNotifyingNode().equalsIgnoreCase(getNode())) {

                                         UDDIReplicationPortType replicationClient = getReplicationClient(poll.getNotifyingNode());

                                         if (replicationClient == null) {

                                                 logger.fatal("unable to obtain a replication client to node " + poll);

@@ -265,13 +256,13 @@
                                                                                 logger.info("i've already hit the node " + poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID() + " this cycle, skipping");

                                                                                 break;

                                                                         }

-                                                                        if (poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID().equalsIgnoreCase(node)) {

-                                                                                logger.info("ignoring updates that were generated here " + poll.getChangesAvailable().getHighWaterMark().get(xx).getOriginatingUSN() + " sent by " + poll.getNotifyingNode() + " this node is " + node);

+                                                                        if (poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID().equalsIgnoreCase(getNode())) {

+                                                                                logger.info("ignoring updates that were generated here " + poll.getChangesAvailable().getHighWaterMark().get(xx).getOriginatingUSN() + " sent by " + poll.getNotifyingNode() + " this node is " + getNode());

                                                                                 break;

                                                                         }

                                                                         nodesHitThisCycle.add(poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID());

                                                                         GetChangeRecords body = new GetChangeRecords();

-                                                                        body.setRequestingNode(node);

+                                                                        body.setRequestingNode(getNode());

                                                                         body.setResponseLimitCount(BigInteger.valueOf(100L));

 

                                                                         body.setChangesAlreadySeen(getLastChangeRecordFrom(poll.getChangesAvailable().getHighWaterMark().get(xx).getNodeID()));

@@ -295,7 +286,7 @@
                                 } else {

                                         if (poll == null) {

                                                 logger.warn("strange, popped a null object");

-                                        } else if (poll.getNotifyingNode().equalsIgnoreCase(node)) {

+                                        } else if (poll.getNotifyingNode().equalsIgnoreCase(getNode())) {

                                                 logger.warn("strange, popped an object from the queue but it was from myself. This probably indicates a configuration error! ignoring...first record: " + poll.getChangesAvailable().getHighWaterMark().get(0).getNodeID()+":" + poll.getChangesAvailable().getHighWaterMark().get(0).getOriginatingUSN());

                                         }

                                 }

@@ -320,7 +311,7 @@
                         }

                         logger.debug("_______________________Remote change request " + rec.getChangeID().getNodeID() + ":" + rec.getChangeID().getOriginatingUSN());

 

-                        if (rec.getChangeID().getNodeID().equalsIgnoreCase(node)) {

+                        if (rec.getChangeID().getNodeID().equalsIgnoreCase(getNode())) {

                                 logger.info("Just received a change record that i created, ignoring....");

                                 return;

                         }

@@ -374,18 +365,18 @@
                                         if (rec.getChangeRecordDelete() != null && rec.getChangeRecordDelete().getBindingKey() != null && !"".equalsIgnoreCase(rec.getChangeRecordDelete().getBindingKey())) {

                                                 //delete a binding template

                                                 UddiEntity ue = em.find(BindingTemplate.class, rec.getChangeRecordDelete().getBindingKey());

-                                                ValidateNodeIdMisMatches(ue, node);

+                                                ValidateNodeIdMisMatches(ue, getNode());

                                                 pub.deleteBinding(rec.getChangeRecordDelete().getBindingKey(), em);

                                         }

                                         if (rec.getChangeRecordDelete() != null && rec.getChangeRecordDelete().getBusinessKey() != null && !"".equalsIgnoreCase(rec.getChangeRecordDelete().getBusinessKey())) {

                                                 //delete a business 

                                                 UddiEntity ue = em.find(BusinessEntity.class, rec.getChangeRecordDelete().getBindingKey());

-                                                ValidateNodeIdMisMatches(ue, node);

+                                                ValidateNodeIdMisMatches(ue, getNode());

                                                 pub.deleteBusiness(rec.getChangeRecordDelete().getBusinessKey(), em);

                                         }

                                         if (rec.getChangeRecordDelete() != null && rec.getChangeRecordDelete().getServiceKey() != null && !"".equalsIgnoreCase(rec.getChangeRecordDelete().getServiceKey())) {

                                                 UddiEntity ue = em.find(BusinessService.class, rec.getChangeRecordDelete().getBindingKey());

-                                                ValidateNodeIdMisMatches(ue, node);

+                                                ValidateNodeIdMisMatches(ue, getNode());

                                                 //delete a service 

                                                 pub.deleteService(rec.getChangeRecordDelete().getServiceKey(), em);

                                         }

@@ -403,7 +394,7 @@
                                                  */

                                                 UddiEntity tm = em.find(Tmodel.class, rec.getChangeRecordDelete().getTModelKey());

                                                 if (tm != null) {

-                                                        ValidateNodeIdMisMatches(tm, node);

+                                                        ValidateNodeIdMisMatches(tm, getNode());

                                                         em.remove(tm);

                                                 } else {

                                                         logger.error("failed to adminstratively delete tmodel because it doesn't exist. " + rec.getChangeRecordDelete().getTModelKey());

@@ -427,7 +418,7 @@
                                                 if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID() == null) {

                                                         throw new Exception("Inbound replication data is missiong node id! Change will not be applied");

                                                 }

-                                                if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equalsIgnoreCase(node)) {

+                                                if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equalsIgnoreCase(getNode())) {

                                                         logger.warn("Inbound replication data is modifying locally owned data. This is not allowed, except for custody transfer");

                                                 }

                                                 if (rec.getChangeRecordNewData().getBindingTemplate() != null) {

@@ -459,8 +450,8 @@
                                                         BusinessEntity model = em.find(org.apache.juddi.model.BusinessEntity.class, rec.getChangeRecordNewData().getBusinessEntity().getBusinessKey());

                                                         if (model != null) {

                                                                 //if the owner of the new data is me, and the update didn't originate from me

-                                                                if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)

-                                                                        && !model.getNodeId().equals(node)) {

+                                                                if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(getNode())

+                                                                        && !model.getNodeId().equals(getNode())) {

                                                                         if (model.getIsTransferInProgress()) {

                                                                                 //allow the transfer

                                                                                 MappingApiToModel.mapBusinessEntity(rec.getChangeRecordNewData().getBusinessEntity(), model);

@@ -470,21 +461,21 @@
                                                                                 em.merge(model);

                                                                         } else {

                                                                                 //block it, unexpected transfer

-                                                                                throw new Exception("Unexpected entity transfer to to node " + node + " from " + rec.getChangeID().getNodeID());

+                                                                                throw new Exception("Unexpected entity transfer to to node " + getNode() + " from " + rec.getChangeID().getNodeID());

                                                                         }

 

-                                                                } else if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)

-                                                                        && model.getNodeId().equals(node)) {

+                                                                } else if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(getNode())

+                                                                        && model.getNodeId().equals(getNode())) {

                                                                         //if destination is here and it's staying here, then this is strange also

                                                                         //someone else updated one of my records

                                                                         throw new Exception("unexpected modification of records that this server owns, " + model.getEntityKey());

-                                                                } else if (!rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)

-                                                                        && model.getNodeId().equals(node)) {

+                                                                } else if (!rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(getNode())

+                                                                        && model.getNodeId().equals(getNode())) {

                                                                         //this is also strange, destination is elsewhere however it's owned by me.

                                                                         throw new Exception("unexpected transfer from this node to elsewhere, possible that the key in question exists at two places prior to replication sync, " + model.getEntityKey());

 

-                                                                } else if (!rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)

-                                                                        && !model.getNodeId().equals(node)) {

+                                                                } else if (!rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(getNode())

+                                                                        && !model.getNodeId().equals(getNode())) {

                                                                         //changes on a remote node, for an existing item

                                                                         MappingApiToModel.mapBusinessEntity(rec.getChangeRecordNewData().getBusinessEntity(), model);

                                                                         MappingApiToModel.mapOperationalInfoIncludingChildren(model, rec.getChangeRecordNewData().getOperationalInfo());

@@ -527,8 +518,8 @@
                                                                 //in the case of a transfer

                                                                 //if the new entity is being transfer to ME, accept and i didn't previously own it, but only if the local record is flagged as transferable

                                                                 //meaning, only accept if i'm expecting a transfer

-                                                                if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)

-                                                                        && !model.getNodeId().equals(node)) {

+                                                                if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(getNode())

+                                                                        && !model.getNodeId().equals(getNode())) {

                                                                         if (model.getIsTransferInProgress()) {

                                                                                 //allow the transfer

                                                                                 em.remove(model);

@@ -542,18 +533,18 @@
                                                                                 throw new Exception("Unexpected entity transfer to this node from " + rec.getChangeID().getNodeID());

                                                                         }

 

-                                                                } else if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)

-                                                                        && model.getNodeId().equals(node)) {

+                                                                } else if (rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(getNode())

+                                                                        && model.getNodeId().equals(getNode())) {

                                                                         //if destination is here and it's staying here, then this is strange also

                                                                         //someone else updated one of my records

                                                                         throw new Exception("unexpected modification of records that this server owns, " + model.getEntityKey());

-                                                                } else if (!rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)

-                                                                        && model.getNodeId().equals(node)) {

+                                                                } else if (!rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(getNode())

+                                                                        && model.getNodeId().equals(getNode())) {

                                                                         //this is also strange, destination is elsewhere however it's owned by me.

                                                                         throw new Exception("unexpected transfer from this node to elsewhere, possible that the key in question exists at two places prior to replication sync, " + model.getEntityKey());

 

-                                                                } else if (!rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(node)

-                                                                        && !model.getNodeId().equals(node)) {

+                                                                } else if (!rec.getChangeRecordNewData().getOperationalInfo().getNodeID().equals(getNode())

+                                                                        && !model.getNodeId().equals(getNode())) {

                                                                         //changes on a remote node, for an existing item

                                                                         em.remove(model);

                                                                         model = new Tmodel();

@@ -594,7 +585,7 @@
                                                 logger.error("Unexpected delete/hide tmodel message received for non existing key " + key);

                                         } else {

                                                 //no one else can delete/hide my tmodel

-                                                ValidateNodeIdMisMatches(existing, node);

+                                                ValidateNodeIdMisMatches(existing, getNode());

                                                 existing.setDeleted(true);

                                                 existing.setModified(rec.getChangeRecordHide().getModified().toGregorianCalendar().getTime());

                                                 existing.setModifiedIncludingChildren(rec.getChangeRecordHide().getModified().toGregorianCalendar().getTime());

@@ -862,7 +853,7 @@
                                 //no edges or graph defined, default to the operator list

                                 for (org.uddi.repl_v3.Operator o : repcfg.getOperator()) {

                                         //no need to tell myself about a change at myself

-                                        if (!o.getOperatorNodeID().equalsIgnoreCase(node)) {

+                                        if (!o.getOperatorNodeID().equalsIgnoreCase(getNode())) {

                                                 receivers.add(o.getOperatorNodeID());

                                         }

                                 }

@@ -872,7 +863,7 @@
                                 while (iterator.hasNext()) {

                                         Edge next = iterator.next();

 

-                                        if (next.getMessageReceiver().equalsIgnoreCase(node)) {

+                                        if (next.getMessageReceiver().equalsIgnoreCase(getNode())) {

                                                 receivers.add(next.getMessageSender());

                                         }

 

@@ -924,7 +915,7 @@
                 }

                 //only time this is allowed is custody transfer

                 if (!newNodeId.equals(currentOwningNode)) {

-                        logger.info("AUDIT, custody transfer from node, " + currentOwningNode + " to " + newNodeId + " current node is " + node);

+                        logger.info("AUDIT, custody transfer from node, " + currentOwningNode + " to " + newNodeId + " current node is " + getNode());

                         //throw new Exception("node id mismatch!");

                 }

 

@@ -944,7 +935,7 @@
                  * Custody and Ownership Transfer API.

                  */

                 //so someone else attempted to update one of my records, reject it

-                if (newNodeId.equals(node)) {

+                if (newNodeId.equals(getNode())) {

                         //throw new Exception("node id mismatch! this node already has a record for key " + newDataOperationalInfo.getEntityKey() + " and I'm the authority for it.");

                 }

         }

@@ -1002,7 +993,7 @@
                 long procTime = System.currentTimeMillis() - startTime;

                 serviceCounter.update(ReplicationQuery.DO_PING, QueryStatus.SUCCESS, procTime);

 

-                return node;

+                return getNode();

 

         }

 

@@ -1061,7 +1052,7 @@
                                         if (firstrecord == null) {

                                                 firstrecord = 0L;

                                         }

-                                        if (changesAlreadySeen.getHighWaterMark().get(i).getNodeID().equals(node)) {

+                                        if (changesAlreadySeen.getHighWaterMark().get(i).getNodeID().equals(getNode())) {

                                                 //special case, search by database id

                                                 createQuery = em.createQuery("select e from ChangeRecord e where "

                                                         + "(e.id > :inbound AND e.nodeID = :node) "

@@ -1073,7 +1064,7 @@
                                                         + "order by e.originatingUSN ASC");

                                         }

                                         logger.info("Query db for replication changes, lower index is " + (firstrecord) + " last index " + lastrecord + " record limit " + maxrecords);

-                                        logger.info("This node is" + node + ", request is for data originated from " + changesAlreadySeen.getHighWaterMark().get(i).getNodeID() + " and it's being sent back to " + requestingNode);

+                                        logger.info("This node is" + getNode() + ", request is for data originated from " + changesAlreadySeen.getHighWaterMark().get(i).getNodeID() + " and it's being sent back to " + requestingNode);

 

                                         createQuery.setMaxResults(maxrecords);

                                         createQuery.setParameter("inbound", firstrecord);

@@ -1102,7 +1093,7 @@
                                 }

                                 //assume that they just want records that originated from here?

                                 logger.info("Query db for replication changes, lower index is " + (firstrecord) + " last index " + lastrecord + " record limit " + maxrecords);

-                                logger.info("This node is" + node + " requesting node " + requestingNode);

+                                logger.info("This node is" + getNode() + " requesting node " + requestingNode);

 

                                 if (lastrecord != null) {

                                         createQuery = em.createQuery("select e from ChangeRecord e where "

@@ -1116,7 +1107,7 @@
                                 }

                                 createQuery.setMaxResults(maxrecords);

                                 createQuery.setParameter("inbound", firstrecord);

-                                createQuery.setParameter("node", node);

+                                createQuery.setParameter("node", getNode());

 

                                 List<org.apache.juddi.model.ChangeRecord> records = (List<org.apache.juddi.model.ChangeRecord>) createQuery.getResultList();

                                 logger.info(records.size() + " CR records returned from query");

@@ -1134,7 +1125,7 @@
                                 QueryStatus.SUCCESS, procTime);

 

                 } catch (Exception ex) {

-                        logger.fatal("Error, this node is: " + node, ex);

+                        logger.fatal("Error, this node is: " + getNode(), ex);

                         throw new FatalErrorException(new ErrorMessage("E_fatalError", ex.getMessage()));

 

                 } finally {

@@ -1179,7 +1170,7 @@
                                 Iterator<String> it = FetchEdges.getCommunicationGraph().getNode().iterator();

                                 while (it.hasNext()) {

                                         String nextNode = it.next();

-                                        if (!nextNode.equals(node)) {

+                                        if (!nextNode.equals(getNode())) {

                                                 if (!map.containsKey(nextNode)) {

                                                         Long id = 0L;

                                                         try {

@@ -1199,12 +1190,12 @@
                         }

                         //dont forget this node

                         Long id = (Long) em.createQuery("select (e.id) from ChangeRecord e where e.nodeID = :node  order by e.id desc")

-                                .setParameter("node", node).setMaxResults(1).getSingleResult();

+                                .setParameter("node", getNode()).setMaxResults(1).getSingleResult();

                         if (id == null) {

                                 id = 0L;

                         }

                         ChangeRecordIDType x = new ChangeRecordIDType();

-                        x.setNodeID(node);

+                        x.setNodeID(getNode());

                         x.setOriginatingUSN(id);

                         ret.add(x);

 

@@ -1246,7 +1237,7 @@
                 //getChangeRecords from the remote node asynch

                 new ValidateReplication(null).validateNotifyChangeRecordsAvailable(body, ctx);

 

-                logger.info(body.getNotifyingNode() + " just told me that there are change records available, enqueuing...size is " + queue.size() + " this node is " + node);

+                logger.info(body.getNotifyingNode() + " just told me that there are change records available, enqueuing...size is " + queue.size() + " this node is " + getNode());

                 //if (!queue.contains(body.getNotifyingNode())) {

                 queue.add(body);

                 //}

@@ -1315,7 +1306,7 @@
                         for (ChangeRecord c : executeTransfer) {

                                 try {

                                         c.setChangeID(new ChangeRecordIDType());

-                                        c.getChangeID().setNodeID(node);

+                                        c.getChangeID().setNodeID(getNode());

                                         c.getChangeID().setOriginatingUSN(null);

                                         ReplicationNotifier.Enqueue(MappingApiToModel.mapChangeRecord(c));

                                 } catch (UnsupportedEncodingException ex) {

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
index c516fdf..9d7a788 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetCachingImpl.java
@@ -82,6 +82,8 @@
                                 ret.value.add(x);

                         }

                 }

+                //findbugs will flag the following as "UC_USELESS_OBJECT" when in fact

+                //it is returned as part of the service call

                 chunkToken = new Holder<String>();

                 chunkToken.value ="0";

 

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
index dc00628..23971f4 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
@@ -65,7 +65,7 @@
  * From there, you need to create a class that either implements

  * {@link ValueSetValidator} or extends {@link AbstractSimpleValidator}. It must

  * be in the package named org.apache.juddi.validation.vsv and must by named

- * following the convention outlined in {@link #ConvertKeyToClass(java.lang.String)

+ * following the convention outlined in {@link #convertKeyToClass(java.lang.String)

  * }

  *

  * @see ValueSetValidator

@@ -133,10 +133,10 @@
                                 Tmodel find = em.find(org.apache.juddi.model.Tmodel.class, key);

                                 if (find != null) {

                                         //if it is, added it to the list

-                                        if (ContainsValidatedKey(find, UDDIConstants.IS_VALIDATED_BY)) {

+                                        if (containsValidatedKey(find, UDDIConstants.IS_VALIDATED_BY)) {

                                                 validators.add(key);

                                         }

-                                        if (ContainsValidatedKey(find, UDDIConstantsV2.IS_VALIDATED_BY)) {

+                                        if (containsValidatedKey(find, UDDIConstantsV2.IS_VALIDATED_BY)) {

                                                 validators.add(key);

                                         }

                                 }

@@ -154,7 +154,7 @@
                 Iterator<String> iterator1 = validators.iterator();

                 while (iterator1.hasNext()) {

                         String tmodelkey = iterator1.next();

-                        String clazz = ConvertKeyToClass(tmodelkey);

+                        String clazz = convertKeyToClass(tmodelkey);

                         ValueSetValidator vsv;

                         if (clazz == null) {

                                 logger.info("No validator found for " + tmodelkey);

@@ -296,14 +296,14 @@
                         return ret;

                 }

                 for (int i = 0; i < items.size(); i++) {

-                        validateValuesKeyRef(items.get(i).getKeyedReference());

+                        ret.addAll(validateValuesKeyRef(items.get(i).getKeyedReference()));

                 }

                 return ret;

         }

 

         

 

-        public static String ConvertKeyToClass(String tmodelkey) {

+        public static String convertKeyToClass(String tmodelkey) {

 

                 if (tmodelkey == null) {

                         return null;

@@ -323,7 +323,7 @@
 

         public static List<String> getValidValues(String modelKey) {

                 try {

-                        ValueSetValidator vsv = (ValueSetValidator) Class.forName(ConvertKeyToClass(modelKey)).newInstance();

+                        ValueSetValidator vsv = (ValueSetValidator) Class.forName(convertKeyToClass(modelKey)).newInstance();

                         return vsv.getValidValues();

                 } catch (ClassNotFoundException ex) {

                 } catch (InstantiationException ex) {

@@ -332,7 +332,7 @@
                 return null;

         }

 

-        private boolean ContainsValidatedKey(Tmodel find, String key) {

+        private boolean containsValidatedKey(Tmodel find, String key) {

                 if (find.getCategoryBag() != null) {

                         if (find.getCategoryBag().getKeyedReferences() != null) {

                                 for (int i = 0; i < find.getCategoryBag().getKeyedReferences().size(); i++) {

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/XRegisterHelper.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/XRegisterHelper.java
index 88e3442..126c54d 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/impl/XRegisterHelper.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/XRegisterHelper.java
@@ -134,7 +134,6 @@
 						log.debug("Found service with key " +  existingToService.getServiceKey() + ". No need to add it again");

 					} else {

 						BusinessService fromService = uddiFromClerk.findService(bindingTemplate.getServiceKey(), fromClerk.getNode());

-						fromService.getBusinessKey();

 						//check if the business exist

 						BusinessEntity existingBusinessEntity = uddiToClerk.findBusiness(fromService.getBusinessKey(), toClerk.getNode());

 						if (existingBusinessEntity!=null) {

diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/CustodyTransferQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/CustodyTransferQuery.java
index 63c5691..ed03834 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/CustodyTransferQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/CustodyTransferQuery.java
@@ -59,12 +59,20 @@
         return list;
     }
 
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
+    @Deprecated
     public static CustodyTransferQuery fromQuery(final String query) {
         if (_custodyTransferQueries == null) {
             initCustodyTransferQueries();
         }
         
-        if (_custodyTransferQueries.contains(query)) {
+        //note: at one point this was just .contains(query) which shouldn't work
+        if (_custodyTransferQueries.containsKey(query)) {
             return _custodyTransferQueries.get(query);
         } else {
             throw new IllegalArgumentException("Unrecognized query " + query);
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/InquiryQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/InquiryQuery.java
index 3e5efaf..22ed0dd 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/InquiryQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/InquiryQuery.java
@@ -73,6 +73,13 @@
         return list;
     }
         
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
+    @Deprecated
     public static InquiryQuery fromQuery(final String query) {
         if (_inquiryQueries == null) {
             initInquiryQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
index 7951030..e8d8f67 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/JUDDIQuery.java
@@ -102,6 +102,12 @@
                 return list;
         }
 
+        /**
+        * this doesn't appear to be used anywhere and will be removed in a future version
+        * @param query
+        * @return
+        * @deprecated
+        */
         public static JUDDIQuery fromQuery(final String query) {
                 if (_inquiryQueries == null) {
                         initInquiryQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/PublicationQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/PublicationQuery.java
index a255977..edc8d7f 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/PublicationQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/PublicationQuery.java
@@ -82,6 +82,12 @@
         return list;
     }
 
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
     public static PublicationQuery fromQuery(final String query) {
         if (_publicationQueries == null) {
             initPublicationQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/QueryStatus.java b/juddi-core/src/main/java/org/apache/juddi/api/util/QueryStatus.java
index adca9c4..bf6f203 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/QueryStatus.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/QueryStatus.java
@@ -59,6 +59,12 @@
         return list;
     }
 
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
     public static QueryStatus fromStatus(final String status) {
         if (_statuses == null) {
             initStatuses();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/ReplicationQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/ReplicationQuery.java
index 55d7a77..64368e7 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/ReplicationQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/ReplicationQuery.java
@@ -64,6 +64,12 @@
         return list;
     }
     
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
     public static ReplicationQuery fromQuery(final String query) {
         if (_replicationQueries == null) {
             initReplicationQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/SecurityQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/SecurityQuery.java
index c4352f3..d2f85d1 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/SecurityQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/SecurityQuery.java
@@ -58,6 +58,12 @@
         return list;
     }
     
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
     public static SecurityQuery fromQuery(final String query) {
         if (_securityQueries == null) {
             initSecurityQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/SubscriptionListenerQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/SubscriptionListenerQuery.java
index 4546b79..4643c6c 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/SubscriptionListenerQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/SubscriptionListenerQuery.java
@@ -56,6 +56,13 @@
         return list;
     }
     
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
+    
     public static SubscriptionListenerQuery fromQuery(final String query) {
         if (_subscriptionListenerQueries == null) {
             initSubscriptionListenerQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/SubscriptionQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/SubscriptionQuery.java
index dee01db..b4823d1 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/SubscriptionQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/SubscriptionQuery.java
@@ -62,6 +62,12 @@
         return list;
     }
 
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
     public static SubscriptionQuery fromQuery(final String query) {
         if (_subscriptionQueries == null) {
             initSubscriptionQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/ValueSetCachingQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/ValueSetCachingQuery.java
index a497137..86a9ef1 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/ValueSetCachingQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/ValueSetCachingQuery.java
@@ -56,6 +56,12 @@
         return list;
     }
 
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
     public static ValueSetCachingQuery fromQuery(final String query) {
         if (_valueSetCachingQueries == null) {
             initValueSetCachingQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/api/util/ValueSetValidationQuery.java b/juddi-core/src/main/java/org/apache/juddi/api/util/ValueSetValidationQuery.java
index 34c94f3..36e706a 100644
--- a/juddi-core/src/main/java/org/apache/juddi/api/util/ValueSetValidationQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/api/util/ValueSetValidationQuery.java
@@ -55,6 +55,12 @@
         return list;
     }
     
+    /**
+     * this doesn't appear to be used anywhere and will be removed in a future version
+     * @param query
+     * @return
+     * @deprecated
+     */
     public static ValueSetValidationQuery fromQuery(final String query) {
         if (_valueSetValidationQueries == null) {
             initValueSetValidationQueries();
diff --git a/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java b/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java
index 131f067..d67f940 100644
--- a/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java
+++ b/juddi-core/src/main/java/org/apache/juddi/config/AppConfig.java
@@ -89,7 +89,7 @@
         }
         
         public static void saveConfiguration() throws ConfigurationException{
-                Configuration configuration = getConfiguration();
+                getConfiguration(); //findbugs will flag this as useless, but its not
                 propConfig.save();
         }
        
diff --git a/juddi-core/src/main/java/org/apache/juddi/config/Install.java b/juddi-core/src/main/java/org/apache/juddi/config/Install.java
index 6b5097d..6d05519 100644
--- a/juddi-core/src/main/java/org/apache/juddi/config/Install.java
+++ b/juddi-core/src/main/java/org/apache/juddi/config/Install.java
@@ -47,6 +47,7 @@
 import org.apache.commons.logging.Log;

 import org.apache.commons.logging.LogFactory;

 import org.apache.juddi.ClassUtil;

+import org.apache.juddi.api.impl.AuthenticatedService;

 import org.apache.juddi.api.impl.UDDIInquiryImpl;

 import org.apache.juddi.api.impl.UDDIPublicationImpl;

 import org.apache.juddi.keygen.KeyGenerator;

@@ -559,12 +560,13 @@
                 if (dir.exists()) {

                         log.debug("Discovering the Publisher XML data files in directory: " + path);

                         File[] files = dir.listFiles(new PublisherFileFilter());

-                        for (File f : files) {

-                                String publisher = f.getName().substring(0, f.getName().indexOf(FILE_PUBLISHER));

-                                if (!rootPublisherStr.equalsIgnoreCase(publisher)) {

-                                        publishers.add(publisher);

+                        if (files!=null)

+                                for (File f : files) {

+                                        String publisher = f.getName().substring(0, f.getName().indexOf(FILE_PUBLISHER));

+                                        if (!rootPublisherStr.equalsIgnoreCase(publisher)) {

+                                                publishers.add(publisher);

+                                        }

                                 }

-                        }

                 } else {

                         String[] paths = {};

                         Enumeration<JarEntry> en = null;

@@ -644,7 +646,7 @@
                 StringBuilder xml = new StringBuilder();

                 byte[] b = new byte[4096];

                 for (int n; (n = resourceStream.read(b)) != -1;) {

-                        xml.append(new String(b, 0, n));

+                        xml.append(new String(b, 0, n, AuthenticatedService.UTF8));

                 }

                 log.debug("inserting: " + xml.toString());

                 StringReader reader = new StringReader(xml.toString());

@@ -680,7 +682,7 @@
                 StringBuilder xml = new StringBuilder();

                 byte[] b = new byte[4096];

                 for (int n; (n = resourceStream.read(b)) != -1;) {

-                        xml.append(new String(b, 0, n));

+                        xml.append(new String(b, 0, n, AuthenticatedService.UTF8));

                 }

                 log.debug("inserting: " + xml.toString());

                 StringReader reader = new StringReader(xml.toString());

diff --git a/juddi-core/src/main/java/org/apache/juddi/cryptor/CryptorFactory.java b/juddi-core/src/main/java/org/apache/juddi/cryptor/CryptorFactory.java
index 226f625..0b8236e 100644
--- a/juddi-core/src/main/java/org/apache/juddi/cryptor/CryptorFactory.java
+++ b/juddi-core/src/main/java/org/apache/juddi/cryptor/CryptorFactory.java
@@ -40,7 +40,7 @@
 

 public abstract class CryptorFactory {

 

-    private static Log log = LogFactory.getLog(CryptorFactory.class);

+    private static final Log log = LogFactory.getLog(CryptorFactory.class);

     // the shared Cryptor instance

     private static Cryptor cryptor = null;

 

diff --git a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
index 419db01..aea1017 100644
--- a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
+++ b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
@@ -30,6 +30,7 @@
 import javax.xml.transform.dom.DOMResult;

 import org.apache.commons.logging.Log;

 import org.apache.commons.logging.LogFactory;

+import org.apache.juddi.api.impl.AuthenticatedService;

 import org.apache.juddi.jaxb.JAXBMarshaller;

 import org.apache.juddi.model.Address;

 import org.apache.juddi.model.BindingTemplate;

@@ -976,8 +977,9 @@
 

         /**

          * note that when using this, it does not reference the instance of the

-         * specific businesses, it will create new ones. be sure to overwrite them 

-         * with the correct references

+         * specific businesses, it will create new ones. be sure to overwrite

+         * them with the correct references

+         *

          * @param apiPubAssertion

          * @param modelPubAssertion

          * @throws DispositionReportFaultMessage

@@ -1002,16 +1004,14 @@
                         modelPubAssertion.setKeyName(apiKeyedRef.getKeyName());

                         modelPubAssertion.setKeyValue(apiKeyedRef.getKeyValue());

                 }

-                if (!apiPubAssertion.getSignature().isEmpty())

-                {

+                if (!apiPubAssertion.getSignature().isEmpty()) {

                         modelPubAssertion.setSignatures(mapApiSignaturesToModelSignatures(apiPubAssertion.getSignature()));

-                        for (Signature s : modelPubAssertion.getSignatures())

-                        {        s.setPublisherAssertionFromKey(modelPubAssertion.getBusinessEntityByFromKey().getEntityKey());

+                        for (Signature s : modelPubAssertion.getSignatures()) {

+                                s.setPublisherAssertionFromKey(modelPubAssertion.getBusinessEntityByFromKey().getEntityKey());

                                 s.setPublisherAssertionToKey(modelPubAssertion.getBusinessEntityByToKey().getEntityKey());

-                                

+

                         }

-                        

-                        

+

                 }

         }

 

@@ -1348,14 +1348,18 @@
                 if (xform instanceof String) {

                         sdv.setContentType(String.class.getSimpleName());

                         String xformStr = xform.toString();

-                        byte[] xformBytes = xformStr.getBytes();

-                        sdv.setContentBytes(xformBytes);

+                        try {

+                                byte[] xformBytes = xformStr.getBytes(AuthenticatedService.UTF8);

+                                sdv.setContentBytes(xformBytes);

+                        } catch (Exception e) {

+                                throw new RuntimeException("Failed to encode string due to: " + e.getMessage(), e);

+                        }

                 } else if (xform instanceof Element) {

                         sdv.setContentType(Element.class.getCanonicalName());

                         Element xformEl = (Element) xform;

                         String str = serializeTransformElement(xformEl);

                         try {

-                                sdv.setContentBytes(str.getBytes("UTF-8"));

+                                sdv.setContentBytes(str.getBytes(AuthenticatedService.UTF8));

                         } catch (Exception e) {

                                 throw new RuntimeException("Failed to encode string due to: " + e.getMessage(), e);

                         }

@@ -1370,7 +1374,7 @@
                         Element xformEl = ((Document) domResult.getNode()).getDocumentElement();

                         String str = serializeTransformElement(xformEl);

                         try {

-                                sdv.setContentBytes(str.getBytes("UTF-8"));

+                                sdv.setContentBytes(str.getBytes(AuthenticatedService.UTF8));

                         } catch (Exception e) {

                                 throw new RuntimeException("Failed to encode string due to: " + e.getMessage(), e);

                         }

@@ -1396,10 +1400,10 @@
                 org.apache.juddi.model.ChangeRecord r = new org.apache.juddi.model.ChangeRecord();

                 //r.setId(rec.getChangeID().getOriginatingUSN());

                 r.setOriginatingUSN(rec.getChangeID().getOriginatingUSN());

-                if (r.getOriginatingUSN()==null){

-                 //       logger.warn("strange, the getOriginatingUSN is null!!");

-                 //       JAXB.marshal(rec, System.out);

-                 //       Thread.dumpStack();

+                if (r.getOriginatingUSN() == null) {

+                        //       logger.warn("strange, the getOriginatingUSN is null!!");

+                        //       JAXB.marshal(rec, System.out);

+                        //       Thread.dumpStack();

                 }

                 r.setNodeID(rec.getChangeID().getNodeID());

                 if (rec.getChangeRecordNewData() != null) {

@@ -1442,10 +1446,10 @@
                 } else {

                         throw new UnsupportedEncodingException("unknown type!");

                 }

-                

+

                 StringWriter sw = new StringWriter();

                 JAXB.marshal(rec, sw);

-                r.setContents(sw.toString().getBytes("UTF8"));

+                r.setContents(sw.toString().getBytes(AuthenticatedService.UTF8));

                 return r;

 

         }

@@ -1492,11 +1496,6 @@
 

         }

 

-        public static void mapSaveBindingToChangeRecord(SaveBinding recordIn, List<org.apache.juddi.model.ChangeRecord> recordsOut) {

-                List<org.apache.juddi.model.ChangeRecord> r = new ArrayList<org.apache.juddi.model.ChangeRecord>();

-

-        }

-

         public static void mapReplicationConfiguration(ReplicationConfiguration replicationConfiguration, org.apache.juddi.model.ReplicationConfiguration model, EntityManager em) throws DispositionReportFaultMessage {

                 if (replicationConfiguration == null) {

                         throw new ValueNotAllowedException(new ErrorMessage("errors.replication.configNull"));

diff --git a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
index f622097..ef5e3b5 100644
--- a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
+++ b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
@@ -1228,7 +1228,6 @@
                 List<SignatureType> sigs = new ArrayList<SignatureType>();

                 mapSignature(find.getSignatures(), sigs);

                 item.getSignature().addAll(sigs);

-                List<Operator> ops = new ArrayList<Operator>();

                 mapOperator(find.getOperator(), item.getOperator());

 

                 List<org.apache.juddi.model.Contact> modelContactList = new ArrayList<org.apache.juddi.model.Contact>();

diff --git a/juddi-core/src/main/java/org/apache/juddi/model/KeyDataValue.java b/juddi-core/src/main/java/org/apache/juddi/model/KeyDataValue.java
index 62416fa..6879dd1 100644
--- a/juddi-core/src/main/java/org/apache/juddi/model/KeyDataValue.java
+++ b/juddi-core/src/main/java/org/apache/juddi/model/KeyDataValue.java
@@ -16,6 +16,7 @@
 package org.apache.juddi.model;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -144,7 +145,7 @@
     public String toString() {
         return "KeyDataValue{" + "id=" + getId() + ", keyDataType=" + getKeyDataType() +
                 ", keyDataName=" + getKeyDataName() + ", keyDataValueBytes=" 
-                + getKeyDataValueBytes() + ", keyDataValueString=" + getKeyDataValueString()
+                + Arrays.toString(getKeyDataValueBytes()) + ", keyDataValueString=" + getKeyDataValueString()
                 + ", keyDataValueList=" +getKeyDataValueList()  + '}';
     }
 }
diff --git a/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java b/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java
index c00269d..2d5ec2f 100644
--- a/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java
+++ b/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java
@@ -1,4 +1,5 @@
 package org.apache.juddi.model;
+
 /*
  * Copyright 2001-2008 The Apache Software Foundation.
  * 
@@ -35,147 +36,149 @@
 /**
  * @author <a href="mailto:kurt@apache.org">Kurt T Stam</a>
  */
-        @Entity
+@Entity
 @Table(name = "j3_publisher_assertion")
 public class PublisherAssertion implements java.io.Serializable {
 
-	private static final long serialVersionUID = -5285434317957104272L;
-	private PublisherAssertionId id;
-	private BusinessEntity businessEntityByToKey;
-	private BusinessEntity businessEntityByFromKey;
-	private String tmodelKey;
-	private String keyName;
-	private String keyValue;
-	private String fromCheck;
-	private String toCheck;
-	private Date modified;
+        private static final long serialVersionUID = -5285434317957104272L;
+        private PublisherAssertionId id;
+        private BusinessEntity businessEntityByToKey;
+        private BusinessEntity businessEntityByFromKey;
+        private String tmodelKey;
+        private String keyName;
+        private String keyValue;
+        private String fromCheck;
+        private String toCheck;
+        private Date modified;
         private List<Signature> signatures = new ArrayList<Signature>(0);
 
-	public PublisherAssertion() {
-	}
-
-	public PublisherAssertion(PublisherAssertionId id,
-			BusinessEntity businessEntityByToKey,
-			BusinessEntity businessEntityByFromKey, String tmodelKey,
-			String keyName, String keyValue, String fromCheck, String toCheck) {
-		this.id = id;
-		this.businessEntityByToKey = businessEntityByToKey;
-		this.businessEntityByFromKey = businessEntityByFromKey;
-		this.tmodelKey = tmodelKey;
-		this.keyName = keyName;
-		this.keyValue = keyValue;
-		this.fromCheck = fromCheck;
-		this.toCheck = toCheck;
-	}
-        
-	public void setModified(Date created) {
-		this.modified = created;
-	}
-	
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name = "modified", nullable = false, length = 29)
-	public Date getModified() {
-		if (modified!=null) {
-			return new Date(modified.getTime());
-		} else {
-			return null;
-		}
-	}
-
-	@EmbeddedId
-	@AttributeOverrides({
-			@AttributeOverride(name = "fromKey", column = @Column(name = "from_key", nullable = false, length = 255)),
-			@AttributeOverride(name = "toKey", column = @Column(name = "to_key", nullable = false, length = 255))})
-
-	public PublisherAssertionId getId() {
-		return this.id;
-	}
-
-	public void setId(PublisherAssertionId id) {
-		this.id = id;
-	}
-         
-        
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "to_key", nullable = false, insertable = false, updatable = false)
-
-	public BusinessEntity getBusinessEntityByToKey() {
-		return this.businessEntityByToKey;
-	}
-
-	public void setBusinessEntityByToKey(BusinessEntity businessEntityByToKey) {
-		this.businessEntityByToKey = businessEntityByToKey;
-	}
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "from_key", nullable = false, insertable = false, updatable = false)
-
-	public BusinessEntity getBusinessEntityByFromKey() {
-		return this.businessEntityByFromKey;
-	}
-
-	public void setBusinessEntityByFromKey(
-			BusinessEntity businessEntityByFromKey) {
-		this.businessEntityByFromKey = businessEntityByFromKey;
-	}
-
-	@Column(name = "tmodel_key", nullable = false, length = 255)
-	public String getTmodelKey() {
-		return this.tmodelKey;
-	}
-
-	public void setTmodelKey(String tmodelKey) {
-		this.tmodelKey = tmodelKey;
-	}
-
-	@Column(name = "key_name", nullable = false)
-
-	public String getKeyName() {
-		return this.keyName;
-	}
-
-	public void setKeyName(String keyName) {
-		this.keyName = keyName;
-	}
-
-	@Column(name = "key_value", nullable = false)
-
-	public String getKeyValue() {
-		return this.keyValue;
-	}
-
-	public void setKeyValue(String keyValue) {
-		this.keyValue = keyValue;
-	}
-
-	@Column(name = "from_check", nullable = false, length = 5)
-	public String getFromCheck() {
-		return this.fromCheck;
-	}
-
-	public void setFromCheck(String fromCheck) {
-		this.fromCheck = fromCheck;
-	}
-
-	@Column(name = "to_check", nullable = false, length = 5)
-	public String getToCheck() {
-		return this.toCheck;
-	}
-
-	public void setToCheck(String toCheck) {
-		this.toCheck = toCheck;
-	}
-        
-        @Override
-        public boolean equals(Object compareto){
-                PublisherAssertion rhs = (PublisherAssertion) compareto;
-                return (this.id.equals(rhs.id));
+        public PublisherAssertion() {
         }
-        
-        
+
+        public PublisherAssertion(PublisherAssertionId id,
+                BusinessEntity businessEntityByToKey,
+                BusinessEntity businessEntityByFromKey, String tmodelKey,
+                String keyName, String keyValue, String fromCheck, String toCheck) {
+                this.id = id;
+                this.businessEntityByToKey = businessEntityByToKey;
+                this.businessEntityByFromKey = businessEntityByFromKey;
+                this.tmodelKey = tmodelKey;
+                this.keyName = keyName;
+                this.keyValue = keyValue;
+                this.fromCheck = fromCheck;
+                this.toCheck = toCheck;
+        }
+
+        public void setModified(Date created) {
+                this.modified = created;
+        }
+
+        @Temporal(TemporalType.TIMESTAMP)
+        @Column(name = "modified", nullable = false, length = 29)
+        public Date getModified() {
+                if (modified != null) {
+                        return new Date(modified.getTime());
+                } else {
+                        return null;
+                }
+        }
+
+        @EmbeddedId
+        @AttributeOverrides({
+                @AttributeOverride(name = "fromKey", column = @Column(name = "from_key", nullable = false, length = 255)),
+        	@AttributeOverride(name = "toKey", column = @Column(name = "to_key", nullable = false, length = 255))})
+        public PublisherAssertionId getId() {
+                return this.id;
+        }
+
+        public void setId(PublisherAssertionId id) {
+                this.id = id;
+        }
+
+        @ManyToOne(fetch = FetchType.LAZY)
+        @JoinColumn(name = "to_key", nullable = false, insertable = false, updatable = false)
+
+        public BusinessEntity getBusinessEntityByToKey() {
+                return this.businessEntityByToKey;
+        }
+
+        public void setBusinessEntityByToKey(BusinessEntity businessEntityByToKey) {
+                this.businessEntityByToKey = businessEntityByToKey;
+        }
+
+        @ManyToOne(fetch = FetchType.LAZY)
+        @JoinColumn(name = "from_key", nullable = false, insertable = false, updatable = false)
+
+        public BusinessEntity getBusinessEntityByFromKey() {
+                return this.businessEntityByFromKey;
+        }
+
+        public void setBusinessEntityByFromKey(
+                BusinessEntity businessEntityByFromKey) {
+                this.businessEntityByFromKey = businessEntityByFromKey;
+        }
+
+        @Column(name = "tmodel_key", nullable = false, length = 255)
+        public String getTmodelKey() {
+                return this.tmodelKey;
+        }
+
+        public void setTmodelKey(String tmodelKey) {
+                this.tmodelKey = tmodelKey;
+        }
+
+        @Column(name = "key_name", nullable = false)
+
+        public String getKeyName() {
+                return this.keyName;
+        }
+
+        public void setKeyName(String keyName) {
+                this.keyName = keyName;
+        }
+
+        @Column(name = "key_value", nullable = false)
+
+        public String getKeyValue() {
+                return this.keyValue;
+        }
+
+        public void setKeyValue(String keyValue) {
+                this.keyValue = keyValue;
+        }
+
+        @Column(name = "from_check", nullable = false, length = 5)
+        public String getFromCheck() {
+                return this.fromCheck;
+        }
+
+        public void setFromCheck(String fromCheck) {
+                this.fromCheck = fromCheck;
+        }
+
+        @Column(name = "to_check", nullable = false, length = 5)
+        public String getToCheck() {
+                return this.toCheck;
+        }
+
+        public void setToCheck(String toCheck) {
+                this.toCheck = toCheck;
+        }
+
+        @Override
+        public boolean equals(Object compareto) {
+                if (compareto instanceof PublisherAssertion) {
+                        PublisherAssertion rhs = (PublisherAssertion) compareto;
+                        return (this.id.equals(rhs.id));
+                }
+                return false;
+        }
+
         @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
         public List<Signature> getSignatures() {
-                if (signatures==null)
-                        signatures=new ArrayList<Signature>();
+                if (signatures == null) {
+                        signatures = new ArrayList<Signature>();
+                }
                 return signatures;
         }
 
diff --git a/juddi-core/src/main/java/org/apache/juddi/query/BindingTemplateQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/BindingTemplateQuery.java
index fb32e05..e43b32a 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/BindingTemplateQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/BindingTemplateQuery.java
@@ -31,7 +31,7 @@
 			ENTITY_ALIAS + ".businessService." + EntityQuery.SIGNATURE_FIELD + " IS NOT EMPTY OR " +

 			ENTITY_ALIAS + ".businessService.businessEntity." + EntityQuery.SIGNATURE_FIELD + " IS NOT EMPTY ";

 	

-	protected static String selectSQL;

+	protected final static String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/BusinessEntityQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/BusinessEntityQuery.java
index e5acdf2..c1326ce 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/BusinessEntityQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/BusinessEntityQuery.java
@@ -28,7 +28,7 @@
 	public static final String ENTITY_FIELD = "businessEntity";

 	public static final String SIGNATURE_PRESENT = ENTITY_ALIAS + "." + SIGNATURE_FIELD + " IS NOT EMPTY ";

 

-	protected static String selectSQL;

+	protected static final String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/BusinessServiceQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/BusinessServiceQuery.java
index 9d9b36e..6f3ff22 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/BusinessServiceQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/BusinessServiceQuery.java
@@ -30,7 +30,7 @@
 			ENTITY_ALIAS + "." + EntityQuery.SIGNATURE_FIELD + " IS NOT EMPTY OR " +

 			ENTITY_ALIAS + ".businessEntity." + EntityQuery.SIGNATURE_FIELD + " IS NOT EMPTY ";

 	

-	protected static String selectSQL;

+	protected static final String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java
index 6252dcb..2423ab7 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java
@@ -33,7 +33,7 @@
  */

 public class DeletePublisherAssertionByBusinessQuery extends PublisherAssertionQuery {

 

-	private static Log log = LogFactory.getLog(DeletePublisherAssertionByBusinessQuery.class);

+	private static final Log log = LogFactory.getLog(DeletePublisherAssertionByBusinessQuery.class);

 

 	public static int delete(EntityManager em, List<?> businessKeys) {

 		if ((businessKeys == null) || (businessKeys.size() == 0))

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java
index 3edd064..aeb41db 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java
@@ -46,9 +46,9 @@
  */

 public class FetchBindingTemplatesQuery extends BindingTemplateQuery {

 

-	private static Log log = LogFactory.getLog(FetchBindingTemplatesQuery.class);

+	private static final Log log = LogFactory.getLog(FetchBindingTemplatesQuery.class);

 

-	protected static String selectSQL;

+	protected static final String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java
index 46e0b3a..7f2ffee 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java
@@ -46,9 +46,9 @@
  */

 public class FetchBusinessEntitiesQuery extends BusinessEntityQuery {

 

-	private static Log log = LogFactory.getLog(FetchBusinessEntitiesQuery.class);

+	private static final Log log = LogFactory.getLog(FetchBusinessEntitiesQuery.class);

 

-	protected static String selectSQL;

+	protected static final String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java
index 5a2733c..f9ec7b8 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java
@@ -46,9 +46,9 @@
  */

 public class FetchBusinessServicesQuery extends BusinessServiceQuery {

 

-	private static Log log = LogFactory.getLog(FetchBusinessServicesQuery.class);

+	private static final Log log = LogFactory.getLog(FetchBusinessServicesQuery.class);

 

-	protected static String selectSQL;

+	protected static final String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java
index aed4458..d046014 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java
@@ -46,9 +46,9 @@
  */

 public class FetchTModelsQuery extends TModelQuery {

 

-	private static Log log = LogFactory.getLog(FetchTModelsQuery.class);

+	private static final Log log = LogFactory.getLog(FetchTModelsQuery.class);

 

-	protected static String selectSQL;

+	protected static final String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByCategoryGroupQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByCategoryGroupQuery.java
index c4b8925..14fd594 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByCategoryGroupQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByCategoryGroupQuery.java
@@ -47,7 +47,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "BindingCategoryBag";

 	

-	private static FindEntityByCategoryGroupQuery findQuery;

+	private static final FindEntityByCategoryGroupQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByCategoryGroupQuery(BindingTemplateQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByCategoryQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByCategoryQuery.java
index f99d9eb..6489785 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByCategoryQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByCategoryQuery.java
@@ -41,7 +41,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "BindingCategoryBag";

 	

-	private static FindEntityByCategoryQuery findQuery;

+	private static final FindEntityByCategoryQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByCategoryQuery(BindingTemplateQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java
index b8d733a..7f7dfc5 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java
@@ -54,7 +54,7 @@
 

 	public static final String ENTITY_NAME_CHILD = "TmodelInstanceInfo";

 	

-	protected static String entityAliasChild;

+	protected static final String entityAliasChild;

 	

 	static {

 		entityAliasChild = buildAlias(ENTITY_NAME_CHILD);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryGroupQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryGroupQuery.java
index 29e6d45..790c127 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryGroupQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryGroupQuery.java
@@ -46,7 +46,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "BusinessCategoryBag";

 	

-	private static FindEntityByCategoryGroupQuery findQuery;

+	private static final FindEntityByCategoryGroupQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByCategoryGroupQuery(BusinessEntityQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java
index e67eb34..8c86a9d 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java
@@ -40,7 +40,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "BusinessCategoryBag";

 	

-	private static FindEntityByCategoryQuery findQuery;

+	private static final FindEntityByCategoryQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByCategoryQuery(BusinessEntityQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java
index 47f9b59..0fbf493 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java
@@ -48,7 +48,7 @@
 

 	private static final String ENTITY_NAME_CHILD = "DiscoveryUrl";

 

-	private static String entityAliasChild;;

+	private static final String entityAliasChild;;

 	

 	static {

 		entityAliasChild = buildAlias(ENTITY_NAME_CHILD);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByIdentifierQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByIdentifierQuery.java
index ebb1d46..ae0bdf8 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByIdentifierQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByIdentifierQuery.java
@@ -39,7 +39,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "BusinessIdentifier";

 	

-	private static FindEntityByIdentifierQuery findQuery;

+	private static final FindEntityByIdentifierQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByIdentifierQuery(BusinessEntityQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByNameQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByNameQuery.java
index 1ae0d32..06568fc 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByNameQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByNameQuery.java
@@ -47,7 +47,7 @@
 

 	public static final String ENTITY_NAME_CHILD = "BusinessName";

 	

-	private static FindEntityByNamesQuery findQuery;

+	private final static FindEntityByNamesQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByNamesQuery(BusinessEntityQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java
index 2f18e2b..ebcb21c 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java
@@ -34,7 +34,7 @@
 public class FindBusinessByPublisherQuery {

 

 

-	private static FindEntityByPublisherQuery findQuery;

+	private final static FindEntityByPublisherQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByPublisherQuery(

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByTModelKeyQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByTModelKeyQuery.java
index 1f6c382..88da9c1 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByTModelKeyQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByTModelKeyQuery.java
@@ -50,11 +50,11 @@
 public class FindBusinessByTModelKeyQuery extends BusinessEntityQuery {

 	

 	@SuppressWarnings("unused")

-	private static Log log = LogFactory.getLog(FindBusinessByTModelKeyQuery.class);

+	private final static Log log = LogFactory.getLog(FindBusinessByTModelKeyQuery.class);

 

 	public static final String ENTITY_NAME_CHILD = "TmodelInstanceInfo";

 

-	protected static String entityAliasChild;

+	protected static final String entityAliasChild;

 	

 	static {

 		entityAliasChild = buildAlias(ENTITY_NAME_CHILD);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCategoryGroupQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCategoryGroupQuery.java
index 7ffeca4..fe55a46 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCategoryGroupQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCategoryGroupQuery.java
@@ -54,7 +54,7 @@
 public class FindEntityByCategoryGroupQuery extends EntityQuery {

 	

 	@SuppressWarnings("unused")

-	private static Log log = LogFactory.getLog(FindEntityByCategoryGroupQuery.class);

+	private final static Log log = LogFactory.getLog(FindEntityByCategoryGroupQuery.class);

 

 	private static final String ENTITY_KEYEDREFERENCEGROUP = "KeyedReferenceGroup";

 	private static final String ALIAS_KEYEDREFERENCEGROUP = "krg";

@@ -64,13 +64,13 @@
 	private static final String ALIAS_KEYEDREFERENCE = buildAlias(ENTITY_KEYEDREFERENCE);

 	private static final String FIELD_KEYEDREFERENCEGROUP = "keyedReferenceGroup";

 	

-	private String entityName;

-	private String entityAlias;

-	private String keyName;

-	private String entityField;

-	private String entityNameChild;

-	private String entityAliasChild;

-	private String selectSQL;

+	private final String entityName;

+	private final String entityAlias;

+	private final String keyName;

+	private final String entityField;

+	private final String entityNameChild;

+	private final String entityAliasChild;

+	private final String selectSQL;

 	private String signaturePresent;

 

 	public FindEntityByCategoryGroupQuery(String entityName, String entityAlias, String keyName, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCategoryQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCategoryQuery.java
index 4c70dd4..99d831a 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCategoryQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCategoryQuery.java
@@ -51,7 +51,7 @@
 public class FindEntityByCategoryQuery extends EntityQuery {

 	

 	@SuppressWarnings("unused")

-	private static Log log = LogFactory.getLog(FindEntityByCategoryQuery.class);

+	private final static Log log = LogFactory.getLog(FindEntityByCategoryQuery.class);

 

 	private static final String ENTITY_KEYEDREFERENCE = "KeyedReference";

 	private static final String ALIAS_KEYEDREFERENCE = buildAlias(ENTITY_KEYEDREFERENCE);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCombinedCategoryQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCombinedCategoryQuery.java
index a8c1ae9..a19f737 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCombinedCategoryQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByCombinedCategoryQuery.java
@@ -76,7 +76,7 @@
 public class FindEntityByCombinedCategoryQuery extends FindEntityByCategoryQuery {
 	
 	@SuppressWarnings("unused")
-	private static Log log = LogFactory.getLog(FindEntityByCombinedCategoryQuery.class);
+	private final static Log log = LogFactory.getLog(FindEntityByCombinedCategoryQuery.class);
 	
 	protected String entityField2;
 	protected String entityNameChild2;
@@ -86,7 +86,6 @@
 	protected String entityNameChild3;
 	protected String entityAliasChild3;
 	
-	protected String signaturePresent;
 
 	public FindEntityByCombinedCategoryQuery(String entityName, String entityAlias, String keyName,
 			String entityField, String entityNameChild, String signaturePresent) {
@@ -179,6 +178,7 @@
 					resultingEntityKeys = map.get(keyValue);
 					firstTime = false;
 				} else {
+                                        //FIXME this is wrong
 					resultingEntityKeys.retainAll(map.get(keyValue));
 				}
 			}
diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java
index ad01f26..31251e2 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java
@@ -50,15 +50,15 @@
 public class FindEntityByIdentifierQuery extends EntityQuery {

 	

 	@SuppressWarnings("unused")

-	private static Log log = LogFactory.getLog(FindEntityByIdentifierQuery.class);

+	private final static Log log = LogFactory.getLog(FindEntityByIdentifierQuery.class);

 

-	private String entityName;

-	private String entityAlias;

-	private String keyName;

-	private String entityField;

-	private String entityNameChild;

-	private String entityAliasChild;

-	private String selectSQL;

+	private final String entityName;

+	private final String entityAlias;

+	private final String keyName;

+	private final String entityField;

+	private final String entityNameChild;

+	private final String entityAliasChild;

+	private final String selectSQL;

 	private String signaturePresent;

 

 	public FindEntityByIdentifierQuery(String entityName, String entityAlias, String keyName, 

@@ -71,8 +71,8 @@
 		this.entityAliasChild = buildAlias(entityNameChild);

 		this.signaturePresent = signaturePresent;

 		

-		StringBuffer sql = new StringBuffer(200);

-		sql.append("select distinct " + entityAlias + "." + keyName + " from " + entityName + " " + entityAlias + " ");

+		StringBuilder sql = new StringBuilder(200);

+		sql.append("select distinct ").append(entityAlias).append(".").append(keyName).append(" from ").append(entityName).append(" ").append(entityAlias).append(" ");

 		selectSQL = sql.toString();

 	}

 	

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java
index 1fb8818..5915783 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java
@@ -39,13 +39,13 @@
 	@SuppressWarnings("unused")

 	private static Log log = LogFactory.getLog(FindEntityByNamesQuery.class);

 

-	private String entityName;

-	private String entityAlias;

-	private String keyName;

-	private String entityField;

-	private String entityNameChild;

-	private String entityAliasChild;

-	private String selectSQL;

+	private final String entityName;

+	private final String entityAlias;

+	private final String keyName;

+	private final String entityField;

+	private final String entityNameChild;

+	private final String entityAliasChild;

+	private final String selectSQL;

 	private String signaturePresent;

 	

 	public FindEntityByNamesQuery(String entityName, String entityAlias, String keyName, String entityField, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java
index 95ce436..2f42d83 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java
@@ -35,10 +35,10 @@
 

 	public static final String AUTHORIZED_NAME_FIELD = "authorizedName";

 	

-	private String entityName;

-	private String entityAlias;

-	private String keyName;

-	private String selectSQL;

+	private final String entityName;

+	private final String entityAlias;

+	private final String keyName;

+	private final String selectSQL;

 	private String signaturePresent;

 	

 	public FindEntityByPublisherQuery(String entityName, String entityAlias, String keyName, String signaturePresent) {

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCategoryGroupQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCategoryGroupQuery.java
index a37130d..acbc2b4 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCategoryGroupQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCategoryGroupQuery.java
@@ -46,7 +46,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "ServiceCategoryBag";

 	

-	private static FindEntityByCategoryGroupQuery findQuery;

+	private static final FindEntityByCategoryGroupQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByCategoryGroupQuery(BusinessServiceQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCategoryQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCategoryQuery.java
index 525e1dd..bbdb1d3 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCategoryQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCategoryQuery.java
@@ -40,7 +40,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "ServiceCategoryBag";

 	

-	private static FindEntityByCategoryQuery findQuery;

+	private static final FindEntityByCategoryQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByCategoryQuery(BusinessServiceQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCombinedCategoryQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCombinedCategoryQuery.java
index f6e0e96..ab87a9d 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCombinedCategoryQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByCombinedCategoryQuery.java
@@ -61,7 +61,7 @@
 	private static final String ENTITY_FIELD2      = "bindingTemplate." + BusinessServiceQuery.ENTITY_FIELD;
 	private static final String ENTITY_NAME_CHILD2 = "BindingCategoryBag";
 	
-	private static FindEntityByCombinedCategoryQuery findQuery;
+	private static final FindEntityByCombinedCategoryQuery findQuery;
 	
 	static {
 		findQuery = new FindEntityByCombinedCategoryQuery(BusinessServiceQuery.ENTITY_NAME, 
diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByNameQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByNameQuery.java
index 1dae306..bb52bec 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByNameQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByNameQuery.java
@@ -47,7 +47,7 @@
 

 	public static final String ENTITY_NAME_CHILD = "ServiceName";			

 

-	private static FindEntityByNamesQuery findQuery;

+	private static final FindEntityByNamesQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByNamesQuery(BusinessServiceQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByTModelKeyQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByTModelKeyQuery.java
index a470371..5c855f9 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByTModelKeyQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindServiceByTModelKeyQuery.java
@@ -56,7 +56,7 @@
 

 	public static final String ENTITY_NAME_CHILD = "TmodelInstanceInfo";

 

-	protected static String entityAliasChild;

+	protected static final String entityAliasChild;

 	

 	static {

 		entityAliasChild = buildAlias(ENTITY_NAME_CHILD);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByCategoryGroupQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByCategoryGroupQuery.java
index 31beb74..487a90e 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByCategoryGroupQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByCategoryGroupQuery.java
@@ -47,7 +47,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "TmodelCategoryBag";

 	

-	private static FindEntityByCategoryGroupQuery findQuery;

+	private static final FindEntityByCategoryGroupQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByCategoryGroupQuery(TModelQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByCategoryQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByCategoryQuery.java
index 570dab8..6e5237c 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByCategoryQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByCategoryQuery.java
@@ -41,7 +41,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "TmodelCategoryBag";

 	

-	private static FindEntityByCategoryQuery findQuery;

+	private static final FindEntityByCategoryQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByCategoryQuery(TModelQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByIdentifierQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByIdentifierQuery.java
index 3e9d833..fe7d53a 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByIdentifierQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByIdentifierQuery.java
@@ -40,7 +40,7 @@
 	

 	private static final String ENTITY_NAME_CHILD = "TmodelIdentifier";

 	

-	private static FindEntityByIdentifierQuery findQuery;

+	private static final FindEntityByIdentifierQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByIdentifierQuery(TModelQuery.ENTITY_NAME, 

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java
index 6ba4377..fd7954c 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java
@@ -34,7 +34,7 @@
 public class FindTModelByPublisherQuery {

 	

 	

-	private static FindEntityByPublisherQuery findQuery;

+	private static final FindEntityByPublisherQuery findQuery;

 	

 	static {

 		findQuery = new FindEntityByPublisherQuery(

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java
index 5e2e89a..8817cd8 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java
@@ -27,8 +27,8 @@
 	public static final String FROM_KEY_NAME = "businessEntityByFromKey." + KEY_NAME;

 	public static final String TO_KEY_NAME = "businessEntityByToKey." + KEY_NAME;

 	

-	protected static String selectSQL;

-	protected static String deleteSQL;

+	protected static final String selectSQL;

+	protected static final String deleteSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/SubscriptionQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/SubscriptionQuery.java
index 1a31783..2f5b02c 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/SubscriptionQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/SubscriptionQuery.java
@@ -25,7 +25,7 @@
 	public static final String ENTITY_NAME = "Subscription";

 	public static final String ENTITY_ALIAS = "ss";

 	

-	protected static String selectSQL;

+	protected static final String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/query/TModelQuery.java b/juddi-core/src/main/java/org/apache/juddi/query/TModelQuery.java
index b7bdcd1..bb4a4a5 100644
--- a/juddi-core/src/main/java/org/apache/juddi/query/TModelQuery.java
+++ b/juddi-core/src/main/java/org/apache/juddi/query/TModelQuery.java
@@ -27,7 +27,7 @@
 	public static final String ENTITY_FIELD = "tmodel";

 	public static final String SIGNATURE_PRESENT = ENTITY_ALIAS + "." + SIGNATURE_FIELD + " IS NOT EMPTY ";

 	

-	protected static String selectSQL;

+	protected static final String selectSQL;

 

 	static {

 		StringBuilder sql = new StringBuilder(200);

diff --git a/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
index 4a51df1..4426cc7 100644
--- a/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
+++ b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
@@ -76,7 +76,10 @@
          * @throws ConfigurationException
          */
         public ReplicationNotifier() throws ConfigurationException {
-                super();
+               super();
+               init();
+        }
+        private synchronized void init() throws ConfigurationException {
                 timer = new Timer(true);
                 startBuffer=AppConfig.getConfiguration().getLong(Property.JUDDI_REPLICATION_START_BUFFER, 5000l);
                 interval = AppConfig.getConfiguration().getLong(Property.JUDDI_REPLICATION_INTERVAL, 5000l);
@@ -288,7 +291,7 @@
                 return false;
         }
 
-        class PrimaryAlternate {
+        private static class PrimaryAlternate {
 
                 String primaryUrl = null;
                 List<String> alternateUrls = new ArrayList<String>();
diff --git a/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java b/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
index cdfd79d..549e16c 100644
--- a/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
+++ b/juddi-core/src/main/java/org/apache/juddi/subscription/SubscriptionNotifier.java
@@ -61,23 +61,23 @@
  */
 public class SubscriptionNotifier extends TimerTask {
 
-        private Log log = LogFactory.getLog(this.getClass());
+        private static final Log log = LogFactory.getLog(SubscriptionNotifier.class);
         private Timer timer = null;
-        private long startBuffer = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_START_BUFFER, 20000l); // 20s startup delay default 
-        private long interval = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_INTERVAL, 300000l); //5 min default
-        private long acceptableLagTime = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_ACCEPTABLE_LAGTIME, 1000l); //1000 milliseconds
-        private int maxTries = AppConfig.getConfiguration().getInt(Property.JUDDI_NOTIFICATION_MAX_TRIES, 3);
-        private long badListResetInterval = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_LIST_RESET_INTERVAL, 1000l * 3600); //one hour
+        private final long startBuffer = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_START_BUFFER, 20000l); // 20s startup delay default 
+        private final long interval = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_INTERVAL, 300000l); //5 min default
+        private final long acceptableLagTime = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_ACCEPTABLE_LAGTIME, 1000l); //1000 milliseconds
+        private final int maxTries = AppConfig.getConfiguration().getInt(Property.JUDDI_NOTIFICATION_MAX_TRIES, 3);
+        private final long badListResetInterval = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_LIST_RESET_INTERVAL, 1000l * 3600); //one hour
         /**
          * @since 3.2
          */
-        private boolean sendToken = AppConfig.getConfiguration().getBoolean(Property.JUDDI_NOTIFICATION_SENDAUTHTOKEN, false);
-        private UDDISubscriptionImpl subscriptionImpl = new UDDISubscriptionImpl();
-        private Boolean alwaysNotify = false;
+        private final boolean sendToken = AppConfig.getConfiguration().getBoolean(Property.JUDDI_NOTIFICATION_SENDAUTHTOKEN, false);
+        private final UDDISubscriptionImpl subscriptionImpl = new UDDISubscriptionImpl();
+        private final Boolean alwaysNotify = false;
         private Date desiredDate = null;
         private int lastUpdateCounter;
-        private UDDIServiceCounter serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIPublicationImpl.class);
-        private String[] attributes = {
+        private final UDDIServiceCounter serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIPublicationImpl.class);
+        private final String[] attributes = {
                 "save_business", "save_service", "save_binding", "save_tmodel",
                 "delete_business", "delete_service", "delete_binding", "delete_tmodel",
                 "add_publisherassertions", "set_publisherassertions", "delete_publisherassertions"
@@ -137,6 +137,7 @@
                 return isUpdated;
         }
 
+        @Override
         public synchronized void run() {
                 if (badListResetInterval > 0 && new Date().getTime() > lastBadNotificationReset.getTime() + badListResetInterval) {
                         badNotifications = new ConcurrentHashMap<String, Integer>();
diff --git a/juddi-core/src/main/java/org/apache/juddi/v3/auth/XMLDocAuthenticator.java b/juddi-core/src/main/java/org/apache/juddi/v3/auth/XMLDocAuthenticator.java
index 1e9787d..66884dd 100644
--- a/juddi-core/src/main/java/org/apache/juddi/v3/auth/XMLDocAuthenticator.java
+++ b/juddi-core/src/main/java/org/apache/juddi/v3/auth/XMLDocAuthenticator.java
@@ -14,7 +14,6 @@
  * limitations under the License.

  *

  */

-

 package org.apache.juddi.v3.auth;

 

 import java.io.File;

@@ -49,110 +48,122 @@
 import org.apache.juddi.v3.error.UnknownUserException;

 

 /**

- * This is a simple implementation of jUDDI's Authenticator interface. The credential

- * store is simply an unencrypted xml document called 'juddi.users' that can be

- * found in jUDDI's config directory. Below is an example of what you might find

- * in this document.

+ * This is a simple implementation of jUDDI's Authenticator interface. The

+ * credential store is simply an unencrypted xml document called 'juddi.users'

+ * that can be found in jUDDI's config directory. Below is an example of what

+ * you might find in this document.

  *

- *     Example juddi.users document:

- *     =============================

- *     <?xml version="1.0" encoding="UTF-8"?>

- *     <juddi-users>

- *       <user userid="sviens" password="password" />

- *       <user userid="griddell" password="password" />

- *       <user userid="bhablutzel" password="password" />

- *     </juddi-users>

+ * Example juddi.users document: =============================

+ * <?xml version="1.0" encoding="UTF-8"?>

+ * <juddi-users>

+ * <user userid="sviens" password="password" />

+ * <user userid="griddell" password="password" />

+ * <user userid="bhablutzel" password="password" />

+ * </juddi-users>

  *

  * @author Steve Viens (sviens@apache.org)

  * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>

  * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>

  */

-public class XMLDocAuthenticator implements Authenticator

-{

-	protected static Log log = LogFactory.getLog(AuthenticatorFactory.class);

-	/** Container for the user credentials */

-	Map<String,User> userTable;

-	

-	/**

-	 *

-	 */

-	public XMLDocAuthenticator() throws JAXBException, IOException, ConfigurationException {

-		readUserFile();

-	}

-        

-        /**

-	 * an empty constructor

-	 */

-	public XMLDocAuthenticator(boolean b) {

-		

-	}

-	

-	protected String getFilename() throws ConfigurationException {

-		return AppConfig.getConfiguration().getString(Property.JUDDI_USERSFILE, Property.DEFAULT_XML_USERSFILE);

-	}

-	/**

-	 * Read user data from the juddi-users file.

-	 * 

-	 * @throws IOException when the file cannot be opened

-	 *         JAXBException when the content is misformed.

-	 * @throws ConfigurationException 

-	 */

-	public synchronized void readUserFile() throws JAXBException, IOException, ConfigurationException

-	{

-            

-		userTable = new HashMap<String, User> ();

-        String usersFileName = getFilename();

-        if (usersFileName==null || usersFileName.length()==0)

-           throw new ConfigurationException("usersFileName value is null!");

-        File file = new File(usersFileName);

-        InputStream stream = null;

-        if (file.exists()) {

-        	log.info("Reading jUDDI Users File: " + usersFileName + "...");

-        	stream = new FileInputStream(file);

-        } else {

-            URL resource = ClassUtil.getResource(usersFileName, this.getClass());

-            if (resource!=null)

-                log.info("Reading jUDDI Users File: " + usersFileName + "...from " + resource.toExternalForm());

-            else

-                log.info("Reading jUDDI Users File: " + usersFileName + "...");

-            stream = ClassUtil.getResource(usersFileName, this.getClass()).openStream();

-        }

-		JAXBContext jaxbContext=JAXBContext.newInstance(JuddiUsers.class);

-		Unmarshaller unMarshaller = jaxbContext.createUnmarshaller();

-		JAXBElement<JuddiUsers> element = unMarshaller.unmarshal(new StreamSource(stream),JuddiUsers.class);

-		JuddiUsers users = element.getValue();

-		for (User user : users.getUser()) {

-			userTable.put(user.getUserid(), user);

-			log.debug("Loading user credentials for user: " + user.getUserid());

-		}

-	}

+public class XMLDocAuthenticator implements Authenticator {

 

-	/**

-	 *

+        protected final static Log log = LogFactory.getLog(AuthenticatorFactory.class);

+        /**

+         * Container for the user credentials

+         */

+        Map<String, User> userTable;

+

+        /**

+         *

+         */

+        public XMLDocAuthenticator() throws JAXBException, IOException, ConfigurationException {

+                readUserFile();

+        }

+

+        /**

+         * an empty constructor

+         */

+        public XMLDocAuthenticator(boolean b) {

+

+        }

+

+        protected String getFilename() throws ConfigurationException {

+                return AppConfig.getConfiguration().getString(Property.JUDDI_USERSFILE, Property.DEFAULT_XML_USERSFILE);

+        }

+

+        /**

+         * Read user data from the juddi-users file.

+         *

+         * @throws IOException when the file cannot be opened JAXBException when

+         * the content is malformed.

+         * @throws ConfigurationException

+         */

+        public synchronized void readUserFile() throws JAXBException, IOException, ConfigurationException {

+

+                userTable = new HashMap<String, User>();

+                String usersFileName = getFilename();

+                if (usersFileName == null || usersFileName.length() == 0) {

+                        throw new ConfigurationException("usersFileName value is null!");

+                }

+                File file = new File(usersFileName);

+                InputStream stream = null;

+                try {

+                        if (file.exists()) {

+                                log.info("Reading jUDDI Users File: " + usersFileName + "...");

+                                stream = new FileInputStream(file);

+                        } else {

+                                URL resource = ClassUtil.getResource(usersFileName, this.getClass());

+                                if (resource != null) {

+                                        log.info("Reading jUDDI Users File: " + usersFileName + "...from " + resource.toExternalForm());

+                                } else {

+                                        log.info("Reading jUDDI Users File: " + usersFileName + "...");

+                                }

+                                stream = ClassUtil.getResource(usersFileName, this.getClass()).openStream();

+                        }

+                        JAXBContext jaxbContext = JAXBContext.newInstance(JuddiUsers.class);

+                        Unmarshaller unMarshaller = jaxbContext.createUnmarshaller();

+                        JAXBElement<JuddiUsers> element = unMarshaller.unmarshal(new StreamSource(stream), JuddiUsers.class);

+                        JuddiUsers users = element.getValue();

+                        for (User user : users.getUser()) {

+                                userTable.put(user.getUserid(), user);

+                                log.debug("Loading user credentials for user: " + user.getUserid());

+                        }

+                } catch (IOException ex) {

+                        log.warn("io exception", ex);

+                } finally {

+                        if (stream != null) {

+                                stream.close();

+                        }

+                }

+        }

+

+        /**

+         *

          * @param userID

          * @param credential

-	 */

-	public String authenticate(String userID,String credential)

-	throws AuthenticationException, FatalErrorException

-	{

-		// a userID must be specified.

-		if (userID == null)

-			throw new UnknownUserException(new ErrorMessage("errors.auth.InvalidUserId"));

+         */

+        public String authenticate(String userID, String credential)

+                throws AuthenticationException, FatalErrorException {

+                // a userID must be specified.

+                if (userID == null) {

+                        throw new UnknownUserException(new ErrorMessage("errors.auth.InvalidUserId"));

+                }

 

-		// credential (password) must be specified.

-		if (credential == null)

-			throw new UnknownUserException(new ErrorMessage("errors.auth.InvalidCredentials"));

+                // credential (password) must be specified.

+                if (credential == null) {

+                        throw new UnknownUserException(new ErrorMessage("errors.auth.InvalidCredentials"));

+                }

 

-		if (userTable.containsKey(userID))

-		{

-			User user = (User)userTable.get(userID);

-			if ((user.getPassword() == null) || (!credential.equals(user.getPassword())))

-				throw new UnknownUserException(new ErrorMessage("errors.auth.InvalidCredentials"));

-		}

-		else

-			throw new UnknownUserException(new ErrorMessage("errors.auth.InvalidUserId", userID));

+                if (userTable.containsKey(userID)) {

+                        User user = (User) userTable.get(userID);

+                        if ((user.getPassword() == null) || (!credential.equals(user.getPassword()))) {

+                                throw new UnknownUserException(new ErrorMessage("errors.auth.InvalidCredentials"));

+                        }

+                } else {

+                        throw new UnknownUserException(new ErrorMessage("errors.auth.InvalidUserId", userID));

+                }

 

-		int MaxBindingsPerService = -1;

+                int MaxBindingsPerService = -1;

                 int MaxServicesPerBusiness = -1;

                 int MaxTmodels = -1;

                 int MaxBusinesses = -1;

@@ -193,28 +204,29 @@
                         }

                         em.close();

                 }

-		return userID;

-	}

-	

-	@Override

-	public UddiEntityPublisher identify(String authInfo, String authorizedName, WebServiceContext ctx) throws AuthenticationException {

+                return userID;

+        }

 

-		EntityManager em = PersistenceManager.getEntityManager();

-		EntityTransaction tx = em.getTransaction();

-		try {

-			tx.begin();

-			Publisher publisher = em.find(Publisher.class, authorizedName);

-			if (publisher == null)

-				throw new UnknownUserException(new ErrorMessage("errors.auth.NoPublisher", authorizedName));

-			

-			return publisher;

-		} finally {

-			if (tx.isActive()) {

-				tx.rollback();

-			}

-			em.close();

-		}

-		

-	}

+        @Override

+        public UddiEntityPublisher identify(String authInfo, String authorizedName, WebServiceContext ctx) throws AuthenticationException {

 

-}
\ No newline at end of file
+                EntityManager em = PersistenceManager.getEntityManager();

+                EntityTransaction tx = em.getTransaction();

+                try {

+                        tx.begin();

+                        Publisher publisher = em.find(Publisher.class, authorizedName);

+                        if (publisher == null) {

+                                throw new UnknownUserException(new ErrorMessage("errors.auth.NoPublisher", authorizedName));

+                        }

+

+                        return publisher;

+                } finally {

+                        if (tx.isActive()) {

+                                tx.rollback();

+                        }

+                        em.close();

+                }

+

+        }

+

+}

diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java
index 55d51e3..cbb5500 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java
@@ -16,6 +16,7 @@
  */
 package org.apache.juddi.validation;
 
+import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
@@ -24,6 +25,7 @@
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import static org.apache.juddi.api.impl.AuthenticatedService.UTF8;
 
 import org.apache.juddi.model.TransferTokenKey;
 import org.apache.juddi.model.UddiEntity;
@@ -32,6 +34,7 @@
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.FatalErrorException;
 import org.apache.juddi.v3.error.InvalidKeyPassedException;
+import org.apache.juddi.v3.error.InvalidValueException;
 import org.apache.juddi.v3.error.TokenAlreadyExistsException;
 import org.apache.juddi.v3.error.TransferNotAllowedException;
 import org.apache.juddi.v3.error.UserMismatchException;
@@ -228,7 +231,12 @@
                         throw new ValueNotAllowedException(new ErrorMessage("errors.keybag.NoInput"));
                 }
 
-                String transferTokenId = new String(apiTransferToken.getOpaqueToken());
+                String transferTokenId = null;
+                try{
+                    transferTokenId = new String(apiTransferToken.getOpaqueToken(), UTF8);
+                } catch (UnsupportedEncodingException ex) {
+                    throw new InvalidValueException(new ErrorMessage("errors.stringEncoding"));
+                }
                 if (nodeID.equals(apiTransferToken.getNodeID())) {
                         validateTransferLocalEntities(em, transferTokenId, apiKeyList);
                 } else {
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 6ec27f1..2d788e9 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
@@ -2166,11 +2166,15 @@
          */

         private List<String> TModelContains(String key, TModel ref) {

 

-                log.debug("looking for key=" + key + " from tModel " + ref.getTModelKey());

-                List<String> ret = new ArrayList<String>();

-                if (ref == null) {

+                if (key == null) {

                         return null;

                 }

+                if (ref == null || ref.getTModelKey()==null) {

+                        return null;

+                }

+                log.debug("looking for key=" + key + " from tModel " + ref.getTModelKey());

+                List<String> ret = new ArrayList<String>();

+                

                 if (ref.getCategoryBag() != null) {

                         for (int i = 0; i < ref.getCategoryBag().getKeyedReference().size(); i++) {

                                 if (ref.getCategoryBag().getKeyedReference().get(i).getTModelKey().equalsIgnoreCase(key)) {

@@ -2209,24 +2213,24 @@
          * @param addressLine

          */

         private void validatedAddressLinesIfKeyDefined(List<AddressLine> addressLine) throws ValueNotAllowedException {

-                String err = "";

+                StringBuilder err = new StringBuilder();

                 for (int i = 0; i < addressLine.size(); i++) {

 

                         if (addressLine.get(i).getKeyName() == null

                                 || addressLine.get(i).getKeyName().trim().length() == 0) {

-                                err += "addressLine(" + i + ").keyName,";

+                                err.append("addressLine(").append(i).append(").keyName,");

                         }

                         if (addressLine.get(i).getKeyValue() == null

                                 || addressLine.get(i).getKeyValue().trim().length() == 0) {

-                                err += "addressLine(" + i + ").keyValue,";

+                                err.append("addressLine(").append(i).append(").keyValue,");

                         }

                         if (addressLine.get(i).getValue() == null

                                 || addressLine.get(i).getValue().trim().length() == 0) {

-                                err += "addressLine(" + i + ").value,";

+                                 err.append("addressLine(").append(i).append(").value,");

                         }

                 }

                 if (err.length() > 0) {

-                        throw new ValueNotAllowedException(new ErrorMessage("E_invalidValueAddressLine", err));

+                        throw new ValueNotAllowedException(new ErrorMessage("E_invalidValueAddressLine", err.toString()));

                 }

         }

 

diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java
index d9131c9..45bc82d 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java
@@ -16,17 +16,21 @@
  */
 package org.apache.juddi.validation;
 
+import java.io.UnsupportedEncodingException;
 import java.math.BigInteger;
 import java.security.cert.CertificateException;
 import java.util.List;
 import java.util.Properties;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.persistence.EntityManager;
 import javax.xml.ws.WebServiceContext;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import static org.apache.juddi.api.impl.AuthenticatedService.UTF8;
 import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.Property;
 import org.apache.juddi.model.Node;
@@ -305,7 +309,12 @@
                 TransferEntities x = new TransferEntities();
                 x.setKeyBag(body.getKeyBag());
                 x.setTransferToken(body.getTransferToken());
-                String transferTokenId = new String(body.getTransferToken().getOpaqueToken());
+                String transferTokenId;
+                try {
+                    transferTokenId = new String(body.getTransferToken().getOpaqueToken(), UTF8);
+                } catch (UnsupportedEncodingException ex) {
+                    throw new InvalidValueException(new ErrorMessage("errors.stringEncoding"));
+                }
                 new ValidateCustodyTransfer(null).validateTransferLocalEntities(em, transferTokenId, body.getKeyBag().getKey());
 
         }
diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIKey.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIKey.java
index 6d067da..ad4148d 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIKey.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIKey.java
@@ -36,8 +36,8 @@
 		if (key == null)

 			throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NullKey"));

 		if (key.toLowerCase().startsWith("uuid:")) {

-               return;

-          }

+                        return;

+                }

 		if (! key.contains(KeyGenerator.PARTITION_SEPARATOR)) return; //v2 style key; no other validation rules apply

 		

 		String keyToTest = key.trim();

diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java
index 1662a9f..f9e651e 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java
@@ -28,7 +28,6 @@
 import org.uddi.api_v3.BindingTemplate;
 import org.uddi.api_v3.BusinessEntity;
 import org.uddi.api_v3.BusinessService;
-import org.uddi.api_v3.DispositionReport;
 import org.uddi.api_v3.PublisherAssertion;
 import org.uddi.api_v3.TModel;
 import org.uddi.v3_service.UDDIValueSetValidationPortType;
@@ -51,7 +50,7 @@
  */
 public class ValidateValuesFromWebService {
 
-        static final Log log = LogFactory.getLog(ValidateValuesFromWebService.class);
+        private static final Log log = LogFactory.getLog(ValidateValuesFromWebService.class);
 
         private static UDDIValueSetValidationPortType getPort(String url) throws ValueNotAllowedException {
                 UDDIService svc = new UDDIService();
@@ -96,7 +95,7 @@
                 req.getTModel().addAll(obj);
 
                 try {
-                        DispositionReport validateValues = vsv.validateValues(req);
+                        vsv.validateValues(req);
                 } catch (Exception ex) {
                         log.warn(ex.getMessage());
                         log.debug(ex.getMessage(),ex);
@@ -111,7 +110,7 @@
                 req.getBindingTemplate().addAll(obj);
 
                 try {
-                        DispositionReport validateValues = vsv.validateValues(req);
+                        vsv.validateValues(req);
                 } catch (Exception ex) {
                         log.warn(ex.getMessage());
                         log.debug(ex.getMessage(),ex);
@@ -126,7 +125,7 @@
                 req.getBusinessService().addAll(obj);
 
                 try {
-                        DispositionReport validateValues = vsv.validateValues(req);
+                        vsv.validateValues(req);
                 } catch (Exception ex) {
                         log.warn(ex.getMessage());
                         log.debug(ex.getMessage(),ex);
@@ -142,7 +141,7 @@
                 req.getBusinessEntity().addAll(obj);
 
                 try {
-                        DispositionReport validateValues = vsv.validateValues(req);
+                        vsv.validateValues(req);
                 } catch (Exception ex) {
                         log.warn(ex.getMessage());
                         log.debug(ex.getMessage(),ex);
@@ -156,7 +155,7 @@
                 ValidateValues req = new ValidateValues();
                 req.getPublisherAssertion().add(obj);
                 try {
-                        DispositionReport validateValues = vsv.validateValues(req);
+                        vsv.validateValues(req);
                 } catch (Exception ex) {
                         log.warn(ex.getMessage());
                         log.debug(ex.getMessage(),ex);
diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java
index 301719a..cbdae0e 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java
@@ -113,7 +113,7 @@
                         return;
                 }
                 //StringBuilder badvalues=new StringBuilder();
-                String err = "";
+                StringBuilder err = new StringBuilder();
                 for (int i = 0; i < items.size(); i++) {
                         if (items.get(i).getTModelKey().equalsIgnoreCase(getMyKey())) {
                                 List<String> validValues = getValidValues();
@@ -129,13 +129,13 @@
                                         }
                                         if (!localfound) {
                                                 //badvalues.append(items.get(i).getKeyValue()).append(" ");
-                                                err += xpath + "keyedReference(" + i + ")=" + items.get(i).getKeyValue() + " ";
+                                                err.append(xpath).append("keyedReference(").append(i).append(")=").append(items.get(i).getKeyValue()).append(" ");
                                         }
                                 }
                         }
                 }
                 if (err.length() > 0) {
-                        throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", err + getPrintableValidValues()));
+                        throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", err.toString() + getPrintableValidValues()));
                 }
         }
 
diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java
index 114048b..02504f5 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java
@@ -148,7 +148,7 @@
                 if (items == null) {
                         return;
                 }
-                String err = "";
+                StringBuilder err = new StringBuilder();
                 for (int i = 0; i < items.size(); i++) {
                         List<String> validValues = getValidValues();
                         if (validValues != null) {
@@ -160,12 +160,12 @@
                                         }
                                 }
                                 if (!valid) {
-                                        err += xpath + "keyedReference(" + i + ") ";
+                                        err.append(xpath + "keyedReference(" + i + ") ");
                                 }
                         }
                 }
                 if (err.length() > 0) {
-                        throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", err));
+                        throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", err.toString()));
                 }
         }
 
diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgidentifierisreplacedby.java b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgidentifierisreplacedby.java
index 33b4620..52f5969 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgidentifierisreplacedby.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgidentifierisreplacedby.java
@@ -295,30 +295,6 @@
                 }
         }
 
-        private void validatedValuesKeyRef(List<KeyedReference> items, String xpath) throws DispositionReportFaultMessage {
-                if (items == null) {
-                        return;
-                }
-                String err = "";
-                for (int i = 0; i < items.size(); i++) {
-                        List<String> validValues = getValidValues();
-                        if (validValues != null) {
-                                //ok we have some work to do
-                                boolean valid = false;
-                                for (int k = 0; k < validValues.size(); k++) {
-                                        if (validValues.get(k).equals(items.get(i).getKeyValue())) {
-                                                valid = true;
-                                        }
-                                }
-                                if (!valid) {
-                                        err += xpath + "keyedReference(" + i + ") ";
-                                }
-                        }
-                }
-                if (err.length() > 0) {
-                        throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", err));
-                }
-        }
 
         @Override
         public void validateTmodelInstanceDetails(List<TModelInstanceInfo> tModelInstanceInfo, String xpath) throws DispositionReportFaultMessage {
diff --git a/juddi-core/src/main/resources/messages.properties b/juddi-core/src/main/resources/messages.properties
index 10f2828..0306a17 100644
--- a/juddi-core/src/main/resources/messages.properties
+++ b/juddi-core/src/main/resources/messages.properties
@@ -63,6 +63,7 @@
 

 

 #-- General error messages

+errors.stringEncoding=non-UTF8 token

 errors.DatatypeFactor=Can't create a DatatypeFactory instance.

 errors.Unspecified=An unspecified error occurred

 errors.Unsupported=This version does not support this feature or API

diff --git a/juddi-examples/ValueSetValidator/src/main/java/org/apache/juddi/examples/vsv/valuesetvalidator/App.java b/juddi-examples/ValueSetValidator/src/main/java/org/apache/juddi/examples/vsv/valuesetvalidator/App.java
index df5d2d1..0392150 100644
--- a/juddi-examples/ValueSetValidator/src/main/java/org/apache/juddi/examples/vsv/valuesetvalidator/App.java
+++ b/juddi-examples/ValueSetValidator/src/main/java/org/apache/juddi/examples/vsv/valuesetvalidator/App.java
@@ -34,7 +34,7 @@
         public static void main(String[] args) throws ConfigurationException {
                 System.out.println("Notice! before running this, build this project and copy the jar file into juddi-tomcat/target/tomcat/apache-tomcat.../juddiv3.war/WEB-INF/lib and restart!");
 
-                System.out.println(UDDIValueSetValidationImpl.ConvertKeyToClass("uddi:www.bob.com:verified-tmodel"));
+                System.out.println(UDDIValueSetValidationImpl.convertKeyToClass("uddi:www.bob.com:verified-tmodel"));
                
                 
                 
diff --git a/pom.xml b/pom.xml
index 194a9a4..369844b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -293,7 +293,7 @@
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-surefire-plugin</artifactId>
-					<version>2.4</version>
+					<version>2.19.1</version>
 				</plugin>
 			</plugins>
 		</pluginManagement>
@@ -437,13 +437,14 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
-				<version>2.15</version>
+				<version>2.19.1</version>
 				<configuration>
 					<!-- Sets the VM argument line used when unit tests are run. -->
 					<argLine>${surefireArgLine}</argLine>
 					<!-- Skips unit tests if the value of skip.unit.tests property is true -->
 					<skipTests>${skipTests}</skipTests>
 					<!-- Excludes integration tests when unit tests are run. -->
+                                        <skipAfterFailureCount>1</skipAfterFailureCount>
 
 				</configuration>
 			</plugin>
diff --git a/uddi-client-dist/pom.xml b/uddi-client-dist/pom.xml
index c63a253..3acb2c9 100644
--- a/uddi-client-dist/pom.xml
+++ b/uddi-client-dist/pom.xml
@@ -1,45 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- * Copyright 2001-2009 The Apache Software Foundation. * * Licensed under 
-	the Apache License, Version 2.0 (the "License"); * you may not use this file 
-	except in compliance with the License. * You may obtain a copy of the License 
-	at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by 
-	applicable law or agreed to in writing, software * distributed under the 
-	License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS 
-	OF ANY KIND, either express or implied. * See the License for the specific 
-	language governing permissions and * limitations under the License. * */ -->
+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. * */ -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.juddi</groupId>
-		<artifactId>juddi-parent</artifactId>
-		<version>3.3.5-SNAPSHOT</version>
-	</parent>
-	<artifactId>uddi-client-dist</artifactId>
-	<name>UDDI Client Distribution Assembly</name>
-	<packaging>pom</packaging>
-	<dependencies>
-		<!-- binary archives -->
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>juddi-client</artifactId>
-			<version>${project.parent.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-ws</artifactId>
-			<version>${project.parent.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck-base</artifactId>
-			<version>${project.parent.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck</artifactId>
-			<version>${project.parent.version}</version>
-		</dependency>
-		<dependency>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.juddi</groupId>
+        <artifactId>juddi-parent</artifactId>
+        <version>3.3.5-SNAPSHOT</version>
+    </parent>
+    <artifactId>uddi-client-dist</artifactId>
+    <name>UDDI Client Distribution Assembly</name>
+    <packaging>pom</packaging>
+    <dependencies>
+        <!-- binary archives -->
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>juddi-client</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-ws</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck-base</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>uddi-tck-runner</artifactId>
             <version>${project.parent.version}</version>
@@ -50,85 +50,85 @@
             <version>${project.parent.version}</version>
             <classifier>jar-with-dependencies</classifier>
         </dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-migration-tool</artifactId>
-			<version>${project.parent.version}</version>
-		</dependency>
-		<dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-migration-tool</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>juddi-gui-dsig</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-migration-tool</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>jar-with-dependencies</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck</artifactId>
-			<type>test-jar</type>
-			<version>${project.parent.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>juddi-gui-war</artifactId>
-			<version>${project.parent.version}</version>
-			<type>war</type>
-		</dependency>
-		<dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-migration-tool</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>jar-with-dependencies</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck</artifactId>
+            <type>test-jar</type>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>juddi-gui-war</artifactId>
+            <version>${project.parent.version}</version>
+            <type>war</type>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>juddi-client-cli</artifactId>
             <version>${project.parent.version}</version>
             <classifier>jar-with-dependencies</classifier>
         </dependency>
-		<!-- source archives -->
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>juddi-client</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>sources</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-ws</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>sources</classifier>
-		</dependency>
-		<dependency>
+        <!-- source archives -->
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>juddi-client</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>sources</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-ws</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>sources</classifier>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>uddi-migration-tool</artifactId>
             <version>${project.parent.version}</version>
             <classifier>sources</classifier>
         </dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck-base</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>sources</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>sources</classifier>
-		</dependency>
-		<dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck-base</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>sources</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>sources</classifier>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>uddi-tck-runner</artifactId>
             <version>${project.parent.version}</version>
             <classifier>sources</classifier>
         </dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck</artifactId>
-			<version>${project.parent.version}</version>
-			<type>jar</type>
-			<classifier>test-sources</classifier>
-		</dependency>
-		<dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck</artifactId>
+            <version>${project.parent.version}</version>
+            <type>jar</type>
+            <classifier>test-sources</classifier>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>juddi-gui-dsig</artifactId>
             <version>${project.parent.version}</version>
@@ -147,51 +147,51 @@
             <version>${project.parent.version}</version>
             <classifier>sources</classifier>
         </dependency>
-		<!-- javadoc archives -->
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>juddi-client</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>javadoc</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-ws</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>javadoc</classifier>
-		</dependency>
-		<dependency>
+        <!-- javadoc archives -->
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>juddi-client</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>javadoc</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-ws</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>javadoc</classifier>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>uddi-migration-tool</artifactId>
             <version>${project.parent.version}</version>
             <classifier>javadoc</classifier>
         </dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck-base</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>javadoc</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>javadoc</classifier>
-		</dependency>
-		<dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck-base</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>javadoc</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>javadoc</classifier>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>uddi-tck-runner</artifactId>
             <version>${project.parent.version}</version>
             <classifier>javadoc</classifier>
         </dependency>
-		<dependency>
-			<groupId>org.apache.juddi</groupId>
-			<artifactId>uddi-tck</artifactId>
-			<version>${project.parent.version}</version>
-			<classifier>test-javadoc</classifier>
-			<type>jar</type>
-		</dependency>
-		<dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>uddi-tck</artifactId>
+            <version>${project.parent.version}</version>
+            <classifier>test-javadoc</classifier>
+            <type>jar</type>
+        </dependency>
+        <dependency>
             <groupId>org.apache.juddi</groupId>
             <artifactId>juddi-gui-dsig</artifactId>
             <version>${project.parent.version}</version>
@@ -211,20 +211,20 @@
             <type>jar</type>
             <classifier>javadoc</classifier>
         </dependency>
-		<!-- documentation -->
+        <!-- documentation -->
         <dependency>
             <groupId>org.apache.juddi.juddi-docs</groupId>
             <artifactId>juddi-client-guide</artifactId>
             <version>${project.parent.version}</version>
             <type>jdocbook</type>
         </dependency>
-	</dependencies>
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-assembly-plugin</artifactId>
-				<dependencies>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <dependencies>
                     <dependency>
                         <!-- Entry needed to enable jdocbook unzipping -->
                         <groupId>org.jboss.maven.plugins</groupId>
@@ -232,37 +232,37 @@
                         <version>2.3.8</version>
                     </dependency>
                 </dependencies>
-				<executions>
-					<execution>
-						<id>make-assembly</id>
-						<phase>package</phase>
-						<goals>
-							<goal>single</goal>
-						</goals>
-						<configuration>
-							<finalName>uddi-client-distro-${project.version}</finalName>
-							<descriptors>
-								<descriptor>src/main/assembly/assembly.xml</descriptor>
-							</descriptors>
-							<tarLongFileMode>gnu</tarLongFileMode>
-							<appendAssemblyId>false</appendAssemblyId>
-							<archiverConfig>
-								<defaultDirectoryMode>0755</defaultDirectoryMode>
-							</archiverConfig>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<!-- dist is not very useful from a maven repo, so don't put it there -->
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-deploy-plugin</artifactId>
-				<configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <finalName>uddi-client-distro-${project.version}</finalName>
+                            <descriptors>
+                                <descriptor>src/main/assembly/assembly.xml</descriptor>
+                            </descriptors>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <archiverConfig>
+                                <defaultDirectoryMode>0755</defaultDirectoryMode>
+                            </archiverConfig>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- dist is not very useful from a maven repo, so don't put it there -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
 
-					<skip>true</skip>
-				</configuration>
-			</plugin>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
 
-		</plugins>
-	</build>
+        </plugins>
+    </build>
 </project>
diff --git a/uddi-tck/pom.xml b/uddi-tck/pom.xml
index d723b76..0bd6cbc 100644
--- a/uddi-tck/pom.xml
+++ b/uddi-tck/pom.xml
@@ -321,6 +321,7 @@
 						</goals>
 						<configuration>
 							<skip>false</skip>
+                                                        <skipAfterFailureCount>1</skipAfterFailureCount>
 							<systemProperties>
 								<property>
 									<name>cactus.contextURL</name>
diff --git a/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java b/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java
index 236d0e9..ddf98f5 100644
--- a/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java
+++ b/uddi-tck/src/test/java/org/apache/juddi/v3/tck/JUDDI_300_MultiNodeIntegrationTest.java
@@ -804,7 +804,7 @@
                 logger.info("testReplicationServiceBindingAddRemove");
 
                 try {
-                        TckCommon.PrintMarker();
+                        //TckCommon.PrintMarker();
 
                         resetBusinesses();
                         resetTmodels();