<?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:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xmlns="http://www.springframework.org/schema/beans"
       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
    ">

    <camel:sslContextParameters id="sslContextParameters">
        <camel:keyManagers keyPassword="password">
            <camel:keyStore resource="ssl/keystore.jks" password="password"/>
        </camel:keyManagers>
        <camel:trustManagers>
            <camel:keyStore resource="ssl/keystore.jks" password="password"/>
        </camel:trustManagers>
    </camel:sslContextParameters>

    <bean id="dynaPort" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetClass">
            <value>org.apache.camel.test.AvailablePortFinder</value>
        </property>
        <property name="targetMethod">
            <value>getNextAvailable</value>
        </property>
        <property name="arguments">
            <list>
                <value>8800</value>
            </list>
        </property>
    </bean>

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
        <endpoint id="input" uri="undertow:https://localhost:#{dynaPort}/spring?sslContextParameters=#sslContextParameters"/>

        <route>
            <from ref="input"/>
            <to uri="mock:input"/>
            <transform>
                <simple>Bye World</simple>
            </transform>
        </route>

    </camelContext>

</beans>
