SCOUT-95
Add first stage of caching authtokens. Still need to use the singletons
and add BusinessQueryManager support for caching.
git-svn-id: https://svn.apache.org/repos/asf/webservices/scout/trunk@934962 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/ws/scout/registry/AuthTokenSingleton.java b/src/main/java/org/apache/ws/scout/registry/AuthTokenSingleton.java
new file mode 100644
index 0000000..fe71814
--- /dev/null
+++ b/src/main/java/org/apache/ws/scout/registry/AuthTokenSingleton.java
@@ -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
diff --git a/src/main/java/org/apache/ws/scout/registry/AuthTokenV3Singleton.java b/src/main/java/org/apache/ws/scout/registry/AuthTokenV3Singleton.java
new file mode 100644
index 0000000..0a2c4df
--- /dev/null
+++ b/src/main/java/org/apache/ws/scout/registry/AuthTokenV3Singleton.java
@@ -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
diff --git a/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java b/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java
index ebbaa4f..c9d7ca4 100644
--- a/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java
+++ b/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerImpl.java
@@ -21,6 +21,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
* @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 @@
{
throw new JAXRException(e);
}
+ cachedAuthTokenHash.put(username, token);
return token;
}
diff --git a/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java b/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java
index 7d6384e..229599f 100644
--- a/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java
+++ b/src/main/java/org/apache/ws/scout/registry/BusinessLifeCycleManagerV3Impl.java
@@ -21,6 +21,7 @@
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 @@
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 @@
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 @@
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 @@
*/
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 @@
}
}
+ if ((cachedAuthTokenHash != null) && (cachedAuthTokenHash.containsKey(username))) {
+ return (AuthToken) cachedAuthTokenHash.get(username);
+ }
+
+
AuthToken token = null;
try {
token = ireg.getAuthToken(username, pwd);
@@ -793,7 +921,8 @@
{
throw new JAXRException(e);
}
- return token;
+ cachedAuthTokenHash.put(username, token);
+ return token;
}
private PublisherAssertion getPublisherAssertion(AssertionStatusItem asi)