cedric      01/12/27 09:35:38

  Modified:    contrib/tiles/src/share/org/apache/struts/taglib/tiles
                        AddTag.java AddTagParent.java
                        AttributeToScopeTag.java ComponentConstants.java
                        DefinitionTag.java GetAttributeTag.java GetTag.java
                        ImportAttributeTag.java InitDefinitionsTag.java
                        InsertTag.java PutListTag.java
                        PutListTagParent.java PutTag.java PutTagParent.java
                        UseAttributeTag.java UseAttributeTei.java
               contrib/tiles/src/share/org/apache/struts/taglib/tiles/ext
                        TextTag.java
               contrib/tiles/src/share/org/apache/struts/taglib/tiles/util
                        TagUtils.java
               contrib/tiles/src/share/org/apache/struts/tiles
                        ActionComponentServlet.java
                        AttributeDefinition.java ComponentContext.java
                        ComponentDefinition.java
                        ComponentDefinitionsFactory.java
                        DefinitionAttribute.java
                        DefinitionNameAttribute.java
                        DefinitionsFactoryException.java
                        DefinitionsUtil.java DirectStringAttribute.java
                        FactoryNotFoundException.java
                        NoSuchDefinitionException.java PathAttribute.java
                        UntyppedAttribute.java
               contrib/tiles/src/share/org/apache/struts/tiles/resources
                        tiles-config.dtd
               contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition
                        DefinitionsFactory.java I18nFactorySet.java
                        XmlAttribute.java XmlDefinition.java
                        XmlListAttribute.java XmlParser.java
               contrib/tiles/src/tutorial/org/apache/struts/example/tiles
                        InitServlet.java
               contrib/tiles/src/tutorial/org/apache/struts/example/tiles/invoice
                        EditInvoiceAction.java
               contrib/tiles/src/tutorial/org/apache/struts/example/tiles/rssChannel
                        Channels.java
  Log:
  Add individual controller and reload capabilities
  
  Revision  Changes    Path
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AddTag.java
  
  Index: AddTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AddTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AddTag.java       2001/08/01 14:36:40     1.1
  +++ AddTag.java       2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AddTag.java,v
 1.1 2001/08/01 14:36:40 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:40 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AddTag.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AddTagParent.java
  
  Index: AddTagParent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AddTagParent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AddTagParent.java 2001/08/01 14:36:40     1.1
  +++ AddTagParent.java 2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AddTagParent.java,v
 1.1 2001/08/01 14:36:40 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:40 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AddTagParent.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AttributeToScopeTag.java
  
  Index: AttributeToScopeTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AttributeToScopeTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AttributeToScopeTag.java  2001/08/01 14:36:40     1.1
  +++ AttributeToScopeTag.java  2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AttributeToScopeTag.java,v
 1.1 2001/08/01 14:36:40 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:40 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/AttributeToScopeTag.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.3       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ComponentConstants.java
  
  Index: ComponentConstants.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ComponentConstants.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ComponentConstants.java   2001/09/10 13:02:06     1.2
  +++ ComponentConstants.java   2001/12/27 17:35:37     1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ComponentConstants.java,v
 1.2 2001/09/10 13:02:06 cedric Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/09/10 13:02:06 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ComponentConstants.java,v
 1.3 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +24 -90    
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/DefinitionTag.java
  
  Index: DefinitionTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/DefinitionTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefinitionTag.java        2001/08/01 14:36:40     1.1
  +++ DefinitionTag.java        2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/DefinitionTag.java,v
 1.1 2001/08/01 14:36:40 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:40 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/DefinitionTag.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  @@ -17,14 +17,14 @@
   import javax.servlet.jsp.JspException;
   
   /**
  - * This is the tag handler for <template:definition>, which defines
  - * a template / component. Definition is put in requested context, and can be
  - * used in <template:insert&gt.
  - * 
  + * This is the tag handler for <tiles:definition>, which defines
  + * a tiles (or template / component). Definition is put in requested context, and 
can be
  + * used in <tiles:insert&gt.
  + *
    * @author Cedric Dumoulin
  - * @version $Revision: 1.1 $ $Date: 2001/08/01 14:36:40 $
  + * @version $Revision: 1.2 $ $Date: 2001/12/27 17:35:37 $
    */
  -public class DefinitionTag extends TagSupport implements PutTagParent, 
PutListTagParent
  +public class DefinitionTag extends DefinitionTagSupport implements PutTagParent, 
