You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2007/02/22 13:40:00 UTC

svn commit: r510483 - in /cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet: CocoonReloadingListener.java ReloadingClassloaderManager.java ReloadingSpringFilter.java

Author: reinhard
Date: Thu Feb 22 04:39:59 2007
New Revision: 510483

URL: http://svn.apache.org/viewvc?view=rev&rev=510483
Log:
- be more specific with Spring context reloads. Only perform a reload if
  there is a change in META-INF/cocoon/spring, config/spring or a file that
  ends with .xmap or .xmap.xml.
- to much cleanup in the CloassLoaderManager
- comment unused code in the CocoonReloadingListener

Modified:
    cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/CocoonReloadingListener.java
    cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingClassloaderManager.java
    cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingSpringFilter.java

Modified: cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/CocoonReloadingListener.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/CocoonReloadingListener.java?view=diff&rev=510483&r1=510482&r2=510483
==============================================================================
--- cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/CocoonReloadingListener.java (original)
+++ cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/CocoonReloadingListener.java Thu Feb 22 04:39:59 2007
@@ -17,6 +17,9 @@
 package org.apache.cocoon.servlet;
 
 import java.io.File;
+//import java.util.ArrayList;
+//import java.util.Iterator;
+//import java.util.List;
 
 import org.apache.commons.jci.listeners.ReloadingListener;
 
@@ -30,13 +33,27 @@
     }
 
     public void onChangeFile(File changedFile) {
+        String changedFilePath = changedFile.getAbsolutePath().replace('\\', '/');
+        String changedFileParent = changedFile.getParent().replace('\\', '/');
+        
+        
         System.out.println("A file changed: " + changedFile.getAbsolutePath());
+        System.out.println("Parent: " + changedFile.getParent());
         super.onChangeFile(changedFile);
-//        notifySubscribers();
+
         
         // TODO be more specific when to reload. Not every change needs a reload of the Spring
         // application context
-        reload = true;
+        if(changedFileParent.endsWith("META-INF/cocoon/spring") ||
+                changedFilePath.endsWith(".xmap") ||
+                changedFilePath.endsWith(".xmap.xml") ||
+                changedFileParent.endsWith("config/spring")) {
+            System.out.println("File change detected: " + changedFile);       
+            reload = true;            
+        }
+        
+//        notifySubscribers();        
+
     }
 
     public void onChangeDirectory(File changedDirectory) {
@@ -51,7 +68,7 @@
         }
         return reload;
     }
-    
+//    
 //    private void notifySubscribers() {
 //        for(Iterator nIt = subscribers.iterator(); nIt.hasNext(); ) {
 //            ((ReloadingNotificationSubscriber) nIt.next()).handleNotification();
@@ -59,7 +76,6 @@
 //    }
 //    
 //    public static void subscribe(ReloadingNotificationSubscriber subscriber) {
-//        System.out.println("----------> Subscription by: " + subscriber);
 //        subscribers.add(subscriber);
 //    }
     

Modified: cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingClassloaderManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingClassloaderManager.java?view=diff&rev=510483&r1=510482&r2=510483
==============================================================================
--- cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingClassloaderManager.java (original)
+++ cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingClassloaderManager.java Thu Feb 22 04:39:59 2007
@@ -56,6 +56,7 @@
                 fam.addListener(rl);
             }
             fam.start();
+            ReloadingClassloaderManager.reloadingClassloader = classloader; 
         }   
         return ReloadingClassloaderManager.reloadingClassloader;
     }    

Modified: cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingSpringFilter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingSpringFilter.java?view=diff&rev=510483&r1=510482&r2=510483
==============================================================================
--- cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingSpringFilter.java (original)
+++ cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/ReloadingSpringFilter.java Thu Feb 22 04:39:59 2007
@@ -45,19 +45,18 @@
             synchronized (this) {
                 // load the spring context loader from the reloading classloader
                 ClassLoader cl = ReloadingClassloaderManager.getClassLoader(config.getServletContext());
-                String contextLoaderClassName = ContextLoader.class.getName();
                 ContextLoader springContextLoader = null;
                 try {
-                    Class contextLoaderClass = cl.loadClass(contextLoaderClassName);
+                    Class contextLoaderClass = cl.loadClass(ContextLoader.class.getName());
                     springContextLoader = (ContextLoader) contextLoaderClass.newInstance();
                 } catch (Exception e) {
-                    throw new ServletException("Cannot load class " + contextLoaderClassName, e);
+                    throw new ServletException("Cannot load class " + ContextLoader.class.getName(), e);
                 }
                 
                 // close old Spring application context
                 springContextLoader.closeWebApplicationContext(this.config.getServletContext());
                 this.config.getServletContext().removeAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
-                
+
                 // create the new Spring application context
                 springContextLoader.initWebApplicationContext(this.config.getServletContext());
             }