Try converting the body to a String first (since it looks like it's a byte[]), then log just the body.
On Fri, Oct 11, 2013 at 2:19 PM, erj2code <p...@tetraconcepts.com> wrote: > This seems like such a simple thing to do, yet I can't seem to find it in the > Camel documentation. > > Related to my last question i.e., > http://camel.465427.n5.nabble.com/Get-BeanCreationException-when-try-to-add-Jackson-Library-to-my-applicationContext-xml-td5741314.html > I now have my code putting the JMS logging response messages into JSON > format. > > Here's what I currently get when I run my code: > > 23118 [hello.world.request.timer] INFO hello.world.request - > Exchange[Id:e93861e4- a5be-4d63-b658-5939f414e595, > ExchangePattern:InOnly, Properties: > {CamelToEndpoint=log://hello.world.request?showAll=true, > CamelTimerFiredTime=Fri Oct 11 12:03:20 EDT 2013, > CamelTimerPeriod=10000, CamelTimerName=hello.world.request.timer}, > Headers:{firedTime=Fri Oct 11 12:03:20 EDT 2013}, BodyType:null, Body:null, > Out: null] > > Returning Map > key= fruit1DataType, value= String > key= fruit1, value= apple > key= fruit1Calories, value= 95 > key= fruit1ColorDataType, value= String > key= fruit1CaloriesDataType, value= int > key= fruit1Color, value= red > 23122 [hello.world.request.timer] INFO hello.world.response - > Exchange[Id:e93861e4- a5be-4d63-b658-5939f414e595, > ExchangePattern:InOnly, Properties: > {CamelToEndpoint=log://hello.world.response?showAll=true, > CamelTimerFiredTime=Fri Oct 11 12:03:20 EDT 2013, > CamelTimerPeriod=10000, CamelTimerName=hello.world.request.timer}, > Headers:{firedTime=Fri Oct 11 12:03:20 EDT 2013}, BodyType:byte[], Body: > {"fruit1DataType":"String","fruit1":"apple","fruit1Calories":"95","fruit1ColorDataType":"St > ring","fruit1CaloriesDataType":"int","fruit1Color":"red"}, Out: null] > > > Ideally I'd just like to have Camel convert the contents of the map returned > to JSON and print it to the console like this: > > > > {"fruit1DataType":"String","fruit1":"apple","fruit1Calories":"95","fruit1ColorDataType":"String","fruit1CaloriesDataType":"int","fruit1Color":"red"}, > Out: null] > > How do I modify my applicationContext.xml to have Camel do this? > > I think I need a Camel JSON endpoint in route to serialize my map to JSON. > I found this JSON FAQ: > http://camel.apache.org/how-do-i-configure-endpoints.html but its not clear > to me how I would adapt this to serialize my map to JSON. > > Here's my current applicationContext.xml: > > <?xml version="1.0" encoding="UTF-8"?> > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:camel="http://camel.apache.org/schema/spring" > xmlns:context="http://www.springframework.org/schema/context" > xmlns:util="http://www.springframework.org/schema/util" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-3.0.xsd > http://www.springframework.org/schema/util > http://www.springframework.org/schema/util/spring-util-3.0.xsd > http://camel.apache.org/schema/spring > http://camel.apache.org/schema/spring/camel-spring.xsd > http://www.springframework.org/schema/context > http://www.springframework.org/schema/context/spring-context.xsd"> > > <bean > > class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" > /> > <context:component-scan base-package="sample" /> > <context:annotation-config /> > > <camel:camelContext id="HelloWorldContext"> > > > <camel:dataFormats> > <camel:json id="jack" library="Jackson"/> > </camel:dataFormats> > > <camel:route> > > <camel:from > > uri="timer://hello.world.request.timer?fixedRate=true&period=10000" /> > <camel:to > uri="log:hello.world.request?level=INFO?showAll=true" /> > <camel:bean ref="helloWorld" /> > > > <camel:marshal ref ="jack"/> > <camel:to > uri="log:hello.world.response?level=INFO?showAll=true" /> > </camel:route> > > </camel:camelContext> > > <bean id="jms" > class="org.apache.activemq.camel.component.ActiveMQComponent"> > <property name="configuration" ref="jmsConfig" /> > </bean> > > <bean id="jmsConfig" > class="org.apache.camel.component.jms.JmsConfiguration"> > <property name="connectionFactory" ref="jmsConnectionFactory" /> > <property name="transacted" value="false" /> > <property name="concurrentConsumers" value="1" /> > </bean> > > <bean id="jmsConnectionFactory" > class="org.apache.activemq.ActiveMQConnectionFactory"> > <property name="brokerURL" value="vm://localhost" /> > <property name="redeliveryPolicy" ref="redeliveryPolicy" /> > <property name="prefetchPolicy" ref="prefetchPolicy" /> > </bean> > > <bean id="prefetchPolicy" > class="org.apache.activemq.ActiveMQPrefetchPolicy"> > <property name="queuePrefetch" value="5" /> > </bean> > > <bean id="redeliveryPolicy" > class="org.apache.activemq.RedeliveryPolicy"> > <property name="maximumRedeliveries" value="1" /> > <property name="backOffMultiplier" value="2" /> > <property name="initialRedeliveryDelay" value="2000" /> > </bean> > > </beans> > > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/How-do-I-convert-the-map-returned-to-Camel-into-JSON-tp5741370.html > Sent from the Camel - Users mailing list archive at Nabble.com.