Author: mgrigorov
Date: Fri May  6 10:20:37 2011
New Revision: 1100160

URL: http://svn.apache.org/viewvc?rev=1100160&view=rev
Log:
WICKET-3608 input button escapes escaped value

Move the check for setting manually the attribute 'id' in ComponentTag.
This way it is related to user-space code (onComponentTag(tag) {tag.put("id", 
"value")}).

reviewed-by: jdo


Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/ComponentTag.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/TagAttributes.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HeadForceTagIdHandler.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java?rev=1100160&r1=1100159&r2=1100160&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java 
(original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java Fri 
May  6 10:20:37 2011
@@ -2289,8 +2289,8 @@ public abstract class Component
         * removed cannot be referenced from the markup still.
         * <p>
         * You must not use this method in your callback to any of the
-        * {@link MarkupContainer#visitChildren(IVisitor)} methods. See
-        * <a 
href="https://issues.apache.org/jira/browse/WICKET-3229";>WICKET-3329</a>.
+        * {@link MarkupContainer#visitChildren(IVisitor)} methods. See <a
+        * 
href="https://issues.apache.org/jira/browse/WICKET-3229";>WICKET-3329</a>.
         */
        public final void remove()
        {
@@ -2674,7 +2674,7 @@ public abstract class Component
         * Make sure that all attached behaviors are asked as well.
         * <p>
         * NOT intended for overriding by framework clients. Rather, use
-        * {@link 
Component#renderHead(org.apache.wicket.markup.html.IHeaderResponse)}}
+        * {@link 
Component#renderHead(org.apache.wicket.markup.html.IHeaderResponse)}
         * </p>
         * 
         * @param container
@@ -3832,7 +3832,7 @@ public abstract class Component
                // component <-> markup relation)
                if (getFlag(FLAG_OUTPUT_MARKUP_ID))
                {
-                       tag.put(MARKUP_ID_ATTR_NAME, getMarkupId());
+                       tag.putInternal(MARKUP_ID_ATTR_NAME, getMarkupId());
                }
 
                if (getApplication().getDebugSettings().isOutputComponentPath())
@@ -4381,10 +4381,10 @@ public abstract class Component
        }
 
        /**
-        * CAUTION: this method is not meant to be overridden like it was in 
wicket 1.4 when implementing 
-        * {@link IHeaderContributor}. overload 
-        * {@link 
Component#renderHead(org.apache.wicket.markup.html.IHeaderResponse)} 
-        * instead to contribute to the response header.
+        * CAUTION: this method is not meant to be overridden like it was in 
wicket 1.4 when
+        * implementing {@link IHeaderContributor}. overload
+        * {@link 
Component#renderHead(org.apache.wicket.markup.html.IHeaderResponse)} instead to
+        * contribute to the response header.
         * 
         * @param component
         * @param response

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/ComponentTag.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/ComponentTag.java?rev=1100160&r1=1100159&r2=1100160&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/ComponentTag.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/ComponentTag.java
 Fri May  6 10:20:37 2011
@@ -35,6 +35,8 @@ import org.apache.wicket.util.string.App
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.value.IValueMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -47,6 +49,9 @@ import org.apache.wicket.util.value.IVal
  */
 public class ComponentTag extends MarkupElement
 {
+       /** Log. */
+       private static final Logger log = 
LoggerFactory.getLogger(ComponentTag.class);
+
        /** True if a href attribute is available and autolinking is on */
        private final static int AUTOLINK = 0x0001;
 
@@ -478,11 +483,37 @@ public class ComponentTag extends Markup
         */
        public final void put(String key, CharSequence value)
        {
+               checkIdAttribute(key);
+               putInternal(key, value);
+       }
+
+       /**
+        * THIS METHOD IS NOT PART OF THE PUBLIC API, DO NOT CALL IT
+        * 
+        * @see org.apache.wicket.markup.parser.XmlTag#put(String, CharSequence)
+        * @param key
+        *            The key
+        * @param value
+        *            The value
+        */
+       public final void putInternal(String key, CharSequence value)
+       {
                xmlTag.put(key, value);
                setModified(true);
        }
 
        /**
+        * @param key
+        */
+       private void checkIdAttribute(String key)
+       {
+               if ((key != null) && (key.equalsIgnoreCase("id")))
+               {
+                       log.warn("Please use component.setMarkupId(String) to 
change the tag's 'id' attribute.");
+               }
+       }
+
+       /**
         * Appends specified {@code value} to the attribute
         * 
         * @param key

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/TagAttributes.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/TagAttributes.java?rev=1100160&r1=1100159&r2=1100160&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/TagAttributes.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/TagAttributes.java
 Fri May  6 10:20:37 2011
@@ -21,16 +21,12 @@ import java.util.Map;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.value.IValueMap;
 import org.apache.wicket.util.value.ValueMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * 
  */
 public class TagAttributes extends ValueMap
 {
-       /** Log. */
-       private static final Logger log = 
LoggerFactory.getLogger(TagAttributes.class);
 
        private static final long serialVersionUID = 1L;
 
@@ -57,31 +53,7 @@ public class TagAttributes extends Value
        @Override
        public final Object put(String key, Object value)
        {
-               checkIdAttribute(key);
-               return putInternal(key, value);
-       }
 
-       /**
-        * @param key
-        */
-       private void checkIdAttribute(String key)
-       {
-               if ((key != null) && (key.equalsIgnoreCase("id")))
-               {
-                       log.warn("WARNING: Please use 
component.setMarkupId(String) to change the tag's 'id' attribute.");
-               }
-       }
-
-       /**
-        * Modifying the 'id' attribute should be made via 
Component.setMarkupId(). But the markup
-        * parser must still be able to add the 'id' attribute without warning.
-        * 
-        * @param key
-        * @param value
-        * @return The old value
-        */
-       public final Object putInternal(String key, Object value)
-       {
                return super.put(key, unescapeHtml(value));
        }
 
@@ -91,7 +63,6 @@ public class TagAttributes extends Value
                for (Object o : map.keySet())
                {
                        String key = (String)o;
-                       checkIdAttribute(key);
                }
 
                super.putAll(map);

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java?rev=1100160&r1=1100159&r2=1100160&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
 Fri May  6 10:20:37 2011
@@ -656,7 +656,7 @@ public final class XmlPullParser impleme
                                final String key = attributeParser.getKey();
 
                                // Put the attribute in the attributes hash
-                               if (null != 
((TagAttributes)tag.getAttributes()).putInternal(key, value))
+                               if (null != tag.getAttributes().put(key, value))
                                {
                                        throw new ParseException("Same 
attribute found twice: " + key +
                                                getLineAndColumnText(), 
input.getPosition());

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HeadForceTagIdHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HeadForceTagIdHandler.java?rev=1100160&r1=1100159&r2=1100160&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HeadForceTagIdHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HeadForceTagIdHandler.java
 Fri May  6 10:20:37 2011
@@ -22,7 +22,6 @@ import org.apache.wicket.markup.Componen
 import org.apache.wicket.markup.MarkupElement;
 import org.apache.wicket.markup.WicketTag;
 import org.apache.wicket.markup.parser.AbstractMarkupFilter;
-import org.apache.wicket.markup.parser.TagAttributes;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 
 
@@ -88,8 +87,7 @@ public class HeadForceTagIdHandler exten
                        {
                                if (tag.getAttributes().get("id") == null)
                                {
-                                       
((TagAttributes)tag.getAttributes()).putInternal("id", headElementIdPrefix +
-                                               nextValue());
+                                       tag.getAttributes().put("id", 
headElementIdPrefix + nextValue());
                                        tag.setModified(true);
                                }
                        }


Reply via email to