cedric      01/09/10 05:52:11

  Modified:    contrib/tiles/src/share/org/apache/struts/tiles
                        ComponentContext.java
  Log:
  Add convenience methods to allow Tile context access from a Struts action.
  
  Revision  Changes    Path
  1.2       +61 -8     
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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ComponentContext.java     2001/08/01 14:36:42     1.1
  +++ ComponentContext.java     2001/09/10 12:52:11     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/contrib/tiles/src/share/org/apache/struts/tiles/ComponentContext.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/ComponentContext.java,v
 1.2 2001/09/10 12:52:11 cedric Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/09/10 12:52:11 $
    * $Author: cedric $
    *
    */
  @@ -12,6 +12,7 @@
   import java.util.Map;
   import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.Set;
   
   import javax.servlet.ServletRequest;
   import javax.servlet.jsp.PageContext;
  @@ -22,7 +23,7 @@
    */
   public class ComponentContext
   {
  -  
  +
     /**
      * Component attributes.
      */
  @@ -68,10 +69,55 @@
       }
   
     /**
  +   * Add all attributes to this context.
  +   * Copies all of the mappings from the specified attribute map to this context.
  +   * New attribute mappings will replace any mappings that this context had for any 
of the keys
  +   * currently in the specified attribute map.
  +   * @param attributes to add.
  +   */
  +  public void addAll(Map newAttributes)
  +  {
  +  if( attributes == null )
  +    {
  +    attributes = new HashMap(newAttributes);
  +    return;
  +    }
  +  attributes.putAll( newAttributes );
  +  }
  +
  +  /**
  +   * Add all missing attributes to this context.
  +   * Copies all of the mappings from the specified attributes map to this context.
  +   * New attribute mappings will be added only if they don't already exist in
  +   * this context.
  +   * @param attributes to add.
  +   */
  +  public void addMissing(Map defaultAttributes)
  +  {
  +  if( defaultAttributes == null )
  +    return;
  +  if( attributes == null )
  +    {
  +    attributes = new HashMap(defaultAttributes);
  +    return;
  +    }
  +
  +  Set entries = defaultAttributes.entrySet();
  +  Iterator iterator = entries.iterator();
  +  while( iterator.hasNext() )
  +    {
  +    Map.Entry entry = (Map.Entry)iterator.next();
  +    if( !attributes.containsKey( entry.getKey()) )
  +      {
  +      attributes.put(entry.getKey(), entry.getValue());
  +      } // end if
  +    } // end loop
  +  }
  +
  +  /**
      * Get an attribute from context
      * @param name
      * @return <{Object}>
  -   * @roseuid 39AEBEC90228
      */
     public Object getAttribute(String name)
     {
  @@ -79,12 +125,11 @@
       return null;
     return attributes.get( name );
     }
  -  
  +
     /**
      * Get names of all attributes
      * @param name
      * @return <{Object}>
  -   * @roseuid 39AEBEC90228
      */
     public Iterator getAttributeNames()
     {
  @@ -92,7 +137,7 @@
       return EMPTY_ITERATOR;
     return attributes.keySet().iterator();
     }
  -  
  +
     /**
      * Put a new attribute to context.
      * @param name
  @@ -168,6 +213,14 @@
     static public ComponentContext getContext( ServletRequest request )
       {
       return 
(ComponentContext)request.getAttribute(ComponentConstants.COMPONENT_CONTEXT);
  +    }
  +
  +    /**
  +     * Store component context into request.
  +     */
  +  static public void setContext( ComponentContext context, ServletRequest request )
  +    {
  +    request.setAttribute(ComponentConstants.COMPONENT_CONTEXT, context);
       }
    }
   
  
  
  

Reply via email to