I’d like to repoduce with XML the expression from Java DSL like this:
from("direct:a") .split(body(String.class).tokenize("n")) .to("direct:b");
When I try to set up , consisting of two elements, and like that:
<split><tokenize token="#@#"><simple>${bodyAs(java.lang.String)} not contains ''</simple></tokenize></split>
Or like that:
<split><simple>${bodyAs(java.lang.String)} not contains ''</simple><tokenize token="#@#"></tokenize><split>
it doesn’t allow to validate the XML with the scheme:
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 488; cvc-complex-type.2.2: Element 'tokenize' must have no element [children], and the value must be valid.
and
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 475; cvc-complex-type.2.4.a: Invalid content was found starting with element 'tokenize'. One of '{"http://camel.apache.org/schema/spring":aggregate, "http://camel.apache.org/schema/spring":bean, "http://camel.apache.org/schema/spring":doCatch, "http://camel.apache.org/schema/spring":when, "http://camel.apache.org/schema/spring":choice, "http://camel.apache.org/schema/spring":otherwise, "http://camel.apache.org/schema/spring":circuitBreaker, "http://camel.apache.org/schema/spring":claimCheck, "http://camel.apache.org/schema/spring":convertBodyTo, "http://camel.apache.org/schema/spring":delay, "http://camel.apache.org/schema/spring":dynamicRouter, "http://camel.apache.org/schema/spring":enrich, "http://camel.apache.org/schema/spring":filter, "http://camel.apache.org/schema/spring":doFinally, "http://camel.apache.org/schema/spring":idempotentConsumer, "http://camel.apache.org/schema/spring":inOnly, "http://camel.apache.org/schema/spring":inOut, "http://camel.apache.org/schema/spring":intercept, "http://camel.apache.org/schema/spring":interceptFrom, "http://camel.apache.org/schema/spring":interceptSendToEndpoint, "http://camel.apache.org/schema/spring":loadBalance, "http://camel.apache.org/schema/spring":log, "http://camel.apache.org/schema/spring":loop, "http://camel.apache.org/schema/spring":marshal, "http://camel.apache.org/schema/spring":multicast, "http://camel.apache.org/schema/spring":onCompletion, "http://camel.apache.org/schema/spring":onException, "http://camel.apache.org/schema/spring":onFallback, "http://camel.apache.org/schema/spring":pipeline, "http://camel.apache.org/schema/spring":policy, "http://camel.apache.org/schema/spring":pollEnrich, "http://camel.apache.org/schema/spring":process, "http://camel.apache.org/schema/spring":recipientList, "http://camel.apache.org/schema/spring":removeHeader, "http://camel.apache.org/schema/spring":removeHeaders, "http://camel.apache.org/schema/spring":removeProperties, "http://camel.apache.org/schema/spring":removeProperty, "http://camel.apache.org/schema/spring":resequence, "http://camel.apache.org/schema/spring":rollback, "http://camel.apache.org/schema/spring":route, "http://camel.apache.org/schema/spring":routingSlip, "http://camel.apache.org/schema/spring":saga, "http://camel.apache.org/schema/spring":sample, "http://camel.apache.org/schema/spring":script, "http://camel.apache.org/schema/spring":setBody, "http://camel.apache.org/schema/spring":setExchangePattern, "http://camel.apache.org/schema/spring":setHeader, "http://camel.apache.org/schema/spring":setProperty, "http://camel.apache.org/schema/spring":sort, "http://camel.apache.org/schema/spring":split, "http://camel.apache.org/schema/spring":step, "http://camel.apache.org/schema/spring":stop, "http://camel.apache.org/schema/spring":threads, "http://camel.apache.org/schema/spring":throttle, "http://camel.apache.org/schema/spring":throwException, "http://camel.apache.org/schema/spring":to, "http://camel.apache.org/schema/spring":toD, "http://camel.apache.org/schema/spring":transacted, "http://camel.apache.org/schema/spring":transform, "http://camel.apache.org/schema/spring":doTry, "http://camel.apache.org/schema/spring":unmarshal, "http://camel.apache.org/schema/spring":validate, "http://camel.apache.org/schema/spring":whenSkipSendToEndpoint, "http://camel.apache.org/schema/spring":wireTap, "http://camel.apache.org/schema/spring":serviceCall}' is expected.
So, it is impossible to put simple and tokenize together in XML, so how to do that?
Advertisement
Answer
Surprisingly, it worked for
<split><tokenize token="#@#">${bodyAs(java.lang.String)} contains '#@#'</tokenize></split>
i.e. <tokenize/>
can have a body that is interpreted the same way as <simple/>