<?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.
-->

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:camel="http://camel.apache.org/schema/blueprint"
           xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf">
  
  <bean id="customerService" class="org.apache.camel.itest.osgi.cxf.jaxrs.testbean.CustomerService" />
   
  <!-- Defined the server endpoint to create the cxf-rs consumer --> 
  <camelcxf:rsServer id="rsServer" address="http://localhost:9000/route"
    serviceClass="org.apache.camel.itest.osgi.cxf.jaxrs.testbean.CustomerService">
     <camelcxf:features>
         <bean class="org.apache.cxf.feature.LoggingFeature"/>
     </camelcxf:features> 
  </camelcxf:rsServer>

  <!-- Defined the client endpoint to create the cxf-rs consumer -->
  <camelcxf:rsClient id="rsClient" address="http://localhost:9002/rest"
    serviceClass="org.apache.camel.itest.osgi.cxf.jaxrs.testbean.CustomerService">
    <camelcxf:features>
         <bean class="org.apache.cxf.feature.LoggingFeature"/>
     </camelcxf:features> 
  </camelcxf:rsClient>
  
  <!-- The camel route context -->
  <camel:camelContext>
    <camel:route>
       <camel:from uri="cxfrs://bean://rsServer"/>
       <!-- We can remove this configure as the CXFRS producer is using the HttpAPI by default -->
       <camel:setHeader headerName="CamelCxfRsUsingHttpAPI">
         <camel:constant>True</camel:constant>        
       </camel:setHeader>
       <camel:to uri="cxfrs://bean://rsClient"/>
    </camel:route>
  </camel:camelContext>
  
</blueprint>

