It's good to hear it is working in your environment.

by the way, I saw your camael doc update regarding the concrete error
example you saw.
We need to formulate that differently.
There is a small sanity check before starting the tokenization (not
comparing the impl name itself but trying to infer its conformance by
its initial behavior). That check was working for Oracle JDK 7 on OSX.
I would like to know which JDK that you use. In any case, we can
either make the initial sanity check to detect this incompatible
behavior and detect it later if it is not detected at the beginning.
In either way, we can throw an exception at some point.

regards, aki

2014-12-16 10:18 GMT+01:00 Jan Matèrne (jhm) <apa...@materne.de>:
> Sorry for my late answer, I was ill :(
>
> Thanks for your sample project, I investigated into it now.
> All tests passed. (Camel 2.14.0)
>
> But your test used the XMLTokenExpressionIterator directly I migrated my own
> test class (using the RouteBuilder) into your project.
> - added the test class
> - added the xsd
> - added the dependency to commons-io + camel-test-spring
> - changed the paths in my test class to fit your directory layout
> Now this also passed.
>
> It's good to see that there is no bug in Camel. ;)
>
>
> Because my example still fails in my other environment I check that ...
>
>
> Jan
>
>
>> -----Ursprüngliche Nachricht-----
>> Von: Aki Yoshida [mailto:elak...@gmail.com]
>> Gesendet: Mittwoch, 10. Dezember 2014 23:57
>> An: users@camel.apache.org
>> Betreff: Re: AW: camel - xsd
>>
>> i meant woodstox-core-asl (e.g., woodstox-core-asl-4.4.1.jar).
>> its maven coordinate is
>>
>> mvn:org.codehaus.woodstox/woodstox-core-asl/4.4.1
>>
>> you need to have woodstox or some other parser that reliably reports
>> the offset location at each parse event.
>> Sjsxp (sun/oracle implementation included in JDK) doesn't do that, so
>> you can't use it.
>>
>> jmtest.tar.gz contains a maven project that can be executed directly by
>> typing mvn test at the console or can be imported into your eclipse
>> IDE.
>>
>> 2014-12-10 13:13 GMT+01:00 Aki Yoshida <elak...@gmail.com>:
>> > i just created a test that uses your data and verified that it is
>> working fine.
>> > please take a look at this file at my dropbox.
>> > https://www.dropbox.com/s/pfgvs9si9bvujxo/jmtest.tar.gz?dl=0
>> > just extract the files into camel-core and run JMNewsTest.
>> > and see if that works in your environment, (i believe it does).
>> >
>> > in that case, we need to find out the difference to your case.
>> > do you have woodstox-api in your class path?
>> >
>> >
>> > 2014-12-10 12:15 GMT+01:00 Aki Yoshida <elak...@gmail.com>:
>> >> okay.
>> >> let me take a look.
>> >>
>> >>
>> >> 2014-12-10 12:02 GMT+01:00 Jan Matèrne (jhm) <apa...@materne.de>:
>> >>> No, input is valid xml.
>> >>> After invoking xtokenize() the xml is invalid.
>> >>>
>> >>> CAMEL-8106 is very .... short. I can't see whether it is related.
>> >>>
>> >>>
>> >>> I posted an example on the user list
>> >>> http://mail-archives.apache.org/mod_mbox/camel-
>> users/201412.mbox/%3C
>> >>> 002b01d01452%24e8ee27a0%24baca76e0%24%40de%3E
>> >>>
>> >>> I had done a 'workaround' for this special example
>> >>>     // Workaround of a bug?? in XMLTokenizerExpression
>> >>>     .setBody(simple("${body.replace('</</news:Newsletter>',
>> '</news:Newsletter>')}"))
>> >>>     .setBody(simple("${body.replace('<</news:Newsletter>',
>> >>> '</news:Newsletter>')}"))
>> >>>
>> >>> Without that the split messages have wrong end tags.
>> >>>
>> >>>
>> >>> Jan
>> >>>
>> >>>
>> >>>> -----Ursprüngliche Nachricht-----
>> >>>> Von: Aki Yoshida [mailto:elak...@gmail.com]
>> >>>> Gesendet: Mittwoch, 10. Dezember 2014 10:34
>> >>>> An: users@camel.apache.org
>> >>>> Betreff: Re: AW: camel - xsd
>> >>>>
>> >>>> you are talking about the invalid-xml parsing bug in xtokenzier.
>> >>>> that has been fixe with CAMEL-8106. It should be part of the new
>> >>>> 2.14.1, which is to be released shortly.
>> >>>>
>> >>>> regards, aki
>> >>>>
>> >>>> 2014-12-10 9:25 GMT+01:00 Jan Matèrne (jhm) <apa...@materne.de>:
>> >>>> > I played a little bit.
>> >>>> >
>> >>>> > Jan
>> >>>> >
>> >>>> >
>> >>>> > public class XmlTest extends CamelTestSupport {
>> >>>> >
>> >>>> >     @EndpointInject(uri="mock:valid")
>> >>>> >     MockEndpoint valid;
>> >>>> >
>> >>>> >     @EndpointInject(uri="mock:validationError")
>> >>>> >     MockEndpoint validationError;
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> >     @Test
>> >>>> >     public void validNewsfeed() throws Exception {
>> >>>> >         // Newsfeed contains 2 news
>> >>>> >         valid.expectedMessageCount(2);
>> >>>> >         valid.expectedMessagesMatches(
>> >>>> >             // Use helper methods from the static imported
>> >>>> PredicateBuilder
>> >>>> >             and(
>> >>>> >                 header("newsfeed.date").isEqualTo("2014.12.09
>> >>>> 14:15"),
>> >>>> >                 header("news.author").isEqualTo("Jan"),
>> >>>> >
>> >>>> >
>> >>>>
>> body().contains("xmlns:news=\"http://www.materne.de/camel/test/xml/
>> >>>> com
>> >>>> > plex/\
>> >>>> > "")
>> >>>> >             )
>> >>>> >         );
>> >>>> >         // no error expected
>> >>>> >         validationError.expectedMessageCount(0);
>> >>>> >
>> >>>> >         // Read xml from classpath and send to Camel route
>> >>>> >         String xml =
>> >>>> >
>> >>>>
>> IOUtils.toString(getClass().getResourceAsStream("/de/materne/camel/
>> >>>> tes
>> >>>> > t/xml/
>> >>>> > complex/validNewsfeed.xml"));
>> >>>> >         sendBody("direct:in", xml);
>> >>>> >
>> >>>> >         // 'execute' all tests
>> >>>> >         assertMockEndpointsSatisfied();
>> >>>> >     }
>> >>>> >
>> >>>> >
>> >>>> >     @Test
>> >>>> >     public void invalidXml() throws Exception {
>> >>>> >         valid.expectedMessageCount(0);
>> >>>> >         validationError.expectedMessageCount(1);
>> >>>> >
>> >>>> >         String xml = "<xml/>";
>> >>>> >         sendBody("direct:in", xml);
>> >>>> >
>> >>>> >         assertMockEndpointsSatisfied();
>> >>>> >     }
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> >     @Override
>> >>>> >     protected RouteBuilder createRouteBuilder() throws Exception
>> {
>> >>>> >         return new RouteBuilder() {
>> >>>> >             @Override
>> >>>> >             public void configure() throws Exception {
>> >>>> >                 // Our XML uses namespaces, so we have to deal
>> >>>> > with
>> >>>> that.
>> >>>> >                 Namespaces ns = new Namespaces("news",
>> >>>> > "http://www.materne.de/camel/test/xml/complex/";);
>> >>>> >
>> >>>> >                 // XSD-invalid data goes to this endpoint
>> >>>> >                 onException(ValidationException.class)
>> >>>> >                     .to("mock:validationError");
>> >>>> >
>> >>>> >                 from("direct:in")
>> >>>> >                     // XSD-validation
>> >>>> >
>> >>>> > .to("validator:de/materne/camel/test/xml/complex/newsfeed.xsd")
>> >>>> >
>> >>>> >                     // Store newsfeed data in the header before
>> >>>> split,
>> >>>> > so we haven't to do that on each
>> >>>> >                     // splittet news-message.
>> >>>> >                     .setHeader("newsfeed.date",
>> >>>> > ns.xpath("/news:Newsletter/@date";, String.class))
>> >>>> >
>> >>>> >                     // http://camel.apache.org/splitter.html
>> >>>> >                     // xtokenize() is available since Camel
>> 2.14.
>> >>>> >                     // Use the 'wrap'-mode so we keep the
>> >>>> > Newsletter-
>> >>>> Header
>> >>>> >                     .split().xtokenize("/news:Newsletter/News";,
>> >>>> > 'w',
>> >>>> > ns)
>> >>>> >
>> >>>> >                     // Workaround of a bug?? in
>> >>>> XMLTokenizerExpression
>> >>>> >
>> >>>> > .setBody(simple("${body.replace('</</news:Newsletter>',
>> >>>> > '</news:Newsletter>')}"))
>> >>>> >
>> >>>> > .setBody(simple("${body.replace('<</news:Newsletter>',
>> >>>> > '</news:Newsletter>')}"))
>> >>>> >
>> >>>> >                     // Get some data from the splittet news
>> >>>> >                     .setHeader("news.date",
>> >>>> > ns.xpath("/news:Newsletter/News/@date";, String.class))
>> >>>> >                     .setHeader("news.author",
>> >>>> > ns.xpath("/news:Newsletter//News/@author";, String.class))
>> >>>> >
>> >>>> >                     .to("mock:valid");
>> >>>> >             }
>> >>>> >         };
>> >>>> >     }
>> >>>> >
>> >>>> > }
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > <?xml version="1.0" encoding="UTF-8"?> <schema
>> >>>> >         xmlns="http://www.w3.org/2001/XMLSchema";
>> >>>> >
>> xmlns:news="http://www.materne.de/camel/test/xml/complex/";
>> >>>> >
>> >>>> > targetNamespace="http://www.materne.de/camel/test/xml/complex/";>
>> >>>> >
>> >>>> >         <element name="Newsletter">
>> >>>> >             <complexType>
>> >>>> >                 <sequence>
>> >>>> >                         <element name="News" minOccurs="1"
>> >>>> > maxOccurs="unbounded">
>> >>>> >                                         <complexType>
>> >>>> >                                                 <simpleContent>
>> >>>> >
>> >>>> > <extension base="string">
>> >>>> >
>> >>>> > <attribute name="date" type="string"/>
>> >>>> >
>> >>>> > <attribute name="author" type="string"/>
>> >>>> >
>> </extension>
>> >>>> >                                                 </simpleContent>
>> >>>> >                                         </complexType>
>> >>>> >                         </element>
>> >>>> >                 </sequence>
>> >>>> >                 <attribute name="date" type="string"/>
>> >>>> >             </complexType>
>> >>>> >         </element>
>> >>>> >
>> >>>> > </schema>
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > <news:Newsletter
>> >>>> >
>> >>>> xmlns:news="http://www.materne.de/camel/test/xml/complex/";
>> >>>> >                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-
>> instance"
>> >>>> >
>> >>>> >
>> xsi:schemaLocation="http://www.materne.de/camel/test/xml/complex/
>> >>>> > newsfeed.xsd "
>> >>>> >                 date="2014.12.09 14:15">
>> >>>> >         <News date="2014.12.09 14:15" author="Jan">
>> >>>> >                 Here is a demo news.
>> >>>> >         </News>
>> >>>> >         <News date="2014.12.09 14:13" author="Jan">
>> >>>> >                 Second news paragraph.
>> >>>> >         </News>
>> >>>> > </news:Newsletter>
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> >> -----Ursprüngliche Nachricht-----
>> >>>> >> Von: smilevasu6 [mailto:srinivas.thu...@gmail.com]
>> >>>> >> Gesendet: Dienstag, 9. Dezember 2014 15:12
>> >>>> >> An: users@camel.apache.org
>> >>>> >> Betreff: Re: AW: camel - xsd
>> >>>> >>
>> >>>> >> Don't mind can you give me sample code instead of link
>> >>>> >>
>> >>>> >>
>> >>>> >>
>> >>>> >> --
>> >>>> >> View this message in context:
>> >>>> >> http://camel.465427.n5.nabble.com/camel-
>> >>>> >> xsd-tp5760376p5760396.html
>> >>>> >> Sent from the Camel - Users mailing list archive at Nabble.com.
>> >>>> >
>> >>>
>

Reply via email to