<?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"
	xmlns:cxf="http://camel.apache.org/schema/cxf" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
	xmlns:cxfcore="http://cxf.apache.org/core"
	xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration" xmlns:sec="http://cxf.apache.org/configuration/security"
	xmlns:http="http://cxf.apache.org/transports/http/configuration" xsi:schemaLocation="
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
	http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
	http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd http://camel.apache.org/schema/spring
	http://camel.apache.org/schema/spring/camel-spring.xsd http://cxf.apache.org/transports/http-jetty/configuration
	http://cxf.apache.org/schemas/configuration/http-jetty.xsd http://cxf.apache.org/configuration/security
	http://cxf.apache.org/schemas/configuration/security.xsd http://cxf.apache.org/transports/http/configuration
	http://cxf.apache.org/schemas/configuration/http-conf.xsd 
	http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">
	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
    
	<jaxrs:server id="restService" address="https://localhost:${mySecurePort}/CxfRsProducerTest/"
		staticSubresourceResolution="true">
		<jaxrs:serviceBeans>
			<ref bean="customerService"/>
		</jaxrs:serviceBeans>
	</jaxrs:server>

	<bean id="customerService" class="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"/>
	
	<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
		<route>
			<from uri="direct://http"/>
			<recipientList>
			    <!-- need to pass the spring http conduit setting the CxfProducer, as we don't create a default bus for the CxfRsEndpoint anymore -->
				<simple>cxfrs://https://localhost:${header.clientPort}/CxfRsProducerTest/?bus=#cxf</simple>
			</recipientList>
		</route>
	</camelContext>

	<httpj:engine-factory id="tls-config" >
		<httpj:engine port="${mySecurePort}">
			<httpj:tlsServerParameters>
				<sec:keyManagers keyPassword="password">
					<sec:keyStore type="JKS" password="password"  file="src/test/resources/org/apache/camel/component/cxf/jaxrs/Bethal.jks"/>
				</sec:keyManagers>
				<sec:trustManagers>
					<sec:keyStore type="JKS" password="password" file="src/test/resources/org/apache/camel/component/cxf/jaxrs/Truststore.jks"/>
				</sec:trustManagers>
			</httpj:tlsServerParameters>
		</httpj:engine>
	</httpj:engine-factory>

	<http:conduit name="*.http-conduit">
		<http:client ConnectionTimeout="3000000" ReceiveTimeout="3000000"/>
		<http:tlsClientParameters disableCNCheck="true">
			<sec:keyManagers keyPassword="password">
				<sec:keyStore type="JKS" password="password"  file="src/test/resources/org/apache/camel/component/cxf/jaxrs/Morpit.jks"/>
			</sec:keyManagers>
			<sec:trustManagers>
				<sec:keyStore type="JKS" password="password" file="src/test/resources/org/apache/camel/component/cxf/jaxrs/Truststore.jks"/>
			</sec:trustManagers>
		</http:tlsClientParameters>
	</http:conduit>

</beans>
