cedric      01/09/10 05:51:31

  Modified:    contrib/tiles/src/share/org/apache/struts/tiles
                        DefinitionsUtil.java
  Log:
  Add convenience methods to allow Tile context access from a Struts action.
  
  Revision  Changes    Path
  1.2       +86 -13    
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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefinitionsUtil.java      2001/08/01 14:36:42     1.1
  +++ DefinitionsUtil.java      2001/09/10 12:51:31     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/DefinitionsUtil.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/DefinitionsUtil.java,v
 1.2 2001/09/10 12:51:31 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/09/10 12:51:31 $
    * $Author: cedric $
    *
    */
  @@ -14,6 +14,7 @@
   import javax.servlet.ServletContext;
   import javax.servlet.ServletException;
   import javax.servlet.http.HttpServletRequest;
  +import javax.servlet.ServletRequest;
   
   import java.util.Map;
   import java.util.HashMap;
  @@ -49,6 +50,9 @@
     public static final String DEFINITIONS_FACTORY_CLASSNAME = 
"definitions-factory-class";
       /** Constant name used to store factory in context */
     public static final String DEFINITIONS_FACTORY = 
"org.apache.struts.tiles.DEFINITIONS_FACTORY";
  +    /** Constant name used to store definition in jsp context.
  +     *  Used to pass definition from a Struts action to servlet forward */
  +  public static final String ACTION_DEFINITION = 
"org.apache.struts.tiles.ACTION_DEFINITION";
   
   
       /**
  @@ -226,21 +230,24 @@
     }
   
     /**
  -   * Get a component / template definition by its name.
  -   * First, retrieve instance factory, and then get requested instance.
  -   * Throw appropriate exception if definition is not found.
  +   * Get a definition by its name.
  +   * First, retrieve definition factory, and then get requested definition.
  +   * Throw appropriate exception if definition or definition factory is not found.
  +   * @param name Name of requested definition.
  +   * @param request Current servelet request
  +   * @param servletContext current servlet context
      * @throw FactoryNotFoundException Can't find definition factory.
  -   * @throw ComponentDefinitionsFactoryException General error in factory while 
getting definition.
  +   * @throw DefinitionsFactoryException General error in factory while getting 
definition.
      * @throws NoSuchDefinitionException No definition found for specified name
      */
  -  static public ComponentDefinition getDefinition(String definitionName, 
PageContext pageContext)
  +  static public ComponentDefinition getDefinition(String definitionName, 
ServletRequest request, ServletContext servletContext)
       throws FactoryNotFoundException, DefinitionsFactoryException
     {
     try
       {
  -    return getDefinitionsFactory( pageContext).getDefinition(definitionName,
  -                                                       
(HttpServletRequest)pageContext.getRequest(),
  -                                                        
pageContext.getServletContext());
  +    return getDefinitionsFactory(servletContext).getDefinition(definitionName,
  +                                                       (HttpServletRequest)request,
  +                                                        servletContext);
       }
      catch( NullPointerException ex )
       {  // Factory not found in context
  @@ -249,12 +256,78 @@
     }
   
     /**
  +   * Get a component / template definition by its name.
  +   * First, retrieve instance factory, and then get requested instance.
  +   * Throw appropriate exception if definition is not found.
  +   * @param name Name of requested definition.
  +   * @param request Current servelet request
  +   * @param servletContext current servlet context
  +   * @throw FactoryNotFoundException Can't find definition factory.
  +   * @throw DefinitionsFactoryException General error in factory while getting 
definition.
  +   * @throws NoSuchDefinitionException No definition found for specified name
  +   */
  +  static public ComponentDefinition getDefinition(String definitionName, 
PageContext pageContext)
  +    throws FactoryNotFoundException, DefinitionsFactoryException
  +  {
  +  return getDefinition( definitionName,
  +                        (HttpServletRequest)pageContext.getRequest(),
  +                        pageContext.getServletContext());
  +  }
  +
  +  /**
  +   * Get instances factory from appropriate servlet context.
  +   * @return Definitions factory or null if not found.
  +   */
  + static  public ComponentDefinitionsFactory getDefinitionsFactory(ServletContext 
servletContext)
  +  {
  +  return 
(ComponentDefinitionsFactory)servletContext.getAttribute(DEFINITIONS_FACTORY);
  +  }
  +
  +  /**
      * Get instances factory from appropriate servlet context.
  -   * @return Instances factory or null if not found.
  +   * @return Definitions factory or null if not found.
      */
    static  public ComponentDefinitionsFactory getDefinitionsFactory(PageContext 
pageContext)
  +  {
  +  return getDefinitionsFactory( pageContext.getServletContext());
  +  }
  +
  +  /**
  +   * 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.
  +   */
  + static  public ComponentDefinition getActionDefinition(ServletRequest request)
  +  {
  +  return (ComponentDefinition)request.getAttribute(ACTION_DEFINITION);
  +  }
  +
  +  /**
  +   * Store definition in jsp context.
  +   * Mainly used by Struts to pass a definition defined in an Action to the forward.
  +   */
  + static  public void setActionDefinition(ServletRequest request, 
ComponentDefinition definition)
  +  {
  +  request.setAttribute(ACTION_DEFINITION, definition);
  +  }
  +
  +  /**
  +   * Remove Definition stored in jsp context.
  +   * Mainly used by Struts to pass a definition defined in an Action to the forward.
  +   */
  + static  public void removeActionDefinition(ServletRequest request, 
ComponentDefinition definition)
     {
  -  return 
(ComponentDefinitionsFactory)pageContext.getServletContext().getAttribute(DEFINITIONS_FACTORY);
  +  request.removeAttribute(ACTION_DEFINITION);
     }
   }
   
  
  
  

Reply via email to