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/06/21 15:22:09 UTC

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

Author: reinhard
Date: Thu Jun 21 06:22:09 2007
New Revision: 549469

URL: http://svn.apache.org/viewvc?view=rev&rev=549469
Log:
- formatting
- exception handling

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

Modified: cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java?view=diff&rev=549469&r1=549468&r2=549469
==============================================================================
--- cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java (original)
+++ cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java Thu Jun 21 06:22:09 2007
@@ -35,21 +35,21 @@
     private static final String FILE_PROTOCOL = "file:";
 
     private static final String WEB_INF_RCL_URLCL_CONF = "/WEB-INF/cocoon/rclwrapper.urlcl.conf";
-    
-    private static final String WEB_INF_RCLWRAPPER_RCL_CONF = "/WEB-INF/cocoon/rclwrapper.rcl.conf";        
-    
+
+    private static final String WEB_INF_RCLWRAPPER_RCL_CONF = "/WEB-INF/cocoon/rclwrapper.rcl.conf";
+
     private static ReloadingClassLoader reloadingClassloader = null;
 
     private ReloadingClassloaderManager() {
         // only allow static usage
     }
-    
+
     public static synchronized ClassLoader getClassLoader(ServletContext context) {
       if (ReloadingClassloaderManager.reloadingClassloader == null) {
             final ClassLoader urlClassloader = createURLClassLoader(context);
             final ReloadingClassLoader classloader = new ReloadingClassLoader(urlClassloader);
-            final FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();    
-                    
+            final FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
+
             List lines = null;
             try {
                 lines = IOUtils.readLines(context.getResourceAsStream(WEB_INF_RCLWRAPPER_RCL_CONF));
@@ -76,8 +76,8 @@
             ReloadingClassloaderManager.reloadingClassloader = classloader;
         }
         return ReloadingClassloaderManager.reloadingClassloader;
-    }    
-    
+    }
+
     protected static ClassLoader createURLClassLoader(ServletContext context) {
         try {
             List urlsList = new ArrayList();
@@ -93,5 +93,5 @@
                     + WEB_INF_RCL_URLCL_CONF, e);
         }
     }
-    
+
 }

Modified: cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java?view=diff&rev=549469&r1=549468&r2=549469
==============================================================================
--- cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java (original)
+++ cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java Thu Jun 21 06:22:09 2007
@@ -33,42 +33,40 @@
 
 /**
  * This servlet filter reloads the Spring application context whenever a relevant change in the
- * classpath occurs. 
- * 
+ * classpath occurs. It uses the Spring reloader, which has to be loaded by the same classloader
+ * as the Spring application context. In order to get access to it without having to pull all
+ * dependencies into the this module, the Java reflection API is used.
+ *
  * @version $Id$
  */
 public class ReloadingSpringFilter implements Filter {
-    
-    private final Log log = LogFactory.getLog(ReloadingSpringFilter.class);    
-    
-    private static final String WEB_INF_RCLWRAPPER_PROPERTIES = "/WEB-INF/cocoon/rclwrapper.properties";         
+
+    private final Log log = LogFactory.getLog(ReloadingSpringFilter.class);
+
+    private static final String WEB_INF_RCLWRAPPER_PROPERTIES = "/WEB-INF/cocoon/rclwrapper.properties";
 
     private FilterConfig config;
 
     public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException,
             ServletException {
-        
+
         if(isReloadingEnabled() && CocoonReloadingListener.isReload()) {
-            synchronized (this) {        
+            synchronized (this) {
                 log.info("Performing a reload of the Spring application context.");
                 // load the spring context loader from the reloading classloader
                 ClassLoader cl = ReloadingClassloaderManager.getClassLoader(config.getServletContext());
                 Object reloader = null;
                 try {
                     reloader = cl.loadClass("org.apache.cocoon.tools.rcl.springreloader.SpringReloader").newInstance();
-                } catch (Exception e) {
-                    throw new ServletException("Can't create SpringReloader.", e);
-                }
-                try {
-                    Method reloadMethod = reloader.getClass().getMethod("reload", new Class[]{ServletContext.class} ); 
+                    Method reloadMethod = reloader.getClass().getMethod("reload", new Class[]{ServletContext.class} );
                     reloadMethod.invoke(reloader, new Object[]{config.getServletContext()});
-                } catch(Exception e) {
-                    new ServletException("Problems occurred, while invoking the SpringReloader reload method.", e);
+                } catch (Exception e) {
+                    throw new ServletException("Can't use SpringReloader.", e);
                 }
             }
         }
         // continue processing the request
-        filterChain.doFilter(req, res);            
+        filterChain.doFilter(req, res);
     }
 
     public void destroy() {
@@ -77,12 +75,12 @@
     public void init(FilterConfig filterConfig) throws ServletException {
         this.config = filterConfig;
     }
-    
+
     private boolean isReloadingEnabled() throws IOException {
         Properties rclProps = new Properties();
         rclProps.load(this.config.getServletContext().getResourceAsStream(WEB_INF_RCLWRAPPER_PROPERTIES));
         String reloadingEnabled = rclProps.getProperty("reloading.spring.enabled", "true");
         return reloadingEnabled.trim().toLowerCase().equals("true");
     }
- 
+
 }