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