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