in src/java/org/apache/fulcrum/yaafi/framework/container/ServiceContainerImpl.java [223:336]
public void configure(Configuration configuration) throws ConfigurationException {
Validate.notNull(configuration, "configuration");
// retrieve the reconfigurationDelay
this.reconfigurationDelay = configuration.getChild(RECONFIGURATION_DELAY_KEY)
.getValueAsInteger(RECONFIGURATION_DELAY_DEFAULT);
// retrieve the disposal delay
this.disposalDelay = configuration.getChild(DISPOSAL_DELAY_KEY).getValueAsInteger(DISPOSAL_DELAY_DEFAULT);
// evaluate if we are using dynamic proxies
this.hasDynamicProxies = configuration.getChild(DYNAMICPROXY_ENABLED_KEY).getValueAsBoolean(false);
// retrieve the container flavour
this.setContainerFlavour(
configuration.getChild(CONTAINERFLAVOUR_CONFIG_KEY).getValue(COMPONENT_CONTAINERFLAVOUR_VALUE));
this.getLogger().debug("Using the following container type : " + this.getContainerFlavour());
// process the caller-supplied context here
try {
// instantiate a mapper using the existing context - it might
// contain application specific entries we are not aware of
AvalonToYaafiContextMapper mapper = new AvalonToYaafiContextMapper(this.getTempRootDir(),
this.callerContext, this.getClassLoader());
// do the magic mapping
this.context = mapper.mapFrom(this.callerContext, this.getContainerFlavour());
// don't keep a reference of the caller-supplied context
this.callerContext = null;
} catch (ContextException e) {
String msg = "Failed to parse the caller-supplied context";
this.getLogger().error(msg, e);
throw new ConfigurationException(msg);
}
// evaluate componentRoles
Configuration currComponentRoles = configuration.getChild(COMPONENT_ROLE_KEYS);
this.setComponentRolesLocation(
currComponentRoles.getChild(COMPONENT_LOCATION_KEY).getValue(COMPONENT_ROLE_VALUE));
this.setComponentRolesFlavour(
currComponentRoles.getChild(CONTAINERFLAVOUR_CONFIG_KEY).getValue(COMPONENT_ROLECONFIGFLAVOUR_VALUE));
this.setComponentRolesEncrypted(currComponentRoles.getChild(COMPONENT_ISENCRYPTED_KEY).getValue("false"));
// evaluate componentConfiguraion
Configuration currComponentConfiguration = configuration.getChild(COMPONENT_CONFIG_KEY);
this.setComponentConfigurationLocation(
currComponentConfiguration.getChild(COMPONENT_LOCATION_KEY).getValue(COMPONENT_CONFIG_VALUE));
this.setComponentConfigurationEncrypted(
currComponentConfiguration.getChild(COMPONENT_ISENCRYPTED_KEY).getValue("false"));
// get the configuration for componentConfigurationPropertiesResolver
this.componentConfigurationPropertiesResolverConfig = configuration.getChild(COMPONENT_CONFIG_PROPERTIES_KEY);
// evaluate parameters
Configuration currParameters = configuration.getChild(COMPONENT_PARAMETERS_KEY);
this.setParametersLocation(
currParameters.getChild(COMPONENT_LOCATION_KEY).getValue(COMPONENT_PARAMETERS_VALUE));
this.setParametersEncrypted(currParameters.getChild(COMPONENT_ISENCRYPTED_KEY).getValue("false"));
// evaluate the default interceptors
Configuration currInterceptorList = configuration.getChild(INTERCEPTOR_LIST_KEY);
Configuration[] interceptorConfigList = currInterceptorList.getChildren(INTERCEPTOR_KEY);
for (int i = 0; i < interceptorConfigList.length; i++) {
String interceptorServiceName = interceptorConfigList[i].getValue(null);
if (!StringUtils.isEmpty(interceptorServiceName) && this.hasDynamicProxies()) {
this.defaultInterceptorServiceList.add(interceptorServiceName);
this.getLogger().debug("Using the following default interceptor service : " + interceptorServiceName);
}
}
// evaluate a list of service managers managing their own set of services
// independent from the Avalon container. This service managers are used
// to find services implemented as Spring bean or remote web services.
Configuration currServiceManagerList = configuration.getChild(SERVICEMANAGER_LIST_KEY);
Configuration[] serviceManagerConfigList = currServiceManagerList.getChildren(SERVICEMANAGER_KEY);
for (int i = 0; i < serviceManagerConfigList.length; i++) {
String serviceManagerName = serviceManagerConfigList[i].getValue(null);
if (!StringUtils.isEmpty(serviceManagerName)) {
this.fallbackServiceManagerList.add(serviceManagerName);
this.getLogger().debug("Using the following fallback service manager : " + serviceManagerName);
}
}
}