<!--
  ~  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.
  -->

<synapse xmlns="http://ws.apache.org/ns/synapse">

    <!-- Connecting to endpoints with WS-Security for outgoing messages -->
    <definitions>
    		<set-property name="sec_policy" src="file:repository/conf/sample/resources/policy/policy_3.xml"/>
    		
        <endpoint name="secure" address="http://localhost:9000/axis2/services/SecureStockQuoteService3">
        	<enableSec policy="sec_policy"/>
        	<enableAddressing/>
        </endpoint>
    </definitions>

    <rules>
    	<in>
    		<header name="To" value="http://localhost:9000/axis2/services/SecureStockQuoteService3"/>
        <send>
        	<endpoint ref="secure"/>
        </send>
      </in>
      <out>
	      <header name="wsse:Security" action="remove"
                    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/>
      	<send/>
      </out>
    </rules>

</synapse> 