giacomo 01/12/09 21:46:46
Modified: src/org/apache/cocoon Cocoon.java
Log:
Added Resource Monitor in Cocoon.java
Submitted by: Gerhard Froehlich <[EMAIL PROTECTED]>
Revision Changes Path
1.34 +44 -4 xml-cocoon2/src/org/apache/cocoon/Cocoon.java
Index: Cocoon.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Cocoon.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- Cocoon.java 2001/12/06 18:54:03 1.33
+++ Cocoon.java 2001/12/10 05:46:46 1.34
@@ -59,6 +59,8 @@
import org.apache.avalon.excalibur.component.ExcaliburComponentManager;
import org.apache.avalon.excalibur.logger.LogKitManageable;
import org.apache.avalon.excalibur.logger.LogKitManager;
+import org.apache.avalon.excalibur.monitor.FileResource;
+import org.apache.avalon.excalibur.monitor.Monitor;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.component.Component;
@@ -90,6 +92,8 @@
import org.apache.cocoon.util.ClassUtils;
import org.xml.sax.InputSource;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeEvent;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
@@ -104,7 +108,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> (Apache
Software Foundation, Exoffice Technologies)
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Leo Sutic</a>
- * @version CVS $Revision: 1.33 $ $Date: 2001/12/06 18:54:03 $
+ * @version CVS $Revision: 1.34 $ $Date: 2001/12/10 05:46:46 $
*/
public class Cocoon
extends AbstractLoggable
@@ -116,7 +120,8 @@
Processor,
Contextualizable,
Composable,
- LogKitManageable{
+ LogKitManageable,
+ PropertyChangeListener {
/** The application context */
private Context context;
@@ -153,6 +158,12 @@
/** the Processor if it is ThreadSafe */
private Processor threadSafeProcessor = null;
+ /** Resource Monitor */
+ private Monitor monitor;
+
+ /** Last modified date */
+ private long lastModified;
+
/**
* Creates a new <code>Cocoon</code> instance.
*
@@ -171,6 +182,7 @@
*/
public void compose(ComponentManager manager) {
this.parentComponentManager = manager;
+
}
/**
@@ -187,9 +199,14 @@
try {
this.configurationFile = new
URLSource((URL)context.get(Constants.CONTEXT_CONFIG_URL),
this.componentManager);
+
+
} catch (IOException ioe) {
getLogger().error("Could not open configuration file.", ioe);
throw new ContextException("Could not open configuration file.",
ioe);
+ } catch (Exception e) {
+ getLogger().error("contextualize(..) Exception", e);
+ throw new ContextException("contextualize(..) Exception", e);
}
}
}
@@ -424,6 +441,18 @@
}
this.componentManager.configure(conf);
+ /** Monitoring the Configuration source */
+ try {
+ this.monitor = (Monitor)this.componentManager.lookup(Monitor.ROLE);
+ URL configURL = new URL(configurationFile.getSystemId());
+ getLogger().debug("Configuration path=" + configURL.getFile());
+ FileResource file = new FileResource(configURL.getFile());
+ file.addPropertyChangeListener(this);
+ monitor.addResource(file);
+ } catch (Exception e) {
+ getLogger().error("Caught Exception while setting up the Resource
Monitor", e);
+ }
+
return conf;
}
@@ -434,8 +463,8 @@
* @return a <code>boolean</code> value
*/
public boolean modifiedSince(long date) {
- this.configurationFile.refresh();
- return date < this.configurationFile.getLastModified();
+ getLogger().debug("modifiedSince(..) date=" + date);
+ return date < this.getLastModified();
}
/**
@@ -733,4 +762,15 @@
--activeRequestCount;
}
+ public void propertyChange(PropertyChangeEvent evt) {
+ setLastModified(((Long)evt.getNewValue()).longValue());
+ }
+
+ private void setLastModified(long _lastModified) {
+ lastModified = _lastModified;
+ }
+
+ private long getLastModified() {
+ return lastModified;
+ }
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]