Author: cziegeler Date: Fri Dec 31 02:36:18 2004 New Revision: 123781 URL: http://svn.apache.org/viewcvs?view=rev&rev=123781 Log: Add new data class containing all information to instantiate a component Added: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentEnvironment.java (contents, props changed) Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentFactory.java cocoon/trunk/src/core/java/org/apache/cocoon/core/container/DefaultServiceSelector.java cocoon/trunk/src/core/java/org/apache/cocoon/core/container/StandaloneServiceSelector.java
Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java?view=diff&rev=123781&p1=cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java&r1=123780&p2=cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java&r2=123781 ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/AbstractComponentHandler.java Fri Dec 31 02:36:18 2004 @@ -117,19 +117,22 @@ // Create the factory to use to create the instances of the Component. ComponentFactory factory; + final ComponentEnvironment env = new ComponentEnvironment(); + env.serviceManager = serviceManager; + env.context = context; + env.logger = logger; + env.loggerManager = loggerManager; + if (DefaultServiceSelector.class.isAssignableFrom(componentClass)) { // Special factory for DefaultServiceSelector - factory = new DefaultServiceSelector.Factory(serviceManager, context, logger, loggerManager, - roleManager, info, role); + factory = new DefaultServiceSelector.Factory(env, roleManager, info, role); } else if (StandaloneServiceSelector.class.isAssignableFrom(componentClass)) { - // Special factory for StandaloneServiceSelector - factory = new StandaloneServiceSelector.Factory(serviceManager, context, logger, loggerManager, - roleManager, info); + // Special factory for StandaloneServiceSelector + factory = new StandaloneServiceSelector.Factory(env, roleManager, info); } else { - factory = new ComponentFactory(serviceManager, context, logger, loggerManager, - roleManager, info); + factory = new ComponentFactory(env, info); } AbstractComponentHandler handler; Added: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentEnvironment.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentEnvironment.java?view=auto&rev=123781 ============================================================================== --- (empty file) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentEnvironment.java Fri Dec 31 02:36:18 2004 @@ -0,0 +1,37 @@ +/* + * Copyright 2002-2004 The Apache Software Foundation + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cocoon.core.container; + +import org.apache.avalon.excalibur.logger.LoggerManager; +import org.apache.avalon.framework.context.Context; +import org.apache.avalon.framework.logger.Logger; +import org.apache.avalon.framework.service.ServiceManager; + +/** + * The component enviromnent contains all objects necessary to create + * a new component; it's just a "container" of objects. + * + * @version CVS $Id: CocoonServiceSelector.java 123716 2004-12-30 14:16:00Z vgritsenko $ + */ +public class ComponentEnvironment { + + public ServiceManager serviceManager; + public Context context; + public Logger logger; + public LoggerManager loggerManager; + public ClassLoader classloader; +} Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentFactory.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentFactory.java?view=diff&rev=123781&p1=cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentFactory.java&r1=123780&p2=cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentFactory.java&r2=123781 ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentFactory.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/ComponentFactory.java Fri Dec 31 02:36:18 2004 @@ -18,14 +18,11 @@ import java.lang.reflect.Method; -import org.apache.avalon.excalibur.logger.LoggerManager; import org.apache.avalon.excalibur.pool.Recyclable; import org.apache.avalon.framework.container.ContainerUtil; -import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.logger.Logger; import org.apache.avalon.framework.parameters.Parameterizable; import org.apache.avalon.framework.parameters.Parameters; -import org.apache.avalon.framework.service.ServiceManager; import org.apache.cocoon.components.ServiceInfo; /** @@ -37,24 +34,12 @@ protected final ServiceInfo serviceInfo; - /** The Context for the component - */ - protected final Context context; - - /** The service manager for this component - */ - protected final ServiceManager serviceManager; + protected final ComponentEnvironment environment; /** The parameters for this component */ protected Parameters parameters; - protected final Logger logger; - - protected final LoggerManager loggerManager; - - protected final RoleManager roleManager; - /** * Construct a new component factory for the specified component. * @@ -64,27 +49,20 @@ * @param context the <code>Context</code> to pass to <code>Contexutalizable</code>s. * */ - public ComponentFactory( final ServiceManager serviceManager, - final Context context, - final Logger logger, - final LoggerManager loggerManager, - final RoleManager roleManager, + public ComponentFactory( final ComponentEnvironment environment, final ServiceInfo info) { - this.serviceManager = serviceManager; - this.context = context; - this.loggerManager = loggerManager; - this.roleManager = roleManager; + this.environment = environment; this.serviceInfo = info; - Logger actualLogger = logger; + Logger actualLogger = this.environment.logger; // If the handler is created "manually" (e.g. XSP engine), loggerManager can be null - if(loggerManager != null && this.serviceInfo.getConfiguration() != null) { + if( this.environment.loggerManager != null && this.serviceInfo.getConfiguration() != null) { final String category = this.serviceInfo.getConfiguration().getAttribute("logger", null); if(category != null) { - actualLogger = loggerManager.getLoggerForCategory(category); + actualLogger = this.environment.loggerManager.getLoggerForCategory(category); } } - this.logger = actualLogger; + this.environment.logger = actualLogger; } /** @@ -94,14 +72,14 @@ throws Exception { final Object component = this.serviceInfo.getServiceClass().newInstance(); - if( this.logger.isDebugEnabled() ) { - this.logger.debug( "ComponentFactory creating new instance of " + + if( this.environment.logger.isDebugEnabled() ) { + this.environment.logger.debug( "ComponentFactory creating new instance of " + this.serviceInfo.getServiceClass().getName() + "." ); } - ContainerUtil.enableLogging(component, this.logger); - ContainerUtil.contextualize( component, this.context ); - ContainerUtil.service( component, this.serviceManager ); + ContainerUtil.enableLogging(component, this.environment.logger); + ContainerUtil.contextualize( component, this.environment.context ); + ContainerUtil.service( component, this.environment.serviceManager ); ContainerUtil.configure( component, this.serviceInfo.getConfiguration() ); if( component instanceof Parameterizable ) { @@ -132,8 +110,8 @@ */ public void decommission( final Object component ) throws Exception { - if( this.logger.isDebugEnabled() ) { - this.logger.debug( "ComponentFactory decommissioning instance of " + + if( this.environment.logger.isDebugEnabled() ) { + this.environment.logger.debug( "ComponentFactory decommissioning instance of " + this.serviceInfo.getServiceClass().getName() + "." ); } Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/DefaultServiceSelector.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/DefaultServiceSelector.java?view=diff&rev=123781&p1=cocoon/trunk/src/core/java/org/apache/cocoon/core/container/DefaultServiceSelector.java&r1=123780&p2=cocoon/trunk/src/core/java/org/apache/cocoon/core/container/DefaultServiceSelector.java&r2=123781 ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/DefaultServiceSelector.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/DefaultServiceSelector.java Fri Dec 31 02:36:18 2004 @@ -16,14 +16,11 @@ */ package org.apache.cocoon.core.container; -import org.apache.avalon.excalibur.logger.LoggerManager; import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.container.ContainerUtil; -import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.logger.AbstractLogEnabled; -import org.apache.avalon.framework.logger.Logger; import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.ServiceSelector; @@ -192,21 +189,22 @@ * <code>RoleManager</code> and its role name. */ public static class Factory extends ComponentFactory { - private String role; - - public Factory(ServiceManager serviceManager, Context context, Logger logger, - LoggerManager loggerManager, RoleManager roleManager, ServiceInfo info, String role) { - super(serviceManager, context, logger, loggerManager, roleManager, info); + private final String role; + private final RoleManager roleManager; + + public Factory(ComponentEnvironment env, RoleManager manager, ServiceInfo info, String role) { + super(env, info); this.role = role; + this.roleManager = manager; } public Object newInstance() throws Exception { final DefaultServiceSelector component = (DefaultServiceSelector)this.serviceInfo.getServiceClass().newInstance(); - ContainerUtil.enableLogging(component, this.logger); - ContainerUtil.contextualize(component, this.context); - ContainerUtil.service(component, this.serviceManager); + ContainerUtil.enableLogging(component, this.environment.logger); + ContainerUtil.contextualize(component, this.environment.context); + ContainerUtil.service(component, this.environment.serviceManager); component.setRoleManager(this.roleManager); component.setRole(this.role); Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/StandaloneServiceSelector.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/StandaloneServiceSelector.java?view=diff&rev=123781&p1=cocoon/trunk/src/core/java/org/apache/cocoon/core/container/StandaloneServiceSelector.java&r1=123780&p2=cocoon/trunk/src/core/java/org/apache/cocoon/core/container/StandaloneServiceSelector.java&r2=123781 ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/StandaloneServiceSelector.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/StandaloneServiceSelector.java Fri Dec 31 02:36:18 2004 @@ -20,13 +20,10 @@ import java.util.Iterator; import java.util.List; -import org.apache.avalon.excalibur.logger.LoggerManager; import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.container.ContainerUtil; -import org.apache.avalon.framework.context.Context; -import org.apache.avalon.framework.logger.Logger; import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.ServiceSelector; @@ -458,20 +455,23 @@ * A special factory that sets the RoleManager and LoggerManager after service() */ public static class Factory extends ComponentFactory { - public Factory(ServiceManager serviceManager, Context context, Logger logger, - LoggerManager loggerManager, RoleManager roleManager, ServiceInfo info) { - super(serviceManager, context, logger, loggerManager, roleManager, info); + + private final RoleManager roleManager; + + public Factory(ComponentEnvironment env, RoleManager roleManager, ServiceInfo info) { + super(env, info); + this.roleManager = roleManager; } public Object newInstance() throws Exception { final StandaloneServiceSelector component = (StandaloneServiceSelector)this.serviceInfo.getServiceClass().newInstance(); - ContainerUtil.enableLogging(component, this.logger); - ContainerUtil.contextualize(component, this.context); - ContainerUtil.service(component, this.serviceManager); + ContainerUtil.enableLogging(component, this.environment.logger); + ContainerUtil.contextualize(component, this.environment.context); + ContainerUtil.service(component, this.environment.serviceManager); - component.setLoggerManager(this.loggerManager); + component.setLoggerManager(this.environment.loggerManager); component.setRoleManager(this.roleManager); ContainerUtil.configure(component, this.serviceInfo.getConfiguration());