Author: jstrachan
Date: Tue Oct  3 05:09:13 2006
New Revision: 452447

URL: http://svn.apache.org/viewvc?view=rev&rev=452447
Log:
lazily create a serviceUnit on demand to make it easier for derived components 
to add dynamic endpoints

Modified:
    
incubator/servicemix/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/DefaultComponent.java

Modified: 
incubator/servicemix/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/DefaultComponent.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/DefaultComponent.java?view=diff&rev=452447&r1=452446&r2=452447
==============================================================================
--- 
incubator/servicemix/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/DefaultComponent.java
 (original)
+++ 
incubator/servicemix/trunk/servicemix-common/src/main/java/org/apache/servicemix/common/DefaultComponent.java
 Tue Oct  3 05:09:13 2006
@@ -221,11 +221,15 @@
     }
 
     /**
-     * Returns the service unit if applicable
+     * Returns the service unit, lazily creating one on demand
      *
      * @return the service unit if one is being used.
      */
     public ServiceUnit getServiceUnit() {
+        if (serviceUnit == null) {
+            serviceUnit = new XBeanServiceUnit();
+            serviceUnit.setComponent(this);
+        }
         return serviceUnit;
     }
 
@@ -244,14 +248,13 @@
         super.doInit();
         Endpoint[] endpoints = getEndpoints();
         if (endpoints != null && endpoints.length > 0) {
-            serviceUnit = new XBeanServiceUnit();
-            serviceUnit.setComponent(this);
+            ServiceUnit su = getServiceUnit();
             for (int i = 0; i < endpoints.length; i++) {
-                endpoints[i].setServiceUnit(serviceUnit);
+                endpoints[i].setServiceUnit(su);
                 endpoints[i].validate();
-                serviceUnit.addEndpoint(endpoints[i]);
+                su.addEndpoint(endpoints[i]);
             }
-            getRegistry().registerServiceUnit(serviceUnit);
+            getRegistry().registerServiceUnit(su);
         }
     }
 


Reply via email to