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/03/04 17:10:55 UTC
svn commit: r514426 - in
/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet:
CocoonReloadingListener.java JarListener.java
ReloadingClassloaderManager.java
Author: reinhard
Date: Sun Mar 4 08:10:54 2007
New Revision: 514426
URL: http://svn.apache.org/viewvc?view=rev&rev=514426
Log:
works now with latest API changes in commons-jci
Removed:
cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/servlet/JarListener.java
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
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=514426&r1=514425&r2=514426
==============================================================================
--- 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 Sun Mar 4 08:10:54 2007
@@ -27,13 +27,27 @@
private final Log log = LogFactory.getLog(CocoonReloadingListener.class);
private static boolean reload = false;
-
- public CocoonReloadingListener(File file) {
- super(file);
+
+ public CocoonReloadingListener() {
+ super();
}
- public void onChangeFile(File changedFile) {
- super.onChangeFile(changedFile);
+ public void onFileChange(File file) {
+ super.onFileChange(file);
+ changeDetected(file);
+ }
+
+ public void onFileDelete(File file) {
+ super.onFileDelete(file);
+ changeDetected(file);
+ }
+
+ public void onFileCreate(File file) {
+ super.onFileCreate(file);
+ changeDetected(file);
+ }
+
+ protected void changeDetected(File changedFile) {
String changedFileParentPath = changedFile.getParent().replace('\\', '/');
String changedFilePath = changedFile.getAbsolutePath().replace('\\', '/');
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=514426&r1=514425&r2=514426
==============================================================================
--- 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 Sun Mar 4 08:10:54 2007
@@ -17,6 +17,7 @@
package org.apache.cocoon.servlet;
import java.io.File;
+import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
@@ -44,20 +45,36 @@
}
public static synchronized ClassLoader getClassLoader(ServletContext context) {
- if ( ReloadingClassloaderManager.reloadingClassloader == null ) {
+ if (ReloadingClassloaderManager.reloadingClassloader == null) {
final ClassLoader urlClassloader = createURLClassLoader(context);
- final ReloadingClassLoader classloader = new ReloadingClassLoader(urlClassloader);
- final FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
- List reloadingListeners = createReloadingListeners(context);
- for(Iterator rlIt = reloadingListeners.iterator(); rlIt.hasNext();) {
- org.apache.commons.jci.listeners.ReloadingListener rl =
- (org.apache.commons.jci.listeners.ReloadingListener) rlIt.next();
- classloader.addListener(rl);
- fam.addListener(rl);
+ final ReloadingClassLoader classloader = new ReloadingClassLoader(urlClassloader);
+ final FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
+
+ List lines = null;
+ try {
+ lines = IOUtils.readLines(context.getResourceAsStream(WEB_INF_RCLWRAPPER_RCL_CONF));
+ } catch (IOException ioe) {
+ throw new ReloadingClassloaderCreationException(
+ "Error while creating the URLClassLoader from context:/" + WEB_INF_RCLWRAPPER_RCL_CONF, ioe);
}
- fam.start();
- ReloadingClassloaderManager.reloadingClassloader = classloader;
- }
+ for (Iterator linesIt = lines.iterator(); linesIt.hasNext();) {
+ String line = (String) linesIt.next();
+ if (!line.startsWith(FILE_PROTOCOL)) {
+ throw new ReloadingClassloaderCreationException("Only support URLs with file: protocol.");
+ }
+ String url = line.substring(FILE_PROTOCOL.length());
+ // windows paths
+ if (url.indexOf(2) == ':') {
+ url = url.substring(1);
+ }
+ File directory = new File(url);
+ org.apache.commons.jci.listeners.ReloadingListener rl = new CocoonReloadingListener();
+ rl.addReloadNotificationListener(classloader);
+ fam.addListener(directory, rl);
+ }
+
+ ReloadingClassloaderManager.reloadingClassloader = classloader;
+ }
return ReloadingClassloaderManager.reloadingClassloader;
}
@@ -76,29 +93,5 @@
+ WEB_INF_RCL_URLCL_CONF, e);
}
}
-
- protected static List createReloadingListeners(ServletContext context) {
- try {
- List reloadingListeners = new ArrayList();
- List lines = IOUtils.readLines(context.getResourceAsStream(WEB_INF_RCLWRAPPER_RCL_CONF));
- for (Iterator linesIt = lines.iterator(); linesIt.hasNext();) {
- String line = (String) linesIt.next();
- if(!line.startsWith(FILE_PROTOCOL)) {
- throw new ReloadingClassloaderCreationException("Only support file: URLs.");
- }
- String url = line.substring(FILE_PROTOCOL.length());
- // windows paths
- if(url.indexOf(2) == ':') {
- url = url.substring(1);
- }
- org.apache.commons.jci.listeners.ReloadingListener rl = new CocoonReloadingListener(new File(url));
- reloadingListeners.add(rl);
- }
- return reloadingListeners;
- } catch (Exception e) {
- throw new ReloadingClassloaderCreationException("Error while creating the URLClassLoader from context:/"
- + WEB_INF_RCLWRAPPER_RCL_CONF, e);
- }
- }
}