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&amp;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.

Reply via email to