You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/05/20 20:25:08 UTC

svn commit: r408067 - in /cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor: ConcreteTreeProcessor.java TreeBuilder.java TreeProcessor.java sitemap/SitemapLanguage.java

Author: cziegeler
Date: Sat May 20 11:25:08 2006
New Revision: 408067

URL: http://svn.apache.org/viewvc?rev=408067&view=rev
Log:
Start readding per sitemap classpath

Modified:
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java?rev=408067&r1=408066&r2=408067&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java Sat May 20 11:25:08 2006
@@ -102,6 +102,9 @@
     /** Bean Factory for this sitemap. */
     protected BeanFactory beanFactory;
 
+    /** Classloader for this sitemap. */
+    protected ClassLoader classLoader;
+
     /**
      * Builds a concrete processig, given the wrapping processor
      */
@@ -116,6 +119,7 @@
 
     /** Set the processor data, result of the treebuilder job */
     public void setProcessorData(BeanFactory beanFactory,
+                                 ClassLoader classLoader,
                                  ProcessingNode rootNode,
                                  List disposableNodes,
                                  List enterSitemapEventListeners,
@@ -123,7 +127,7 @@
         if (this.rootNode != null) {
             throw new IllegalStateException("setProcessorData() can only be called once");
         }
-
+        this.classLoader = classLoader;
         this.beanFactory = beanFactory;
         this.manager = (ServiceManager)this.beanFactory.getBean(ProcessingUtil.SERVICE_MANAGER_ROLE);
         this.rootNode = rootNode;
@@ -303,6 +307,8 @@
             requestCount++;
         }
 
+        ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(this.classLoader);
         try {
             final EnterSitemapEvent enterEvent = new EnterSitemapEvent(this, environment);
             this.enteredSitemap(enterEvent);
@@ -360,6 +366,7 @@
                 // Marked for disposal and no more concurrent requests.
                 dispose();
             }
+            Thread.currentThread().setContextClassLoader(oldClassLoader);
         }
     }
 

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java?rev=408067&r1=408066&r2=408067&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java Sat May 20 11:25:08 2006
@@ -33,6 +33,8 @@
 
     ConcreteTreeProcessor getProcessor();
 
+    ClassLoader getClassLoader();
+
     void setProcessor(ConcreteTreeProcessor processor);
 
     /**

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java?rev=408067&r1=408066&r2=408067&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java Sat May 20 11:25:08 2006
@@ -412,6 +412,7 @@
                 this.beanFactory = treeBuilder.getBeanFactory();
                 newProcessor.setProcessorData(
                         this.beanFactory,
+                        treeBuilder.getClassLoader(),
                         root,
                         treeBuilder.getDisposableNodes(),
                         treeBuilder.getEnterSitemapEventListeners(),

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java?rev=408067&r1=408066&r2=408067&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java Sat May 20 11:25:08 2006
@@ -185,6 +185,9 @@
     /** Nodes registered using registerNode() */
     private Map registeredNodes = new HashMap();
 
+    /** Class Loader for this sitemap. */
+    private ClassLoader itsClassLoader = this.getClass().getClassLoader();
+
     /**
      * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
      */
@@ -246,6 +249,13 @@
     }
 
     /**
+     * @see org.apache.cocoon.components.treeprocessor.TreeBuilder#getClassLoader()
+     */
+    public ClassLoader getClassLoader() {
+        return this.itsClassLoader;
+    }
+
+    /**
      * @see org.apache.cocoon.components.treeprocessor.TreeBuilder#getEnterSitemapEventListeners()
      */
     public List getEnterSitemapEventListeners() {
@@ -363,11 +373,15 @@
             }
         }
         // Context and manager and classloader for the sitemap we build
+        
         final Context itsContext = createContext(tree);
 
         // TODO Get factory from spring
         final BeanFactoryFactoryImpl factory = new BeanFactoryFactoryImpl();
         factory.setBeanFactory(this.beanFactory);
+
+        // TODO Create class loader (and filter classpath configuration from componentConfig!)
+        // this.itsClassLoader = factory.createClassLoader(itsContext, componentConfig.getChild("classpath", false));
 
         // check for sitemap local properties
         Settings settings = (Settings)factory.getCurrentBeanFactory(itsContext).getBean(ProcessingUtil.SETTINGS_ROLE);