You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Michael Grinner (JIRA)" <ji...@apache.org> on 2008/04/05 12:59:24 UTC

[jira] Created: (WICKET-1484) class cast exception (String) in MixedParamUrlCodingStrategy with additional params with patch

class cast exception (String) in MixedParamUrlCodingStrategy with additional params with patch
----------------------------------------------------------------------------------------------

                 Key: WICKET-1484
                 URL: https://issues.apache.org/jira/browse/WICKET-1484
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.3.2
            Reporter: Michael Grinner


MixedParamUrlCodingStrategy has a bug in

MixedParamUrlCodingStrategy

appendParameters

		if (!parameterNamesToAdd.isEmpty())
		{
			boolean first = true;
			final Iterator iterator;
			if (UnitTestSettings.getSortUrlParameters())
			{
				iterator = new TreeSet(parameterNamesToAdd).iterator();
			}
			else
			{
				iterator = parameterNamesToAdd.iterator();
			}
			while (iterator.hasNext())
			{
				url.append(first ? '?' : '&');
				String parameterName = (String)iterator.next();
@@@			String value = (String)parameters.get(parameterName);
			
url.append(urlEncode(parameterName)).append("=").append(urlEncode(value));
				first = false;
			}
		}

where value should be a String[] not a String.


like in AbstractRequestTargetUrlCodingStrategy

appendParameters

	String[] values = (String[])value;
	for (int i = 0; i < values.length; i++)
	{
		appendValue(url, entry.getKey().toString(), values[i]);
	}

it works ok after patching MixedParamUrlCodingStrategy to

       if (!parameterNamesToAdd.isEmpty()) {
           boolean first = true;
           final Iterator iterator;
           if (UnitTestSettings.getSortUrlParameters()) {
               iterator = new TreeSet(parameterNamesToAdd).iterator();
           } else {
               iterator = parameterNamesToAdd.iterator();
           }
           while (iterator.hasNext()) {
               url.append(first ? '?' : '&');
               String parameterName = (String) iterator.next();
               Object value = parameters.get(parameterName);
               if (value != null) {
                   if (value instanceof String[]) {
                       String[] values = (String[]) value;
                       for (String element : values) {

url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(element));
                       }
                   } else {

url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(value.toString()));
                   }
               }
               first = false;
           }
       }



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (WICKET-1484) class cast exception (String) in MixedParamUrlCodingStrategy with additional params with patch

Posted by "Roy van Rijn (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-1484?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Roy van Rijn updated WICKET-1484:
---------------------------------

    Attachment: 1484_patch.txt

Created the patch, like Michael suggested in his comment

> class cast exception (String) in MixedParamUrlCodingStrategy with additional params with patch
> ----------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1484
>                 URL: https://issues.apache.org/jira/browse/WICKET-1484
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.2
>            Reporter: Michael Grinner
>         Attachments: 1484_patch.txt
>
>
> MixedParamUrlCodingStrategy has a bug in
> MixedParamUrlCodingStrategy
> appendParameters
> 		if (!parameterNamesToAdd.isEmpty())
> 		{
> 			boolean first = true;
> 			final Iterator iterator;
> 			if (UnitTestSettings.getSortUrlParameters())
> 			{
> 				iterator = new TreeSet(parameterNamesToAdd).iterator();
> 			}
> 			else
> 			{
> 				iterator = parameterNamesToAdd.iterator();
> 			}
> 			while (iterator.hasNext())
> 			{
> 				url.append(first ? '?' : '&');
> 				String parameterName = (String)iterator.next();
> @@@			String value = (String)parameters.get(parameterName);
> 			
> url.append(urlEncode(parameterName)).append("=").append(urlEncode(value));
> 				first = false;
> 			}
> 		}
> where value should be a String[] not a String.
> like in AbstractRequestTargetUrlCodingStrategy
> appendParameters
> 	String[] values = (String[])value;
> 	for (int i = 0; i < values.length; i++)
> 	{
> 		appendValue(url, entry.getKey().toString(), values[i]);
> 	}
> it works ok after patching MixedParamUrlCodingStrategy to
>        if (!parameterNamesToAdd.isEmpty()) {
>            boolean first = true;
>            final Iterator iterator;
>            if (UnitTestSettings.getSortUrlParameters()) {
>                iterator = new TreeSet(parameterNamesToAdd).iterator();
>            } else {
>                iterator = parameterNamesToAdd.iterator();
>            }
>            while (iterator.hasNext()) {
>                url.append(first ? '?' : '&');
>                String parameterName = (String) iterator.next();
>                Object value = parameters.get(parameterName);
>                if (value != null) {
>                    if (value instanceof String[]) {
>                        String[] values = (String[]) value;
>                        for (String element : values) {
> url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(element));
>                        }
>                    } else {
> url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(value.toString()));
>                    }
>                }
>                first = false;
>            }
>        }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (WICKET-1484) class cast exception (String) in MixedParamUrlCodingStrategy with additional params with patch

Posted by "Erik van Oosten (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WICKET-1484?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12589084#action_12589084 ] 

Erik van Oosten commented on WICKET-1484:
-----------------------------------------

