cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sylv...@apache.org
Subject svn commit: r156644 - cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java
Date Wed, 09 Mar 2005 14:09:28 GMT
Author: sylvain
Date: Wed Mar  9 06:09:25 2005
New Revision: 156644

URL: http://svn.apache.org/viewcvs?view=rev&rev=156644
Log:
Forgot to commit this important (!) file for the per-sitemap classpath. Ooops!

Modified:
    cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java

Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java?view=diff&r1=156643&r2=156644
==============================================================================
--- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java (original)
+++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java Wed
Mar  9 06:09:25 2005
@@ -45,7 +45,9 @@
 import org.apache.cocoon.components.ComponentInfo;
 import org.apache.cocoon.configuration.ConfigurationBuilder;
 import org.apache.cocoon.configuration.Settings;
+import org.apache.cocoon.core.ClassLoaderFactory;
 import org.apache.cocoon.core.Core;
+import org.apache.cocoon.core.DefaultClassLoaderFactory;
 import org.apache.cocoon.core.container.handler.AbstractComponentHandler;
 import org.apache.cocoon.core.container.handler.AliasComponentHandler;
 import org.apache.cocoon.core.container.handler.ComponentHandler;
@@ -165,7 +167,31 @@
      */
     public void configure(Configuration configuration) throws ConfigurationException {
         
-        this.componentEnv = new ComponentEnvironment(null, getLogger(), this.roleManager,
this.loggerManager, this.context, this);
+        ClassLoader classLoader = null;
+        
+        Configuration classLoaderConfig = configuration.getChild("classpath", false);
+        
+        // We have a specific classpath for this manager
+        if (classLoaderConfig != null) {
+            // We need a parent manager to lookup the CL factory
+            if (this.parentManager == null) {
+                throw new ConfigurationException("Cannot set <classpath> on root ServiceManager
at " +
+                        classLoaderConfig.getLocation());
+            }
+            
+            try {
+                ClassLoaderFactory clFactory = (ClassLoaderFactory)this.parentManager.lookup(ClassLoaderFactory.ROLE);
+                
+                // TODO: add classloader to constructor to be able to propagate parentManager's
CL
+                classLoader = clFactory.createClassLoader(Thread.currentThread().getContextClassLoader(),
classLoaderConfig);
+            } catch (ConfigurationException ce) {
+                throw ce;
+            } catch (Exception e) {
+                throw new ConfigurationException("Cannot setup classloader", e);
+            }
+        }
+        
+        this.componentEnv = new ComponentEnvironment(classLoader, getLogger(), this.roleManager,
this.loggerManager, this.context, this);
         
         // Setup location
         this.location = configuration.getLocation();
@@ -618,7 +644,9 @@
             
             final String componentName = componentConfig.getName();
             
-            if ("include".equals(componentName)) {
+            if ("classpath".equals(componentName)) {
+                // Ignore
+            } else if ("include".equals(componentName)) {
                 handleInclude(contextURI, loadedURIs, componentConfig);
 
             } else {



Mime
View raw message