<module name="rampart" class="org.apache.rampart.Rampart">

    <Description>This module provides the WS-Security and WS-SecureConversation 
    functionalities for Axis2, based on Apache WSS4J, Apache XML-Security 
    and Apache Rahas implementations.
	</Description>
	    
    <InFlow>
        <handler name="PolicyBasedSecurityInHandler" class="org.apache.rampart.handler.RampartReceiver">
            <order phase="Security" phaseFirst="true"/>
        </handler>
        <handler name="PostDispatchVerificationHandler" class="org.apache.rampart.handler.PostDispatchVerificationHandler">
            <order phase="Dispatch" phaseLast="true"/>
        </handler>
        
    </InFlow>

    <OutFlow>
        <handler name="PolicyBasedSecurityOutHandler" class="org.apache.rampart.handler.RampartSender">
            <order phase="Security" phaseLast="true"/>
        </handler>
    </OutFlow>
    
    <OutFaultFlow>
        <handler name="PolicyBasedSecurityOutHandler" class="org.apache.rampart.handler.RampartSender">
            <order phase="Security" phaseLast="true"/>
        </handler>
    </OutFaultFlow>

    <InFaultFlow>
        <handler name="PolicyBasedSecurityInHandler" class="org.apache.rampart.handler.RampartReceiver">
            <order phase="Security" phaseFirst="true"/>
        </handler>
    </InFaultFlow>
    
    <supported-policy-namespaces namespaces="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"/>
    <local-policy-assertions>
    	<rampart:RampartConfig xmlns:rampart="http://ws.apache.org/rampart/policy" />
    </local-policy-assertions>
</module>
