Hi Yeah we should likely improve the code to cater for when people use custom data formats. Surely most needed for json, as jaxb is well just jaxb using camel-jaxb.
The naming should likely just be "json" "json-out" "xml" "xml-out" so in is implied, eg so you only use -out if you really need to configure it differently. On Mon, Sep 29, 2014 at 4:36 PM, Babak Vahdat <babak.vah...@swissonline.ch> wrote: > Yeah I see your point. BTW the same shortcoming is also given for the case > where binding is XML and not Json, which's the JAXB dataformat being > currently supported. So I guess in cases likes yours we need to > differentiate the DataFormats for the incomming/outgoing playloads, let’s > say something like: > > "json-in" > "json-out" > "xml-in" > "xml-out" > > @Claus how to you see this? Does this make sense to you? > > Babak > > sohrab wrote >> Thanks for the explanation, Babak. >> >> I think I see a flaw with this which will break anytime someone uses a >> custom DataFormat in REST DSL. >> >> Say I define a custom JacksonDataFormat in the registry (quite a >> common thing to do especially if you want to enable/disable config on >> ObjectMapper) and point to it in RestConfiguration.jsonDataFormat. >> >> As you said if it's not the default "json-jackson", those two lines >> will return the same object which will then get configured twice, with >> "outJson" config blowing away any config "json" made previously. >> >> I just replicated this with a small example where REST DSL will reject >> incoming request if it doesn't have the response structure(!). Should >> I raise this in JIRA? >> >> On Mon, Sep 29, 2014 at 8:33 PM, Babak Vahdat [via Camel] >> < > >> ml-node+s465427n5757186h47@.nabble > >> > wrote: >>> Hi, >>> >>> The "json" and "outJson" variables you mentioned will *not* resolve to >>> the >>> same Java object (because of Camel Injector being invoked here behind the >>> scenes while resolving), well almost always ... depending if e.g. an >>> object >>> under the name "json-jackson" is already bound to the Camel registery >>> which >>> isn't really typical. The following code snippet should make both cases >>> clear to you: >>> >>> CamelContext context = new DefaultCamelContext(); >>> >>> DataFormat first = context.resolveDataFormat("json-jackson"); >>> DataFormat second = context.resolveDataFormat("json-jackson"); >>> >>> System.out.println(first != second); // true >>> >>> JndiRegistry registry = new JndiRegistry(); >>> registry.bind("json-jackson", new >>> org.apache.camel.component.jackson.JacksonDataFormat()); >>> ((DefaultCamelContext) context).setRegistry(registry); >>> >>> DataFormat third = context.resolveDataFormat("json-jackson"); >>> DataFormat fourth = context.resolveDataFormat("json-jackson"); >>> >>> System.out.println(third == fourth); // true >>> >>> System.out.println(third != first); // true >>> System.out.println(fourth != first); // true >>> >>> If interested, looking into the different implementations of Camel’s >>> DataFormatResolver should clarify this to you, specially the >>> DefaultDataFormatResolver one. >>> >>> Babak >>> >>> sohrab wrote >>> I was just looking through the latest code for >>> org.apache.camel.model.rest.RestBindingDefinition and I am not quite sure >>> how this works so I'd appreciate if someone can explain it to me. >>> >>> createProcessor() method looks up both JSON data formats using the same >>> name: >>> >>> DataFormat json = context.resolveDataFormat(name); >>> DataFormat outJson = context.resolveDataFormat(name); >>> >>> And further down, it sets the properties for "json" and then "outJson". >>> Now >>> I am wondering if that name resolves to the same DataFormat object >>> (especially when you have RestConfiguration.jsonDataFormat set), what >>> stops >>> setting "outJson" properties, such as unmarshalType, not overriding the >>> properties we just set for "json"? >>> >>> >>> >>> ________________________________ >>> If you reply to this email, your message will be added to the discussion >>> below: >>> http://camel.465427.n5.nabble.com/RestBindingProcessor-JSON-Data-Format-Config-tp5757103p5757186.html >>> To unsubscribe from RestBindingProcessor JSON Data Format Config, click >>> here. >>> NAML > > > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/RestBindingProcessor-JSON-Data-Format-Config-tp5757103p5757201.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- Red Hat, Inc. Email: cib...@redhat.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen hawtio: http://hawt.io/ fabric8: http://fabric8.io/