You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/09/14 07:01:57 UTC
svn commit: r575532 - in /incubator/tuscany/java/sca: modules/assembly-xml/
modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/
modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/
modules/assembly-xsd/src/main/re...
Author: jsdelfino
Date: Thu Sep 13 22:01:52 2007
New Revision: 575532
URL: http://svn.apache.org/viewvc?rev=575532&view=rev
Log:
Fix for TUSCANY-1276, validate SCA assembly XML files against the SCA XML schemas when we load them.
Added:
incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca.xsd (with props)
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java (with props)
Modified:
incubator/tuscany/java/sca/modules/assembly-xml/pom.xml
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeDocumentProcessor.java
incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/BuildPolicyTestCase.java
incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadDocumentTestCase.java
incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ResolvePolicyTestCase.java
incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-ejb.xsd
incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-sca.xsd
incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-webservice.xsd
incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core.xsd
incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-composite.xsd
incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-java.xsd
incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-policy.xsd
incubator/tuscany/java/sca/modules/host-embedded/pom.xml
incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
incubator/tuscany/java/sca/modules/sca-definitions/pom.xml
incubator/tuscany/java/sca/modules/sca-definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitionsDocumentProcessor.java
incubator/tuscany/java/sca/modules/sca-definitions/src/test/java/org/apache/tuscany/sca/definitions/ReadDocumentTestCase.java
incubator/tuscany/java/sca/samples/calculator/src/main/java/calculator/CalculatorClient.java
Modified: incubator/tuscany/java/sca/modules/assembly-xml/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/pom.xml?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/pom.xml Thu Sep 13 22:01:52 2007
@@ -86,5 +86,13 @@
<version>3.2.1</version>
<scope>runtime</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-assembly-xsd</artifactId>
+ <version>1.0-incubating-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
</project>
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java Thu Sep 13 22:01:52 2007
@@ -27,10 +27,12 @@
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.validation.Schema;
import org.apache.tuscany.sca.assembly.ComponentType;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ValidatingXMLStreamReader;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
@@ -42,6 +44,7 @@
*/
public class ComponentTypeDocumentProcessor extends BaseAssemblyProcessor implements URLArtifactProcessor<ComponentType> {
private XMLInputFactory inputFactory;
+ private Schema schema;
/**
* Constructs a new componentType processor.
@@ -49,9 +52,10 @@
* @param policyFactory
* @param registry
*/
- public ComponentTypeDocumentProcessor(StAXArtifactProcessor staxProcessor, XMLInputFactory inputFactory) {
+ public ComponentTypeDocumentProcessor(StAXArtifactProcessor staxProcessor, XMLInputFactory inputFactory, Schema schema) {
super(null, null, staxProcessor);
this.inputFactory = inputFactory;
+ this.schema = schema;
}
public ComponentType read(URL contributionURL, URI uri, URL url) throws ContributionReadException {
@@ -61,6 +65,7 @@
// Create a stream reader
urlStream = url.openStream();
XMLStreamReader reader = inputFactory.createXMLStreamReader(urlStream);
+ reader = new ValidatingXMLStreamReader(reader, schema);
reader.nextTag();
// Reader the componentType model
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java Thu Sep 13 22:01:52 2007
@@ -27,10 +27,12 @@
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.validation.Schema;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ValidatingXMLStreamReader;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
@@ -42,6 +44,7 @@
*/
public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements URLArtifactProcessor<Composite> {
private XMLInputFactory inputFactory;
+ private Schema schema;
/**
* Construct a new composite processor
@@ -49,9 +52,10 @@
* @param policyFactory
* @param staxProcessor
*/
- public CompositeDocumentProcessor(StAXArtifactProcessor staxProcessor, XMLInputFactory inputFactory) {
+ public CompositeDocumentProcessor(StAXArtifactProcessor staxProcessor, XMLInputFactory inputFactory, Schema schema) {
super(null, null, staxProcessor);
this.inputFactory = inputFactory;
+ this.schema = schema;
}
public Composite read(URL contributionURL, URI uri, URL url) throws ContributionReadException {
@@ -61,6 +65,7 @@
// Create a stream reader
urlStream = url.openStream();
XMLStreamReader reader = inputFactory.createXMLStreamReader(urlStream);
+ reader = new ValidatingXMLStreamReader(reader, schema);
reader.nextTag();
// Read the composite model
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeDocumentProcessor.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeDocumentProcessor.java Thu Sep 13 22:01:52 2007
@@ -27,10 +27,12 @@
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.validation.Schema;
import org.apache.tuscany.sca.assembly.ConstrainingType;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ValidatingXMLStreamReader;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
@@ -42,6 +44,7 @@
*/
public class ConstrainingTypeDocumentProcessor extends BaseAssemblyProcessor implements URLArtifactProcessor<ConstrainingType> {
private XMLInputFactory inputFactory;
+ private Schema schema;
/**
* Construct a new constrainingType processor.
@@ -49,9 +52,10 @@
* @param policyFactory
* @param staxProcessor
*/
- public ConstrainingTypeDocumentProcessor(StAXArtifactProcessor staxProcessor, XMLInputFactory inputFactory) {
+ public ConstrainingTypeDocumentProcessor(StAXArtifactProcessor staxProcessor, XMLInputFactory inputFactory, Schema schema) {
super(null, null, staxProcessor);
this.inputFactory = inputFactory;
+ this.schema = schema;
}
public ConstrainingType read(URL contributionURL, URI uri, URL url) throws ContributionReadException {
@@ -61,6 +65,7 @@
// Create a stream reader
urlStream = url.openStream();
XMLStreamReader reader = inputFactory.createXMLStreamReader(urlStream);
+ reader = new ValidatingXMLStreamReader(reader, schema);
reader.nextTag();
// Read the constrainingType model
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/BuildPolicyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/BuildPolicyTestCase.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/BuildPolicyTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/BuildPolicyTestCase.java Thu Sep 13 22:01:52 2007
@@ -22,9 +22,12 @@
import java.net.URI;
import java.net.URL;
+import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
import junit.framework.TestCase;
@@ -90,12 +93,15 @@
staxProcessors.addArtifactProcessor(new PolicySetProcessor(policyFactory, staxProcessor));
staxProcessors.addArtifactProcessor(new MockPolicyProcessor());
- // Create document processors
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = schemaFactory.newSchema(getClass().getClassLoader().getResource("tuscany-sca.xsd"));
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
- documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory));
- documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
- documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
- scaDefnDocProcessor = new SCADefinitionsDocumentProcessor(staxProcessors, staxProcessor, inputFactory, policyFactory);
+
+ // Create document processors
+ documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory, schema));
+ documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory, schema));
+ documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory, schema));
+ scaDefnDocProcessor = new SCADefinitionsDocumentProcessor(staxProcessors, staxProcessor, inputFactory, policyFactory, schema);
documentProcessors.addArtifactProcessor(scaDefnDocProcessor);
URL url = getClass().getResource("CalculatorComponent.constrainingType");
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadDocumentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadDocumentTestCase.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadDocumentTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadDocumentTestCase.java Thu Sep 13 22:01:52 2007
@@ -22,8 +22,14 @@
import java.net.URI;
import java.net.URL;
+import javax.xml.XMLConstants;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.ValidatorHandler;
import junit.framework.TestCase;
@@ -42,6 +48,10 @@
import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
import org.apache.tuscany.sca.policy.PolicyFactory;
+import org.xml.sax.InputSource;
+import org.xml.sax.Parser;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
/**
* Test reading SCA XML assembly documents.
@@ -69,17 +79,35 @@
staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(factory, policyFactory, staxProcessor));
staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(factory, policyFactory, staxProcessor));
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = schemaFactory.newSchema(getClass().getClassLoader().getResource("tuscany-sca.xsd"));
+
// Create document processors
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
- documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory));
- documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
- documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
+ documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory, schema));
+ documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory, schema));
+ documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory, schema));
resolver = new TestModelResolver();
}
@Override
public void tearDown() throws Exception {
+ }
+
+ public void xtestValidate() throws Exception {
+
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = schemaFactory.newSchema(getClass().getClassLoader().getResource("tuscany-sca.xsd"));
+ ValidatorHandler handler = schema.newValidatorHandler();
+
+ SAXParserFactory parserFactory = SAXParserFactory.newInstance();
+ URL url = getClass().getResource("Calculator.composite");
+ XMLReader reader = parserFactory.newSAXParser().getXMLReader();
+ reader.setFeature("http://xml.org/sax/features/namespaces", true);
+ reader.setContentHandler(handler);
+ reader.parse(new InputSource(url.openStream()));
+
}
public void testResolveConstrainingType() throws Exception {
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ResolvePolicyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ResolvePolicyTestCase.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ResolvePolicyTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ResolvePolicyTestCase.java Thu Sep 13 22:01:52 2007
@@ -22,8 +22,11 @@
import java.net.URI;
import java.net.URL;
+import javax.xml.XMLConstants;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
import junit.framework.TestCase;
@@ -85,12 +88,15 @@
staxProcessors.addArtifactProcessor(new PolicySetProcessor(policyFactory, staxProcessor));
staxProcessors.addArtifactProcessor(new MockPolicyProcessor());
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = schemaFactory.newSchema(getClass().getClassLoader().getResource("tuscany-sca.xsd"));
+
// Create document processors
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
- documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory));
- documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
- documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
- scaDefnDocProcessor = new SCADefinitionsDocumentProcessor(staxProcessors, staxProcessor, inputFactory, policyFactory);
+ documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory, schema));
+ documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory, schema));
+ documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory, schema));
+ scaDefnDocProcessor = new SCADefinitionsDocumentProcessor(staxProcessors, staxProcessor, inputFactory, policyFactory, schema);
documentProcessors.addArtifactProcessor(scaDefnDocProcessor);
}
Modified: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-ejb.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-ejb.xsd?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-ejb.xsd (original)
+++ incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-ejb.xsd Thu Sep 13 22:01:52 2007
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright SCA Collaboration 2006, 2007 -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
@@ -31,10 +33,8 @@
</sequence>
<attribute name="homeInterface" type="NCName" use="optional"/>
<attribute name="ejb-link-name" type="NCName" use="optional"/>
- <attribute name="session-type" type="sca:BeanType" use="optional" default="stateless"/>
- <attribute name="ejb-version" type="sca:VersionValue" use="optional" default="EJB2"/>
-
-
+ <attribute name="session-type" type="sca:BeanType" use="optional" default="stateless"/>
+ <attribute name="ejb-version" type="sca:VersionValue" use="optional" default="EJB2"/>
<anyAttribute namespace="##any" processContents="lax"/>
</extension>
</complexContent>
Modified: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-sca.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-sca.xsd?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-sca.xsd (original)
+++ incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-sca.xsd Thu Sep 13 22:01:52 2007
@@ -12,16 +12,10 @@
<complexType name="SCABinding">
<complexContent>
<extension base="sca:Binding">
- <sequence>
- <element name="operation" type="sca:Operation" minOccurs="0"
- maxOccurs="unbounded" />
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
</sequence>
- <attribute name="uri" type="anyURI" use="optional"/>
- <attribute name="name" type="QName" use="optional"/>
- <attribute name="requires" type="sca:listOfQNames"
- use="optional"/>
- <attribute name="policySets" type="sca:listOfQNames"
- use="optional"/>
<anyAttribute namespace="##any" processContents="lax"/>
</extension>
</complexContent>
Modified: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-webservice.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-webservice.xsd?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-webservice.xsd (original)
+++ incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-binding-webservice.xsd Thu Sep 13 22:01:52 2007
@@ -7,10 +7,6 @@
xmlns:wsa="http://www.w3.org/2004/12/addressing"
elementFormDefault="qualified">
- <import namespace="http://www.w3.org/2004/08/wsdl-instance"
- schemaLocation="wsdli.xsd" />
- <import namespace="http://www.w3.org/2004/12/addressing"
- schemaLocation="ws-addr.xsd" />
<include schemaLocation="sca-core.xsd"/>
<element name="binding.ws" type="sca:WebServiceBinding"
@@ -19,13 +15,10 @@
<complexContent>
<extension base="sca:Binding">
<sequence>
- <element ref="wsa:EndpointReference" minOccurs="0"
- maxOccurs="unbounded"/>
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
<attribute name="wsdlElement" type="anyURI" use="optional"/>
- <attribute ref="wsdli:wsdlLocation" use="optional"/>
<anyAttribute namespace="##any" processContents="lax"/>
</extension>
</complexContent>
Modified: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core.xsd?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core.xsd (original)
+++ incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core.xsd Thu Sep 13 22:01:52 2007
@@ -57,8 +57,10 @@
minOccurs="0" maxOccurs="unbounded" />
</choice>
<element ref="sca:callback" minOccurs="0" maxOccurs="1" />
+ <!--
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
+ -->
</sequence>
<attribute name="name" type="NCName" use="required" />
<attribute name="promote" type="anyURI" use="required" />
@@ -80,8 +82,10 @@
<any namespace="##other" processContents="lax" />
</choice>
<element ref="sca:callback" minOccurs="0" maxOccurs="1" />
+ <!--
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
+ -->
</sequence>
<attribute name="name" type="NCName" use="required" />
<attribute name="target" type="sca:listOfAnyURIs" use="optional"/>
@@ -193,56 +197,52 @@
</complexType>
<complexType name="ComponentService">
- <complexContent>
- <restriction base="sca:Service">
- <sequence>
- <element ref="sca:interface" minOccurs="0" maxOccurs="1"/>
- <element name="operation" type="sca:Operation" minOccurs="0"
- maxOccurs="unbounded" />
- <choice minOccurs="0" maxOccurs="unbounded">
- <element ref="sca:binding"/>
- <any namespace="##other" processContents="lax"
- minOccurs="0" maxOccurs="unbounded"/>
- </choice>
- <element ref="sca:callback" minOccurs="0" maxOccurs="1"/>
- <any namespace="##other" processContents="lax" minOccurs="0"
- maxOccurs="unbounded"/>
- </sequence>
- <attribute name="name" type="NCName" use="required"/>
- <attribute name="requires" type="sca:listOfQNames"
- use="optional"/>
- <attribute name="policySets" type="sca:listOfQNames"
- use="optional"/>
- <anyAttribute namespace="##any" processContents="lax"/>
- </restriction>
- </complexContent>
+ <sequence>
+ <element ref="sca:interface" minOccurs="0" maxOccurs="1"/>
+ <element name="operation" type="sca:Operation" minOccurs="0"
+ maxOccurs="unbounded" />
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="sca:binding"/>
+ <any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </choice>
+ <element ref="sca:callback" minOccurs="0" maxOccurs="1"/>
+ <!--
+ <any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ -->
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="requires" type="sca:listOfQNames"
+ use="optional"/>
+ <attribute name="policySets" type="sca:listOfQNames"
+ use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
</complexType>
<complexType name="ComponentReference">
- <complexContent>
- <restriction base="sca:Reference">
- <sequence>
- <element ref="sca:interface" minOccurs="0" maxOccurs="1" />
- <element name="operation" type="sca:Operation" minOccurs="0"
- maxOccurs="unbounded" />
- <choice minOccurs="0" maxOccurs="unbounded">
- <element ref="sca:binding" />
- <any namespace="##other" processContents="lax" />
- </choice>
- <element ref="sca:callback" minOccurs="0" maxOccurs="1" />
- <any namespace="##other" processContents="lax" minOccurs="0"
- maxOccurs="unbounded" />
- </sequence>
- <attribute name="name" type="NCName" use="required" />
- <attribute name="target" type="sca:listOfAnyURIs" use="optional"/>
- <attribute name="multiplicity" type="sca:Multiplicity"
- use="optional" default="1..1" />
- <attribute name="requires" type="sca:listOfQNames" use="optional"/>
- <attribute name="policySets" type="sca:listOfQNames"
- use="optional"/>
- <anyAttribute namespace="##any" processContents="lax" />
- </restriction>
- </complexContent>
+ <sequence>
+ <element ref="sca:interface" minOccurs="0" maxOccurs="1" />
+ <element name="operation" type="sca:Operation" minOccurs="0"
+ maxOccurs="unbounded" />
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="sca:binding" />
+ <any namespace="##other" processContents="lax" />
+ </choice>
+ <element ref="sca:callback" minOccurs="0" maxOccurs="1" />
+ <!--
+ <any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ -->
+ </sequence>
+ <attribute name="name" type="NCName" use="required" />
+ <attribute name="target" type="sca:listOfAnyURIs" use="optional"/>
+ <attribute name="multiplicity" type="sca:Multiplicity"
+ use="optional" default="1..1" />
+ <attribute name="requires" type="sca:listOfQNames" use="optional"/>
+ <attribute name="policySets" type="sca:listOfQNames"
+ use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax" />
</complexType>
<element name="implementation" type="sca:Implementation"
Modified: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-composite.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-composite.xsd?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-composite.xsd (original)
+++ incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-composite.xsd Thu Sep 13 22:01:52 2007
@@ -16,9 +16,6 @@
maxOccurs="unbounded"/>
</sequence>
<attribute name="name" type="QName" use="required"/>
- <attribute name="requires" type="sca:listOfQNames" use="optional"/>
- <attribute name="policySets" type="sca:listOfQNames"
- use="optional"/>
<anyAttribute namespace="##any" processContents="lax"/>
</extension>
</complexContent>
Modified: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-java.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-java.xsd?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-java.xsd (original)
+++ incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-implementation-java.xsd Thu Sep 13 22:01:52 2007
@@ -17,9 +17,6 @@
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="class" type="NCName" use="required"/>
- <attribute name="requires" type="sca:listOfQNames" use="optional"/>
- <attribute name="policySets" type="sca:listOfQNames"
- use="optional"/>
<anyAttribute namespace="##any" processContents="lax"/>
</extension>
</complexContent>
Modified: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-policy.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-policy.xsd?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-policy.xsd (original)
+++ incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-policy.xsd Thu Sep 13 22:01:52 2007
@@ -7,8 +7,6 @@
elementFormDefault="qualified">
<include schemaLocation="sca-core.xsd"/>
- <import namespace="http://schemas.xmlsoap.org/ws/2004/09/policy"
- schemaLocation="http://schemas.xmlsoap.org/ws/2004/09/ws-policy.xsd"/>
<element name="intent" type="sca:Intent"/>
<complexType name="Intent">
@@ -28,9 +26,6 @@
<choice minOccurs="0" maxOccurs="unbounded">
<element name="policySetReference" type="sca:PolicySetReference"/>
<element name="intentMap" type="sca:IntentMap"/>
- <element ref="wsp:PolicyAttachment"/>
- <element ref="wsp:Policy"/>
- <element ref="wsp:PolicyReference"/>
<any namespace="##other" processContents="lax"/>
</choice>
<attribute name="name" type="QName" use="required"/>
@@ -57,7 +52,6 @@
<complexType name="Qualifier">
<choice minOccurs="1" maxOccurs="unbounded">
<element name="intentMap" type="sca:IntentMap"/>
- <element ref="wsp:PolicyAttachment"/>
<any namespace="##other" processContents="lax"/>
</choice>
<attribute name="name" type="string" use="required"/>
Added: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca.xsd?rev=575532&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca.xsd (added)
+++ incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca.xsd Thu Sep 13 22:01:52 2007
@@ -0,0 +1,43 @@
+<?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.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://tuscany.apache.org/xmlns/sca/1.0">
+
+ <import namespace="http://www.osoa.org/xmlns/sca/1.0" schemaLocation="sca.xsd"/>
+
+ <!--
+ <include schemaLocation="tuscany-sca-binding-atom.xsd"/>
+ <include schemaLocation="tuscany-sca-binding-dwr.xsd"/>
+ <include schemaLocation="tuscany-sca-binding-http.xsd"/>
+ <include schemaLocation="tuscany-sca-binding-jsonrpc.xsd"/>
+ <include schemaLocation="tuscany-sca-binding-notification.xsd"/>
+ <include schemaLocation="tuscany-sca-binding-rmi.xsd"/>
+ <include schemaLocation="tuscany-sca-binding-rss.xsd"/>
+ <include schemaLocation="tuscany-sca-implementation-das.xsd"/>
+ <include schemaLocation="tuscany-sca-implementation-data.xsd"/>
+ <include schemaLocation="tuscany-sca-implementation-node.xsd"/>
+ <include schemaLocation="tuscany-sca-implementation-notification.xsd"/>
+ <include schemaLocation="tuscany-sca-implementation-osgi.xsd"/>
+ <include schemaLocation="tuscany-sca-implementation-resource.xsd"/>
+ <include schemaLocation="tuscany-sca-implementation-script.xsd"/>
+ <include schemaLocation="tuscany-sca-implementation-xquery.xsd"/>
+ -->
+
+</schema>
\ No newline at end of file
Propchange: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca.xsd
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java?rev=575532&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java Thu Sep 13 22:01:52 2007
@@ -0,0 +1,263 @@
+/*
+ * 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.
+ */
+
+package org.apache.tuscany.sca.contribution.processor;
+
+import java.util.logging.Logger;
+
+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;
+import javax.xml.validation.Schema;
+import javax.xml.validation.ValidatorHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.AttributesImpl;
+
+/**
+ *
+ * A validating XMLStreamReader that reports XMLSchema validation errors.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ValidatingXMLStreamReader extends StreamReaderDelegate implements XMLStreamReader {
+ private static final Logger logger = Logger.getLogger(ValidatingXMLStreamReader.class.getName());
+
+ private int level = 0;
+ private ValidatorHandler handler;
+
+ public ValidatingXMLStreamReader(XMLStreamReader reader, Schema schema) throws XMLStreamException {
+ super(reader);
+ handler = schema.newValidatorHandler();
+ handler.setDocumentLocator(new LocatorAdaptor());
+ try {
+ handler.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+ } catch (SAXException e) {
+ throw new XMLStreamException(e);
+ }
+
+ // These validation errors are just warnings for us as we want to support
+ // running from an XML document with XSD validation errors, as long as we can
+ // get the metadata we need from the document
+ handler.setErrorHandler(new ErrorHandler() {
+ public void error(SAXParseException exception) throws SAXException {
+ logger.warning(exception.getMessage());
+ }
+
+ public void fatalError(SAXParseException exception) throws SAXException {
+ logger.warning(exception.getMessage());
+ }
+
+ public void warning(SAXParseException exception) throws SAXException {
+ logger.warning(exception.getMessage());
+ }
+ });
+ }
+
+ @Override
+ public int next() throws XMLStreamException {
+ int event = super.next();
+
+ try {
+ switch (event) {
+ case XMLStreamConstants.START_DOCUMENT:
+ level++;
+ handler.startDocument();
+ break;
+ case XMLStreamConstants.START_ELEMENT:
+ level++;
+ handleStartElement();
+ break;
+ case XMLStreamConstants.PROCESSING_INSTRUCTION:
+ handler.processingInstruction(super.getPITarget(), super.getPIData());
+ break;
+ case XMLStreamConstants.CHARACTERS:
+ handler.characters(super.getTextCharacters(), super.getTextStart(), super.getTextLength());
+ break;
+ case XMLStreamConstants.END_ELEMENT:
+ handleEndElement();
+ level--;
+ break;
+ case XMLStreamConstants.END_DOCUMENT:
+ handler.endDocument();
+ break;
+ }
+ } catch (SAXException e) {
+ throw new XMLStreamException(e.getMessage(), e);
+ }
+ return event;
+ }
+
+ @Override
+ public int nextTag() throws XMLStreamException {
+ int event;
+ for (;;) {
+ event = super.getEventType();
+ try {
+ switch (event) {
+ case XMLStreamConstants.START_DOCUMENT:
+ level++;
+ handler.startDocument();
+ break;
+ case XMLStreamConstants.START_ELEMENT:
+ level++;
+ handleStartElement();
+ return event;
+ case XMLStreamConstants.PROCESSING_INSTRUCTION:
+ handler.processingInstruction(super.getPITarget(), super.getPIData());
+ break;
+ case XMLStreamConstants.CHARACTERS:
+ handler.characters(super.getTextCharacters(), super.getTextStart(), super.getTextLength());
+ break;
+ case XMLStreamConstants.END_ELEMENT:
+ handleEndElement();
+ level--;
+ return event;
+ case XMLStreamConstants.END_DOCUMENT:
+ handler.endDocument();
+ return event;
+ }
+ } catch (SAXException e) {
+ throw new XMLStreamException(e);
+ }
+ super.next();
+ }
+ }
+
+ private void handleStartElement() throws SAXException {
+ // send startPrefixMapping events immediately before startElement event
+ int nsCount = super.getNamespaceCount();
+ for (int i = 0; i < nsCount; i++) {
+ String prefix = super.getNamespacePrefix(i);
+ if (prefix == null) { // true for default namespace
+ prefix = "";
+ }
+ handler.startPrefixMapping(prefix, super.getNamespaceURI(i));
+ }
+
+ // fire startElement
+ QName qname = super.getName();
+ String prefix = qname.getPrefix();
+ String rawname;
+ if (prefix == null || prefix.length() == 0) {
+ rawname = qname.getLocalPart();
+ } else {
+ rawname = prefix + ':' + qname.getLocalPart();
+ }
+ Attributes attrs = getAttributes();
+ handler.startElement(qname.getNamespaceURI(), qname.getLocalPart(), rawname, attrs);
+ }
+
+ private void handleEndElement() throws SAXException {
+ // fire endElement
+ QName qname = super.getName();
+ handler.endElement(qname.getNamespaceURI(), qname.getLocalPart(), qname.toString());
+
+ // send endPrefixMapping events immediately after endElement event
+ // we send them in the opposite order to that returned but this is not
+ // actually required by SAX
+ int nsCount = super.getNamespaceCount();
+ for (int i = nsCount - 1; i >= 0; i--) {
+ String prefix = super.getNamespacePrefix(i);
+ if (prefix == null) { // true for default namespace
+ prefix = "";
+ }
+ handler.endPrefixMapping(prefix);
+ }
+ }
+
+ /**
+ * Get the attributes associated with the current START_ELEMENT event.
+ *
+ * @return the StAX attributes converted to org.xml.sax.Attributes
+ */
+ private Attributes getAttributes() {
+ AttributesImpl attrs = new AttributesImpl();
+
+ // add namespace declarations
+ for (int i = 0; i < super.getNamespaceCount(); i++) {
+ String prefix = super.getNamespacePrefix(i);
+ String uri = super.getNamespaceURI(i);
+ if (prefix == null) {
+ attrs.addAttribute("", "", "xmlns", "CDATA", uri);
+ } else {
+ attrs.addAttribute("", "", "xmlns:" + prefix, "CDATA", uri);
+ }
+ }
+
+ // Regular attributes
+ for (int i = 0; i < super.getAttributeCount(); i++) {
+ String uri = super.getAttributeNamespace(i);
+ if (uri == null) {
+ uri = "";
+ }
+ String localName = super.getAttributeLocalName(i);
+ String prefix = super.getAttributePrefix(i);
+ String qname;
+ if (prefix == null || prefix.length() == 0) {
+ qname = localName;
+ } else {
+ qname = prefix + ':' + localName;
+ }
+ String type = super.getAttributeType(i);
+ String value = super.getAttributeValue(i);
+
+ attrs.addAttribute(uri, localName, qname, type, value);
+ }
+
+ return attrs;
+ }
+
+ /**
+ * Adaptor for mapping Locator information.
+ */
+ private final class LocatorAdaptor implements Locator {
+
+ private LocatorAdaptor() {
+ }
+
+ public int getColumnNumber() {
+ Location location = getLocation();
+ return location == null ? 0 : location.getColumnNumber();
+ }
+
+ public int getLineNumber() {
+ Location location = getLocation();
+ return location == null ? 0 : location.getLineNumber();
+ }
+
+ public String getPublicId() {
+ Location location = getLocation();
+ return location == null ? "" : location.getPublicId();
+ }
+
+ public String getSystemId() {
+ Location location = getLocation();
+ return location == null ? "" : location.getSystemId();
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidatingXMLStreamReader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/modules/host-embedded/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/pom.xml?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/pom.xml Thu Sep 13 22:01:52 2007
@@ -78,5 +78,12 @@
<version>1.0-incubating-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-assembly-xsd</artifactId>
+ <version>1.0-incubating-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
</dependencies>
</project>
Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java Thu Sep 13 22:01:52 2007
@@ -39,7 +39,6 @@
import org.apache.tuscany.sca.assembly.CompositeService;
import org.apache.tuscany.sca.assembly.SCABinding;
import org.apache.tuscany.sca.assembly.SCABindingFactory;
-import org.apache.tuscany.sca.assembly.WireableBinding;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.assembly.xml.Constants;
@@ -198,6 +197,30 @@
}
this.componentManager = new DefaultSCADomainComponentManager(this);
+
+ // For debugging purposes, print the composites
+// ExtensionPointRegistry extensionPoints = runtime.getExtensionPointRegistry();
+// StAXArtifactProcessorExtensionPoint artifactProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+// StAXArtifactProcessor processor = artifactProcessors.getProcessor(Composite.class);
+// for (Composite composite : domainComposite.getIncludes()) {
+// try {
+// ByteArrayOutputStream bos = new ByteArrayOutputStream();
+// XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
+// outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
+// processor.write(composite, outputFactory.createXMLStreamWriter(bos));
+// Document document =
+// DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(bos
+// .toByteArray()));
+// OutputFormat format = new OutputFormat();
+// format.setIndenting(true);
+// format.setIndent(2);
+// XMLSerializer serializer = new XMLSerializer(System.out, format);
+// serializer.serialize(document);
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+
}
@Override
Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java Thu Sep 13 22:01:52 2007
@@ -31,6 +31,7 @@
import org.apache.tuscany.sca.context.DefaultContextFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.ContributionFactory;
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
import org.apache.tuscany.sca.contribution.service.ContributionService;
@@ -109,18 +110,14 @@
factories.addFactory(intentAttachPointTypeFactory);
ContributionFactory contributionFactory = factories.getFactory(ContributionFactory.class);
- SCADefinitionsDocumentProcessor scaDocDefnProcessor =
- ReallySmallRuntimeBuilder.createSCADefinitionsDocProcessor(registry, policyFactory);
-
// Create a contribution service
contributionService = ReallySmallRuntimeBuilder.createContributionService(classLoader,
registry,
contributionFactory,
assemblyFactory,
policyFactory,
- mapper,
- scaDocDefnProcessor.getDomainModelResolver());
-
+ mapper);
+
// Create the ScopeRegistry
scopeRegistry = ReallySmallRuntimeBuilder.createScopeRegistry(registry);
@@ -140,11 +137,16 @@
// Start the runtime modules
startModules(registry, modules);
-
- SCADefinitions scaDefns = loadDomainDefinitions(scaDocDefnProcessor);
- List<PolicySet> domainPolicySets = null;
- if ( scaDefns != null ) {
- domainPolicySets = scaDefns.getPolicySets();
+
+ // Load the definitions.xml
+ URLArtifactProcessorExtensionPoint documentProcessors = registry.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+ SCADefinitionsDocumentProcessor definitionsProcessor = (SCADefinitionsDocumentProcessor)documentProcessors.getProcessor(SCADefinitions.class);
+ SCADefinitions definitions = loadDomainDefinitions(definitionsProcessor);
+ List<PolicySet> domainPolicySets;
+ if ( definitions != null ) {
+ domainPolicySets = definitions.getPolicySets();
+ } else {
+ domainPolicySets = null;
}
//Create a composite builder
@@ -154,21 +156,21 @@
domainPolicySets);
}
- private SCADefinitions loadDomainDefinitions(SCADefinitionsDocumentProcessor scaDocDefnProcessor) throws ActivationException {
+ private SCADefinitions loadDomainDefinitions(SCADefinitionsDocumentProcessor definitionsProcessor) throws ActivationException {
URL url = this.classLoader.getResource("definitions.xml");
- SCADefinitions scaDefinitions = null;
+ SCADefinitions definitions = null;
if ( url != null ) {
try {
- scaDefinitions = scaDocDefnProcessor.read(null, null, url);
- scaDocDefnProcessor.resolve(scaDefinitions, scaDocDefnProcessor.getDomainModelResolver());
+ definitions = definitionsProcessor.read(null, null, url);
+ definitionsProcessor.resolve(definitions, definitionsProcessor.getDomainModelResolver());
} catch ( ContributionReadException e ) {
throw new ActivationException(e);
} catch ( ContributionResolveException e ) {
throw new ActivationException(e);
}
}
- return scaDefinitions;
+ return definitions;
}
public void stop() throws ActivationException {
Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java Thu Sep 13 22:01:52 2007
@@ -22,8 +22,11 @@
import java.io.IOException;
import java.util.List;
+import javax.xml.XMLConstants;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.SCABindingFactory;
@@ -74,7 +77,6 @@
import org.apache.tuscany.sca.core.scope.ScopeRegistry;
import org.apache.tuscany.sca.core.scope.ScopeRegistryImpl;
import org.apache.tuscany.sca.core.scope.StatelessScopeContainerFactory;
-import org.apache.tuscany.sca.definitions.SCADefinitions;
import org.apache.tuscany.sca.definitions.SCADefinitionsDocumentProcessor;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
@@ -85,6 +87,7 @@
import org.apache.tuscany.sca.runtime.RuntimeWireProcessor;
import org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint;
import org.apache.tuscany.sca.work.WorkScheduler;
+import org.xml.sax.SAXException;
public class ReallySmallRuntimeBuilder {
@@ -161,8 +164,7 @@
ContributionFactory contributionFactory,
AssemblyFactory assemblyFactory,
PolicyFactory policyFactory,
- InterfaceContractMapper mapper,
- ModelResolver domainModelResolver)
+ InterfaceContractMapper mapper)
throws ActivationException {
XMLInputFactory xmlFactory = registry.getExtensionPoint(XMLInputFactory.class);
@@ -188,11 +190,26 @@
URLArtifactProcessorExtensionPoint documentProcessors =
registry.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
+ // Load the Assembly XSD, used for validation
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema;
+ try {
+ schema = schemaFactory.newSchema(ReallySmallRuntimeBuilder.class.getClassLoader().getResource("tuscany-sca.xsd"));
+ } catch (SAXException e) {
+ throw new ActivationException(e);
+ }
+
// Create and register document processors for SCA assembly XML
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
- documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory));
- documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
- documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
+ documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory, schema));
+ documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory, schema));
+ documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory, schema));
+
+ // Create and register document processor for definitions.xml
+ SCADefinitionsDocumentProcessor definitionsDocumentProcessor =
+ new SCADefinitionsDocumentProcessor(staxProcessors, staxProcessor, xmlFactory, policyFactory, schema);
+ documentProcessors.addArtifactProcessor(definitionsDocumentProcessor);
+ ModelResolver domainModelResolver = definitionsDocumentProcessor.getDomainModelResolver();
// Create Model Resolver extension point
ModelResolverExtensionPoint modelResolvers = registry.getExtensionPoint(ModelResolverExtensionPoint.class);
@@ -219,6 +236,7 @@
ExtensibleURLArtifactProcessor documentProcessor = new ExtensibleURLArtifactProcessor(documentProcessors);
+ // Create the contribution service
ContributionService contributionService =
new ContributionServiceImpl(repository, packageProcessor, documentProcessor, staxProcessor,
contributionListener, domainModelResolver, modelResolvers, modelFactories,
@@ -242,19 +260,6 @@
registry.addExtensionPoint(scopeRegistry);
return scopeRegistry;
- }
-
- public static SCADefinitionsDocumentProcessor createSCADefinitionsDocProcessor(ExtensionPointRegistry registry,
- PolicyFactory policyFactory) {
- XMLInputFactory xmlFactory = registry.getExtensionPoint(XMLInputFactory.class);
- StAXArtifactProcessorExtensionPoint staxProcessors =
- registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- ExtensibleStAXArtifactProcessor staxProcessor =
- new ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory, XMLOutputFactory.newInstance());
- SCADefinitionsDocumentProcessor scaDocDefnProcessor =
- new SCADefinitionsDocumentProcessor(staxProcessors, staxProcessor, xmlFactory, policyFactory);
-
- return scaDocDefnProcessor;
}
}
Modified: incubator/tuscany/java/sca/modules/sca-definitions/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/sca-definitions/pom.xml?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/sca-definitions/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/sca-definitions/pom.xml Thu Sep 13 22:01:52 2007
@@ -66,5 +66,12 @@
<version>3.2.1</version>
<scope>runtime</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-assembly-xsd</artifactId>
+ <version>1.0-incubating-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified: incubator/tuscany/java/sca/modules/sca-definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitionsDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/sca-definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitionsDocumentProcessor.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/sca-definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitionsDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/sca-definitions/src/main/java/org/apache/tuscany/sca/definitions/SCADefinitionsDocumentProcessor.java Thu Sep 13 22:01:52 2007
@@ -27,14 +27,15 @@
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.validation.Schema;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ValidatingXMLStreamReader;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
-import org.apache.tuscany.sca.definitions.SCADefinitions;
import org.apache.tuscany.sca.policy.DefaultIntentAttachPointTypeFactory;
import org.apache.tuscany.sca.policy.IntentAttachPointTypeFactory;
import org.apache.tuscany.sca.policy.PolicyFactory;
@@ -54,6 +55,7 @@
private SCADefinitionsBuilder definitionsBuilder;
private ModelResolver domainModelResolver;
private XMLInputFactory inputFactory;
+ private Schema schema;
/**
* Construct a new SCADefinitions processor
@@ -64,9 +66,11 @@
public SCADefinitionsDocumentProcessor(StAXArtifactProcessorExtensionPoint staxProcessors,
StAXArtifactProcessor<Object> staxProcessor,
XMLInputFactory inputFactory,
- PolicyFactory policyFactory) {
+ PolicyFactory policyFactory,
+ Schema schema) {
this.extensionProcessor = (StAXArtifactProcessor<Object>)staxProcessor;
this.inputFactory = inputFactory;
+ this.schema = schema;
definitionsBuilder = new SCADefinitionsBuilderImpl();
this.domainModelResolver = new SCADefinitionsResolver();
@@ -89,6 +93,7 @@
try {
urlStream = url.openStream();
XMLStreamReader reader = inputFactory.createXMLStreamReader(urlStream);
+ reader = new ValidatingXMLStreamReader(reader, schema);
reader.nextTag();
SCADefinitions scaDefns = (SCADefinitions)extensionProcessor.read(reader);
Modified: incubator/tuscany/java/sca/modules/sca-definitions/src/test/java/org/apache/tuscany/sca/definitions/ReadDocumentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/sca-definitions/src/test/java/org/apache/tuscany/sca/definitions/ReadDocumentTestCase.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/sca-definitions/src/test/java/org/apache/tuscany/sca/definitions/ReadDocumentTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/sca-definitions/src/test/java/org/apache/tuscany/sca/definitions/ReadDocumentTestCase.java Thu Sep 13 22:01:52 2007
@@ -24,9 +24,12 @@
import java.util.Hashtable;
import java.util.Map;
+import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
import junit.framework.TestCase;
@@ -84,10 +87,14 @@
ExtensibleStAXArtifactProcessor staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
staxProcessors.addArtifactProcessor(new MockPolicyProcessor());
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = schemaFactory.newSchema(getClass().getClassLoader().getResource("tuscany-sca.xsd"));
+
scaDefnDocProcessor = new SCADefinitionsDocumentProcessor(staxProcessors,
staxProcessor,
inputFactory,
- policyFactory);
+ policyFactory,
+ schema);
URL url = getClass().getResource("test_definitions.xml");
URI uri = URI.create("test_definitions.xml");
Modified: incubator/tuscany/java/sca/samples/calculator/src/main/java/calculator/CalculatorClient.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator/src/main/java/calculator/CalculatorClient.java?rev=575532&r1=575531&r2=575532&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator/src/main/java/calculator/CalculatorClient.java (original)
+++ incubator/tuscany/java/sca/samples/calculator/src/main/java/calculator/CalculatorClient.java Thu Sep 13 22:01:52 2007
@@ -39,6 +39,26 @@
System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+ double r;
+ for (int i=0; i < 100; i++) {
+ r = calculatorService.add(3, 2);
+ r = calculatorService.subtract(3, 2);
+ r = calculatorService.multiply(3, 2);
+ r = calculatorService.divide(3, 2);
+ }
+
+ long begin = System.currentTimeMillis();
+ long n = 10000;
+ for (int i=0; i < n; i++) {
+ r = calculatorService.add(3, 2);
+ r = calculatorService.subtract(3, 2);
+ r = calculatorService.multiply(3, 2);
+ r = calculatorService.divide(3, 2);
+ }
+ long end = System.currentTimeMillis();
+ double time = ((double)(end - begin)) / ((double)n);
+ System.out.println("Time: " + time);
+
scaDomain.close();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org