SCOUT-75
Lazy load the Organization when service is queried for by getRegistryObject
git-svn-id: https://svn.apache.org/repos/asf/webservices/scout/trunk@764163 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scout/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java b/scout/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
index fe85091..0dcba73 100644
--- a/scout/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
+++ b/scout/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
@@ -48,6 +48,7 @@
import org.apache.ws.scout.registry.infomodel.InternationalStringImpl;
import org.apache.ws.scout.registry.infomodel.KeyImpl;
import org.apache.ws.scout.registry.infomodel.ServiceBindingImpl;
+import org.apache.ws.scout.registry.infomodel.ServiceImpl;
import org.apache.ws.scout.uddi.AssertionStatusItem;
import org.apache.ws.scout.uddi.AssertionStatusReport;
import org.apache.ws.scout.uddi.AuthToken;
@@ -780,19 +781,8 @@
protected Service getServiceFromBusinessService(BusinessService bs, LifeCycleManager lcm)
throws JAXRException {
- Service service = ScoutUddiJaxrHelper.getService(bs, lcm);
-
- /*
- * now get the Organization if we can
- */
-
- String busKey = bs.getBusinessKey();
-
- if (busKey != null) {
- Organization o = (Organization) getRegistryObject(busKey,
- LifeCycleManager.ORGANIZATION);
- service.setProvidingOrganization(o);
- }
+ ServiceImpl service = (ServiceImpl) ScoutUddiJaxrHelper.getService(bs, lcm);
+ service.setSubmittingOrganizationKey(bs.getBusinessKey());
return service;
}
@@ -914,7 +904,7 @@
for (int i=0; a != null && i < a.length; i++) {
Service service = getServiceFromBusinessService(a[i], lcm);
-
+
col.add(service);
}
}
diff --git a/scout/src/main/java/org/apache/ws/scout/registry/infomodel/ServiceImpl.java b/scout/src/main/java/org/apache/ws/scout/registry/infomodel/ServiceImpl.java
index 5ad1619..1da8b1d 100644
--- a/scout/src/main/java/org/apache/ws/scout/registry/infomodel/ServiceImpl.java
+++ b/scout/src/main/java/org/apache/ws/scout/registry/infomodel/ServiceImpl.java
@@ -20,9 +20,12 @@
import java.util.Collection;
import java.util.Iterator;
+import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.JAXRException;
import javax.xml.registry.LifeCycleManager;
+import javax.xml.registry.RegistryService;
import javax.xml.registry.UnexpectedObjectException;
+import javax.xml.registry.infomodel.Key;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
@@ -38,7 +41,8 @@
private Organization org = null;
private Collection<ServiceBinding> serviceBindings = new ArrayList<ServiceBinding>();
-
+ private String orgKey = null;
+
/**
* Creates a new instance of ServiceImpl
*/
@@ -72,7 +76,18 @@
public Organization getProvidingOrganization()
throws JAXRException
{
- if (org == null) return super.getSubmittingOrganization();
+ if (org == null) {
+ if (super.getSubmittingOrganization() != null) {
+ return super.getSubmittingOrganization();
+ } else {
+ RegistryService rs = super.getLifeCycleManager().getRegistryService();
+ BusinessQueryManager bqm = rs.getBusinessQueryManager();
+ Organization o = (Organization) bqm.getRegistryObject(orgKey,
+ LifeCycleManager.ORGANIZATION);
+ setProvidingOrganization(o);
+ return o;
+ }
+ }
return org;
}
@@ -98,4 +113,12 @@
{
this.org = organization;
}
+
+ public void setSubmittingOrganizationKey(String key) {
+ orgKey = key;
+ }
+
+ public String getSubmittingOrganizationKey() {
+ return orgKey;
+ }
}