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;

+    }   

 }