<?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:p="http://cxf.apache.org/policy"
       xmlns:wsp="http://www.w3.org/ns/ws-policy"
       xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
       xmlns:http="http://cxf.apache.org/transports/http/configuration"
       xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
       xsi:schemaLocation="
       http://cxf.apache.org/policy http://cxf.apache.org/schemas/policy.xsd
       http://www.w3.org/ns/ws-policy http://www.w3.org/2007/02/ws-policy.xsd
       http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
       http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="intentMap" class="org.apache.cxf.dosgi.dsw.qos.IntentMap">
       <property name="intents">
         <map>
           <entry key="reliability" value-ref="reliableMessaging"/>
           <entry key="decoupled" value-ref="decoupledAddressing"/>
         </map>
       </property>
    </bean>

    <p:policies id="reliableMessaging">
        <wsp:PolicyReference URI="#ReliabilityPolicy"/>
        <wsp:PolicyReference URI="#DecoupledPolicy"/>
        <wsp:PolicyReference URI="#AddressingPolicy"/>
    </p:policies>

    <p:policies id="decoupledAddressing">
        <wsp:PolicyReference URI="#DecoupledPolicy"/>
        <wsp:PolicyReference URI="#AddressingPolicy"/>
    </p:policies>

    <wsp:Policy wsu:Id="ReliabilityPolicy">
        <wsrm-policy:RMAssertion>
            <wsrm-policy:BaseRetransmissionInterval Milliseconds="4000"/>
            <wsrm-policy:AcknowledgementInterval Milliseconds="2000" />
        </wsrm-policy:RMAssertion>
    </wsp:Policy>

    <wsp:Policy wsu:Id="DecoupledPolicy">
        <wsp:ExactlyOne>
            <http:client DecoupledEndpoint="http://localhost:9970/decoupled_endpoint"/>
        </wsp:ExactlyOne>
    </wsp:Policy>

    <wsp:Policy wsu:Id="AddressingPolicy"
        xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata">
        <wsam:Addressing>
            <wsp:Policy />
        </wsam:Addressing>
    </wsp:Policy>

</beans>
