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.