I'll have a look later today.

Juergen

On Mon, Jun 4, 2012 at 3:37 PM, Martin Grigorov
<martin.grigo...@gmail.com> wrote:
> Hi,
>
> I'm not quite sure but I think there is a bug in
> org.apache.wicket.markup.parser.XmlPullParser#parse(CharSequence)
> because it uses
> string.toString().getBytes() to create a ByteArrayInputStream.
>
> org.apache.wicket.util.tester.BaseWicketTester#getTagById(String) uses
> lastResponseAsString to feed XmlPullParser but lastResponseAsString's
> encoding depends on
> org.apache.wicket.settings.IRequestCycleSettings#getResponseRequestEncoding().
> I.e. the string may be encoded in UTF-8 but later XmlPullParser will
> try to process its bytes as Windows-1252 for example.
>
>
> Here is a small patch that exposes the problem:
> diff --git 
> a/wicket-core/src/test/java/org/apache/wicket/markup/parser/XmlPullParserTest.java
> b/wicket-core/src/test/java/org/apache/wicket/markup/p
> index 2e26d05..15fb496 100644
> --- 
> a/wicket-core/src/test/java/org/apache/wicket/markup/parser/XmlPullParserTest.java
> +++ 
> b/wicket-core/src/test/java/org/apache/wicket/markup/parser/XmlPullParserTest.java
> @@ -191,6 +191,13 @@ public class XmlPullParserTest extends Assert
>                assertNull(parser.getEncoding());
>                tag = parser.nextTag();
>                assertNull(tag);
> +
> +               String expected = "äöü€";
> +               parser.parse("<dummy>"+expected+"</dummy>");
> +               XmlTag openTag = parser.nextTag();
> +               XmlTag closeTag = parser.nextTag();
> +               String actual = parser.getInput(openTag.getPos() +
> openTag.getLength(), closeTag.getPos()).toString();
> +               assertEquals(expected, actual);
>        }
>
>        /**
>
> Apply this patch and run the test with -Dfile.encoding=latin1. It will
> fail in the comparison. Run it with UTF-8 and it will pass.
>
> I remember Juergen had similar problem with one of Wicket core tests
> that uses the Euro sign in an assertion and he fixed it by using
> unicode escaped value (\uabcd).
> But in this case the response is encoded with whatever is configured
> at IRequestCycleSettings#getResponseRequestEncoding() and
> XmlPullParser tries to read it with the platform default encoding.
>
> Is this a bug and how we can solve it ?
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com

Reply via email to