<?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:sm="http://servicemix.apache.org/config/1.0"
       xmlns:foo="http://servicemix.org/cheese/"
       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://servicemix.apache.org/config/1.0 http://servicemix.apache.org/schema/servicemix-core-${project.version}.xsd">

    <!-- the JBI container -->
    <sm:container id="jbi" embedded="true">
        <sm:activationSpecs>

            <!-- START SNIPPET: send -->
            <sm:activationSpec componentName="fileSender" service="foo:fileSender">
                <sm:component>
                    <bean class="org.apache.servicemix.components.vfs.FileWriter">
                        <property name="path" value="file:/tmp/servicemix/vfs/test"/>

                        <property name="marshaler">
                            <bean class="org.apache.servicemix.components.util.DefaultFileMarshaler">
                                <property name="fileName">
                                    <bean class="org.apache.servicemix.expression.JaxenStringXPathExpression">
                                        <constructor-arg value="concat('sample_', /sample/@id, '.xml')"/>
                                    </bean>
                                </property>
                            </bean>
                        </property>
                    </bean>
                </sm:component>
            </sm:activationSpec>
            <!-- END SNIPPET: send -->

            <!-- START SNIPPET: poll -->
            <sm:activationSpec componentName="filePoller" service="foo:filePoller" destinationService="foo:receiver">
                <sm:component>
                    <bean class="org.apache.servicemix.components.vfs.FilePoller">
                        <property name="workManager" ref="workManager"/>
                        <property name="path" value="file:/tmp/servicemix/vfs/test"/>
                        <property name="period" value="1000"/>
                    </bean>
                </sm:component>
            </sm:activationSpec>
            <!-- END SNIPPET: poll -->

            <sm:activationSpec componentName="receiver" service="foo:receiver" endpoint="receiver">
                <sm:component>
                    <bean class="org.apache.servicemix.tck.ReceiverComponent"/>
                </sm:component>
            </sm:activationSpec>
        </sm:activationSpecs>
    </sm:container>

    <bean id="client" class="org.apache.servicemix.client.DefaultServiceMixClient">
        <constructor-arg ref="jbi"/>
    </bean>

    <bean id="workManager" class="org.jencks.factory.WorkManagerFactoryBean"/>

</beans>
