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 <tiles:definition>, 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());
}
}