Author: sgoeschl
Date: Tue Jul  8 13:55:55 2008
New Revision: 674948

URL: http://svn.apache.org/viewvc?rev=674948&view=rev
Log:
Implemented improved service lookup for components managing their own services

Modified:
    
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerConfiguration.java

Modified: 
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerConfiguration.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerConfiguration.java?rev=674948&r1=674947&r2=674948&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerConfiguration.java
 (original)
+++ 
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerConfiguration.java
 Tue Jul  8 13:55:55 2008
@@ -82,7 +82,7 @@
     /** the user-supplied Avalon context */
     private DefaultContext context;
 
-    /** the Avalon */
+    /** the Avalon logger */
     private Logger logger;
 
     /** the application directory */
@@ -103,6 +103,9 @@
     /** to lookup service in the parent container */
     private ServiceManager parentServiceManager;
 
+    /** a list of ServiceManager maintaining their own services */
+    private String[] serviceManagerList;
+
     /** Constructor */
     public ServiceContainerConfiguration()
     {
@@ -349,6 +352,33 @@
 
             result.addChild( parameterConfigurationConfig );
 
+            // Add the following fragement
+            //
+            // <serviceManagers>
+            //   <serviceManagers>springFrameworkService</serviceManager>
+            // </serviceManagers>
+
+            if(this.hasServiceManagerList())
+            {
+                DefaultConfiguration serviceManagerListConfig = new 
DefaultConfiguration(
+                    ServiceConstants.SERVICEMANAGER_LIST_KEY
+                    );
+
+                for(int i=0; i<this.serviceManagerList.length; i++)
+                {
+                    DefaultConfiguration serviceManagerConfig = new 
DefaultConfiguration(
+                        ServiceConstants.SERVICEMANAGER_KEY
+                        );
+
+                    serviceManagerConfig.setValue(this.serviceManagerList[i]);
+
+                    serviceManagerListConfig.addChild(serviceManagerConfig);
+                }
+
+                result.addChild( serviceManagerListConfig );
+            }
+
+
             return result;
         }
     }
@@ -592,16 +622,55 @@
     {
         this.containerConfiguration = containerConfiguration;
     }
-    
+
+    /**
+     * Get the parent service manager to find service managed by the
+     * parent container.
+     *
+     * @return the parent container
+     */
+
     public ServiceManager getParentServiceManager() {
         return parentServiceManager;
     }
 
+    /**
+     * Set the parent service manager to find service managed by the
+     * parent container.
+     *
+     * @param parentServiceManager the parent container
+     */
     public void setParentServiceManager(ServiceManager parentServiceManager) {
         this.parentServiceManager = parentServiceManager;
     }
 
     /**
+     * Get a list of service manager managing their own set of services.
+     *
+     * @return a list of service implementing the ServiceManager interface
+     */
+    public String[] getServiceManagerList() {
+        return serviceManagerList;
+    }
+
+    /**
+     * Set a list of service manager managing their own set of services.
+     *
+     * @param serviceManagerList a list of service implementing the 
ServiceManager interface
+     */
+    public void setServiceManagerList(String[] serviceManagerList) {
+        this.serviceManagerList = serviceManagerList;
+    }
+
+    /**
+     * @return is a list of service manager managing their own set of services 
defined
+     */
+    public boolean hasServiceManagerList()
+    {
+        return ((this.serviceManagerList != null) && 
(this.serviceManagerList.length > 0));
+    }
+
+    /**
      * Loads a containerConfiguration file and set is as the Avalon
      * configuration to be used for Configurable.configure(). Take
      * care that the implementation uses an InputStreamLocator to


Reply via email to