Author: tcunning
Date: Fri Apr 16 15:32:19 2010
New Revision: 934962

URL: http://svn.apache.org/viewvc?rev=934962&view=rev
Log:
SCOUT-95
Add first stage of caching authtokens.    Still need to use the singletons
and add BusinessQueryManager support for caching.

Added:
    
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenSingleton.java
    
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenV3Singleton.java
Modified:
    
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java
    
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java

Added: 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenSingleton.java
URL: 
http://svn.apache.org/viewvc/webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenSingleton.java?rev=934962&view=auto
==============================================================================
--- 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenSingleton.java
 (added)
+++ 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenSingleton.java
 Fri Apr 16 15:32:19 2010
@@ -0,0 +1,42 @@
+package org.apache.ws.scout.registry;
+
+import java.util.Hashtable;
+import org.apache.ws.scout.model.uddi.v2.AuthToken;
+
+public class AuthTokenSingleton {
+       private static AuthTokenSingleton instance = new AuthTokenSingleton();
+       private static Hashtable cachedAuthTokenHash = new Hashtable();
+       
+       private AuthTokenSingleton() {
+               cachedAuthTokenHash = new Hashtable();
+       }
+
+       public static AuthToken getToken(String username) {
+               if (instance == null) {
+                       instance = new AuthTokenSingleton();
+               }
+
+               if (cachedAuthTokenHash.containsKey(username)) 
+                       return (AuthToken) cachedAuthTokenHash.get(username);
+       
+               return null;
+       }       
+       
+       public synchronized static void addAuthToken(String username, 
+                       AuthToken token) {
+               if (instance == null) {
+                       instance = new AuthTokenSingleton();
+               }
+               cachedAuthTokenHash.put(username, token);
+       }
+       
+       public synchronized static void deleteAuthToken(String username) {
+               if (instance == null) {
+                       instance = new AuthTokenSingleton();
+               } else {
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+               }
+       }
+}
\ No newline at end of file

Added: 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenV3Singleton.java
URL: 
http://svn.apache.org/viewvc/webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenV3Singleton.java?rev=934962&view=auto
==============================================================================
--- 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenV3Singleton.java
 (added)
+++ 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/AuthTokenV3Singleton.java
 Fri Apr 16 15:32:19 2010
@@ -0,0 +1,41 @@
+package org.apache.ws.scout.registry;
+
+import java.util.Hashtable;
+import org.uddi.api_v3.AuthToken;
+
+public class AuthTokenV3Singleton {
+       private static AuthTokenV3Singleton instance = new 
AuthTokenV3Singleton();
+       private static Hashtable cachedAuthTokenHash = new Hashtable();
+       
+       private AuthTokenV3Singleton() {
+               cachedAuthTokenHash = new Hashtable();
+       }
+
+       public static AuthToken getInstance(String username) {
+               if (instance == null) {
+                       instance = new AuthTokenV3Singleton();
+               }
+               if (cachedAuthTokenHash.containsKey(username)) 
+                       return (AuthToken)cachedAuthTokenHash.get(username);
+       
+               return null;
+       }       
+       
+       public synchronized static void addAuthToken(String username, 
+                       AuthToken token) {
+               if (instance == null) {
+                       instance = new AuthTokenV3Singleton();
+               }
+               cachedAuthTokenHash.put(username, token);
+       }
+       
+       public synchronized static void deleteAuthToken(String username) {
+               if (instance == null) {
+                       instance = new AuthTokenV3Singleton();
+               } else {
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+               }
+       }
+}
\ No newline at end of file

Modified: 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java?rev=934962&r1=934961&r2=934962&view=diff
==============================================================================
--- 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java
 (original)
+++ 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java
 Fri Apr 16 15:32:19 2010
@@ -21,6 +21,7 @@ import java.net.PasswordAuthentication;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -93,12 +94,18 @@ public class BusinessLifeCycleManagerImp
 
        private Log log = LogFactory.getLog(this.getClass());
     
