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());

Reply via email to