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 {


Reply via email to