<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

        <!-- we define the yaml SnakeYAML data formats to be used -->
        <dataFormats>
            <yaml id="yaml"
                  library="SnakeYAML"/>

            <yaml id="yaml-pojo"
                  library="SnakeYAML"
                  unmarshalTypeName="org.apache.camel.component.snakeyaml.model.TestPojo"/>

            <yaml id="yaml-pojo-pretty-flow"
                  library="SnakeYAML"
                  unmarshalTypeName="org.apache.camel.component.snakeyaml.model.TestPojo"
                  prettyFlow="true"/>
        </dataFormats>


        <route>
            <from uri="direct:in"/>
            <marshal><custom ref="yaml"/></marshal>
        </route>

        <route>
            <from uri="direct:back"/>
            <unmarshal><custom ref="yaml"/></unmarshal>
            <to uri="mock:reverse"/>
        </route>

        <route>
            <from uri="direct:inPojo"/>
            <marshal><custom ref="yaml-pojo"/></marshal>
        </route>

        <route>
            <from uri="direct:backPojo"/>
            <unmarshal><custom ref="yaml-pojo"/></unmarshal>
            <to uri="mock:reversePojo"/>
        </route>

        <route>
            <from uri="direct:inPojoWithPrettyFlow"/>
            <marshal><custom ref="yaml-pojo-pretty-flow"/></marshal>
        </route>

        <route>
            <from uri="direct:backPojoWithPrettyFlow"/>
            <unmarshal><custom ref="yaml-pojo-pretty-flow"/></unmarshal>
            <to uri="mock:reversePojoWithPrettyFlow"/>
        </route>

    </camelContext>
</beans>
