sylvain     02/04/07 11:48:13

  Modified:    src/java/org/apache/cocoon/components/language/generator
                        ProgramGeneratorImpl.java
               src/java/org/apache/cocoon/generation
                        AbstractServerPage.java
  Log:
  Changed the CM handling in XSPs because of disposal of CMs in TreeProcessor :
  - they are composed with the root CM when created
  - they are recomposed with the generator's CM when loaded
  
  Revision  Changes    Path
  1.15      +8 -3      
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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ProgramGeneratorImpl.java 29 Mar 2002 20:32:01 -0000      1.14
  +++ ProgramGeneratorImpl.java 7 Apr 2002 18:48:12 -0000       1.15
  @@ -55,6 +55,7 @@
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.ComponentSelector;
   import org.apache.avalon.framework.component.ComponentException;
  +import org.apache.avalon.framework.component.Recomposable;
   import org.apache.avalon.framework.context.Context;
   import org.apache.avalon.framework.context.ContextException;
   import org.apache.avalon.framework.context.Contextualizable;
  @@ -85,7 +86,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Ricardo Rocha</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Vadim Gritsenko</a>
  - * @version CVS $Id: ProgramGeneratorImpl.java,v 1.14 2002/03/29 20:32:01 
vgritsenko Exp $
  + * @version CVS $Id: ProgramGeneratorImpl.java,v 1.15 2002/04/07 18:48:12 sylvain 
Exp $
    */
   public class ProgramGeneratorImpl extends AbstractLoggable
       implements ProgramGenerator, Contextualizable, Composable, Parameterizable,
  @@ -245,7 +246,7 @@
                       program = programmingLanguage.preload(normalizedName,
                               this.workDir, markupLanguage.getEncoding());
   
  -                    this.cache.addGenerator(newManager, normalizedName, program);
  +                    this.cache.addGenerator(this.manager, normalizedName, program);
                       programInstance = 
