Hi

I just had a peek once again.
JAXB is still limited in how much you can customize it.

The only way so far I have found for optional expressions is to add to
SendDefinition:

    @XmlElementRef
    private List<ExpressionDefinition> expression;

I have to use a List as JAXB will generate a XSD (see below)
So there is a choice with a minOccurs="0". The problem is that
maxOccurs is unbounded.
And I cannot set a limitation, to 1 or any other value.

In the XML DSL I can now do

    <route>
      <from uri="direct:start"/>
      <convertBodyTo type="java.lang.Integer"/>
      <to uri="mock:result"/>
      <to>
        <simple>seda:${header.foo}</simple>
      </to>
    </route>




 <xs:complexType name="sendDefinition" abstract="true">
    <xs:complexContent>
      <xs:extension base="tns:noOutputDefinition">
        <xs:sequence>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="tns:expressionDefinition"/>
            <xs:element ref="tns:constant"/>
            <xs:element ref="tns:el"/>
            <xs:element ref="tns:groovy"/>
            <xs:element ref="tns:header"/>
            <xs:element ref="tns:jxpath"/>
            <xs:element ref="tns:javaScript"/>
            <xs:element ref="tns:language"/>
            <xs:element ref="tns:method"/>
            <xs:element ref="tns:mvel"/>
            <xs:element ref="tns:ognl"/>
            <xs:element ref="tns:php"/>
            <xs:element ref="tns:property"/>
            <xs:element ref="tns:python"/>
            <xs:element ref="tns:ref"/>
            <xs:element ref="tns:ruby"/>
            <xs:element ref="tns:simple"/>
            <xs:element ref="tns:spel"/>
            <xs:element ref="tns:sql"/>
            <xs:element ref="tns:tokenize"/>
            <xs:element ref="tns:xpath"/>
            <xs:element ref="tns:xquery"/>
          </xs:choice>
        </xs:sequence>
        <xs:attribute name="uri" type="xs:string"/>
        <xs:attribute name="ref" type="xs:string"/>
        <xs:anyAttribute namespace="##other" processContents="skip"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>


On Thu, Jul 28, 2011 at 2:12 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> Hi
>
> Its fairly common for end users of Camel to send a message to an
> endpoint by which the uri is dynamic.
>
> We have a FAQ for that.
> http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html
>
> However you would need to use the recipient list EIP to support that.
>
> Ben O'Day recently created a ticket to improved this, and on the @user
> a person is asking for this as well.
> https://issues.apache.org/jira/browse/CAMEL-4226
>
> We may want to try to take a stab at improving this. The problem would
> be to keep being backwards compatible. And at the same time support
> passing in expressions for a to in the DSL. Likewise the DSL may get
> big as we would need to add more methods to the model so you can use
> the expressions.
>
> The bigger problem is JAXB being a bit of an *** in terms of
> flexibility of the generated schema. I remember looking at this years
> ago and it wasn't easy to have JAXB generate a XSD where the
> expression would be optional. There was no good way of specifying this
> in the JAXB annotation in the model class.
>
> But since this could be a good improvement we may want to tamper with
> a special support on ToDefinition to force JAXB to see the expression
> as being optional.
>
>
> With this you could write
>
> from X
>   to (simple("xxxx:${header.bar}"))
>
>
> And in XML
>
> <from uri="X"/>
> <to><simple>xxx:${header.bar}</simple></to>
>
> Simple is just one of the many expressions you can use.
>
>
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cib...@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to