You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2010/07/13 07:54:28 UTC
svn commit: r963604 - in /struts/struts2/trunk/plugins/javatemplates/src:
main/java/org/apache/struts2/views/java/simple/
test/java/org/apache/struts2/views/java/simple/
Author: lukaszlenart
Date: Tue Jul 13 05:54:28 2010
New Revision: 963604
URL: http://svn.apache.org/viewvc?rev=963604&view=rev
Log:
Resolved WW-3463 - added support for dynamic attributes
Added:
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/DynamicAttributesHandler.java
Modified:
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractCommonAttributesTest.java
struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java
Added: struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/DynamicAttributesHandler.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/DynamicAttributesHandler.java?rev=963604&view=auto
==============================================================================
--- struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/DynamicAttributesHandler.java (added)
+++ struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/DynamicAttributesHandler.java Tue Jul 13 05:54:28 2010
@@ -0,0 +1,22 @@
+package org.apache.struts2.views.java.simple;
+
+import org.apache.struts2.views.java.Attributes;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * Adds dynamic attributes
+ */
+public class DynamicAttributesHandler extends AbstractTagHandler {
+
+ /* (non-Javadoc)
+ * @see org.apache.struts2.views.java.simple.AbstractTagHandler#start(java.lang.String, org.apache.struts2.views.java.Attributes)
+ */
+ @Override
+ public void start(String name, Attributes a) throws IOException {
+ a.putAll((Map<String, String>) context.getParameters().get("dynamicAttributes"));
+ super.start(name, a);
+ }
+
+}
Modified: struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java?rev=963604&r1=963603&r2=963604&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java (original)
+++ struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java Tue Jul 13 05:54:28 2010
@@ -34,28 +34,28 @@ public class SimpleTheme extends Default
public SimpleTheme() {
setHandlerFactories(new HashMap<String, List<TagHandlerFactory>>() {
{
- put("text", new FactoryList(TextFieldHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
- put("textfield", new FactoryList(TextFieldHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
- put("select", new FactoryList(SelectHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
- put("form", new FactoryList(FormHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("text", new FactoryList(TextFieldHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
+ put("textfield", new FactoryList(TextFieldHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
+ put("select", new FactoryList(SelectHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
+ put("form", new FactoryList(FormHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
put("form-close", new FactoryList(FormHandler.CloseHandler.class));
- put("a", new FactoryList(AnchorHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("a", new FactoryList(AnchorHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
put("a-close", new FactoryList(AnchorHandler.CloseHandler.class));
- put("checkbox", new FactoryList(CheckboxHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
- put("file", new FactoryList(FileHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
- put("password", new FactoryList(PasswordHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
- put("label", new FactoryList(LabelHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
- put("reset", new FactoryList(ResetHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
- put("submit", new FactoryList(SubmitHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("checkbox", new FactoryList(CheckboxHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
+ put("file", new FactoryList(FileHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
+ put("password", new FactoryList(PasswordHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
+ put("label", new FactoryList(LabelHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
+ put("reset", new FactoryList(ResetHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
+ put("submit", new FactoryList(SubmitHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
put("submit-close", new FactoryList(SubmitHandler.CloseHandler.class));
- put("textarea", new FactoryList(TextAreaHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("textarea", new FactoryList(TextAreaHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
put("actionerror", new FactoryList(ActionErrorHandler.class));
put("token", new FactoryList(TokenHandler.class));
put("actionmessage", new FactoryList(ActionMessageHandler.class));
put("head", new FactoryList(HeadHandler.class));
put("hidden", new FactoryList(HiddenHandler.class));
put("fielderror", new FactoryList(FieldErrorHandler.class));
- put("div", new FactoryList(DivHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class));
+ put("div", new FactoryList(DivHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class, DynamicAttributesHandler.class));
put("div-close", new FactoryList(DivHandler.CloseHandler.class));
put("empty", new FactoryList(EmptyHandler.class));
}
Modified: struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractCommonAttributesTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractCommonAttributesTest.java?rev=963604&r1=963603&r2=963604&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractCommonAttributesTest.java (original)
+++ struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractCommonAttributesTest.java Tue Jul 13 05:54:28 2010
@@ -27,7 +27,19 @@ public abstract class AbstractCommonAttr
theme.renderTag(getTagName(), context);
String output = writer.getBuffer().toString();
- assertCommongAttrs(output);
+ assertCommonAttrs(output);
}
+ public void testRenderTextFieldDynamicAttrs() throws Exception {
+ UIBean tag = getUIBean();
+
+ applyDynamicAttrs(tag);
+
+ tag.evaluateParams();
+ map.putAll(tag.getParameters());
+ theme.renderTag(getTagName(), context);
+ String output = writer.getBuffer().toString();
+
+ assertDynamicAttrs(output);
+ }
}
Modified: struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java?rev=963604&r1=963603&r2=963604&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java (original)
+++ struts/struts2/trunk/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/AbstractTest.java Tue Jul 13 05:54:28 2010
@@ -23,6 +23,7 @@ import java.util.Stack;
public abstract class AbstractTest extends TestCase {
private Map<String, String> scriptingAttrs = new HashMap<String, String>();
private Map<String, String> commonAttrs = new HashMap<String, String>();
+ private Map<String, Object> dynamicAttrs = new HashMap<String, Object>();
protected SimpleTheme theme;
@@ -60,6 +61,9 @@ public abstract class AbstractTest exten
commonAttrs.put("accesskey", "accesskey_");
+ dynamicAttrs.put("data-remote", "data-remote_");
+ dynamicAttrs.put("data-label", "data-label_");
+
theme = new SimpleTheme();
writer = new StringWriter();
map = new HashMap();
@@ -132,6 +136,10 @@ public abstract class AbstractTest exten
bean.setAccesskey("accesskey_");
}
+ protected void applyDynamicAttrs(UIBean bean) {
+ bean.setDynamicAttributes(dynamicAttrs);
+ }
+
protected void assertScriptingAttrs(String str) {
for (Map.Entry<String, String> entry : scriptingAttrs.entrySet()) {
String substr = entry.getKey() + "=\"" + entry.getValue() + "\"";
@@ -139,13 +147,20 @@ public abstract class AbstractTest exten
}
}
- protected void assertCommongAttrs(String str) {
+ protected void assertCommonAttrs(String str) {
for (Map.Entry<String, String> entry : commonAttrs.entrySet()) {
String substr = entry.getKey() + "=\"" + entry.getValue() + "\"";
assertTrue("String [" + substr + "] was not found in [" + str + "]", str.indexOf(substr) >= 0);
}
}
+ protected void assertDynamicAttrs(String str) {
+ for (Map.Entry<String, Object> entry : dynamicAttrs.entrySet()) {
+ String substr = entry.getKey() + "=\"" + entry.getValue() + "\"";
+ assertTrue("String [" + substr + "] was not found in [" + str + "]", str.indexOf(substr) >= 0);
+ }
+ }
+
protected Object doFindValue(String expr, Class toType) {
Object val = stack.findValue(expr);