Author: apetrelli
Date: Wed Feb 13 12:11:14 2008
New Revision: 627577

URL: http://svn.apache.org/viewvc?rev=627577&view=rev
Log:
TILES-208
Added support of cascaded attributes in JSP tags.

Modified:
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
    
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutAttributeTag.java
    
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/RenderTagSupport.java
    
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java

Modified: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java?rev=627577&r1=627576&r2=627577&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
 Wed Feb 13 12:11:14 2008
@@ -144,7 +144,6 @@
             assertNotNull("Couldn't Find items2 cascaded attribute.", 
attribute);
         } catch (Exception e) {
             fail("Exception reading configuration." + e);
-            e.printStackTrace();
         }
     }
 

Modified: 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutAttributeTag.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutAttributeTag.java?rev=627577&r1=627576&r2=627577&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutAttributeTag.java
 (original)
+++ 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutAttributeTag.java
 Wed Feb 13 12:11:14 2008
@@ -89,6 +89,11 @@
      */
     private String type = null;
 
+    /**
+     * If <code>true</code>, the attribute will be cascaded to all nested
+     * definitions.
+     */
+    private boolean cascade = false;
 
     /**
      * Returns  the name of the attribute.
@@ -171,6 +176,27 @@
     }
 
     /**
+     * Checks if the attribute should be cascaded to nested definitions.
+     *
+     * @return <code>true</code> if the attribute will be cascaded.
+     * @since 2.1.0
+     */
+    public boolean isCascade() {
+        return cascade;
+    }
+
+    /**
+     * Sets the property that tells if the attribute should be cascaded to
+     * nested definitions.
+     *
+     * @param cascade <code>true</code> if the attribute will be cascaded.
+     * @since 2.1.0
+     */
+    public void setCascade(boolean cascade) {
+        this.cascade = cascade;
+    }
+
+    /**
      * Release all allocated resources.
      */
     public void release() {
@@ -178,6 +204,7 @@
         name = null;
         value = null;
         type = null;
+        cascade = false;
     }
 
     /**

Modified: 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/RenderTagSupport.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/RenderTagSupport.java?rev=627577&r1=627576&r2=627577&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/RenderTagSupport.java
 (original)
+++ 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/RenderTagSupport.java
 Wed Feb 13 12:11:14 2008
@@ -202,9 +202,7 @@
             nestedTag.getValue(), nestedTag.getRole(),
             AttributeType.getType(nestedTag.getType()));
 
-        attributeContext.putAttribute(
-            nestedTag.getName(),
-            attribute
-        );
+        attributeContext.putAttribute(nestedTag.getName(), attribute, nestedTag
+                .isCascade());
     }
 }

Modified: 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java?rev=627577&r1=627576&r2=627577&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java
 (original)
+++ 
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java
 Wed Feb 13 12:11:14 2008
@@ -32,8 +32,6 @@
 
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.tagext.TagSupport;
-import java.util.Map;
-import java.util.HashMap;
 
 /**
  * This is the tag handler for &lt;tiles:definition&gt;, which creates a custom
@@ -78,10 +76,9 @@
     private MutableTilesContainer container;
 
     /**
-     * Maps attribute names with their attributes.
+     * The definition currently being built.
      */
-    private Map<String, Attribute> attributes;
-
+    private Definition definition;
 
     /**
      * Returns the name of the definition to configure.
@@ -181,12 +178,17 @@
         extend = null;
         role = null;
         preparer = null;
-        attributes.clear();
+        definition = null;
     }
 
     /** [EMAIL PROTECTED] */
     public int doStartTag() throws JspException {
-        attributes = new HashMap<String, Attribute>();
+        definition = new Definition();
+        definition.setName(name);
+        definition.setTemplate(template);
+        definition.setExtends(extend);
+        definition.setRole(role);
+        definition.setPreparer(preparer);
 
         TilesContainer c =
             TilesAccess.getContainer(pageContext.getServletContext());
@@ -206,16 +208,8 @@
 
     /** [EMAIL PROTECTED] */
     public int doEndTag() throws JspException {
-        Definition d = new Definition();
-        d.setName(name);
-        d.setTemplate(template);
-        d.setExtends(extend);
-        d.setRole(role);
-        d.setPreparer(preparer);
-        d.addAll(attributes);
-
         try {
-            container.register(d, pageContext);
+            container.register(definition, pageContext);
         } catch (TilesException e) {
             throw new JspException("Unable to add definition. " , e);
         }
@@ -232,6 +226,7 @@
     public void processNestedTag(PutAttributeTag nestedTag) throws 
JspException {
         Attribute attr = new Attribute(nestedTag.getValue(),
             nestedTag.getRole(), AttributeType.getType(nestedTag.getType()));
-        attributes.put(nestedTag.getName(), attr);
+        definition.putAttribute(nestedTag.getName(), attr, nestedTag
+                .isCascade());
     }
 }


Reply via email to