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"));
+       }
 }


Reply via email to