+    private static Hashtable cachedAuthTokenHash = null;
+       
     private transient ObjectFactory objectFactory = new ObjectFactory();
        
     public BusinessLifeCycleManagerImpl(RegistryService registry) {
-        super(registry);
+       super(registry);
+        
         if(objectFactory == null)
                objectFactory = new ObjectFactory();
+        
+        if (cachedAuthTokenHash == null) 
+               cachedAuthTokenHash = new Hashtable();
     }
 
     /**
@@ -570,32 +577,117 @@ public class BusinessLifeCycleManagerImp
         Object regobj;
         if(op.equalsIgnoreCase("SAVE_ASSOCIATION"))
         {
-            regobj = ireg.setPublisherAssertions(token.getAuthInfo(), 
(PublisherAssertion[]) dataarray);
-        } else
-        if (op.equalsIgnoreCase("SAVE_SERVICE")) {
-            regobj = ireg.saveService(token.getAuthInfo(), 
(BusinessService[])dataarray);
+               try {
+                       regobj = 
ireg.setPublisherAssertions(token.getAuthInfo(), (PublisherAssertion[]) 
dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = 
ireg.setPublisherAssertions(token.getAuthInfo(), (PublisherAssertion[]) 
dataarray);
+               }
+        } 
+        else if (op.equalsIgnoreCase("SAVE_SERVICE")) {
+               try {
+                       regobj = ireg.saveService(token.getAuthInfo(), 
(BusinessService[])dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = ireg.saveService(token.getAuthInfo(), 
(BusinessService[])dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("SAVE_SERVICE_BINDING")) {
-            regobj = ireg.saveBinding(token.getAuthInfo(), (BindingTemplate[]) 
dataarray);
+               try {
+                       regobj = ireg.saveBinding(token.getAuthInfo(), 
(BindingTemplate[]) dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = ireg.saveBinding(token.getAuthInfo(), 
(BindingTemplate[]) dataarray);                  
+               }
         }
         else if (op.equalsIgnoreCase("SAVE_ORG")) {
-            regobj = ireg.saveBusiness(token.getAuthInfo(), (BusinessEntity[]) 
dataarray);
+               try {
+                       regobj = ireg.saveBusiness(token.getAuthInfo(), 
(BusinessEntity[]) dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = ireg.saveBusiness(token.getAuthInfo(), 
(BusinessEntity[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("SAVE_TMODEL")) {
-            regobj = ireg.saveTModel(token.getAuthInfo(), (TModel[]) 
dataarray);
+               try {
+                       regobj = ireg.saveTModel(token.getAuthInfo(), 
(TModel[]) dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = ireg.saveTModel(token.getAuthInfo(), 
(TModel[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_ORG")) {
-            clearPublisherAssertions(token.getAuthInfo(), ireg);
-            regobj = ireg.deleteBusiness(token.getAuthInfo(), (String[]) 
dataarray);
+            try {
+                clearPublisherAssertions(token.getAuthInfo(), ireg);
+               regobj = ireg.deleteBusiness(token.getAuthInfo(), (String[]) 
dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                clearPublisherAssertions(token.getAuthInfo(), ireg);
+                       regobj = ireg.deleteBusiness(token.getAuthInfo(), 
(String[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_SERVICE")) {
-            regobj = ireg.deleteService(token.getAuthInfo(), (String[]) 
dataarray);
+               try {
+                       regobj = ireg.deleteService(token.getAuthInfo(), 
(String[]) dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+                       regobj = ireg.deleteService(token.getAuthInfo(), 
(String[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_SERVICEBINDING")) {
-            regobj = ireg.deleteBinding(token.getAuthInfo(), (String[]) 
dataarray);
+               try     {
+                       regobj = ireg.deleteBinding(token.getAuthInfo(), 
(String[]) dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+                       regobj = ireg.deleteBinding(token.getAuthInfo(), 
(String[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_CONCEPT")) {
-            regobj = ireg.deleteTModel(token.getAuthInfo(), (String[]) 
dataarray);
+            try {
+               regobj = ireg.deleteTModel(token.getAuthInfo(), (String[]) 
dataarray);
+               } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+               regobj = ireg.deleteTModel(token.getAuthInfo(), (String[]) 
dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_ASSOCIATION")) {
            int len = ((String[]) dataarray).length;
@@ -605,7 +697,17 @@ public class BusinessLifeCycleManagerImp
                String keystr = ((String[])dataarray)[i];
                paarr[i] = 
ScoutJaxrUddiHelper.getPubAssertionFromJAXRAssociationKey(keystr);
             }
-            regobj = ireg.deletePublisherAssertions(token.getAuthInfo(), 
paarr);
+            try {
+                regobj = ireg.deletePublisherAssertions(token.getAuthInfo(), 
paarr);
+            } catch (RegistryException rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+                   regobj = 
ireg.deletePublisherAssertions(token.getAuthInfo(), paarr);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_CLASSIFICATIONSCHEME")) {
             regobj = ireg.deleteTModel(token.getAuthInfo(), (String[]) 
dataarray);
@@ -724,7 +826,19 @@ public class BusinessLifeCycleManagerImp
         return bulk;
     }
 
-
+    private String getUsernameFromCredentials(Set credentials) {
+        String username = "", pwd = "";
+                
+        if (credentials != null) {
+               Iterator it = credentials.iterator();
+               while (it.hasNext()) {
+                       PasswordAuthentication pass = (PasswordAuthentication) 
it.next();
+                       username = pass.getUserName();
+               }
+        }
+        return username;
+    }
+    
     /**
      * Get the Auth Token from the registry
      *
@@ -734,18 +848,22 @@ public class BusinessLifeCycleManagerImp
      * @throws JAXRException
      */
     private AuthToken getAuthToken(ConnectionImpl connection, IRegistry ireg)