An alternative is to replace the getParameterMap() method in ServletWebRequest like this:

	public Map getParameterMap()
	{
		// Lazy-init parameter map. Only make one copy. It's more efficient, and
		// we can add stuff to it (which the BookmarkablePage stuff does).
		if (parameterMap == null)
		{
			parameterMap = new HashMap(httpServletRequest.getParameterMap());

            // Replace single value parameter arrays with a single string.
            for (Iterator i = parameterMap.keySet().iterator(); i.hasNext(); )
            {
                Object key = i.next();
                Object value = parameterMap.get(key);
                if ((value instanceof String[]) && ((String[]) value).length == 1)
                {
                    parameterMap.put(key, ((String[]) value)[0]);
                }
            }
        }
		// return a mutable copy
		return parameterMap;
	}


> class cast exception (String) in MixedParamUrlCodingStrategy with additional params with patch
> ----------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1484
>                 URL: https://issues.apache.org/jira/browse/WICKET-1484
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.2
>            Reporter: Michael Grinner
>         Attachments: 1484_patch.txt
>
>
> MixedParamUrlCodingStrategy has a bug in
> MixedParamUrlCodingStrategy
> appendParameters
> 		if (!parameterNamesToAdd.isEmpty())
> 		{
> 			boolean first = true;
> 			final Iterator iterator;
> 			if (UnitTestSettings.getSortUrlParameters())
> 			{
> 				iterator = new TreeSet(parameterNamesToAdd).iterator();
> 			}
> 			else
> 			{
> 				iterator = parameterNamesToAdd.iterator();
> 			}
> 			while (iterator.hasNext())
> 			{
> 				url.append(first ? '?' : '&');
> 				String parameterName = (String)iterator.next();
> @@@			String value = (String)parameters.get(parameterName);
> 			
> url.append(urlEncode(parameterName)).append("=").append(urlEncode(value));
> 				first = false;
> 			}
> 		}
> where value should be a String[] not a String.
> like in AbstractRequestTargetUrlCodingStrategy
> appendParameters
> 	String[] values = (String[])value;
> 	for (int i = 0; i < values.length; i++)
> 	{
> 		appendValue(url, entry.getKey().toString(), values[i]);
> 	}
> it works ok after patching MixedParamUrlCodingStrategy to
>        if (!parameterNamesToAdd.isEmpty()) {
>            boolean first = true;
>            final Iterator iterator;
>            if (UnitTestSettings.getSortUrlParameters()) {
>                iterator = new TreeSet(parameterNamesToAdd).iterator();
>            } else {
>                iterator = parameterNamesToAdd.iterator();
>            }
>            while (iterator.hasNext()) {
>                url.append(first ? '?' : '&');
>                String parameterName = (String) iterator.next();
>                Object value = parameters.get(parameterName);
>                if (value != null) {
>                    if (value instanceof String[]) {
>                        String[] values = (String[]) value;
>                        for (String element : values) {
> url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(element));
>                        }
>                    } else {
> url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(value.toString()));
>                    }
>                }
>                first = false;
>            }
>        }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (WICKET-1484) class cast exception (String) in MixedParamUrlCodingStrategy with additional params with patch

Posted by "Igor Vaynberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-1484?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Igor Vaynberg resolved WICKET-1484.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 1.3.5
                   1.4-RC1
         Assignee: Igor Vaynberg

seems to be already fixed

> class cast exception (String) in MixedParamUrlCodingStrategy with additional params with patch
> ----------------------------------------------------------------------------------------------
>
>                 Key: WICKET-1484
>                 URL: https://issues.apache.org/jira/browse/WICKET-1484
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.2
>            Reporter: Michael Grinner
>            Assignee: Igor Vaynberg
>             Fix For: 1.4-RC1, 1.3.5
>
>         Attachments: 1484_patch.txt
>
>
> MixedParamUrlCodingStrategy has a bug in
> MixedParamUrlCodingStrategy
> appendParameters
> 		if (!parameterNamesToAdd.isEmpty())
> 		{
> 			boolean first = true;
> 			final Iterator iterator;
> 			if (UnitTestSettings.getSortUrlParameters())
> 			{
> 				iterator = new TreeSet(parameterNamesToAdd).iterator();
> 			}
> 			else
> 			{
> 				iterator = parameterNamesToAdd.iterator();
> 			}
> 			while (iterator.hasNext())
> 			{
> 				url.append(first ? '?' : '&');
> 				String parameterName = (String)iterator.next();
> @@@			String value = (String)parameters.get(parameterName);
> 			
> url.append(urlEncode(parameterName)).append("=").append(urlEncode(value));
> 				first = false;
> 			}
> 		}
> where value should be a String[] not a String.
> like in AbstractRequestTargetUrlCodingStrategy
> appendParameters
> 	String[] values = (String[])value;
> 	for (int i = 0; i < values.length; i++)
> 	{
> 		appendValue(url, entry.getKey().toString(), values[i]);
> 	}
> it works ok after patching MixedParamUrlCodingStrategy to
>        if (!parameterNamesToAdd.isEmpty()) {
>            boolean first = true;
>            final Iterator iterator;
>            if (UnitTestSettings.getSortUrlParameters()) {
>                iterator = new TreeSet(parameterNamesToAdd).iterator();
>            } else {
>                iterator = parameterNamesToAdd.iterator();
>            }
>            while (iterator.hasNext()) {
>                url.append(first ? '?' : '&');
>                String parameterName = (String) iterator.next();
>                Object value = parameters.get(parameterName);
>                if (value != null) {
>                    if (value instanceof String[]) {
>                        String[] values = (String[]) value;
>                        for (String element : values) {
> url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(element));
>                        }
>                    } else {
> url.append(this.urlEncode(parameterName)).append("=").append(this.urlEncode(value.toString()));
>                    }
>                }
>                first = false;
>            }
>        }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.