sylvain 2002/09/11 05:44:10
Modified: . changes.xml
src/java/org/apache/cocoon/acting
SessionPropagatorAction.java
src/java/org/apache/cocoon/components/language/generator
ProgramGeneratorImpl.java
src/java/org/apache/cocoon/components/language/markup/xsp/java
xsp.xsl
src/java/org/apache/cocoon/generation
AbstractServerPage.java
Log:
Fix a nasty bug in XSP recompilation : static fields were used for dependencies,
meaning their value was shared by *all* XSP pages.
Revision Changes Path
1.245 +5 -1 xml-cocoon2/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/changes.xml,v
retrieving revision 1.244
retrieving revision 1.245
diff -u -r1.244 -r1.245
--- changes.xml 9 Sep 2002 17:53:16 -0000 1.244
+++ changes.xml 11 Sep 2002 12:44:09 -0000 1.245
@@ -40,6 +40,10 @@
</devs>
<release version="@version@" date="@date@">
+ <action dev="SW" type="fix">
+ AbstractServerPages used static fields for dependency tracking, which caused
+ either non-modified XSPs to be recompiled, or modified XSPs not to be
recompiled.
+ </action>
<action dev="MC" type="add" fixes-bug="12304">
Added AxisRPCReader to scratchpad. This reader essentially allows you
to serve SOAP requests from your Cocoon application. Sample webapp with
1.9 +2 -2
xml-cocoon2/src/java/org/apache/cocoon/acting/SessionPropagatorAction.java
Index: SessionPropagatorAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/acting/SessionPropagatorAction.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- SessionPropagatorAction.java 11 Sep 2002 08:26:44 -0000 1.8
+++ SessionPropagatorAction.java 11 Sep 2002 12:44:09 -0000 1.9
@@ -84,7 +84,7 @@
public class SessionPropagatorAction extends AbstractConfigurableAction implements
ThreadSafe
{
- private static Object[] defaults = {};
+ private Object[] defaults = {};
public void configure(Configuration conf) throws ConfigurationException {
if (conf != null) {
1.21 +4 -2
xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java
Index: ProgramGeneratorImpl.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- ProgramGeneratorImpl.java 31 Jul 2002 13:13:23 -0000 1.20
+++ ProgramGeneratorImpl.java 11 Sep 2002 12:44:09 -0000 1.21
@@ -292,7 +292,9 @@
if (this.autoReload) {
long sourceLastModified = source.getLastModified();
// has XSP changed?
- if (programInstance.modifiedSince(sourceLastModified) ||
sourceLastModified == 0) {
+ // Note : lastModified can be 0 if source is dynamically
generated.
+ // In that case, let the program instance decide if it is
modified or not.
+ if (programInstance.modifiedSince(sourceLastModified)) {
if (getLogger().isDebugEnabled()) {
getLogger().debug("ReCreating serverpage for [" +
String.valueOf(id) + "]");
}
1.12 +9 -5
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/java/xsp.xsl
Index: xsp.xsl
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/java/xsp.xsl,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- xsp.xsl 2 Aug 2002 02:18:26 -0000 1.11
+++ xsp.xsl 11 Sep 2002 12:44:09 -0000 1.12
@@ -133,13 +133,17 @@
*/
public class <xsl:value-of select="@file-name"/> extends XSPGenerator {
- static {
- dateCreated = <xsl:value-of select="@creation-date"/>L;
- dependencies = new File[] {
+ // Files this XSP depends on
+ private static File[] _dependentFiles = new File[] {
<xsl:for-each select="//xsp:dependency">
new File("<xsl:value-of select="translate(., '\','/')"/>"),
</xsl:for-each>
};
+
+ // Initialize attributes used by modifiedSince() (see AbstractServerPage)
+ {
+ this.dateCreated = <xsl:value-of select="@creation-date"/>L;
+ this.dependencies = _dependentFiles;
}
/* Built-in parameters available for use */
1.10 +7 -7
xml-cocoon2/src/java/org/apache/cocoon/generation/AbstractServerPage.java
Index: AbstractServerPage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/generation/AbstractServerPage.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AbstractServerPage.java 8 Aug 2002 07:47:36 -0000 1.9
+++ AbstractServerPage.java 11 Sep 2002 12:44:09 -0000 1.10
@@ -77,14 +77,14 @@
public abstract class AbstractServerPage
extends ServletGenerator implements CompiledComponent,
CacheableProcessingComponent, Recomposable {
/**
- * Code generators should produce a static
+ * Code generators should produce a constructor
* block that initializes the generator's
* creation date and file dependency list.
* Example:
*
- * static {
- * dateCreated = 958058788948L;
- * dependencies = new File[] {
+ * {
+ * this.dateCreated = 958058788948L;
+ * this.dependencies = new File[] {
* new File("source.xml"),
* };
* }
@@ -92,9 +92,9 @@
*/
/** The creation date */
- protected static long dateCreated = -1L;
+ protected long dateCreated = -1L;
/** The dependency file list */
- protected static File[] dependencies = null;
+ protected File[] dependencies = null;
/**
* Recompose with the actual <code>ComponentManager</code> that should
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]