-            throws JAXRException {
+            throws JAXRException {     
         Set creds = connection.getCredentials();
         String username = "", pwd = "";
         if (creds != null) {
                Iterator it = creds.iterator();
                while (it.hasNext()) {
                        PasswordAuthentication pass = (PasswordAuthentication) 
it.next();
-                       username = pass.getUserName();
+                       username = pass.getUserName     ();
                        pwd = new String(pass.getPassword());
                }
         }
 
+        if ((cachedAuthTokenHash != null) && 
(cachedAuthTokenHash.containsKey(username))) {
+               return (AuthToken) cachedAuthTokenHash.get(username);
+        }
+        
         AuthToken token = null;
         try {
             token = ireg.getAuthToken(username, pwd);
@@ -754,6 +872,7 @@ public class BusinessLifeCycleManagerImp
         { 
             throw new JAXRException(e);
         }
+        cachedAuthTokenHash.put(username, token);
         return token;
     }
 

Modified: 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java
URL: 
http://svn.apache.org/viewvc/webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java?rev=934962&r1=934961&r2=934962&view=diff
==============================================================================
--- 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java
 (original)
+++ 
webservices/scout/trunk/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java
 Fri Apr 16 15:32:19 2010
@@ -21,6 +21,7 @@ import java.net.PasswordAuthentication;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -95,10 +96,14 @@ public class BusinessLifeCycleManagerV3I
     
     private transient ObjectFactory objectFactory = new ObjectFactory();
        
+    private static Hashtable cachedAuthTokenHash = null;
+    
     public BusinessLifeCycleManagerV3Impl(RegistryService registry) {
         super(registry);
         if(objectFactory == null)
                objectFactory = new ObjectFactory();
+        if (cachedAuthTokenHash == null) 
+               cachedAuthTokenHash = new Hashtable();
     }
 
     /**
@@ -569,46 +574,150 @@ public class BusinessLifeCycleManagerV3I
 
         Object regobj;
         if(op.equalsIgnoreCase("SAVE_ASSOCIATION"))
-        {
-            regobj = ireg.setPublisherAssertions(token.getAuthInfo(), 
(PublisherAssertion[]) dataarray);
-        } else
-        if (op.equalsIgnoreCase("SAVE_SERVICE")) {
-            regobj = ireg.saveService(token.getAuthInfo(), 
(BusinessService[])dataarray);
+        {      
+               try {
+                       regobj = 
ireg.setPublisherAssertions(token.getAuthInfo(), (PublisherAssertion[]) 
dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = 
ireg.setPublisherAssertions(token.getAuthInfo(), (PublisherAssertion[]) 
dataarray);
+               }
+        } else if (op.equalsIgnoreCase("SAVE_SERVICE")) {
+               try {
+                       regobj = ireg.saveService(token.getAuthInfo(), 
(BusinessService[])dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = ireg.saveService(token.getAuthInfo(), 
(BusinessService[])dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("SAVE_SERVICE_BINDING")) {
-            regobj = ireg.saveBinding(token.getAuthInfo(), (BindingTemplate[]) 
dataarray);
+               try {
+                       regobj = ireg.saveBinding(token.getAuthInfo(), 
(BindingTemplate[]) dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = ireg.saveBinding(token.getAuthInfo(), 
(BindingTemplate[]) dataarray);                  
+               }
         }
         else if (op.equalsIgnoreCase("SAVE_ORG")) {
-            regobj = ireg.saveBusiness(token.getAuthInfo(), (BusinessEntity[]) 
dataarray);
+               try {
+                       regobj = ireg.saveBusiness(token.getAuthInfo(), 
(BusinessEntity[]) dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = ireg.saveBusiness(token.getAuthInfo(), 
(BusinessEntity[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("SAVE_TMODEL")) {
-            regobj = ireg.saveTModel(token.getAuthInfo(), (TModel[]) 
dataarray);
+               try {
+                       regobj = ireg.saveTModel(token.getAuthInfo(), 
(TModel[]) dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                       regobj = ireg.saveTModel(token.getAuthInfo(), 
(TModel[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_ORG")) {
-            clearPublisherAssertions(token.getAuthInfo(), ireg);
-            regobj = ireg.deleteBusiness(token.getAuthInfo(), (String[]) 
dataarray);
+            try {
+                clearPublisherAssertions(token.getAuthInfo(), ireg);
+               regobj = ireg.deleteBusiness(token.getAuthInfo(), (String[]) 
dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                clearPublisherAssertions(token.getAuthInfo(), ireg);
+                       regobj = ireg.deleteBusiness(token.getAuthInfo(), 
(String[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_SERVICE")) {
-            regobj = ireg.deleteService(token.getAuthInfo(), (String[]) 
dataarray);
+               try {
+                       regobj = ireg.deleteService(token.getAuthInfo(), 
(String[]) dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+                       regobj = ireg.deleteService(token.getAuthInfo(), 
(String[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_SERVICEBINDING")) {
-            regobj = ireg.deleteBinding(token.getAuthInfo(), (String[]) 
dataarray);
+               try     {
+                       regobj = ireg.deleteBinding(token.getAuthInfo(), 
(String[]) dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+                       regobj = ireg.deleteBinding(token.getAuthInfo(), 
(String[]) dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_CONCEPT")) {
-            regobj = ireg.deleteTModel(token.getAuthInfo(), (String[]) 
dataarray);
+            try {
+               regobj = ireg.deleteTModel(token.getAuthInfo(), (String[]) 
dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+               regobj = ireg.deleteTModel(token.getAuthInfo(), (String[]) 
dataarray);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_ASSOCIATION")) {
-           int len = ((String[]) dataarray).length;
+               int len = ((String[]) dataarray).length;
             PublisherAssertion[] paarr = new PublisherAssertion[len];
             for(int i=0;i<len;i++)
             {
                String keystr = ((String[])dataarray)[i];
                paarr[i] = 
ScoutJaxrUddiV3Helper.getPubAssertionFromJAXRAssociationKey(keystr);
             }
-            regobj = ireg.deletePublisherAssertions(token.getAuthInfo(), 
paarr);
+            try {
+               regobj = ireg.deletePublisherAssertions(token.getAuthInfo(), 
paarr);
+            } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+               regobj = ireg.deletePublisherAssertions(token.getAuthInfo(), 
paarr);
+               }
         }
         else if (op.equalsIgnoreCase("DELETE_CLASSIFICATIONSCHEME")) {
-            regobj = ireg.deleteTModel(token.getAuthInfo(), (String[]) 
dataarray);
+               try {
+                       regobj = ireg.deleteTModel(token.getAuthInfo(), 
(String[]) dataarray);
+               } catch (RegistryV3Exception rve) {
+                       String username = 
getUsernameFromCredentials(connection.getCredentials());
+                       if (cachedAuthTokenHash.containsKey(username)) {
+                               cachedAuthTokenHash.remove(username);
+                       }
+                       token = getAuthToken(connection, ireg);
+                   clearPublisherAssertions(token.getAuthInfo(), ireg);
+                       regobj = ireg.deleteTModel(token.getAuthInfo(), 
(String[]) dataarray);
+               }                               
         }
         else {
             throw new JAXRException("Unsupported operation:" + op);
@@ -763,6 +872,18 @@ public class BusinessLifeCycleManagerV3I
         return bulk;
     }
 
+    private String getUsernameFromCredentials(Set credentials) {
+        String username = "", pwd = "";
+                
+        if (credentials != null) {
+               Iterator it = credentials.iterator();
+               while (it.hasNext()) {
+                       PasswordAuthentication pass = (PasswordAuthentication) 
it.next();
+                       username = pass.getUserName();
+               }
+        }
+        return username;
+    }
 
     /**
      * Get the Auth Token from the registry
@@ -774,8 +895,10 @@ public class BusinessLifeCycleManagerV3I
      */
     private AuthToken getAuthToken(ConnectionImpl connection, IRegistryV3 ireg)
             throws JAXRException {
-        Set creds = connection.getCredentials();
+       
+       Set creds = connection.getCredentials();
         String username = "", pwd = "";
+                
         if (creds != null) {
                Iterator it = creds.iterator();
                while (it.hasNext()) {
@@ -785,6 +908,11 @@ public class BusinessLifeCycleManagerV3I
                }
         }
 
+        if ((cachedAuthTokenHash != null) && 
(cachedAuthTokenHash.containsKey(username))) {
+               return (AuthToken) cachedAuthTokenHash.get(username);
+        }
+        
+        
         AuthToken token = null;
         try {
             token = ireg.getAuthToken(username, pwd);
@@ -793,7 +921,8 @@ public class BusinessLifeCycleManagerV3I
         { 
             throw new JAXRException(e);
         }
-        return token;
+        cachedAuthTokenHash.put(username, token);
+        return token;  
     }
 
     private PublisherAssertion getPublisherAssertion(AssertionStatusItem asi)



---------------------------------------------------------------------
To unsubscribe, e-mail: scout-dev-unsubscr...@ws.apache.org
For additional commands, e-mail: scout-dev-h...@ws.apache.org

Reply via email to