SCOUT-95
Extend caching to business query managers.
git-svn-id: https://svn.apache.org/repos/asf/webservices/scout/trunk@935043 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java b/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
index 4bb37e1..f93deb6 100644
--- a/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
+++ b/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
@@ -171,8 +171,18 @@
{
ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
AuthToken auth = this.getAuthToken(con,registry);
- PublisherAssertions result =
- registry.getPublisherAssertions(auth.getAuthInfo());
+ PublisherAssertions result = null;
+ try {
+ result = registry.getPublisherAssertions(auth.getAuthInfo());
+ } catch (RegistryException rve) {
+ String username = getUsernameFromCredentials(con.getCredentials());
+ if (AuthTokenSingleton.getToken(username) != null) {
+ AuthTokenSingleton.deleteAuthToken(username);
+ }
+ auth = getAuthToken(con, registry);
+ result = registry.getPublisherAssertions(auth.getAuthInfo());
+ }
+
List<PublisherAssertion> publisherAssertionList = result.getPublisherAssertion();
LinkedHashSet<Association> col = new LinkedHashSet<Association>();
for (PublisherAssertion pas : publisherAssertionList) {
@@ -230,8 +240,17 @@
if(caller && !other )
confirm = Constants.COMPLETION_STATUS_TOKEY_INCOMPLETE;
- report = registry.getAssertionStatusReport(auth.getAuthInfo(),confirm);
-
+ report = null;
+ try {
+ report = registry.getAssertionStatusReport(auth.getAuthInfo(),confirm);
+ } catch (RegistryException rve) {
+ String username = getUsernameFromCredentials(con.getCredentials());
+ if (AuthTokenSingleton.getToken(username) != null) {
+ AuthTokenSingleton.deleteAuthToken(username);
+ }
+ auth = getAuthToken(con, registry);
+ report = registry.getAssertionStatusReport(auth.getAuthInfo(),confirm);
+ }
List<AssertionStatusItem> assertionStatusItemList = report.getAssertionStatusItem();
LinkedHashSet<Association> col = new LinkedHashSet<Association>();
@@ -843,8 +862,19 @@
try
{
- RegisteredInfo ri = registry.getRegisteredInfo(auth.getAuthInfo());
- if (ri != null) {
+ RegisteredInfo ri = null;
+ try {
+ ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ } catch (RegistryException rve) {
+ String username = getUsernameFromCredentials(con.getCredentials());
+ if (AuthTokenSingleton.getToken(username) != null) {
+ AuthTokenSingleton.deleteAuthToken(username);
+ }
+ auth = getAuthToken(con, registry);
+ ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ }
+
+ if (ri != null) {
for (String key:keys) {
BusinessDetail detail = registry.getBusinessDetail(key);
col.add(((BusinessLifeCycleManagerImpl)registryService.getLifeCycleManagerImpl()).createOrganization(detail));
@@ -910,7 +940,18 @@
LinkedHashSet<Organization> orgs = null;
try
{
- RegisteredInfo ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ RegisteredInfo ri = null;
+ try {
+ ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ } catch (RegistryException rve) {
+ String username = getUsernameFromCredentials(con.getCredentials());
+ if (AuthTokenSingleton.getToken(username) != null) {
+ AuthTokenSingleton.deleteAuthToken(username);
+ }
+ auth = getAuthToken(con, registry);
+ ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ }
+
if (ri != null && ri.getBusinessInfos()!=null) {
List<BusinessInfo> bizInfoList = ri.getBusinessInfos().getBusinessInfo();
orgs = new LinkedHashSet<Organization>();
@@ -1002,6 +1043,11 @@
username = pass.getUserName();
pwd = new String(pass.getPassword());
}
+
+ if (AuthTokenSingleton.getToken(username) != null) {
+ return (AuthToken) AuthTokenSingleton.getToken(username);
+ }
+
AuthToken token = null;
try {
token = ireg.getAuthToken(username, pwd);
@@ -1009,6 +1055,22 @@
catch (Exception e) {
throw new JAXRException(e);
}
+ AuthTokenSingleton.addAuthToken(username, token);
+
return token;
}
+
+ 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;
+ }
+
}
diff --git a/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerV3Impl.java b/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerV3Impl.java
index 5344928..ce99d52 100644
--- a/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerV3Impl.java
+++ b/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerV3Impl.java
@@ -148,8 +148,18 @@
{
ConnectionImpl con = ((RegistryServiceImpl)getRegistryService()).getConnection();
AuthToken auth = this.getAuthToken(con,registry);
- PublisherAssertions result =
- registry.getPublisherAssertions(auth.getAuthInfo());
+ PublisherAssertions result = null;
+ try {
+ result = registry.getPublisherAssertions(auth.getAuthInfo());
+ } catch (RegistryV3Exception rve) {
+ String username = getUsernameFromCredentials(con.getCredentials());
+ if (AuthTokenV3Singleton.getToken(username) != null) {
+ AuthTokenV3Singleton.deleteAuthToken(username);
+ }
+ auth = getAuthToken(con, registry);
+ result = registry.getPublisherAssertions(auth.getAuthInfo());
+ }
+
List<PublisherAssertion> publisherAssertionList = result.getPublisherAssertion();
LinkedHashSet<Association> col = new LinkedHashSet<Association>();
for (PublisherAssertion pas : publisherAssertionList) {
@@ -202,8 +212,17 @@
if(caller && !other )
confirm = Constants.COMPLETION_STATUS_TOKEY_INCOMPLETE;
- report = registry.getAssertionStatusReport(auth.getAuthInfo(),confirm);
-
+ try {
+ report = registry.getAssertionStatusReport(auth.getAuthInfo(),confirm);
+ } catch (RegistryV3Exception rve) {
+ String username = getUsernameFromCredentials(con.getCredentials());
+ if (AuthTokenV3Singleton.getToken(username) != null) {
+ AuthTokenV3Singleton.deleteAuthToken(username);
+ }
+ auth = getAuthToken(con, registry);
+ report = registry.getAssertionStatusReport(auth.getAuthInfo(),confirm);
+ }
+
List<AssertionStatusItem> assertionStatusItemList = report.getAssertionStatusItem();
LinkedHashSet<Association> col = new LinkedHashSet<Association>();
@@ -815,7 +834,18 @@
try
{
- RegisteredInfo ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ RegisteredInfo ri = null;
+ try {
+ ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ } catch (RegistryV3Exception rve) {
+ String username = getUsernameFromCredentials(con.getCredentials());
+ if (AuthTokenV3Singleton.getToken(username) != null) {
+ AuthTokenV3Singleton.deleteAuthToken(username);
+ }
+ auth = getAuthToken(con, registry);
+ ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ }
+
if (ri != null) {
BusinessInfos infos = ri.getBusinessInfos();
if (infos != null) {
@@ -885,7 +915,18 @@
LinkedHashSet<Organization> orgs = null;
try
{
- RegisteredInfo ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ RegisteredInfo ri = null;
+ try {
+ ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ } catch (RegistryV3Exception rve) {
+ String username = getUsernameFromCredentials(con.getCredentials());
+ if (AuthTokenV3Singleton.getToken(username) != null) {
+ AuthTokenV3Singleton.deleteAuthToken(username);
+ }
+ auth = getAuthToken(con, registry);
+ ri = registry.getRegisteredInfo(auth.getAuthInfo());
+ }
+
if (ri != null && ri.getBusinessInfos()!=null) {
List<BusinessInfo> bizInfoList = ri.getBusinessInfos().getBusinessInfo();
orgs = new LinkedHashSet<Organization>();
@@ -977,6 +1018,11 @@
username = pass.getUserName();
pwd = new String(pass.getPassword());
}
+
+ if (AuthTokenV3Singleton.getToken(username) != null) {
+ return (AuthToken) AuthTokenV3Singleton.getToken(username);
+ }
+
AuthToken token = null;
try {
token = ireg.getAuthToken(username, pwd);
@@ -984,6 +1030,22 @@
catch (Exception e) {
throw new JAXRException(e);
}
+ AuthTokenV3Singleton.addAuthToken(username, token);
+
return token;
}
+
+ 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;
+ }
+
}