summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-08-11 20:50:34 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-08-11 20:50:34 +0000
commit02ae2d84328d90d9871e057089ab0a7d93b03f17 (patch)
tree9fbb2cc803c917899e2b12e400f378067b77a9ef
parentfc8f3f7d9af375bb06ac7d1f1f2ab7440ecb2d3e (diff)
Fix the schema validation issue for definitions
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@803291 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--java/sca/modules/assembly-xsd/src/main/resources/sca-policy-1.1-intents-definitions-cd02.xml13
-rw-r--r--java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-dwr.xsd2
-rw-r--r--java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-http.xsd2
-rw-r--r--java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-jsonrpc.xsd2
-rw-r--r--java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-rmi.xsd2
-rw-r--r--java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-implementation-osgi.xsd2
-rw-r--r--java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/sca/binding/ws/axis2/definitions.xml2
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java2
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java116
-rw-r--r--java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsDocumentProcessor.java9
-rw-r--r--java/sca/modules/definitions-xml/src/main/resources/META-INF/sca-policy-1.1-intents-definitions-cd02.xml479
-rw-r--r--java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml6
12 files changed, 319 insertions, 318 deletions
diff --git a/java/sca/modules/assembly-xsd/src/main/resources/sca-policy-1.1-intents-definitions-cd02.xml b/java/sca/modules/assembly-xsd/src/main/resources/sca-policy-1.1-intents-definitions-cd02.xml
index c761266148..8efde2653f 100644
--- a/java/sca/modules/assembly-xsd/src/main/resources/sca-policy-1.1-intents-definitions-cd02.xml
+++ b/java/sca/modules/assembly-xsd/src/main/resources/sca-policy-1.1-intents-definitions-cd02.xml
@@ -1,8 +1,9 @@
<?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"
+<definitions xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903"
+ xmlns="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">
@@ -98,7 +99,7 @@
</description>
</intent>
- <intent name="ordered" appliesTo="sca:binding"
+ <intent name="ordered" constrains="sca:binding"
intentType="interaction">
<description>
This intent is used to indicate that all the messages are
@@ -217,8 +218,8 @@
Specifies that the SOAP messaging model is used for delivering
messages.
</description>
- <qualifier name="1_1" default="true"/>
- <qualifier name="1_2"/>
+ <qualifier name="V1_1" default="true"/>
+ <qualifier name="V1_2"/>
</intent>
<intent name="JMS" constrains="sca:binding" intentType="interaction">
@@ -240,4 +241,4 @@
</description>
</intent>
-</sca:definitions>
+</definitions>
diff --git a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-dwr.xsd b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-dwr.xsd
index de7bc6bdd0..e21f249ecb 100644
--- a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-dwr.xsd
+++ b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-dwr.xsd
@@ -25,7 +25,7 @@
<import namespace="http://docs.oasis-open.org/ns/opencsa/sca/200903" schemaLocation="sca-1.1-cd04.xsd"/>
- <element name="binding.dwr" type="t:DWRBinding"/>
+ <element name="binding.dwr" type="t:DWRBinding" substitutionGroup="sca:binding"/>
<complexType name="DWRBinding">
<complexContent>
diff --git a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-http.xsd b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-http.xsd
index ce8d47b575..4697382296 100644
--- a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-http.xsd
+++ b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-http.xsd
@@ -25,7 +25,7 @@
<import namespace="http://docs.oasis-open.org/ns/opencsa/sca/200903" schemaLocation="sca-1.1-cd04.xsd"/>
- <element name="binding.http" type="t:HTTPBinding"/>
+ <element name="binding.http" type="t:HTTPBinding" substitutionGroup="sca:binding"/>
<complexType name="HTTPBinding">
<complexContent>
diff --git a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-jsonrpc.xsd b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-jsonrpc.xsd
index 92142d117d..98e0b32834 100644
--- a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-jsonrpc.xsd
+++ b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-jsonrpc.xsd
@@ -25,7 +25,7 @@
<import namespace="http://docs.oasis-open.org/ns/opencsa/sca/200903" schemaLocation="sca-1.1-cd04.xsd"/>
- <element name="binding.jsonrpc" type="t:JSONRPCBinding"/>
+ <element name="binding.jsonrpc" type="t:JSONRPCBinding" substitutionGroup="sca:binding"/>
<complexType name="JSONRPCBinding">
<complexContent>
diff --git a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-rmi.xsd b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-rmi.xsd
index 9b15010624..a0fa641670 100644
--- a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-rmi.xsd
+++ b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-binding-rmi.xsd
@@ -25,7 +25,7 @@
<import namespace="http://docs.oasis-open.org/ns/opencsa/sca/200903" schemaLocation="sca-1.1-cd04.xsd"/>
- <element name="binding.rmi" type="t:RMIBinding"/>
+ <element name="binding.rmi" type="t:RMIBinding" substitutionGroup="sca:binding"/>
<complexType name="RMIBinding">
<complexContent>
diff --git a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-implementation-osgi.xsd b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-implementation-osgi.xsd
index 0e29a09e72..dfe819d97f 100644
--- a/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-implementation-osgi.xsd
+++ b/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-implementation-osgi.xsd
@@ -25,7 +25,7 @@
<import namespace="http://docs.oasis-open.org/ns/opencsa/sca/200903" schemaLocation="sca-1.1-cd04.xsd"/>
- <element name="implementation.osgi" type="t:OSGiImplementation"/>
+ <element name="implementation.osgi" type="t:OSGiImplementation" substitutionGroup="sca:implementation"/>
<complexType name="OSGiImplementation">
<complexContent>
diff --git a/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/sca/binding/ws/axis2/definitions.xml b/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/sca/binding/ws/axis2/definitions.xml
index 57014ad1df..68f0372b61 100644
--- a/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/sca/binding/ws/axis2/definitions.xml
+++ b/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/sca/binding/ws/axis2/definitions.xml
@@ -25,7 +25,7 @@
xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1">
- <sca:bindingType type="sca:binding.ws" mayProvide="SOAP SOAP.1_1 SOAP.1_2 MTOM" alwaysProvides=""/>
+ <sca:bindingType type="sca:binding.ws" mayProvide="SOAP SOAP.V1_1 SOAP.V1_2 MTOM" alwaysProvides=""/>
<!-- PolicyIntents defined by the SCA Runtime Extension for WS Binding Axis 2 -->
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
index 920afbef5a..8fa873d7c7 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
@@ -36,7 +36,7 @@ import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
* @version $Rev$ $Date$
*/
public class DefaultValidationSchemaExtensionPoint implements ValidationSchemaExtensionPoint {
- private boolean enabled;
+ private boolean enabled = true;
private List<String> schemas = new ArrayList<String>();
private boolean loaded;
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java
index 7882142eb4..5e88f08529 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java
@@ -24,7 +24,6 @@ import java.util.logging.Logger;
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.util.StreamReaderDelegate;
@@ -154,77 +153,80 @@ class ValidatingXMLStreamReader extends StreamReaderDelegate implements XMLStrea
return super.next();
}
- int event = super.next();
+ int event = super.getEventType();
try {
- switch (event) {
- case XMLStreamConstants.START_DOCUMENT:
- handler.startDocument();
- break;
- case XMLStreamConstants.START_ELEMENT:
- handleStartElement();
- break;
- case XMLStreamConstants.PROCESSING_INSTRUCTION:
- handler.processingInstruction(super.getPITarget(), super.getPIData());
- break;
- case XMLStreamConstants.CHARACTERS:
- case XMLStreamConstants.CDATA:
- case XMLStreamConstants.SPACE:
- case XMLStreamConstants.ENTITY_REFERENCE:
- handler.characters(super.getTextCharacters(), super.getTextStart(), super.getTextLength());
- break;
- case XMLStreamConstants.END_ELEMENT:
- handleEndElement();
- break;
- case XMLStreamConstants.END_DOCUMENT:
- handler.endDocument();
- break;
+ if (event == START_DOCUMENT) {
+ // We need to trigger the startDocument()
+ handler.startDocument();
}
+ event = super.next();
+ validate(event);
} catch (SAXException e) {
- XMLStreamException xse = new XMLStreamException(e.getMessage(), e);
- error("XMLStreamException", handler, xse);
+ XMLStreamException xse = new XMLStreamException(e.getMessage(), e);
+ error("XMLStreamException", handler, xse);
throw xse;
}
return event;
}
+
+ private void validate(int event) throws SAXException {
+ switch (event) {
+ case START_DOCUMENT:
+ handler.startDocument();
+ break;
+ case START_ELEMENT:
+ handleStartElement();
+ break;
+ case PROCESSING_INSTRUCTION:
+ handler.processingInstruction(super.getPITarget(), super.getPIData());
+ break;
+ case CHARACTERS:
+ case CDATA:
+ case SPACE:
+ case ENTITY_REFERENCE:
+ handler.characters(super.getTextCharacters(), super.getTextStart(), super.getTextLength());
+ break;
+ case END_ELEMENT:
+ handleEndElement();
+ break;
+ case END_DOCUMENT:
+ handler.endDocument();
+ break;
+ }
+ }
@Override
public int nextTag() throws XMLStreamException {
if (handler == null) {
return super.nextTag();
}
-
- for (;;) {
+ while (true) {
int event = super.getEventType();
try {
- switch (event) {
- case XMLStreamConstants.START_DOCUMENT:
- handler.startDocument();
- break;
- case XMLStreamConstants.START_ELEMENT:
- handleStartElement();
- return event;
- case XMLStreamConstants.PROCESSING_INSTRUCTION:
- handler.processingInstruction(super.getPITarget(), super.getPIData());
- break;
- case XMLStreamConstants.CHARACTERS:
- case XMLStreamConstants.CDATA:
- case XMLStreamConstants.SPACE:
- case XMLStreamConstants.ENTITY_REFERENCE:
- handler.characters(super.getTextCharacters(), super.getTextStart(), super.getTextLength());
- break;
- case XMLStreamConstants.END_ELEMENT:
- handleEndElement();
- return event;
- case XMLStreamConstants.END_DOCUMENT:
- handler.endDocument();
- return event;
+ if (event == START_DOCUMENT) {
+ // We need to trigger the startDocument()
+ handler.startDocument();
}
+ event = super.next();
+ validate(event);
} catch (SAXException e) {
- XMLStreamException xse = new XMLStreamException(e);
- error("XMLStreamException", handler, xse);
+ XMLStreamException xse = new XMLStreamException(e);
+ error("XMLStreamException", handler, xse);
throw xse;
}
- super.next();
+
+ if ((event == CHARACTERS && isWhiteSpace()) // skip whitespace
+ || (event == CDATA && isWhiteSpace())
+ // skip whitespace
+ || event == SPACE
+ || event == PROCESSING_INSTRUCTION
+ || event == COMMENT) {
+ continue;
+ }
+ if (event != START_ELEMENT && event != END_ELEMENT) {
+ throw new XMLStreamException("expected start or end tag", getLocation());
+ }
+ return event;
}
}
@@ -234,7 +236,7 @@ class ValidatingXMLStreamReader extends StreamReaderDelegate implements XMLStrea
return super.getElementText();
}
- if (getEventType() != XMLStreamConstants.START_ELEMENT) {
+ if (getEventType() != START_ELEMENT) {
return super.getElementText();
}
StringBuffer text = new StringBuffer();
@@ -242,11 +244,11 @@ class ValidatingXMLStreamReader extends StreamReaderDelegate implements XMLStrea
for (;;) {
int event = next();
switch (event) {
- case XMLStreamConstants.END_ELEMENT:
+ case END_ELEMENT:
return text.toString();
- case XMLStreamConstants.COMMENT:
- case XMLStreamConstants.PROCESSING_INSTRUCTION:
+ case COMMENT:
+ case PROCESSING_INSTRUCTION:
continue;
case CHARACTERS:
diff --git a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsDocumentProcessor.java b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsDocumentProcessor.java
index 699920dd6f..580f5a12d6 100644
--- a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsDocumentProcessor.java
+++ b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsDocumentProcessor.java
@@ -27,8 +27,6 @@ import java.net.URLConnection;
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
-import java.util.HashSet;
-import java.util.Set;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
@@ -39,6 +37,7 @@ import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ValidatingXMLInputFactory;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
import org.apache.tuscany.sca.definitions.Definitions;
@@ -47,10 +46,6 @@ import org.apache.tuscany.sca.definitions.util.DefinitionsUtil;
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.Problem;
import org.apache.tuscany.sca.monitor.Problem.Severity;
-import org.apache.tuscany.sca.policy.BindingType;
-import org.apache.tuscany.sca.policy.ImplementationType;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.PolicySet;
/**
* A SCA Definitions Document processor.
@@ -89,7 +84,7 @@ public class DefinitionsDocumentProcessor implements URLArtifactProcessor<Defini
StAXArtifactProcessor<Object> staxProcessor,
Monitor monitor) {
this.extensionProcessor = (StAXArtifactProcessor<Object>)staxProcessor;
- this.inputFactory = modelFactories.getFactory(XMLInputFactory.class);
+ this.inputFactory = modelFactories.getFactory(ValidatingXMLInputFactory.class);
this.definitionsFactory = modelFactories.getFactory(DefinitionsFactory.class);
this.monitor = monitor;
}
diff --git a/java/sca/modules/definitions-xml/src/main/resources/META-INF/sca-policy-1.1-intents-definitions-cd02.xml b/java/sca/modules/definitions-xml/src/main/resources/META-INF/sca-policy-1.1-intents-definitions-cd02.xml
index ade57b1ec0..c3b1115cbd 100644
--- a/java/sca/modules/definitions-xml/src/main/resources/META-INF/sca-policy-1.1-intents-definitions-cd02.xml
+++ b/java/sca/modules/definitions-xml/src/main/resources/META-INF/sca-policy-1.1-intents-definitions-cd02.xml
@@ -1,242 +1,245 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright(C) OASIS(R) 2005,2009. All Rights Reserved.
+<!-- Copyright(C) OASIS(R) 2005,2009. All Rights Reserved.
OASIS trademark, IPR and other policies apply. -->
-<sca:definitions xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903"
+<definitions xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903"
+ xmlns="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 -->
- <sca:intent name="serverAuthentication" constrains="sca:binding"
- intentType="interaction">
- <sca:description>
- Communication through the binding requires that the
- server is authenticated by the client
- </sca:description>
- <sca:qualifier name="transport" default="true"/>
- <sca:qualifier name="message"/>
- </sca:intent>
-
- <sca:intent name="clientAuthentication" constrains="sca:binding"
- intentType="interaction">
- <sca:description>
- Communication through the binding requires that the
- client is authenticated by the server
- </sca:description>
- <sca:qualifier name="transport" default="true"/>
- <sca:qualifier name="message"/>
- </sca:intent>
-
- <sca:intent name="authentication" requires="sca:clientAuthentication">
- <sca:description>
- A convenience intent to help migration
- </sca:description>
- </sca:intent>
-
- <sca:intent name="mutualAuthentication"
- requires="sca:clientAuthentication sca:serverAuthentication">
- <sca:description>
- Communication through the binding requires that the
- client and server to authenticate each other
- </sca:description>
- </sca:intent>
-
- <sca:intent name="confidentiality" constrains="sca:binding"
- intentType="interaction">
- <sca:description>
- Communication through the binding prevents unauthorized
- users from reading the messages
- </sca:description>
- <sca:qualifier name="transport" default="true"/>
- <sca:qualifier name="message"/>
- </sca:intent>
-
- <sca:intent name="integrity" constrains="sca:binding"
- intentType="interaction">
- <sca:description>
- Communication through the binding prevents tampering
- with the messages sent between the client and the service.
- </sca:description>
- <sca:qualifier name="transport" default="true"/>
- <sca:qualifier name="message"/>
- </sca:intent>
-
- <sca:intent name="authorization" constrains="sca:implementation"
- intentType="implementation">
- <sca:description>
- Ensures clients are authorized to use services.
- </sca:description>
- <sca:qualifier name="fineGrain" default="true"/>
- </sca:intent>
-
-
- <!-- Reliable messaging related intents -->
- <sca:intent name="atLeastOnce" constrains="sca:binding"
- intentType="interaction">
- <sca:description>
- This intent is used to indicate that a message sent
- by a client is always delivered to the component.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="atMostOnce" constrains="sca:binding"
- intentType="interaction">
- <sca: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.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="exactlyOnce" requires="sca:atLeastOnce sca:atMostOnce"
- constrains="sca:binding" intentType="interaction">
- <sca: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.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="ordered" appliesTo="sca:binding"
- intentType="interaction">
- <sca: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.
- </sca:description>
- </sca:intent>
-
- <!-- Transaction related intents -->
- <sca:intent name="managedTransaction" excludes="sca:noManagedTransaction"
- mutuallyExclusive="true" constrains="sca:implementation"
- intentType="implementation">
- <sca:description>
- A managed transaction environment is necessary in order to
- run the component. The specific type of managed transaction
- needed is not constrained.
- </sca:description>
- <sca:qualifier name="global" default="true">
- <sca: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.
- </sca:description>
- </sca:qualifier>
- <sca:qualifier name="local">
- <sca: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.
- </sca:description>
- </sca:qualifier>
- </sca:intent>
-
- <sca:intent name="noManagedTransaction" excludes="sca:managedTransaction"
- constrains="sca:implementation" intentType="implementation">
- <sca: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.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="transactedOneWay" excludes="sca:immediateOneWay"
- constrains="sca:binding" intentType="implementation">
- <sca: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.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="immediateOneWay" excludes="sca:transactedOneWay"
- constrains="sca:binding" intentType="implementation">
- <sca: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.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="propagatesTransaction" excludes="sca:suspendsTransaction"
- constrains="sca:binding" intentType="interaction">
- <sca: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.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="suspendsTransaction" excludes="sca:propagatesTransaction"
- constrains="sca:binding" intentType="interaction">
- <sca: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.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="managedSharedTransaction"
- requires="sca:managedTransaction.global sca:propagatesTransaction">
- <sca:description>
- Used to indicate that the component requires both the
- managedTransaction.global and the propagatesTransactions
- intents
- </sca:description>
- </sca:intent>
-
- <!-- Miscellaneous intents -->
- <sca:intent name="asyncInvocation" constrains="sca:binding"
- intentType="interaction">
- <sca:description>
- Indicates that request/response operations for the
- interface of this wire are "long running" and must be
- treated as two separate message transmissions
- </sca:description>
- </sca:intent>
-
- <sca:intent name="SOAP" constrains="sca:binding" intentType="interaction">
- <sca:description>
- Specifies that the SOAP messaging model is used for delivering
- messages.
- </sca:description>
- <sca:qualifier name="1_1" default="true"/>
- <sca:qualifier name="1_2"/>
- </sca:intent>
-
- <sca:intent name="JMS" constrains="sca:binding" intentType="interaction">
- <sca:description>
- Requires that the messages are delivered and received via the
- JMS API.
- </sca:description>
- </sca:intent>
-
- <sca:intent name="noListener" constrains="sca:binding"
- intentType="interaction">
- <sca: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.
- </sca:description>
- </sca:intent>
-
-</sca:definitions>
+
+ <!-- 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" constrains="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" mutuallyExclusive="true">
+ <description>
+ Specifies that the SOAP messaging model is used for delivering
+ messages.
+ </description>
+ <!-- [rfeng] 1_1 and 1_2 are not valid NCNames -->
+ <qualifier name="V1_1" default="true"/>
+ <qualifier name="V1_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>
+
+</definitions>
diff --git a/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml b/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml
index 9de5be3212..4325309463 100644
--- a/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml
+++ b/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml
@@ -64,7 +64,7 @@
<policySet name="SecureMessagingPolicies" provides="test:confidentiality" appliesTo="binding.ws"
xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
- <intentMap provides="test:confidentiality" default="transport">
+ <intentMap provides="test:confidentiality">
<qualifier name="transport">
<wsp:PolicyAttachment>
<!-- policy expression and policy subject for "transport" alternative -->
@@ -81,7 +81,7 @@
<policySet name="SecurityPolicy" provides="test:confidentiality" appliesTo="binding.ws"
xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
- <intentMap provides="test:confidentiality" default="message">
+ <intentMap provides="test:confidentiality">
<qualifier name="message">
<wsp:PolicyAttachment>
<!-- policy attachment for body encryption -->
@@ -114,7 +114,7 @@
<policySet name="ConfidentialityPolicies" provides="test:confidentiality" appliesTo="binding.ws"
xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
- <intentMap provides="test:confidentiality" default="transport">
+ <intentMap provides="test:confidentiality">
<qualifier name="transport">
<wsp:PolicyAttachment>
<!-- policy expression and policy subject for "transport"