Author: mgrigorov
Date: Tue Jul 26 14:29:58 2011
New Revision: 1151114
URL: http://svn.apache.org/viewvc?rev=1151114&view=rev
Log:
WICKET-3934 Provide AttributeModifier#remove(String)
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/AttributeModifier.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/AttributeModifierTest.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/AttributeModifier.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/AttributeModifier.java?rev=1151114&r1=1151113&r2=1151114&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/AttributeModifier.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/AttributeModifier.java
Tue Jul 26 14:29:58 2011
@@ -67,10 +67,10 @@ import org.apache.wicket.util.value.IVal
public class AttributeModifier extends Behavior implements IClusterable
{
/** Marker value to have an attribute without a value added. */
- public static final String VALUELESS_ATTRIBUTE_ADD = "VA_ADD";
+ public static final String VALUELESS_ATTRIBUTE_ADD = new
String("VA_ADD");
/** Marker value to have an attribute without a value removed. */
- public static final String VALUELESS_ATTRIBUTE_REMOVE = "VA_REMOVE";
+ public static final String VALUELESS_ATTRIBUTE_REMOVE = new
String("VA_REMOVE");
private static final long serialVersionUID = 1L;
@@ -180,11 +180,11 @@ public class AttributeModifier extends B
final IValueMap attributes = tag.getAttributes();
final Object replacementValue =
getReplacementOrNull(component);
- if (VALUELESS_ATTRIBUTE_ADD.equals(replacementValue))
+ if (VALUELESS_ATTRIBUTE_ADD == replacementValue)
{
attributes.put(attribute, null);
}
- else if
(VALUELESS_ATTRIBUTE_REMOVE.equals(replacementValue))
+ else if (VALUELESS_ATTRIBUTE_REMOVE == replacementValue)
{
attributes.remove(attribute);
}
@@ -358,4 +358,19 @@ public class AttributeModifier extends B
{
return prepend(attribute, Model.of(value));
}
+
+ /**
+ * Creates a attribute modifier that prepends the current value with
the given {@code value}
+ * using a default space character (' ') separator.
+ *
+ * @param attribute
+ * @param value
+ * @return the attribute modifier
+ * @since 1.5
+ * @see AttributeAppender
+ */
+ public static AttributeModifier remove(String attribute)
+ {
+ return prepend(attribute, Model.of(VALUELESS_ATTRIBUTE_REMOVE));
+ }
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/AttributeModifierTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/AttributeModifierTest.java?rev=1151114&r1=1151113&r2=1151114&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/AttributeModifierTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/AttributeModifierTest.java
Tue Jul 26 14:29:58 2011
@@ -290,4 +290,37 @@ public class AttributeModifierTest exten
assertTrue(attributes.isEmpty());
}
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-3934
+ */
+ @Test
+ public void removeAttribute()
+ {
+ AttributeModifier appender = AttributeModifier.remove("class");
+ XmlTag xmlTag = new XmlTag();
+ ComponentTag tag = new ComponentTag(xmlTag);
+ Map<String, Object> attributes = tag.getAttributes();
+ attributes.put("class", "someValue");
+ appender.replaceAttributeValue(null, tag);
+ assertTrue(attributes.isEmpty());
+ }
+
+ /**
+ * Add an attribute with name equal to the special
+ * {@link AttributeModifier#VALUELESS_ATTRIBUTE_REMOVE}
+ *
+ * https://issues.apache.org/jira/browse/WICKET-3934
+ */
+ @Test
+ public void appendSpecialAttribute()
+ {
+ AttributeModifier appender =
AttributeModifier.append("VA_REMOVE", "newValue");
+ XmlTag xmlTag = new XmlTag();
+ ComponentTag tag = new ComponentTag(xmlTag);
+ Map<String, Object> attributes = tag.getAttributes();
+ attributes.put("VA_REMOVE", "oldValue");
+ appender.replaceAttributeValue(null, tag);
+ assertFalse(attributes.isEmpty());
+ assertEquals("oldValue newValue", attributes.get("VA_REMOVE"));
+ }
}