cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dand...@apache.org
Subject svn commit: r554642 - in /incubator/cxf/trunk/rt: core/src/main/java/org/apache/cxf/databinding/source/ databinding/jaxb/src/main/java/org/apache/cxf/jaxb/ databinding/jaxb/src/test/java/org/apache/cxf/jaxb/ frontend/jaxws/src/main/resources/schemas/ f...
Date Mon, 09 Jul 2007 13:36:27 GMT
Author: dandiep
Date: Mon Jul  9 06:36:25 2007
New Revision: 554642

URL: http://svn.apache.org/viewvc?view=rev&rev=554642
Log:
Add support for <dataBinding> inside server/endpoint definitions.

Add limited support for schema first development. I'm having problems
with XmlSchema not retaining things like <xs:annotation>s though. I
think a refactoring of the schema related code is needed and I intend
to do this tonight/tomorrow.

(I soooo hate XmlSchema and regret ever using it)


Added:
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
  (with props)
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstTest.java
  (with props)
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/EchoFoo.java
  (with props)
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd
  (with props)
Modified:
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/resources/schemas/jaxws.xsd
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd

Added: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java?view=auto&rev=554642
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
(added)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
Mon Jul  9 06:36:25 2007
@@ -0,0 +1,81 @@
+/**
+ * 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.cxf.databinding.source;
+
+import java.util.Collection;
+
+import javax.xml.transform.dom.DOMSource;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.service.model.SchemaInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+
+public class AbstractDataBinding {
+    private Collection<DOMSource> schemas;
+
+    public Collection<DOMSource> getSchemas() {
+        return schemas;
+    }
+
+    public void setSchemas(Collection<DOMSource> schemas) {
+        this.schemas = schemas;
+    }
+    
+
+    protected void addSchemaDocument(ServiceInfo serviceInfo, 
+                                   XmlSchemaCollection col,
+                                   Document d,
+                                   String systemId) {
+        String ns = d.getDocumentElement().getAttribute("targetNamespace");
+        if (StringUtils.isEmpty(ns) || !isSameTNS(serviceInfo)) {
+            ns = serviceInfo.getInterface().getName().getNamespaceURI();
+            d.getDocumentElement().setAttribute("targetNamespace", ns);
+        }
+                           
+        NodeList nodes = d.getDocumentElement().getChildNodes();
+        for (int i = 0; i < nodes.getLength(); i++) {
+            Node n = nodes.item(i);
+            if (n instanceof Element) {
+                Element e = (Element) n;
+                if (e.getLocalName().equals("import")) {
+                    d.getDocumentElement().removeChild(e);
+                }
+            }
+        }
+        
+        SchemaInfo schema = new SchemaInfo(serviceInfo, ns);
+        schema.setElement(d.getDocumentElement());
+        schema.setSystemId(systemId);
+        XmlSchema xmlSchema = col.read(d.getDocumentElement());
+        schema.setSchema(xmlSchema);
+        serviceInfo.addSchema(schema);
+    }
+
+    private boolean isSameTNS(final ServiceInfo service) {
+        return service.getName().getNamespaceURI().equals(service.getInterface().getName().getNamespaceURI());
+    }
+}

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/AbstractDataBinding.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
(original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
Mon Jul  9 06:36:25 2007
@@ -34,60 +34,47 @@
 import java.util.Map;
 import java.util.ResourceBundle;
 import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.SchemaOutputResolver;
-import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.stream.XMLEventReader;
 import javax.xml.stream.XMLEventWriter;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 import javax.xml.transform.Result;
 import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
 
 import org.w3c.dom.Document;
-import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import org.xml.sax.SAXException;
 
 import com.sun.xml.bind.v2.ContextFactory;
 import com.sun.xml.bind.v2.runtime.JAXBContextImpl;
 
 import org.apache.cxf.common.i18n.BundleUtils;
 import org.apache.cxf.common.i18n.Message;
-import org.apache.cxf.common.i18n.UncheckedException;
 import org.apache.cxf.common.util.PackageUtils;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.databinding.DataBinding;
 import org.apache.cxf.databinding.DataReader;
 import org.apache.cxf.databinding.DataWriter;
-import org.apache.cxf.helpers.CastUtils;
-import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.databinding.source.AbstractDataBinding;
 import org.apache.cxf.jaxb.io.DataReaderImpl;
 import org.apache.cxf.jaxb.io.DataWriterImpl;
-import org.apache.cxf.resource.URIResolver;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.factory.ServiceConstructionException;
-import org.apache.cxf.service.model.SchemaInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.apache.cxf.wsdl11.WSDLServiceBuilder;
-import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public final class JAXBDataBinding implements DataBinding {
+public final class JAXBDataBinding extends AbstractDataBinding implements DataBinding {
 
     public static final String SCHEMA_RESOURCE = "SCHEMRESOURCE";
     
     public static final String UNWRAP_JAXB_ELEMENT = "unwrap.jaxb.element";
 
-    private static final Logger LOG = Logger.getLogger(JAXBDataBinding.class.getName());
-
     private static final ResourceBundle BUNDLE = BundleUtils.getBundle(JAXBDataBinding.class);
     
     private static final Class<?> SUPPORTED_READER_FORMATS[] = new Class<?>[]
{Node.class,
@@ -164,92 +151,6 @@
         return SUPPORTED_READER_FORMATS;
     }
     
-    public Map<String, SchemaInfo> getSchemas(ServiceInfo serviceInfo) {
-        Collection<String> schemaResources = CastUtils
-            .cast(serviceInfo.getProperty(SCHEMA_RESOURCE, List.class), String.class);
-
-        return loadSchemas(schemaResources);
-    }
-
-    private Map<String, SchemaInfo> loadSchemas(Collection<String> schemaResources)
{
-        Map<String, SchemaInfo> schemas = new HashMap<String, SchemaInfo>();
-        for (String schema : schemaResources) {
-            URIResolver resolver = null;
-            try {
-                resolver = new URIResolver(schema);
-            } catch (IOException e) {
-                LOG.log(Level.SEVERE, e.getMessage());
-            }
-            if (!resolver.isResolved()) {
-                throw new UncheckedException(new Message("SCHEMA_NOT_RESOLVED", BUNDLE, schema));
-            }
-            if (resolver.isFile()) {
-                // load schemas from file system
-                loadSchemaFromFile(schema, schemas);
-            } else {
-                // load schemas from classpath
-                loadSchemaFromClassPath(schema, schemas);
-            }
-        }
-        return schemas;
-    }
-
-    private void loadSchemaFromClassPath(String schema, Map<String, SchemaInfo> schemas)
{
-        // we can reuse code in javatowsdl tool after tool refactor
-        
-        try {
-            //TODO - until tools  refactor, just use basic URIResolver
-            XmlSchemaCollection schemaCol = new XmlSchemaCollection();
-            URIResolver resolver = new URIResolver(schema);
-
-            Document schemaDoc = DOMUtils.readXml(resolver.getInputStream());
-
-            XmlSchema xmlSchema = schemaCol.read(schemaDoc.getDocumentElement());
-            SchemaInfo schemaInfo = new SchemaInfo(null, xmlSchema.getTargetNamespace());
-
-            schemaInfo.setElement(schemaDoc.getDocumentElement());
-            schemas.put(schemaInfo.getNamespaceURI(), schemaInfo);
-        } catch (IOException e) {
-            LOG.log(Level.SEVERE, e.getMessage());
-            throw new UncheckedException(e);
-        } catch (SAXException e) {
-            LOG.log(Level.SEVERE, e.getMessage());
-            throw new UncheckedException(e);
-        } catch (ParserConfigurationException e) {
-            LOG.log(Level.SEVERE, e.getMessage());
-            throw new UncheckedException(e);
-        }
-    }
-
-    private void loadSchemaFromFile(String schema, Map<String, SchemaInfo> schemas)
{
-        try {
-            XmlSchemaCollection schemaCol = new XmlSchemaCollection();
-            URIResolver resolver = new URIResolver(schema);
-            schemaCol.setBaseUri(resolver.getFile().getParent());
-
-            Document schemaDoc = DOMUtils.readXml(resolver.getInputStream());
-
-            XmlSchema xmlSchema = schemaCol.read(schemaDoc.getDocumentElement());
-            SchemaInfo schemaInfo = new SchemaInfo(null, xmlSchema.getTargetNamespace());
-
-            schemaInfo.setElement(schemaDoc.getDocumentElement());
-            schemas.put(schemaInfo.getNamespaceURI(), schemaInfo);
-        } catch (IOException e) {
-            LOG.log(Level.SEVERE, e.getMessage());
-            throw new UncheckedException(e);
-        } catch (SAXException e) {
-            LOG.log(Level.SEVERE, e.getMessage());
-            throw new UncheckedException(e);
-        } catch (ParserConfigurationException e) {
-            LOG.log(Level.SEVERE, e.getMessage());
-            throw new UncheckedException(e);
-        }
-    }
-
-    private boolean isSameTNS(final ServiceInfo service) {
-        return service.getName().getNamespaceURI().equals(service.getInterface().getName().getNamespaceURI());
-    }
-    
     public void initialize(Service service) {
         //context is already set, don't redo it
         if (context != null) {
@@ -284,37 +185,23 @@
     
             col = new XmlSchemaCollection();
     
-            try {
-                for (DOMResult r : generateJaxbSchemas()) {
-                    Document d = (Document)r.getNode();
-                    String ns = d.getDocumentElement().getAttribute("targetNamespace");
-                    if (StringUtils.isEmpty(ns) || !isSameTNS(serviceInfo)) {
-                        ns = serviceInfo.getInterface().getName().getNamespaceURI();
-                        d.getDocumentElement().setAttribute("targetNamespace", ns);
-                    }
-                                       
-                    NodeList nodes = d.getDocumentElement().getChildNodes();
-                    for (int i = 0; i < nodes.getLength(); i++) {
-                        Node n = nodes.item(i);
-                        if (n instanceof Element) {
-                            Element e = (Element) n;
-                            if (e.getLocalName().equals("import")) {
-                                d.getDocumentElement().removeChild(e);
-                            }
-                        }
+            Collection<DOMSource> schemas = getSchemas();
+            if (schemas != null) {
+                for (DOMSource r : schemas) {
+                    addSchemaDocument(serviceInfo, col, 
+                                      (Document)r.getNode(), r.getSystemId());
+                }
+            } else {
+                try {
+                    for (DOMResult r : generateJaxbSchemas()) {
+                        addSchemaDocument(serviceInfo, col, 
+                                          (Document)r.getNode(), r.getSystemId());
                     }
-                    
-                    SchemaInfo schema = new SchemaInfo(serviceInfo, ns);
-                    schema.setElement(d.getDocumentElement());
-                    schema.setSystemId(r.getSystemId());
-                    XmlSchema xmlSchema = col.read(d.getDocumentElement());
-                    schema.setSchema(xmlSchema);
-                    serviceInfo.addSchema(schema);
+                } catch (IOException e) {
+                    throw new ServiceConstructionException(new Message("SCHEMA_GEN_EXC",
BUNDLE), e);
                 }
-            } catch (IOException e) {
-                throw new ServiceConstructionException(new Message("SCHEMA_GEN_EXC", BUNDLE),
e);
             }
-    
+            
             serviceInfo.setProperty(WSDLServiceBuilder.WSDL_SCHEMA_LIST, col);
             JAXBContextImpl riContext;
             if (context instanceof JAXBContextImpl) {
@@ -333,7 +220,7 @@
             schemaInit.walk();
         }
     }
-    
+
     public void setExtraClass(Class[] userExtraClass) {
         extraClass = userExtraClass;
     }

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java
(original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBDataBindingTest.java
Mon Jul  9 06:36:25 2007
@@ -21,11 +21,9 @@
 
 
 import java.io.OutputStream;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.logging.Logger;
 
@@ -52,8 +50,6 @@
 import org.apache.cxf.jaxb.io.DataWriterImpl;
 import org.apache.cxf.jaxb_misc.ObjectFactory;
 import org.apache.cxf.jaxb_misc.TestJAXBClass;
-import org.apache.cxf.service.model.SchemaInfo;
-import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.transport.DestinationFactoryManager;
 import org.apache.cxf.wsdl11.WSDLServiceBuilder;
 import org.apache.hello_world.types.GreetMe;
@@ -69,17 +65,13 @@
 
     private static final Logger LOG = Logger.getLogger(JAXBDataBindingTest.class.getName());
     private static final String WSDL_PATH = "/wsdl/hello_world.wsdl";
-    private static final String SCHEMA1 = "/schemas/wsdl/wsdl.xsd";
-    private static final String SCHEMA2 = "/schema/jms.xsd";
     private Definition def;
     private Service service;
-    private ServiceInfo serviceInfo;
 
     private IMocksControl control;
     private Bus bus;
     private BindingFactoryManager bindingFactoryManager;
     private JAXBDataBinding jaxbDataBinding;
-    private Map<String, SchemaInfo> schemaMap;
     private DestinationFactoryManager destinationFactoryManager;
 
     @Before
@@ -112,16 +104,7 @@
             }
         }
         
-        serviceInfo = wsdlServiceBuilder.buildServices(def, service).get(0);
-        List<String> schemas = new ArrayList<String>();
-
-        String schema1 = getClass().getResource(SCHEMA1).toString();
-        String schema2 = getClass().getResource(SCHEMA2).toString();
-        schemas.add(schema1);
-        schemas.add(schema2);
-                
-        serviceInfo.setProperty(JAXBDataBinding.SCHEMA_RESOURCE, schemas);
-        schemaMap = jaxbDataBinding.getSchemas(serviceInfo);
+        wsdlServiceBuilder.buildServices(def, service);
     }
 
     @After
@@ -129,19 +112,6 @@
 
     }
 
-    @Test
-    public void testGetSchemas() throws Exception {
-        assertEquals(schemaMap.size(), 2);
-        assertTrue(schemaMap.containsKey("http://schemas.xmlsoap.org/wsdl/"));
-        assertTrue(schemaMap.containsKey("http://cxf.apache.org/transports/jms"));
-        SchemaInfo wsdlSchema = schemaMap.get("http://schemas.xmlsoap.org/wsdl/");
-        SchemaInfo jmsSchema = schemaMap.get("http://cxf.apache.org/transports/jms");
-        assertNotNull(wsdlSchema.getElement());
-        assertNotNull(jmsSchema.getElement());
-        assertEquals(wsdlSchema.getNamespaceURI(), "http://schemas.xmlsoap.org/wsdl/");
-        assertEquals(jmsSchema.getNamespaceURI(), "http://cxf.apache.org/transports/jms");
-    }
-    
     @Test
     public void testCreateJAXBContext() throws Exception {
         try {

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/resources/schemas/jaxws.xsd
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/resources/schemas/jaxws.xsd?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/resources/schemas/jaxws.xsd (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/resources/schemas/jaxws.xsd Mon Jul  9
06:36:25 2007
@@ -17,7 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<xsd:schema xmlns="http://www.springframework.org/schema/myns"
+<xsd:schema xmlns="http://cxf.apache.org/jaxws"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:beans="http://www.springframework.org/schema/beans"
   xmlns:cxf-beans="http://cxf.apache.org/configuration/beans"
@@ -33,8 +33,9 @@
     <xsd:complexType>
       <xsd:complexContent>
         <xsd:extension base="beans:identifiedType">
-          <xsd:sequence>
+          <xsd:all>
             <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
+            <xsd:element name="dataBinding" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="executor" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="implementor" type="xsd:anyType" minOccurs="0"/>
@@ -43,8 +44,9 @@
             <xsd:element name="outInterceptors" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="properties" type="beans:mapType" minOccurs="0"/>
+            <xsd:element name="schemaLocations" type="schemasType" minOccurs="0"/>
             <xsd:element name="serviceFactory" type="xsd:anyType" minOccurs="0"/>
-          </xsd:sequence>
+          </xsd:all>
           <xsd:attributeGroup ref="cxf-beans:beanAttributes"/>
           <xsd:attribute name="address" type="xsd:string" />
           <xsd:attribute name="bindingUri" type="xsd:string" />
@@ -63,8 +65,9 @@
     <xsd:complexType>
       <xsd:complexContent>
         <xsd:extension base="beans:identifiedType">
-          <xsd:sequence>
+          <xsd:all>
             <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
+            <xsd:element name="dataBinding" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="executor" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="implementor" type="xsd:anyType" minOccurs="0"/>
@@ -74,9 +77,10 @@
             <xsd:element name="outInterceptors" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="properties" type="beans:mapType" minOccurs="0"/>
+            <xsd:element name="schemaLocations" type="schemasType" minOccurs="0"/>
             <xsd:element name="serviceBean" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="serviceFactory" type="xsd:anyType" minOccurs="0"/>
-          </xsd:sequence>
+          </xsd:all>
           <xsd:attributeGroup ref="cxf-beans:beanAttributes"/>
           <xsd:attribute name="address" type="xsd:string" />
           <xsd:attribute name="bus" type="xsd:string" />
@@ -94,8 +98,9 @@
     <xsd:complexType>
       <xsd:complexContent>
         <xsd:extension base="beans:identifiedType">
-          <xsd:sequence>
+          <xsd:all>
             <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
+            <xsd:element name="dataBinding" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="inInterceptors" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="inFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
@@ -103,7 +108,7 @@
             <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="properties" type="beans:mapType" minOccurs="0"/>
             <xsd:element name="conduitSelector" type="xsd:anyType" minOccurs="0"/>
-          </xsd:sequence>
+          </xsd:all>
           <xsd:attributeGroup ref="cxf-beans:beanAttributes"/>
           <xsd:attribute name="address" type="xsd:string" />
           <xsd:attribute name="bindingUri" type="xsd:string" />
@@ -118,4 +123,11 @@
       </xsd:complexContent>
     </xsd:complexType>
   </xsd:element>
+  
+  <xsd:complexType name="schemasType">
+    <xsd:sequence>
+      <xsd:element name="schemaLocation" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  
 </xsd:schema>

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstTest.java?view=auto&rev=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstTest.java
(added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstTest.java
Mon Jul  9 06:36:25 2007
@@ -0,0 +1,51 @@
+/**
+ * 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.cxf.jaxws;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.w3c.dom.Document;
+
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.jaxws.service.EchoFoo;
+import org.junit.Test;
+
+public class SchemaFirstTest extends AbstractJaxWsTest {
+
+
+    @Test
+    public void testEndpoint() throws Exception {
+
+        JaxWsServerFactoryBean svr = new JaxWsServerFactoryBean();
+        svr.setBus(bus);
+        svr.setServiceBean(new EchoFoo());
+        svr.setAddress("http://localhost:9000/hello");
+        List<String> schemas = new ArrayList<String>();
+        schemas.add("/org/apache/cxf/jaxws/service/echoFoo.xsd");
+        svr.setSchemaLocations(schemas);
+        Server server = svr.create();
+
+        Document d = getWSDLDocument(server);
+
+        // XmlSchema still isn't preserving all the extra info...
+        assertValid("//xsd:complexType[@name='foo']/xsd:sequence", d);
+    }
+}

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstTest.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/EchoFoo.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/EchoFoo.java?view=auto&rev=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/EchoFoo.java
(added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/EchoFoo.java
Mon Jul  9 06:36:25 2007
@@ -0,0 +1,29 @@
+/**
+ * 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.cxf.jaxws.service;
+
+import javax.jws.WebService;
+
+@WebService
+public class EchoFoo {
+    public Foo echoFoo(Foo foo) {
+        return foo;
+    }
+}

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/EchoFoo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/EchoFoo.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/EchoFoo.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd?view=auto&rev=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd
(added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd
Mon Jul  9 06:36:25 2007
@@ -0,0 +1,13 @@
+<xs:schema xmlns="http://service.jaxws.cxf.apache.org/"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  attributeFormDefault="unqualified" elementFormDefault="unqualified"
+  targetNamespace="http://service.jaxws.cxf.apache.org/">
+  <xs:complexType name="foo">
+    <xs:annotation>
+      bibbity bob
+      <!-- foo bar -->
+    </xs:annotation>
+    <xs:sequence>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/echoFoo.xsd
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
(original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
Mon Jul  9 06:36:25 2007
@@ -29,6 +29,7 @@
 import org.apache.cxf.binding.soap.SoapBindingConfiguration;
 import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;
 import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
+import org.apache.cxf.databinding.source.SourceDataBinding;
 import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.NullConduitSelector;
 import org.apache.cxf.frontend.ClientProxy;
@@ -136,6 +137,8 @@
         assertTrue(bc instanceof SoapBindingConfiguration);
         SoapBindingConfiguration sbc = (SoapBindingConfiguration) bc;
         assertTrue(sbc.getVersion() instanceof Soap12);
+        
+        bean = (JaxWsServerFactoryBean) ctx.getBean("inlineDataBinding");
     }
     
 
@@ -179,5 +182,7 @@
         }
         assertTrue(saaj);
         assertTrue(logging);
+        
+        assertTrue(client.getEndpoint().getService().getDataBinding() instanceof SourceDataBinding);
     }
 }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml
(original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/clients.xml
Mon Jul  9 06:36:25 2007
@@ -56,6 +56,9 @@
     <jaxws:conduitSelector>
       <bean class="org.apache.cxf.endpoint.NullConduitSelector"/>
     </jaxws:conduitSelector>
+    <jaxws:dataBinding>
+      <bean class="org.apache.cxf.databinding.source.SourceDataBinding"/>
+    </jaxws:dataBinding>
   </jaxws:client>
     
 <!--

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml
(original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/servers.xml
Mon Jul  9 06:36:25 2007
@@ -72,4 +72,12 @@
       <soap:soapBinding mtomEnabled="true" version="1.2"/>
     </jaxws:binding>
   </jaxws:server>
+  
+  <jaxws:server id="inlineDataBinding" 
+    serviceClass="org.apache.cxf.jaxws.service.Hello"
+    address="http://localhost:8080/test">
+    <jaxws:dataBinding>
+      <bean class="org.apache.cxf.jaxb.JAXBDataBinding"/>
+    </jaxws:dataBinding>
+  </jaxws:server>
 </beans>

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
(original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
Mon Jul  9 06:36:25 2007
@@ -35,6 +35,7 @@
 import org.apache.cxf.binding.soap.model.SoapBindingInfo;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.databinding.DataBinding;
 import org.apache.cxf.endpoint.ConduitSelector;
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.endpoint.EndpointException;
@@ -61,6 +62,7 @@
     private String transportId;
     private String bindingId;
     private Class serviceClass;
+    private DataBinding dataBinding;
     private BindingFactory bindingFactory;
     private DestinationFactory destinationFactory;
     private ReflectionServiceFactoryBean serviceFactory;
@@ -75,10 +77,7 @@
         Service service = serviceFactory.getService();
         
         if (service == null) {
-            Class cls = getServiceClass();
-
-            serviceFactory.setServiceClass(cls);
-            serviceFactory.setBus(getBus());
+            initializeServiceFactory();
             service = serviceFactory.create();
         }
         
@@ -144,6 +143,16 @@
         return ep;
     }
 
+    protected void initializeServiceFactory() {
+        Class cls = getServiceClass();
+
+        serviceFactory.setServiceClass(cls);
+        serviceFactory.setBus(getBus());
+        if (dataBinding != null) {
+            serviceFactory.setDataBinding(dataBinding);
+        }
+    }
+
     protected EndpointInfo createEndpointInfo() throws BusException {
         if (transportId == null 
             && getAddress() != null) {
@@ -369,4 +378,14 @@
     public void setConduitSelector(ConduitSelector selector) {
         conduitSelector = selector;
     }
+
+    public DataBinding getDataBinding() {
+        return dataBinding;
+    }
+
+    public void setDataBinding(DataBinding dataBinding) {
+        this.dataBinding = dataBinding;
+    }
+
+    
 }

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
(original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
Mon Jul  9 06:36:25 2007
@@ -28,6 +28,7 @@
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.configuration.security.AuthorizationPolicy;
+import org.apache.cxf.databinding.DataBinding;
 import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.ConduitSelector;
 import org.apache.cxf.feature.AbstractFeature;
@@ -54,6 +55,7 @@
     private Map<String, Object> properties;
     private Bus bus;
     private List<AbstractFeature> features;
+    private DataBinding dataBinding;
     
     public ClientProxyFactoryBean() {
         super();
@@ -79,6 +81,10 @@
             clientFactoryBean.setBus(bus);
         }
 
+        if (dataBinding != null) {
+            clientFactoryBean.setDataBinding(dataBinding);
+        }
+        
         Client c = clientFactoryBean.create();
         if (getInInterceptors() != null) {
             c.getInInterceptors().addAll(getInInterceptors());
@@ -216,6 +222,14 @@
 
     public void setFeatures(List<AbstractFeature> features) {
         this.features = features;
+    }
+
+    public DataBinding getDataBinding() {
+        return dataBinding;
+    }
+
+    public void setDataBinding(DataBinding dataBinding) {
+        this.dataBinding = dataBinding;
     }
     
 }

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
(original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
Mon Jul  9 06:36:25 2007
@@ -19,16 +19,30 @@
 package org.apache.cxf.frontend;
 
 import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
+import java.util.logging.Logger;
+
+import javax.xml.transform.dom.DOMSource;
+
+import org.w3c.dom.Document;
 
 import org.apache.cxf.BusException;
+import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.databinding.DataBinding;
+import org.apache.cxf.databinding.source.AbstractDataBinding;
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.endpoint.EndpointException;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.endpoint.ServerImpl;
 import org.apache.cxf.feature.AbstractFeature;
+import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.jaxb.JAXBDataBinding;
+import org.apache.cxf.resource.ResourceManager;
+import org.apache.cxf.resource.URIResolver;
 import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
 import org.apache.cxf.service.factory.ServiceConstructionException;
 import org.apache.cxf.service.invoker.BeanInvoker;
@@ -65,9 +79,12 @@
  * </pre>
  */
 public class ServerFactoryBean extends AbstractEndpointFactory {
+    private static final Logger LOG = LogUtils.getL7dLogger(ServerFactoryBean.class);
+
     private Server server;
     private boolean start = true;
     private Object serviceBean;
+    private List<String> schemaLocations;
     
     public ServerFactoryBean() {
         super();
@@ -111,6 +128,46 @@
         return server;
     }
 
+    
+    @Override
+    protected void initializeServiceFactory() {
+        super.initializeServiceFactory();
+        
+        DataBinding db = getServiceFactory().getDataBinding();
+        if (db instanceof AbstractDataBinding && schemaLocations != null) {
+            ResourceManager rr = getBus().getExtension(ResourceManager.class);
+            
+            List<DOMSource> schemas = new ArrayList<DOMSource>();
+            for (String l : schemaLocations) {
+                URL url = rr.resolveResource(l, URL.class);
+                
+                if (url == null) {
+                    URIResolver res;
+                    try {
+                        res = new URIResolver(l);
+                    } catch (IOException e) {
+                        throw new ServiceConstructionException(new Message("INVALID_SCHEMA_URL",
LOG), e);
+                    }
+                    
+                    if (!res.isResolved()) {
+                        throw new ServiceConstructionException(new Message("INVALID_SCHEMA_URL",
LOG));
+                    }
+                    url = res.getURL();
+                }
+                
+                Document d;
+                try {
+                    d = DOMUtils.readXml(url.openStream());
+                } catch (Exception e) {
+                    throw new ServiceConstructionException(e);
+                }
+                schemas.add(new DOMSource(d, url.toString()));
+            }
+            
+            ((AbstractDataBinding)db).setSchemas(schemas);
+        }
+    }
+
     protected void applyFeatures() {
         if (getFeatures() != null) {
             for (AbstractFeature feature : getFeatures()) {
@@ -170,5 +227,13 @@
     public void setServiceBean(Object serviceBean) {
         this.serviceBean = serviceBean;
     }
-    
+
+    public List<String> getSchemaLocations() {
+        return schemaLocations;
+    }
+
+    public void setSchemaLocations(List<String> schemaLocations) {
+        this.schemaLocations = schemaLocations;
+    }
+
 }

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd?view=diff&rev=554642&r1=554641&r2=554642
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd Mon Jul 
9 06:36:25 2007
@@ -37,6 +37,7 @@
       <xsd:extension base="beans:identifiedType">
         <xsd:all>
           <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
+          <xsd:element name="dataBinding" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="executor" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="implementor" type="xsd:anyType" minOccurs="0"/>
@@ -46,6 +47,7 @@
           <xsd:element name="outInterceptors" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="properties" type="beans:mapType" minOccurs="0"/>
+          <xsd:element name="schemaLocations" type="schemasType" minOccurs="0"/>
           <xsd:element name="serviceBean" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="serviceFactory" type="xsd:anyType" minOccurs="0"/>
         </xsd:all>
@@ -69,6 +71,7 @@
         <xsd:all>
           <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="conduitSelector" type="xsd:anyType" minOccurs="0"/>
+          <xsd:element name="dataBinding" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="inInterceptors" type="xsd:anyType" minOccurs="0"/>
           <xsd:element name="inFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
@@ -89,4 +92,11 @@
       </xsd:extension>
     </xsd:complexContent>
   </xsd:complexType>
+  
+  <xsd:complexType name="schemasType">
+    <xsd:sequence>
+      <xsd:element name="schemaLocation" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  
 </xsd:schema>



Mime
View raw message