PutListTagParent
   {
   
       /* JSP Tag attributes */
  @@ -32,24 +32,12 @@
                 * Definition identifier.
                 */
                private String id;
  -             
  -             /**
  -              * Template page defined for this definition.
  -              */
  -             private String template;
   
                /**
                 * Scope into which definition will be saved.
                 */
                private String scope;
   
  -             /**
  -              * Role associated to definition.
  -     * Role is not checked by this tag. Role checking is left to 'user'
  -     * of this class (ex : insert tag).
  -              */
  -             private String role;
  -
       /**
        * Extends attribute value.
        */
  @@ -69,7 +57,7 @@
                {
       super.release();
       id = null;
  -    template = null;
  +    page = null;
       scope = null;
       role = null;
       extendsDefinition = null;
  @@ -86,7 +74,7 @@
   
      /**
        * This method is a convenience for others tags for
  -     * putting content into the template definition.
  +     * putting content into the tile definition.
        * Content is already typed by caller.
        */
      public void putAttribute(String name, Object content)
  @@ -155,93 +143,49 @@
   
                /**
                 * Access method for the id property.
  -              * 
  +              *
                 * @return   the current value of the id property
  -              * @roseuid 
  +              * @roseuid
                 */
  -             public String getId() 
  +             public String getId()
                {
       return id;
       }
  -             
  +
                /**
                 * Sets the value of the id property.
  -              * 
  +              *
                 * @param aId the new value of the id property
                 */
                public void setId(String id)
                {
       this.id = id;
                }
  -             
  +
                /**
                 * Access method for the scope property.
  -              * 
  +              *
                 * @return   the current value of the scope property
                 */
  -             public String getScope() 
  +             public String getScope()
                {
                return scope;
       }
  -             
  +
                /**
                 * Sets the value of the scope property.
  -              * 
  +              *
                 * @param aScope the new value of the scope property
                 */
                public void setScope(String aScope)
                {
       scope = aScope;
       }
  -             
  -             /**
  -              * Access method for the template property.
  -              * 
  -              * @return   the current value of the template property
  -              * @roseuid 
  -              */
  -             public String getTemplate() 
  -             {
  -    return template;
  -    }
  -             
  -             /**
  -              * Sets the value of the template property.
  -     * Same as setPage()
  -              * 
  -              * @param aTemplate the new value of the template property
  -              * @roseuid 
  -              */
  -             public void setTemplate(String template)
  -             {
  -    this.template = template;
  -    }
   
  -             /**
  -              * Sets the value of the page property.
  -              * 
  -              * @param aTemplate the new value of the template property
  -              * @roseuid 
  -              */
  -             public void setPage(String page)
  -             {
  -    this.template = page;
  -    }
  -
  -  /**
  -   * Access method for the role property.
  -   * @return   the current value of the template property
  -   */
  -  public String getRole()
  -    {
  -    return role;
  -    }
  -
     /**
  -   * @return void
  -   * Sets the value of the role property.
  +   * Sets the value of the extends property.
      *
  -   * @param template the new value of the path property
  +   * @param definitionName Name of parent definition.
      */
     public void setExtends(String definitionName)
       {
  @@ -249,26 +193,16 @@
       }
   
     /**
  -   * Access method for the role property.
  -   * @return   the current value of the template property
  +   * Access method for the extends property.
  +   * @return   the current value of the extends property
      */
     public String getExtends()
       {
       return extendsDefinition;
       }
   
  -  /**
  -   * Sets the value of the role property.
  -   *
  -   * @param template the new value of the path property
  -   */
  -  public void setRole(String role)
  -    {
  -    this.role = role;
  -    }
  -
      /**
  -     * Process the start tag by creating a new template definition.
  +     * Process the start tag by creating a new definition.
        */
      public int doStartTag() throws JspException
      {
  @@ -283,8 +217,8 @@
         definition = new ComponentDefinition();
   
         // Set definitions attributes
  -   if( template != null )
  -     definition.setTemplate(template);
  +   if( page != null )
  +     definition.setTemplate(page);
      if( role != null )
        definition.setRole(role);
   
  
  
  
  1.3       +3 -3      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/GetAttributeTag.java
  
  Index: GetAttributeTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/GetAttributeTag.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- GetAttributeTag.java      2001/09/17 08:55:51     1.2
  +++ GetAttributeTag.java      2001/12/27 17:35:37     1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/GetAttributeTag.java,v
 1.2 2001/09/17 08:55:51 cedric Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/09/17 08:55:51 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/GetAttributeTag.java,v
 1.3 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.4       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/GetTag.java
  
  Index: GetTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/GetTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- GetTag.java       2001/09/28 17:00:11     1.3
  +++ GetTag.java       2001/12/27 17:35:37     1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/GetTag.java,v
 1.3 2001/09/28 17:00:11 cedric Exp $
  - * $Revision: 1.3 $
  - * $Date: 2001/09/28 17:00:11 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/GetTag.java,v
 1.4 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.4 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.3       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ImportAttributeTag.java
  
  Index: ImportAttributeTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ImportAttributeTag.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ImportAttributeTag.java   2001/11/02 16:50:05     1.2
  +++ ImportAttributeTag.java   2001/12/27 17:35:37     1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ImportAttributeTag.java,v
 1.2 2001/11/02 16:50:05 cedric Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/11/02 16:50:05 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ImportAttributeTag.java,v
 1.3 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.3       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/InitDefinitionsTag.java
  
  Index: InitDefinitionsTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/InitDefinitionsTag.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- InitDefinitionsTag.java   2001/09/28 17:00:11     1.2
  +++ InitDefinitionsTag.java   2001/12/27 17:35:37     1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/InitDefinitionsTag.java,v
 1.2 2001/09/28 17:00:11 cedric Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/09/28 17:00:11 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/InitDefinitionsTag.java,v
 1.3 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.5       +73 -49    
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/InsertTag.java
  
  Index: InsertTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/InsertTag.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- InsertTag.java    2001/11/02 16:50:04     1.4
  +++ InsertTag.java    2001/12/27 17:35:37     1.5
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/InsertTag.java,v
 1.4 2001/11/02 16:50:04 cedric Exp $
  - * $Revision: 1.4 $
  - * $Date: 2001/11/02 16:50:04 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/InsertTag.java,v
 1.5 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.5 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  @@ -10,6 +10,7 @@
   
   import org.apache.struts.tiles.ComponentContext;
   import org.apache.struts.tiles.ComponentDefinition;
  +import org.apache.struts.tiles.Controller;
   import org.apache.struts.tiles.DefinitionsUtil;
   import org.apache.struts.tiles.NoSuchDefinitionException;
   import org.apache.struts.tiles.FactoryNotFoundException;
  @@ -33,6 +34,7 @@
   import javax.servlet.jsp.PageContext;
   import javax.servlet.ServletException;
   import javax.servlet.http.HttpServletRequest;
  +import javax.servlet.http.HttpServletResponse;
   
   /**
    * This is the tag handler for <template:insert>, which includes
  @@ -41,20 +43,19 @@
    *
    * @author David Geary
    * @author Cedric Dumoulin
  - * @version $Revision: 1.4 $ $Date: 2001/11/02 16:50:04 $
  + * @version $Revision: 1.5 $ $Date: 2001/12/27 17:35:37 $
    */
  -public class InsertTag extends TagSupport implements PutTagParent, 
ComponentConstants, PutListTagParent
  +public class InsertTag extends DefinitionTagSupport implements PutTagParent, 
ComponentConstants, PutListTagParent
   {
       /** debug flag */
  -  public final static boolean debug = true;
  +  public final static boolean debug = false;
   
       /* JSP Tag attributes */
       /** Flush attribute value */
     protected boolean flush = true;
  -    /** Name of entity to include */
  -  protected String name = null;
  -  /** Name of page, component or template to include */
  -  private String page = null;
  +
  +    /** Name to insert */
  +  private String name = null;
       /** Name of attribute from which to read page name to include */
     private String attribute = null;
       /** Name of bean used as entity to include */
  @@ -63,8 +64,7 @@
     private String beanProperty = null;
       /** Scope of bean, if any */
     private String beanScope = null;
  -    /** Role attribute */
  -  protected String role = null;
  +
       /**
        * Is errors ignored ? This is the property for attribute 'ignore'.
        * Default value is false, which throw an exception.
  @@ -130,28 +130,22 @@
         this.pageContext = pc;
         super.setPageContext(pc);
         }
  +
       /**
  -     * Set property
  +     * Set property.
        */
  -  public void setComponent(String name){
  -    this.page = name;
  +  public void setName(String value){
  +    this.name = value;
     }
   
       /**
        * Set property
        */
  -  public void setTemplate(String name){
  +  public void setComponent(String name){
       this.page = name;
     }
   
       /**
  -     * Set name property
  -     */
  -  public void setName(String name){
  -    this.name = name;
  -  }
  -
  -    /**
        * Set property
        * @deprecated Use setDefinition() instead.
        */
  @@ -166,13 +160,6 @@
       this.definitionName = name;
     }
   
  -  /**
  -   * Set property
  -   */
  -  public void setPage(String page){
  -    this.page = page;
  -  }
  -
       /**
        * Set property
        */
  @@ -217,14 +204,6 @@
     }
   
       /**
  -     * Set role attribute
  -     * @param name The role the user must be in to store content.
  -     */
  -   public void setRole(String role) {
  -      this.role = role;
  -   }
  -
  -    /**
        * Set ignore attribute
        */
     public void setIgnore(boolean ignore)
  @@ -313,6 +292,28 @@
       return cachedCurrentContext;
       }
   
  +    /**
  +     * Get instanciated Controller.
  +     * Return controller denoted by controllerType, or null if controllerType
  +     * is null.
  +     * @throws JspException If controller can't be created.
  +     */
  +  private Controller getController() throws JspException
  +    {
  +    if( controllerType == null )
  +      {
  +      return null;
  +      }
  +    try
  +      {
  +      return ComponentDefinition.createController( controllerName, controllerType );
  +      }
  +     catch( InstantiationException ex )
  +      {
  +      throw new JspException( ex.getMessage() );
  +      }
  +    }
  +
                /**
                 * Process the start tag by checking tag's attributes and creating 
appropriate handler.
                 * Possible handlers :
  @@ -459,11 +460,11 @@
   
                /**
                 * Process
  -              * @roseuid 3AB4CE540211
  +              * @throws JspException If failed to create controller
                 */
  -             public TagHandler processUrl(String url)
  +             public TagHandler processUrl(String url) throws JspException
                {
  -    return new InsertHandler(url, role );
  +    return new InsertHandler(url, role, getController() );
                }
   
                /**
  @@ -474,7 +475,7 @@
                 * @throws JspException- NoSuchDefinitionException No Definition  
found for name.
                 * @throws JspException- FactoryNotFoundException Can't find 
Definitions factory.
                 * @throws JspException- DefinedComponentFactoryException General 
error in factory.
  -              * @roseuid 3AB4CEFB01CB
  +     * @throws JspException InstantiationException Can't create requested controller
                 */
                protected TagHandler processDefinitionName(String name)
         throws JspException
  @@ -516,19 +517,35 @@
        * Then, create appropriate tag handler.
                 * @param definition Definition to process.
                 * @return Appropriate TagHandler.
  +     * @throws JspException InstantiationException Can't create requested controller
                 */
                protected TagHandler processDefinition(ComponentDefinition definition)
  +      throws JspException
                {
         // Declare local variable in order to not change Tag attribute values.
       String role = this.role;
       String page = this.page;
  -     // Overload definition with tag's template and role.
  -     if(role == null )
  -      role = definition.getRole();
  -    if( page == null )
  -      page = definition.getTemplate();
  -      // Can check if page is set
  -    return new InsertHandler( definition.getAttributes(), page, role );
  +    Controller controller = null;
  +
  +    try
  +      {
  +      controller = definition.getOrCreateController();
  +
  +       // Overload definition with tag's template and role.
  +      if(role == null )
  +        role = definition.getRole();
  +      if( page == null )
  +        page = definition.getTemplate();
  +      if( controllerName != null )
  +        controller = ComponentDefinition.createController( controllerName, 
controllerType );
  +
  +        // Can check if page is set
  +      return new InsertHandler( definition.getAttributes(), page, role, controller 
);
  +      }
  +     catch( InstantiationException ex )
  +      {
  +      throw new JspException( ex.getMessage() );
  +      }
                }
   
                /**
  @@ -586,9 +603,10 @@
                 * Try to process name as a definition, or as an URL if not found.
                 * @param name Name to process.
                 * @return appropriate TagHandler
  -              * @roseuid 3AB4D8DC002D
  +     * @throws JspException InstantiationException Can't create requested controller
                 */
                public TagHandler processAsDefinitionOrURL( String name )
  +      throws JspException
                {
       try
         {
  @@ -625,7 +643,7 @@
         return processDefinitionName( (String)value.getValue() );
         }
        //else if( value instanceof PathAttribute )
  -    return new InsertHandler( (String)value.getValue(), role );
  +    return new InsertHandler( (String)value.getValue(), role, getController() );
                }
   
     /////////////////////////////////////////////////////////////////////////////
  @@ -662,15 +680,17 @@
       protected ComponentContext currentContext;
       protected ComponentContext subCompContext;
       protected String role;
  +    protected Controller controller;
   
         /**
          * Constructor.
          * Create insert handler using Component definition.
          */
  -    public InsertHandler( Map attributes, String page, String role  )
  +    public InsertHandler( Map attributes, String page, String role, Controller 
controller  )
         {
         this.page = page;
         this.role = role;
  +      this.controller = controller;
         subCompContext = new ComponentContext( attributes );
         }
   
  @@ -678,10 +698,11 @@
          * Constructor.
          * Create insert handler to insert page at specified location.
          */
  -    public InsertHandler( String page, String role )
  +    public InsertHandler( String page, String role, Controller controller )
         {
         this.page = page;
         this.role = role;
  +      this.controller = controller;
         subCompContext = new ComponentContext();
         }
   
  @@ -727,6 +748,9 @@
   
            // set new context for included component.
           pageContext.setAttribute( ComponentConstants.COMPONENT_CONTEXT, 
subCompContext, pageContext.REQUEST_SCOPE);
  +        // Call controller if any
  +        if( controller != null )
  +          controller.perform(subCompContext, 
(HttpServletRequest)pageContext.getRequest(), 
(HttpServletResponse)pageContext.getResponse(), pageContext.getServletContext());
           // include requested component.
           if( flush )
             pageContext.getOut().flush();
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutListTag.java
  
  Index: PutListTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutListTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PutListTag.java   2001/08/01 14:36:41     1.1
  +++ PutListTag.java   2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutListTag.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutListTag.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutListTagParent.java
  
  Index: PutListTagParent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutListTagParent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PutListTagParent.java     2001/08/01 14:36:41     1.1
  +++ PutListTagParent.java     2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutListTagParent.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutListTagParent.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutTag.java
  
  Index: PutTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PutTag.java       2001/08/01 14:36:41     1.1
  +++ PutTag.java       2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutTag.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutTag.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutTagParent.java
  
  Index: PutTagParent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutTagParent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PutTagParent.java 2001/08/01 14:36:41     1.1
  +++ PutTagParent.java 2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutTagParent.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/PutTagParent.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/UseAttributeTag.java
  
  Index: UseAttributeTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/UseAttributeTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UseAttributeTag.java      2001/08/01 14:36:41     1.1
  +++ UseAttributeTag.java      2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/UseAttributeTag.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/UseAttributeTag.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/UseAttributeTei.java
  
  Index: UseAttributeTei.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/UseAttributeTei.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UseAttributeTei.java      2001/08/01 14:36:41     1.1
  +++ UseAttributeTei.java      2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/UseAttributeTei.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/UseAttributeTei.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ext/TextTag.java
  
  Index: TextTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ext/TextTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TextTag.java      2001/08/01 14:36:41     1.1
  +++ TextTag.java      2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ext/TextTag.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/ext/TextTag.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    *
    * ====================================================================
    *
  @@ -83,7 +83,7 @@
    *
    * @author Craig R. McClanahan
    * @author Cedric Dumoulin
  - * @version $Revision: 1.1 $ $Date: 2001/08/01 14:36:41 $
  + * @version $Revision: 1.2 $ $Date: 2001/12/27 17:35:37 $
    */
   
   public class TextTag extends BaseFieldTag {
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/util/TagUtils.java
  
  Index: TagUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/util/TagUtils.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TagUtils.java     2001/08/01 14:36:41     1.1
  +++ TagUtils.java     2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/util/TagUtils.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/taglib/tiles/util/TagUtils.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.4       +34 -22    
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ActionComponentServlet.java
  
  Index: ActionComponentServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ActionComponentServlet.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ActionComponentServlet.java       2001/09/28 17:05:23     1.3
  +++ ActionComponentServlet.java       2001/12/27 17:35:37     1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ActionComponentServlet.java,v
 1.3 2001/09/28 17:05:23 cedric Exp $
  - * $Revision: 1.3 $
  - * $Date: 2001/09/28 17:05:23 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ActionComponentServlet.java,v
 1.4 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.4 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  @@ -189,33 +189,41 @@
   
       /**
        * Process forward.
  -     *
  -     * 'forward' contains screen name. This later is used to find appropriate 
mapping.
  -     * Then, request is forwarded to this mapping.
  +     * Forward to requested uri.
  +     * Uri can be a valid uri, or a definition name. If definition name, search
  +     * definition and use definition path.
  +     * @param uri Uri or Definition name to forward
  +     * @param request Current page request
  +     * @param response Current page response
        */
     protected void processForward(String uri, HttpServletRequest request, 
HttpServletResponse response)
          throws IOException, ServletException
       {
         // Do we do a forward (original behavior) or an include ?
       boolean doInclude = false;
  +      // Controller associated to a definition, if any
  +    Controller controller = null;
  +    ComponentContext tileContext = null;
   
        try
           {
  -
             // Get current tile context if any.
             // If context exist, we will do an include
  -        ComponentContext tileContext = ComponentContext.getContext( request );
  +        tileContext = ComponentContext.getContext( request );
           doInclude = (tileContext!=null );
           ComponentDefinition definition;
   
  -          // Process tiles definition names only if a definition factory exist.
  +          // Process tiles definition names only if a definition factory exist,
  +          // and definition found.
           if( definitionsFactory != null )
             { // Get definition of tiles/component corresponding to uri.
             definition = definitionsFactory.getDefinition(uri, request, 
getServletContext());
             if( definition != null )
               { // We have a definition.
                 // We use it to complete missing attribute in context.
  +              // We also get uri, controller.
               uri = definition.getPath();
  +            controller = definition.getOrCreateController();
               if( tileContext == null )
                 {
                 tileContext = new ComponentContext( definition.getAttributes() );
  @@ -225,13 +233,17 @@
                 tileContext.addMissing( definition.getAttributes() );
               } // end if
             } // end if
  -          // Check if there is a definition set in jsp context.
  +
  +          // Process definition set in Action, if any.
           definition = DefinitionsUtil.getActionDefinition(request);
           if( definition != null )
             { // We have a definition.
               // We use it to complete missing attribute in context.
  -            // We also overload uri.
  -          uri = definition.getPath();
  +            // We also overload uri and controller if set in definition.
  +          if(definition.getPath()!=null)
  +            uri = definition.getPath();
  +          if(definition.getOrCreateController()!=null)
  +            controller = definition.getOrCreateController();
             if( tileContext == null )
               {
               tileContext = new ComponentContext( definition.getAttributes() );
  @@ -242,12 +254,22 @@
             } // end if
   
           }
  +       catch( java.lang.InstantiationException ex )
  +        {
  +        throw new ServletException( "Can't create associated controller", ex );
  +        }
          catch( DefinitionsFactoryException ex )
           {
           throw new ServletException( ex );
           }
  +
  +      // Execute controller associated to definition, if any.
  +    if(controller !=null)
  +      {
  +      controller.perform( tileContext, request, response, getServletContext());
  +      } // end if
   
  -      // Do dispatching
  +      // Do dispatching : search dispatcher, then dispatch
          RequestDispatcher rd = getServletContext().getRequestDispatcher(uri);
       if (rd == null)
         { // error
  @@ -256,23 +278,13 @@
         return;
         } // end if
   
  -      // If request comes from a previous component, do an include.
  -      // This allows to insert an action in a components.
  +      // If request comes from a previous Tile, do an include.
  +      // This allows to insert an action in a Tile.
       if( doInclude )
         rd.include(request, response);
        else
         rd.forward(request, response);   // original behavior
   
  -/*
  -   try
  -     { // original behavior
  -     rd.forward(request, response);
  -     }
  -    catch( IllegalStateException ex )
  -     { // Response already committed : do include
  -     rd.include( request, response);
  -     }
  -*/
      }
   
   
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/AttributeDefinition.java
  
  Index: AttributeDefinition.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/AttributeDefinition.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AttributeDefinition.java  2001/08/01 14:36:41     1.1
  +++ AttributeDefinition.java  2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/AttributeDefinition.java,v
 1.1 2001/08/01 14:36:41 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:41 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/AttributeDefinition.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.4       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentContext.java
  
  Index: ComponentContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ComponentContext.java     2001/11/02 16:50:05     1.3
  +++ ComponentContext.java     2001/12/27 17:35:37     1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentContext.java,v
 1.3 2001/11/02 16:50:05 cedric Exp $
  - * $Revision: 1.3 $
  - * $Date: 2001/11/02 16:50:05 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentContext.java,v
 1.4 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.4 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +270 -1    
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentDefinition.java
  
  Index: ComponentDefinition.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentDefinition.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ComponentDefinition.java  2001/08/01 14:36:42     1.1
  +++ ComponentDefinition.java  2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentDefinition.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentDefinition.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  @@ -9,10 +9,14 @@
   
   package org.apache.struts.tiles;
   
  +import org.apache.struts.tiles.Controller;
  +import org.apache.struts.action.Action;
  +
   import java.util.Map;
   import java.util.HashMap;
   import java.util.Iterator;
   import java.io.Serializable;
  +import org.apache.struts.taglib.tiles.DefinitionTagSupport;
   
   /**
    * Definition of a template / component attributes.
  @@ -21,8 +25,11 @@
    */
   public class ComponentDefinition implements Serializable
   {
  +  /** Debug flag */
  +  public static final boolean debug = false;
  +
     /**
  -   * Instance name
  +   * Definition name
      */
     protected String name;
   
  @@ -38,6 +45,25 @@
     /** role associated to definition */
     protected String role;
   
  +    /** Associated Controller URL or classname, if defined */
  +  protected String controller;
  +    /** Associated Controller typename, if controllerName defined.
  +     *  Can be CONTROLLER, ACTION or URL, or null */
  +  protected String controllerType;
  +
  +    /** Controller name type */
  +  public static final String URL = "url";
  +    /** Controller name type */
  +  public static final String CONTROLLER = "controller";
  +    /** Controller name type */
  +  public static final String ACTION = "action";
  +
  +  /**
  +   * Controller associated to Definition.
  +   * Lazy creation : only on first request
  +   */
  +  private Controller controllerInstance;
  +
     /**
      * @return void
      * Sets the value of the attributes property.
  @@ -70,8 +96,31 @@
     this.name = definition.getName();
     this.path = definition.getPath();
     this.role = definition.getRole();
  +  this.controllerInstance = definition.getControllerInstance();
  +  this.controller = definition.getController();
  +  this.controllerType = definition.getControllerType();
     }
   
  +    /**
  +   * Constructor.
  +   * Create a new definition initialized from a RawDefinition.
  +   * Raw definitions are used to read definition from a data source (xml file, db, 
...).
  +   * A RawDefinition mainly contains properties of type String, while Definition
  +   * contains more complex type (ex : Controller).
  +   * Do a shallow copy : attributes are shared between objects, but not the Map
  +   * containing attributes.
  +   * OO Design issues : Actually RawDefinition (XmlDefinition) extends 
ComponentDefinition.
  +   * This must not be the case. I have do it because I am lazy.
  +    * @throw InstantiationException if an error occur while instanciating 
Controller :
  +    * (classname can't be instanciated, Illegal access with instanciated class,
  +    * Error while instanciating class, classname can't be instanciated.
  +   */
  +  public ComponentDefinition( org.apache.struts.tiles.xmlDefinition.XmlDefinition 
definition )
  +  {
  +  this((ComponentDefinition)definition);
  +  }
  +
  +
     /**
      * Constructor.
      */
  @@ -104,6 +153,27 @@
      *
      * @return   the current value of the path property
      */
  +  public String getPage()
  +    {
  +    return path;
  +    }
  +
  +  /**
  +   * Sets the value of the path property.
  +   *
  +   * @param aPath the new value of the path property
  +   * @return void
  +   */
  +  public void setPage(String page)
  +    {
  +    path = page;
  +    }
  +
  +  /**
  +   * Access method for the path property.
  +   *
  +   * @return   the current value of the path property
  +   */
     public String getPath()
       {
       return path;
  @@ -292,7 +362,206 @@
       return "{name="+ name +
              ", path="+ path +
              ", role="+ role +
  +           ", controller="+ controller +
  +           ", controllerType="+ controllerType +
  +           ", controllerInstance="+ controllerInstance +
              ", attributes=" + attributes + "}\n";
       }
  +
  +  /**
  +   * Get associated controller type.
  +   * Type denote a fully qualified classname.
  +   */
  +  public String getControllerType()
  +  {
  +  return controllerType;
  +  }
  +
  +  /**
  +   * Set associated controller type.
  +   * Type denote a fully qualified classname.
  +   * @param controllerType Typeof associated controller
  +   */
  +  public void setControllerType(String controllerType)
  +  {
  +  this.controllerType = controllerType;
  +  }
  +
  +  /**
  +   * Set associated controller name as an url, and controller
  +   * type as "url".
  +   * Name must be an url (not checked).
  +   * Convenience method.
  +   * @param controller Controller url
  +   */
  +  public void setControllerUrl(String controller)
  +  {
  +  setController( controller);
  +  setControllerType( "url" );
  +  }
  +
  +  /**
  +   * Set associated controller name as a classtype, and controller
  +   * type as "classname".
  +   * Name denote a fully qualified classname
  +   * Convenience method.
  +   * @param controller Controller classname.
  +   */
  +  public void setControllerClass(String controller)
  +  {
  +  setController( controller);
  +  setControllerType( "classname" );
  +  }
  +
  +  /**
  +   * Get associated controller local URL.
  +   * URL should be local to webcontainer in order to allow request context followup.
  +   * URL comes as a string.
  +   */
  +  public String getController()
  +  {
  +  return controller;
  +  }
  +
  +  /**
  +   * Set associated controller URL.
  +   * URL should be local to webcontainer in order to allow request context followup.
  +   * URL is specified as a string.
  +   * @param url Url called locally
  +   */
  +  public void setController(String name)
  +  {
  +  this.controller = name;
  +  }
  +
  +    /**
  +     * Get controller instance.
  +     * @return controller instance.
  +     */
  +  public Controller getControllerInstance()
  +    {
  +    return controllerInstance;
  +    }
  +
  +    /**
  +     * Get or create controller.
  +     * Get controller, create it if necessary.
  +     * @return controller if controller or controllerType is set, null otherwise.
  +     * @throw InstantiationException if an error occur while instanciating 
Controller :
  +     * (classname can't be instanciated, Illegal access with instanciated class,
  +     * Error while instanciating class, classname can't be instanciated.
  +     */
  +  public Controller getOrCreateController()
  +    throws InstantiationException
  +    {
  +    if( controllerInstance != null )
  +      return controllerInstance;
  +
  +      // Do we define a controller ?
  +    if( controller == null && controllerType == null )
  +      return null;
  +
  +      // check parameters
  +    if( controllerType != null && controller == null )
  +      throw new InstantiationException( "Controller name should be defined if 
controllerType is set" );
  +
  +    controllerInstance = createController( controller, controllerType );
  +
  +    return controllerInstance;
  +    }
  +
  +    /**
  +     * Set controller.
  +     */
  +  public void setControllerInstance(Controller controller)
  +    {
  +    this.controllerInstance = controller;
  +     }
  +
  +   /**
  +    * Create a new instance of controller named in parameter.
  +    * If controllerType is specified, create controller accordingly.
  +    * Otherwise, if name denote a classname, create an instance of it. If class is
  +    *  subclass of org.apache.struts.action.Action, wrap controller
  +    * appropriately.
  +    * Otherwise, consider name as an url.
  +    * @param name Controller name (classname, url, ...)
  +    * @param controllerType Expected Controller type
  +    * @return org.apache.struts.tiles.Controller
  +    * @throw InstantiationException if an error occur while instanciating 
Controller :
  +    * (classname can't be instanciated, Illegal access with instanciated class,
  +    * Error while instanciating class, classname can't be instanciated.
  +    */
  +   static public Controller createController(String name, String controllerType)
  +       throws InstantiationException
  +   {
  +   if(debug)
  +     System.out.println( "Create controller name="+ name+", type=" + controllerType 
);
  +   Controller controller = null;
  +
  +   if( controllerType == null )
  +     { // first try as a classname
  +     try {
  +       return createControllerFromClassname(name);
  +       }
  +      catch( InstantiationException ex )
  +       { // ok, try something else
  +       controller = new UrlController( name );
  +       }
  +     }
  +    else if( "url".equalsIgnoreCase( controllerType ) )
  +     controller = new UrlController( name );
  +    else if( "classname".equalsIgnoreCase( controllerType ) )
  +     controller = createControllerFromClassname( name );
  +
  +   return controller;
  +   }
  +
  +
  +     /**
  +      * Create a controller from specified classname
  +      * @param classname Controller classname.
  +      * @param controllerType Expected Controller type
  +      * @return org.apache.struts.tiles.Controller
  +      * @throw InstantiationException if an error occur while instanciating 
Controller :
  +      * (classname can't be instanciated, Illegal access with instanciated class,
  +      * Error while instanciating class, classname can't be instanciated.
  +      */
  +   static public Controller createControllerFromClassname(String classname)
  +       throws InstantiationException
  +   {
  +    try
  +     {
  +     Class requestedClass = Class.forName(classname);
  +     Object instance = requestedClass.newInstance();
  +     /*
  +     if( instance instanceof org.apache.struts.action.Action )
  +       { // wrap strutsinstance
  +       instance = new ActionController( (Action)instance );
  +       } // end if
  +     */
  +     if(debug)
  +       System.out.println( "Controller created : " + instance );
  +     return (Controller)instance;
  +     }
  +    catch( java.lang.ClassNotFoundException ex)
  +     {
  +     throw new InstantiationException( "Error - Class not found :" + 
ex.getMessage() );
  +     }
  +    catch( java.lang.IllegalAccessException ex)
  +     {
  +     throw new InstantiationException( "Error - Illegal class access :" + 
ex.getMessage() );
  +     }
  +    catch( java.lang.InstantiationException ex)
  +     {
  +     throw ex;
  +     }
  +    catch( java.lang.ClassCastException ex)
  +     {
  +     throw new InstantiationException( "Controller of class '" + classname
  +                       + "' should implements 'Controller' or extends 'Action'" );
  +     }
  +   }
  +
   
   }
  
  
  
  1.3       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentDefinitionsFactory.java
  
  Index: ComponentDefinitionsFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentDefinitionsFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ComponentDefinitionsFactory.java  2001/09/10 13:01:30     1.2
  +++ ComponentDefinitionsFactory.java  2001/12/27 17:35:37     1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentDefinitionsFactory.java,v
 1.2 2001/09/10 13:01:30 cedric Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/09/10 13:01:30 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentDefinitionsFactory.java,v
 1.3 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionAttribute.java
  
  Index: DefinitionAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionAttribute.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefinitionAttribute.java  2001/08/01 14:36:42     1.1
  +++ DefinitionAttribute.java  2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionAttribute.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionAttribute.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionNameAttribute.java
  
  Index: DefinitionNameAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionNameAttribute.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefinitionNameAttribute.java      2001/08/01 14:36:42     1.1
  +++ DefinitionNameAttribute.java      2001/12/27 17:35:37     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionNameAttribute.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionNameAttribute.java,v
 1.2 2001/12/27 17:35:37 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:37 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +1 -1      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsFactoryException.java
  
  Index: DefinitionsFactoryException.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsFactoryException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefinitionsFactoryException.java  2001/08/01 14:36:42     1.1
  +++ DefinitionsFactoryException.java  2001/12/27 17:35:38     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsFactoryException.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsFactoryException.java,v
 1.2 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  @@ -12,7 +12,7 @@
      * Exception throw when an error occur while factory try to
      * create a new instance mapper.
      */
  -public class DefinitionsFactoryException extends Exception
  +public class DefinitionsFactoryException extends TilesException
   {
       /**
        * Constructor.
  
  
  
  1.3       +13 -104   
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsUtil.java
  
  Index: DefinitionsUtil.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsUtil.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefinitionsUtil.java      2001/09/10 12:51:31     1.2
  +++ DefinitionsUtil.java      2001/12/27 17:35:38     1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsUtil.java,v
 1.2 2001/09/10 12:51:31 cedric Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/09/10 12:51:31 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsUtil.java,v
 1.3 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  @@ -22,7 +22,7 @@
   import java.io.FileNotFoundException;
   import java.io.IOException;
   
  -//import org.apache.struts.tiles.xmlDefinition.XmlConfigInstancesFactory;
  +import org.apache.struts.tiles.definition.ReloadableDefinitionsFactory;
   import org.apache.struts.tiles.xmlDefinition.I18nFactorySet;
   import org.apache.struts.taglib.tiles.ComponentConstants;
   
  @@ -109,41 +109,13 @@
      * @param properties Map of name/property passed to newly created factory.
      * @return newly created factory.
      * @throw DefinitionsFactoryException If an error occur while initializing factory
  +   * @deprecated Use createDefinitionsFactory(ServletContext servletContext, Map 
properties)
      */
     public static ComponentDefinitionsFactory createDefinitionsFactory(ServletContext 
servletContext, Map properties, String classname)
       throws DefinitionsFactoryException
     {
  -  if( classname == null )
  -    return createDefinitionsFactory( servletContext, properties );
  -
  -    // Try to create from classname
  -  try
  -    {
  -    Class factoryClass = Class.forName(classname);
  -    ComponentDefinitionsFactory factory = 
(ComponentDefinitionsFactory)factoryClass.newInstance();
  -    factory.initFactory( servletContext, properties);
  -    DefinitionsUtil.setDefinitionsFactory(factory, servletContext  );
  -    return factory;
  -    }
  -   catch( ClassCastException ex )
  -    { // Bad classname
  -    throw new DefinitionsFactoryException( "Error - createDefinitionsFactory : 
Factory class '"
  -                                           + classname +" must implements 
'ComponentDefinitionsFactory'.", ex );
  -    }
  -   catch( ClassNotFoundException ex )
  -    { // Bad classname
  -    throw new DefinitionsFactoryException( "Error - createDefinitionsFactory : Bad 
class name '"
  -                                           + classname +"'.", ex );
  -    }
  -   catch( InstantiationException ex )
  -    { // Bad constructor or error
  -    throw new DefinitionsFactoryException( ex );
  -    }
  -   catch( IllegalAccessException ex )
  -    { //
  -    throw new DefinitionsFactoryException( ex );
  -    }
  -
  +  properties.put( ReloadableDefinitionsFactory.DEFINITIONS_FACTORY_CLASSNAME, 
classname );
  +  return createDefinitionsFactory(servletContext, properties);
     }
   
      /**
  @@ -157,9 +129,9 @@
     public static ComponentDefinitionsFactory createDefinitionsFactory(ServletContext 
servletContext, Map properties)
       throws DefinitionsFactoryException
     {
  -    ComponentDefinitionsFactory factory = new I18nFactorySet(servletContext, 
properties); ;
  -    DefinitionsUtil.setDefinitionsFactory(factory, servletContext  );
  -    return factory;
  +  ComponentDefinitionsFactory factory = new 
ReloadableDefinitionsFactory(servletContext, properties); ;
  +  DefinitionsUtil.setDefinitionsFactory(factory, servletContext  );
  +  return factory;
     }
   
      /**
  @@ -173,47 +145,18 @@
     public static ComponentDefinitionsFactory createDefinitionsFactory(ServletContext 
servletContext, ServletConfig servletConfig)
       throws DefinitionsFactoryException
     {
  -    initUserDebugLevel( servletConfig );
  -    String classname = 
servletConfig.getInitParameter(DEFINITIONS_FACTORY_CLASSNAME);
  -    Map properties = new ServletPropertiesMap( servletConfig );
  -
  -    return createDefinitionsFactory( servletContext, properties, classname);
  +  initUserDebugLevel(servletConfig);
  +  ComponentDefinitionsFactory factory = new 
ReloadableDefinitionsFactory(servletContext, servletConfig); ;
  +  DefinitionsUtil.setDefinitionsFactory(factory, servletContext  );
  +  return factory;
     }
   
  -   /**
  -   * Create Definition factory.
  -   * @deprecated Use createDefinitionFactory instead.
  -   */
  -  public static ComponentDefinitionsFactory initDefinitionsFactory(ServletContext 
servletContext, ServletConfig servletConfig)
  -    throws DefinitionsFactoryException
  -  {
  -  return createDefinitionsFactory( servletContext, servletConfig);
  -  }
  -
  -   /**
  -   * Create Definition factory.
  -   * @param definitionName Name of definition to include.
  -   * @param pageContext Current page context.
  -   */
  -/*  public static void includeDefinition(String definitionName, PageContext 
pageContext)
  -    throws DefinitionsFactoryException
  -  {
  -    // Search definition
  -  ComponentDefinition definition = getDefinition( definitionName, pageContext);
  -
  -  ComponentContext context = new ComponentContext(definition);
  -  pageContext.getRequest().setAttribute( ComponentConstants.COMPONENT_CONTEXT, 
context);
  -
  -  pageContext.include( definition.getPath() );
  -  }
  -*/
  -
     /**
      * Set definition factory in appropriate servlet context.
      * @param factory Factory to store.
      * @param servletContext Servlet context that will hold factory.
      */
  -  static public void setDefinitionsFactory(ComponentDefinitionsFactory factory, 
ServletContext servletContext)
  +  static protected void setDefinitionsFactory(ComponentDefinitionsFactory factory, 
ServletContext servletContext)
     {
     servletContext.setAttribute(DEFINITIONS_FACTORY, factory);
     }
  @@ -224,7 +167,7 @@
      * @param factory Factory to store.
      * @param pageContext Page context containing servlet context.
      */
  -  static public void setDefinitionsFactory(ComponentDefinitionsFactory factory, 
PageContext pageContext)
  +  static protected void setDefinitionsFactory(ComponentDefinitionsFactory factory, 
PageContext pageContext)
     {
     setDefinitionsFactory( factory, pageContext.getServletContext() );
     }
  @@ -293,17 +236,6 @@
     }
   
     /**
  -   * Get ComponentContext defined for current Tile.
  -   * @return ComponentContext ComponentContext or null.
  -   *
  -   */
  - static  public ComponentContext getComponentContextOld(ServletRequest request)
  -  {
  -  return ComponentContext.getContext(request);
  -  }
  -
  -
  -  /**
      * Get Definition stored in jsp context by an action.
      * @return ComponentDefinition or null if not found.
      */
  @@ -331,26 +263,3 @@
     }
   }
   
  -  /**
  -   * Inner class.
  -   * Wrapper for ServletContext init parameters.
  -   * Object of this class is an hashmap containing parameters and values
  -   * defined in the servlet config file (web.xml).
  -   */
  - class ServletPropertiesMap extends HashMap {
  -    /**
  -     * Constructor.
  -     */
  -  ServletPropertiesMap( ServletConfig config )
  -    {
  -      // This implementation is very simple.
  -      // It is possible to avoid creation of a new structure, but this need
  -      // imply writing all Map interface.
  -    Enumeration enum = config.getInitParameterNames();
  -    while( enum.hasMoreElements() )
  -      {
  -      String key = (String)enum.nextElement();
  -      put( key, config.getInitParameter( key ) );
  -      }
  -    }
  -}  // end inner class
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DirectStringAttribute.java
  
  Index: DirectStringAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DirectStringAttribute.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DirectStringAttribute.java        2001/08/01 14:36:42     1.1
  +++ DirectStringAttribute.java        2001/12/27 17:35:38     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DirectStringAttribute.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DirectStringAttribute.java,v
 1.2 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/FactoryNotFoundException.java
  
  Index: FactoryNotFoundException.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/FactoryNotFoundException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FactoryNotFoundException.java     2001/08/01 14:36:42     1.1
  +++ FactoryNotFoundException.java     2001/12/27 17:35:38     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/FactoryNotFoundException.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/FactoryNotFoundException.java,v
 1.2 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/NoSuchDefinitionException.java
  
  Index: NoSuchDefinitionException.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/NoSuchDefinitionException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NoSuchDefinitionException.java    2001/08/01 14:36:42     1.1
  +++ NoSuchDefinitionException.java    2001/12/27 17:35:38     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/NoSuchDefinitionException.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/NoSuchDefinitionException.java,v
 1.2 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/PathAttribute.java
  
  Index: PathAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/PathAttribute.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PathAttribute.java        2001/08/01 14:36:42     1.1
  +++ PathAttribute.java        2001/12/27 17:35:38     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/PathAttribute.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/PathAttribute.java,v
 1.2 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/UntyppedAttribute.java
  
  Index: UntyppedAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/UntyppedAttribute.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UntyppedAttribute.java    2001/08/01 14:36:42     1.1
  +++ UntyppedAttribute.java    2001/12/27 17:35:38     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/UntyppedAttribute.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/UntyppedAttribute.java,v
 1.2 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  
  
  
  1.3       +37 -5     
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/resources/tiles-config.dtd
  
  Index: tiles-config.dtd
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/resources/tiles-config.dtd,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- tiles-config.dtd  2001/10/29 17:32:24     1.2
  +++ tiles-config.dtd  2001/12/27 17:35:38     1.3
  @@ -1,15 +1,28 @@
  -<?xml version="1.0" encoding="UTF-8"?>
  -<!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com) by  () -->
  -<!--DTD generated by XML Spy v3.5 NT (http://www.xmlspy.com)-->
  +<?xml version="1.0" encoding="ISO-8859-1"?>
  +<!--
  +     DTD for the Tile Definition File, Version 1.0
  +
  +     To support validation of your configuration file, include the following
  +     DOCTYPE element at the beginning (after the "xml" declaration):
  +
  +     <!DOCTYPE tiles-definitions PUBLIC
  +       "-//Apache Software Foundation//DTD Tiles Configuration//EN"
  +       "http://jakarta.apache.org/struts/dtds/tiles-config.dtd";>
  +
  +     $Id: tiles-config.dtd,v 1.3 2001/12/27 17:35:38 cedric Exp $
  +-->
   <!ELEMENT component-definitions (definition+)>
   <!ELEMENT tiles-definitions (definition+)>
   <!ELEMENT definition (put*, putList*)>
   <!ATTLIST definition
        name CDATA #REQUIRED
  +     page CDATA #IMPLIED
        path CDATA #IMPLIED
        extends CDATA #IMPLIED
        role CDATA #IMPLIED
        template CDATA #IMPLIED
  +     controllerClass CDATA #IMPLIED
  +     controllerUrl CDATA #IMPLIED
   >
   <!ELEMENT put (#PCDATA)>
   <!ATTLIST put
  @@ -19,11 +32,30 @@
        content CDATA #IMPLIED
        direct (true | false) #IMPLIED
   >
  -<!ELEMENT putList (add+)>
  +<!ELEMENT putList ( (add* | item* | bean*)+) >
   <!ATTLIST putList
        name CDATA #REQUIRED
   >
  -<!ELEMENT add EMPTY>
  +<!ELEMENT putListElements (add | item | bean)>
  +
  +<!ELEMENT add (#PCDATA)>
   <!ATTLIST add
  +     value CDATA #IMPLIED
  +     type (string | page | template | definition) #IMPLIED
  +     content CDATA #IMPLIED
  +     direct (true | false) #IMPLIED
  +>
  +
  +<!ELEMENT bean (#PCDATA)>
  +<!ATTLIST bean
  +     classtype CDATA #REQUIRED
  +>
  +
  +<!ELEMENT item (#PCDATA)>
  +<!ATTLIST item
        value CDATA #REQUIRED
  +     link CDATA #REQUIRED
  +     classtype CDATA #IMPLIED
  +     icon CDATA #IMPLIED
  +     tooltip CDATA #IMPLIED
   >
  
  
  
  1.3       +3 -1      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/DefinitionsFactory.java
  
  Index: DefinitionsFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/DefinitionsFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefinitionsFactory.java   2001/09/28 17:05:22     1.2
  +++ DefinitionsFactory.java   2001/12/27 17:35:38     1.3
  @@ -53,6 +53,8 @@
       * Constructor.
       * Create a factory initialized with definitions from XmlDefinitionsSet.
       * @param xmlDefinitions resolved definition from XmlDefinitionSet.
  +    * @throws DefinitionsFactoryException If an error occurs while creating a 
definition.
  +    * @throws NoSuchDefinitionException If an error occurs while resolving 
inheritance
       */
      public DefinitionsFactory(XmlDefinitionsSet xmlDefinitions)
       throws NoSuchDefinitionException
  @@ -67,7 +69,7 @@
       while( i.hasNext() )
         {
         XmlDefinition xmlDefinition = (XmlDefinition)i.next();
  -      putDefinition( new ComponentDefinition( xmlDefinition) );
  +        putDefinition( new ComponentDefinition( xmlDefinition) );
         }  // end loop
      }
       /**
  
  
  
  1.3       +4 -3      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/I18nFactorySet.java
  
  Index: I18nFactorySet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/I18nFactorySet.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- I18nFactorySet.java       2001/09/28 17:05:22     1.2
  +++ I18nFactorySet.java       2001/12/27 17:35:38     1.3
  @@ -46,7 +46,7 @@
     public static final String INSTANCES_CONFIG_PARAMETER_NAME = "instances-config";
   
       /** Default name */
  -  public static final String DEFAULT_DEFINITIONS_FILE_NAME = 
"/WEB-INF/componentDefinitions.xml";
  +  //public static final String DEFAULT_DEFINITIONS_FILE_NAME = 
"/WEB-INF/componentDefinitions.xml";
       /** Config file parameter name */
     public static final String DEFINITIONS_CONFIG_PARAMETER_NAME = 
"definitions-config";
       /** Config file parameter name */
  @@ -231,10 +231,11 @@
       XmlDefinitionsSet rootXmlConfig = parseXmlFiles( servletContext, "", null );
       if( rootXmlConfig == null )
         throw new FileNotFoundException();
  -    if(debug)
  -      System.out.println( rootXmlConfig );
   
       rootXmlConfig.resolveInheritances();
  +
  +    if(debug)
  +      System.out.println( rootXmlConfig );
   
       DefinitionsFactory factory = new DefinitionsFactory( rootXmlConfig );
       if( DefinitionsUtil.userDebugLevel > DefinitionsUtil.NO_DEBUG )
  
  
  
  1.5       +0 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlAttribute.java
  
  Index: XmlAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlAttribute.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XmlAttribute.java 2001/11/02 16:50:04     1.4
  +++ XmlAttribute.java 2001/12/27 17:35:38     1.5
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlAttribute.java,v
 1.4 2001/11/02 16:50:04 cedric Exp $
  - * $Revision: 1.4 $
  - * $Date: 2001/11/02 16:50:04 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlAttribute.java,v
 1.5 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.5 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  
  
  
  1.4       +5 -5      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlDefinition.java
  
  Index: XmlDefinition.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlDefinition.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XmlDefinition.java        2001/10/08 13:36:36     1.3
  +++ XmlDefinition.java        2001/12/27 17:35:38     1.4
  @@ -1,4 +1,3 @@
  -//Source file: 
D:\\tmp\\generated\\s1\\struts\\component\\xmlDefinition\\XmlDefinition.java
   
   package org.apache.struts.tiles.xmlDefinition;
   
  @@ -8,16 +7,17 @@
   import java.util.Iterator;
   
   /**
  -A definition red from an XML definitions file.
  -*/
  +  *A definition red from an XML definitions file.
  +  */
   public class XmlDefinition extends ComponentDefinition
   {
  -    /** Debug flag */
  -  static public final boolean debug = false;
     /**
      * Extends attribute value.
      */
     private String inherit;
  +
  +    /** Debug flag */
  +  static public final boolean debug = false;
   
     /**
      * Use for resolving inheritance.
  
  
  
  1.2       +8 -0      
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlListAttribute.java
  
  Index: XmlListAttribute.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlListAttribute.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XmlListAttribute.java     2001/08/01 14:36:42     1.1
  +++ XmlListAttribute.java     2001/12/27 17:35:38     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlListAttribute.java,v
 1.1 2001/08/01 14:36:42 cedric Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/08/01 14:36:42 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlListAttribute.java,v
 1.2 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/12/27 17:35:38 $
    * $Author: cedric $
    *
    */
  @@ -59,6 +59,14 @@
        * Add an element in list.
        */
     public void add( Object value )
  +    {
  +    list.add( value );
  +    }
  +
  +    /**
  +     * Add an element in list.
  +     */
  +  public void addObject( Object value )
       {
       list.add( value );
       }
  
  
  
  1.4       +12 -2     
jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlParser.java
  
  Index: XmlParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/xmlDefinition/XmlParser.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XmlParser.java    2001/10/29 17:32:24     1.3
  +++ XmlParser.java    2001/12/27 17:35:38     1.4
  @@ -178,6 +178,15 @@
        digester.addSetNext(       ADD_LIST_ELE_TAG, "add", putAttributeHandlerClass);
        digester.addSetProperties( ADD_LIST_ELE_TAG);
        digester.addCallMethod(    ADD_LIST_ELE_TAG, "setBody", 0);
  +    // list elements rules
  +    // We use Attribute class to avoid rewriting a new class.
  +    // Name part can't be used in listElement attribute.
  +  //String ADD_WILDCARD = LIST_TAG + "/addItem";
  +  // non String ADD_WILDCARD = LIST_TAG + "/addx*";
  +  String ADD_WILDCARD = "*/item";
  +     digester.addObjectCreate(  ADD_WILDCARD, putAttributeHandlerClass, 
"classtype");
  +     digester.addSetNext(       ADD_WILDCARD, "add", "java.lang.Object");
  +     digester.addSetProperties( ADD_WILDCARD);
     }
   
      /**
  @@ -268,7 +277,8 @@
        */
     public static void main(String[] args)
     {
  -  String filename = 
"E:/programs/jakarta-tomcat/webapps/wtiles-struts/WEB-INF/tilesDefinitions.xml";
  +  String filename = 
"E:/programs/jakarta-tomcat/webapps/wtiles-struts/WEB-INF/tiles-examples-defs.xml";
  +  //String filename = 
"E:/programs/jakarta-tomcat/webapps/wtiles-struts/WEB-INF/tilesDefinitions.xml";
     //String filename = 
"E:/programs/jakarta-tomcat/webapps/wtiles-channel/WEB-INF/componentDefinitions.xml";
     //String filename2 = 
"E:/programs/jakarta-tomcat/webapps/wtiles-tutorial/WEB-INF/componentDefinitions.xml";
   
  @@ -299,7 +309,7 @@
         {
            XmlParser parser = new XmlParser();
         parser.setValidating(true);
  -      parser.setDetailLevel(2);
  +      parser.setDetailLevel(0);
         XmlDefinitionsSet definitions = new XmlDefinitionsSet();
           System.out.println( "  Parse file" );
         parser.parse( input, definitions);
  
  
  
  1.2       +6 -11     
jakarta-struts/contrib/tiles/src/tutorial/org/apache/struts/example/tiles/InitServlet.java
  
  Index: InitServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/tutorial/org/apache/struts/example/tiles/InitServlet.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InitServlet.java  2001/08/01 14:36:42     1.1
  +++ InitServlet.java  2001/12/27 17:35:38     1.2
  @@ -2,29 +2,23 @@
   
   import org.apache.struts.tiles.DefinitionsUtil;
   import org.apache.struts.tiles.DefinitionsFactoryException;
  -import org.apache.struts.taglib.tiles.ComponentConstants;
   
   import javax.servlet.ServletException;
   import javax.servlet.ServletContext;
   import javax.servlet.http.HttpServlet;
   
  -import java.util.Enumeration;
   
   /**
  - * <strong>InitServlet</strong> initializes webshop application.
  - *
  + * Example of servlet initializing Tiles.
  + * This servlet can be declared in web.xml, as well as all initialization
  + * parameters available with the specified factory.
  + * This servlet is intended to be used in application using Tiles without Struts.
    * @author Cedric Dumoulin
    */
   
   public class InitServlet extends HttpServlet
   {
   
  -  public static final String DEFAULT_INSTANCES_FILE_NAME = 
"/WEB-INF/templateInstances.xml";
  -
  -  public InitServlet()
  -    {
  -    }
  -
       /**
        * Initialize this servlet
        *
  @@ -34,11 +28,12 @@
       {
         log(  "Start initialization");
         System.out.println( "Start initialization" );
  +    super.init();
   
          // init component instances
       try
         {
  -      DefinitionsUtil.initDefinitionsFactory(  getServletContext(), 
getServletConfig() );
  +      DefinitionsUtil.createDefinitionsFactory(  getServletContext(), 
getServletConfig() );
         log(  "initialized");
         }
        catch( DefinitionsFactoryException ex )
  
  
  
  1.2       +0 -0      
jakarta-struts/contrib/tiles/src/tutorial/org/apache/struts/example/tiles/invoice/EditInvoiceAction.java
  
  Index: EditInvoiceAction.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/tutorial/org/apache/struts/example/tiles/invoice/EditInvoiceAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- EditInvoiceAction.java    2001/08/01 14:36:43     1.1
  +++ EditInvoiceAction.java    2001/12/27 17:35:38     1.2
  @@ -28,7 +28,7 @@
    * <code>SubscriptionForm</code> from the currently specified subscription.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2001/08/01 14:36:43 $
  + * @version $Revision: 1.2 $ $Date: 2001/12/27 17:35:38 $
    */
   
   public final class EditInvoiceAction extends Action {
  
  
  
  1.3       +0 -0      
jakarta-struts/contrib/tiles/src/tutorial/org/apache/struts/example/tiles/rssChannel/Channels.java
  
  Index: Channels.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/contrib/tiles/src/tutorial/org/apache/struts/example/tiles/rssChannel/Channels.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Channels.java     2001/11/02 16:50:05     1.2
  +++ Channels.java     2001/12/27 17:35:38     1.3
  @@ -31,7 +31,7 @@
    * @expects path={uri} on command line or as parameter property to ActionMapping.
    * @expects an input page or error forwarding if exception digesting RSS
    * @author Ted Husted
  - * @version $Revision: 1.2 $ $Date: 2001/11/02 16:50:05 $
  + * @version $Revision: 1.3 $ $Date: 2001/12/27 17:35:38 $
    */
   public final class Channels extends Action {
   
  @@ -153,9 +153,9 @@
   
   
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/tutorial/org/apache/struts/example/tiles/rssChannel/Channels.java,v
 1.2 2001/11/02 16:50:05 cedric Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/11/02 16:50:05 $
  + * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/tutorial/org/apache/struts/example/tiles/rssChannel/Channels.java,v
 1.3 2001/12/27 17:35:38 cedric Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/12/27 17:35:38 $
    *
    * ====================================================================
    *
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to