(CompiledComponent)this.cache.select(normalizedName);
                   } catch (Exception e) {
                       getLogger().debug("The program was not preloaded");
  @@ -288,11 +289,15 @@
                       markupLanguage =
                               
(MarkupLanguage)this.markupSelector.select(markupLanguageName);
                   }
  -                programInstance = this.createResource(newManager,
  +                programInstance = this.createResource(this.manager,
                           source, normalizedName, markupLanguage,
                           programmingLanguage, resolver);
               }
   
  +            // Recompose with the new manager if needed
  +            if (programInstance instanceof Recomposable) {
  +                ((Recomposable)programInstance).recompose(newManager);
  +            }
               return programInstance;
           } finally {
               source.recycle();
  
  
  
  1.8       +140 -129  
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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- AbstractServerPage.java   6 Apr 2002 05:51:22 -0000       1.7
  +++ AbstractServerPage.java   7 Apr 2002 18:48:12 -0000       1.8
  @@ -50,6 +50,10 @@
   */
   package org.apache.cocoon.generation;
   
  +import org.apache.avalon.framework.component.Recomposable;
  +import org.apache.avalon.framework.component.ComponentManager;
  +import org.apache.avalon.framework.component.ComponentException;
  +
   import org.apache.cocoon.caching.CacheValidity;
   import org.apache.cocoon.caching.Cacheable;
   import org.apache.cocoon.caching.NOPCacheValidity;
  @@ -65,138 +69,145 @@
    * declares variables that must be explicitly initialized by code generators.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Ricardo Rocha</a>
  - * @version CVS $Id: AbstractServerPage.java,v 1.7 2002/04/06 05:51:22 vgritsenko 
Exp $
  + * @version CVS $Id: AbstractServerPage.java,v 1.8 2002/04/07 18:48:12 sylvain Exp $
    */
   public abstract class AbstractServerPage
  -  extends ServletGenerator implements CompiledComponent, Cacheable
  -{
  -  /**
  -   * Code generators should produce a static
  -   * block that initializes the generator's
  -   * creation date and file dependency list.
  -   * Example:
  -   *
  -   *  static {
  -   *    dateCreated = 958058788948L;
  -   *    dependencies = new File[] {
  -   *      new File("source.xml"),
  -   *    };
  -   *  }
  -   *
  -   */
  -
  -  /** The creation date */
  -  protected static long dateCreated = -1L;
  -  /** The dependency file list */
  -  protected static File[] dependencies = null;
  -
  -  /**
  -   * Determines whether this generator's source files have changed
  -   *
  -   * @return Whether any of the files this generator depends on has changed
  -   * since it was created
  -   */
  -  public boolean modifiedSince(long date) {
  -    if (dateCreated < date) {
  +  extends ServletGenerator implements CompiledComponent, Cacheable, Recomposable {
  +    /**
  +     * Code generators should produce a static
  +     * block that initializes the generator's
  +     * creation date and file dependency list.
  +     * Example:
  +     *
  +     *  static {
  +     *    dateCreated = 958058788948L;
  +     *    dependencies = new File[] {
  +     *      new File("source.xml"),
  +     *    };
  +     *  }
  +     *
  +     */
  +
  +    /** The creation date */
  +    protected static long dateCreated = -1L;
  +    /** The dependency file list */
  +    protected static File[] dependencies = null;
  +
  +    /**
  +     * Recompose with the actual <code>ComponentManager</code> that should
  +     * be used.
  +     */
  +    public void recompose(ComponentManager manager) throws ComponentException {
  +        this.manager = manager;
  +    }
  +
  +    /**
  +     * Determines whether this generator's source files have changed
  +     *
  +     * @return Whether any of the files this generator depends on has changed
  +     * since it was created
  +     */
  +    public boolean modifiedSince(long date) {
  +        if (dateCreated < date) {
  +            return true;
  +        }
  +
  +        for (int i = 0; i < dependencies.length; i++) {
  +            if (dateCreated < dependencies[i].lastModified()) {
  +                return true;
  +            }
  +        }
  +
  +        return false;
  +    }
  +
  +    /**
  +     * Determines whether generated content has changed since
  +     * last invocation. Users may override this method to take
  +     * advantage of SAX event cacheing
  +     *
  +     * @param request The request whose data must be inspected to assert whether
  +     * dynamically generated content has changed
  +     * @return Whether content has changes for this request's data
  +     */
  +    public boolean hasContentChanged(Request request) {
         return true;
       }
   
  -    for (int i = 0; i < dependencies.length; i++) {
  -      if (dateCreated < dependencies[i].lastModified()) {
  -        return true;
  -      }
  -    }
  -
  -    return false;
  -  }
  -
  -  /**
  -   * Determines whether generated content has changed since
  -   * last invocation. Users may override this method to take
  -   * advantage of SAX event cacheing
  -   *
  -   * @param request The request whose data must be inspected to assert whether
  -   * dynamically generated content has changed
  -   * @return Whether content has changes for this request's data
  -   */
  -  public boolean hasContentChanged(Request request) {
  -    return true;
  -  }
  -
  -  /**
  -   * Generates the unique key.
  -   * This key must be unique inside the space of this component.
  -   * Users may override this method to take
  -   * advantage of SAX event cacheing
  -   *
  -   * @return A long representing the cache key (defaults to not cachable)
  -   */
  -  public long generateKey() {
  -    return 0;
  -  }
  -
  -  /**
  -   * Generate the validity object.
  -   *
  -   * @return The generated validity object, <code>NOPCacheValidity</code>
  -   *         is the default if hasContentChange() gives false otherwise
  -   *         <code>null</code> will be returned.
  -   */
  -  public CacheValidity generateValidity() {
  -    if (hasContentChanged(request))
  -      return null;
  -    else
  -      return NOPCacheValidity.CACHE_VALIDITY;
  -  }
  -
  -  // FIXME: Add more methods!
  -  /* SAX Utility Methods */
  -  /**
  -   * Add an attribute
  -   *
  -   * @param attr The attribute list to add to
  -   * @param name The attribute name
  -   * @param value The attribute value
  -   */
  -  protected void attribute(AttributesImpl attr, String name, String value) {
  -    attr.addAttribute("", name, name, "CDATA", value);
  -  }
  -
  -  /**
  -   * Start an element
  -   *
  -   * @param name The element name
  -   * @param attr The element attributes
  -   */
  -  protected void start(String name, AttributesImpl attr) throws SAXException {
  -    this.contentHandler.startElement("", name, name, attr);
  -    attr.clear();
  -  }
  -
  -  /**
  -   * End an element
  -   *
  -   * @param name The element name
  -   */
  -  protected void end(String name) throws SAXException {
  -    this.contentHandler.endElement("", name, name);
  -  }
  -
  -  /**
  -   * Add character data
  -   *
  -   * @param data The character data
  -   */
  -  protected void characters(String data) throws SAXException {
  -    this.contentHandler.characters(data.toCharArray(), 0, data.length());
  -  }
  -
  -  /**
  -   * Add a comment
  -   *
  -   * @param data The comment data
  -   */
  -  protected void comment(String data) throws SAXException {
  -    this.lexicalHandler.comment(data.toCharArray(), 0, data.length());
  -  }
  +    /**
  +     * Generates the unique key.
  +     * This key must be unique inside the space of this component.
  +     * Users may override this method to take
  +     * advantage of SAX event cacheing
  +     *
  +     * @return A long representing the cache key (defaults to not cachable)
  +     */
  +    public long generateKey() {
  +        return 0;
  +    }
  +
  +    /**
  +     * Generate the validity object.
  +     *
  +     * @return The generated validity object, <code>NOPCacheValidity</code>
  +     *         is the default if hasContentChange() gives false otherwise
  +     *         <code>null</code> will be returned.
  +     */
  +    public CacheValidity generateValidity() {
  +        if (hasContentChanged(request))
  +            return null;
  +        else
  +            return NOPCacheValidity.CACHE_VALIDITY;
  +    }
  +
  +    // FIXME: Add more methods!
  +    /* SAX Utility Methods */
  +    /**
  +     * Add an attribute
  +     *
  +     * @param attr The attribute list to add to
  +     * @param name The attribute name
  +     * @param value The attribute value
  +     */
  +    protected void attribute(AttributesImpl attr, String name, String value) {
  +        attr.addAttribute("", name, name, "CDATA", value);
  +    }
  +
  +    /**
  +     * Start an element
  +     *
  +     * @param name The element name
  +     * @param attr The element attributes
  +     */
  +    protected void start(String name, AttributesImpl attr) throws SAXException {
  +        this.contentHandler.startElement("", name, name, attr);
  +        attr.clear();
  +    }
  +
  +    /**
  +     * End an element
  +     *
  +     * @param name The element name
  +     */
  +    protected void end(String name) throws SAXException {
  +        this.contentHandler.endElement("", name, name);
  +    }
  +
  +    /**
  +     * Add character data
  +     *
  +     * @param data The character data
  +     */
  +    protected void characters(String data) throws SAXException {
  +        this.contentHandler.characters(data.toCharArray(), 0, data.length());
  +    }
  +
  +    /**
  +     * Add a comment
  +     *
  +     * @param data The comment data
  +     */
  +    protected void comment(String data) throws SAXException {
  +        this.lexicalHandler.comment(data.toCharArray(), 0, data.length());
  +    }
   }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to