<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright(C) OASIS(R) 2005,2009. All Rights Reserved. 
     OASIS trademark, IPR and other policies apply.  -->
<sca:definitions xmlns:xml="http://www.w3.org/XML/1998/namespace" 
    xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    targetNamespace="http://docs.oasis-open.org/ns/opencsa/sca/200903">
                 
	<!-- Security related intents -->                 
	<intent name="serverAuthentication" constrains="sca:binding" 
	    intentType="interaction">
		<description>
			Communication through the binding requires that the 
			server is authenticated by the client
		</description>
		<qualifier name="transport" default="true"/>
		<qualifier name="message"/>
	</intent>

	<intent name="clientAuthentication" constrains="sca:binding" 
	    intentType="interaction">
		<description>
			Communication through the binding requires that the 
			client is authenticated by the server
		</description>
		<qualifier name="transport" default="true"/>
		<qualifier name="message"/>
	</intent>

	<intent name="authentication" requires="clientAuthentication">
		<description>
			A convenience intent to help migration
		</description>
	</intent>

	<intent name="mutualAuthentication"
		requires="clientAuthentication serverAuthentication">
		<description>
			Communication through the binding requires that the
			client and server to authenticate each other
		</description>
	</intent>

	<intent name="confidentiality" constrains="sca:binding" 
	    intentType="interaction">
		<description>
			Communication through the binding prevents unauthorized 
			users from reading the messages
		</description>
		<qualifier name="transport" default="true"/>
		<qualifier name="message"/>	
	</intent>

	<intent name="integrity" constrains="sca:binding" 
	    intentType="interaction">
		<description>
			Communication through the binding prevents tampering 
			with the messages sent between the client and the service.
		</description>
		<qualifier name="transport" default="true"/>
		<qualifier name="message"/>
	</intent> 

	<intent name="authorization" constrains="sca:implementation" 
	    intentType="implementation">
		<description>
			Ensures clients are authorized to use services. 
		</description>
		<qualifier name="fineGrain" default="true"/>
	</intent>

	
	<!-- Reliable messaging related intents -->    
	<intent name="atLeastOnce" constrains="sca:binding" 
	    intentType="interaction">
		<description>
			This intent is used to indicate that a message sent
			by a client is always delivered to the component.
		</description>
	</intent>

	<intent name="atMostOnce" constrains="sca:binding" 
	    intentType="interaction">
		<description>
			This intent is used to indicate that a message that was 
			successfully sent by a client is not delivered more than 
			once to the component.
		</description>
	</intent>

	<intent name="exactlyOnce" requires="atLeastOnce atMostOnce" 
	    constrains="sca:binding" intentType="interaction">
		<description>
			This profile intent is used to indicate that a message sent 
			by a client is always delivered to the component. It also 
			indicates that duplicate messages are not delivered to the 
			component.
	    </description>
	</intent>	           

	<intent name="ordered" appliesTo="sca:binding" 
	    intentType="interaction">
		<description>
			This intent is used to indicate that all the messages are 
			delivered to the component in the order they were sent by 
			the client.
		</description>
	</intent>
	
	<!-- Transaction related intents -->
	<intent name="managedTransaction" excludes="sca:noManagedTransaction" 
	    mutuallyExclusive="true" constrains="sca:implementation" 
	    intentType="implementation">
		<description>
		A managed transaction environment is necessary in order to 
		run the component. The specific type of managed transaction 
		needed is not constrained.
		</description>
		<qualifier name="global" default="true">
			<description>
			For a component marked with managedTransaction.global 
			a global transaction needs to be present before dispatching 
			any method on the component - using any transaction 
			propagated from the client or else beginning and completing 
			a new transaction. 
			</description>
		</qualifier>
		<qualifier name="local">
			<description>
			A component marked with managedTransaction.local needs to 
			run within a local transaction containment (LTC) that 
			is started and ended by the SCA runtime.
			</description>
		</qualifier>		
	</intent>

	<intent name="noManagedTransaction" excludes="sca:managedTransaction" 
	    constrains="sca:implementation" intentType="implementation">
		<description>
		A component marked with noManagedTransaction needs to run without 
		a managed transaction, under neither a global transaction nor 
		an LTC. A transaction propagated to the hosting SCA runtime 
		is not joined by the hosting runtime on behalf of a 
		component marked with noManagedtransaction.
		</description>
	</intent>

	<intent name="transactedOneWay" excludes="sca:immediateOneWay" 
	    constrains="sca:binding" intentType="implementation">
		<description>
		For a reference marked as transactedOneWay any OneWay invocation 
		messages are transacted as part of a client global 
		transaction.
		For a service marked as transactedOneWay any OneWay invocation 
		message are received from the transport binding in a 
		transacted fashion, under the service’s global transaction.
		</description>
	</intent>

	<intent name="immediateOneWay" excludes="transactedOneWay" 
	    constrains="sca:binding" intentType="implementation">
		<description>
		For a reference indicates that any OneWay invocation messages 
		are sent immediately regardless of any client transaction.
		For a service indicates that any OneWay invocation is 
		received immediately regardless of any target service 
		transaction.
		</description>
	</intent>

	<intent name="propagatesTransaction" excludes="suspendsTransaction" 
	    constrains="sca:binding" intentType="interaction">
		<description>
		A service marked with propagatesTransaction is dispatched 
		under any propagated (client) transaction and the service binding 
		needs to be capable	of receiving a transaction context.
		A reference marked with propagatesTransaction propagates any 
		transaction context under which the client runs when the 
		reference is used for a request-response interaction and the 
		binding of a reference marked with propagatesTransaction needs to
		be capable of propagating a transaction context. 
		</description>
	</intent>

	<intent name="suspendsTransaction" excludes="propagatesTransaction" 
	    constrains="sca:binding" intentType="interaction">
		<description>
		A service marked with suspendsTransaction is not dispatched 
		under any propagated (client) transaction.
		A reference marked with suspendsTransaction does not propagate 
		any transaction context under which the client runs when the 
		reference is used.
		</description>
	</intent>
	
	<intent name="managedSharedTransaction" 
		requires="managedTransaction.global propagatesTransaction">
		<description>
			Used to indicate that the component requires both the 
			managedTransaction.global and the propagatesTransactions 
			intents
		</description>
	</intent>
	
	<!-- Miscellaneous intents -->	
	<intent name="asyncInvocation" constrains="sca:Binding" 
		intentType="interaction">
		<description>
			Indicates that request/response operations for the 
			interface of this wire are "long running" and must be
			treated as two separate message transmissions
		</description>
	</intent>
	
	<intent name="SOAP" constrains="sca:binding" intentType="interaction">
		<description>
		Specifies that the SOAP messaging model is used for delivering 
		messages.
		</description>
		<qualifier name="1_1" default="true"/>
		<qualifier name="1_2"/>
	</intent>	

	<intent name="JMS" constrains="sca:binding" intentType="interaction">
		<description>
		Requires that the messages are delivered and received via the 
		JMS API.
		</description>
	</intent>

	<intent name="noListener" constrains="sca:binding" 
	    intentType="interaction">
		<description>
		This intent can only be used on a reference. Indicates that the 
		client is not able to handle new inbound connections. The binding 
		and callback binding are configured so that any 
		response or callback comes either through a back channel of the 
		connection from the client to the server or by having the client 
		poll the server for messages. 
		</description>
	</intent>	
	
</sca:definitions>

