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