Author: rfeng
Date: Thu Apr 30 18:57:32 2009
New Revision: 770396

URL: http://svn.apache.org/viewvc?rev=770396&view=rev
Log:
Start to add contribution level SDO type registration

Added:
    
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypes.java
    
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/
    
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesModelResolver.java
    
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesProcessor.java
    
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver
Modified:
    
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
    
tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java

Added: 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypes.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypes.java?rev=770396&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypes.java
 (added)
+++ 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypes.java
 Thu Apr 30 18:57:32 2009
@@ -0,0 +1,105 @@
+/*
+ * 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.databinding.sdo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import commonj.sdo.Type;
+
+/**
+ * The model object for sdo.types
+ *
+ * @version $Rev: 537464 $ $Date: 2007-05-12 08:37:14 -0700 (Sat, 12 May 2007) 
$
+ *
+ * This extends the META-INF/sca-contribution.xml to register SDO types from 
static factory classes or WSDL/XSD files
+ *
+ * &lt;contribution xmlns=&quot;http://www.osoa.org/xmlns/sca/1.0&quot;<br>
+ * 
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:tuscany=&quot;http://tuscany.apache.org/xmlns/sca/1.0&quot;&gt;<br>
+ * &nbsp;&nbsp;&nbsp;&nbsp;&lt;tuscany:sdo.types 
namespace=&quot;http://helloworld&quot; 
location=&quot;wsdl/helloworld.wsdl&quot;/&gt;<br>
+ * &lt;/contribution&gt;
+ *
+ */
+public class SDOTypes {
+    public static final QName SDO_TYPES = new 
QName("http://tuscany.apache.org/xmlns/sca/1.0";, "sdo.types");
+
+    private String factory;
+    private String schemaLocation;
+    private String namespace;
+
+    private List<Type> types = new ArrayList<Type>();
+
+    private boolean unresolved;
+
+    public SDOTypes() {
+        super();
+        setUnresolved(true);
+    }
+
+    public boolean isUnresolved() {
+        return unresolved;
+    }
+
+    public void setUnresolved(boolean undefined) {
+        this.unresolved = undefined;
+    }
+
+    /**
+     * @return the factoryClassName
+     */
+    public String getFactory() {
+        return factory;
+    }
+
+    /**
+     * @param factoryClassName the factoryClassName to set
+     */
+    public void setFactory(String factoryClassName) {
+        this.factory = factoryClassName;
+    }
+
+    /**
+     * @return the schemaLocation
+     */
+    public String getSchemaLocation() {
+        return schemaLocation;
+    }
+
+    /**
+     * @param schemaLocation the schemaLocation to set
+     */
+    public void setSchemaLocation(String schemaLocation) {
+        this.schemaLocation = schemaLocation;
+    }
+
+    public String getNamespace() {
+        return namespace;
+    }
+
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
+    }
+
+    public List<Type> getTypes() {
+        return types;
+    }
+}

Added: 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesModelResolver.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesModelResolver.java?rev=770396&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesModelResolver.java
 (added)
+++ 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesModelResolver.java
 Thu Apr 30 18:57:32 2009
@@ -0,0 +1,246 @@
+/*
+ * 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.databinding.sdo.xml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import 
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.databinding.sdo.SDOTypes;
+import org.apache.tuscany.sca.monitor.Monitor;
+import org.apache.tuscany.sca.monitor.MonitorFactory;
+import org.apache.tuscany.sca.monitor.Problem;
+import org.apache.tuscany.sca.monitor.Problem.Severity;
+import org.apache.tuscany.sca.xsd.XSDFactory;
+import org.apache.tuscany.sca.xsd.XSDefinition;
+import org.apache.tuscany.sdo.api.SDOUtil;
+
+import commonj.sdo.Type;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * SDO types model resolver that aggregates the SDO type registration for an 
SCA contribution
+ */
+public class SDOTypesModelResolver implements ModelResolver {
+    private Contribution contribution;
+    private HelperContext helperContext;
+    private List<SDOTypes> sdoTypes = new ArrayList<SDOTypes>();
+    private ContributionFactory contributionFactory;
+    private XSDFactory xsdFactory;
+    private Monitor monitor;
+
+    public SDOTypesModelResolver(Contribution contribution, 
ExtensionPointRegistry registry) {
+        super();
+        ModelFactoryExtensionPoint modelFactories = 
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        this.contributionFactory = 
modelFactories.getFactory(ContributionFactory.class);
+        this.xsdFactory = modelFactories.getFactory(XSDFactory.class);
+        this.monitor = createMonitor(registry);
+        this.contribution = contribution;
+    }
+
+    private static Monitor createMonitor(ExtensionPointRegistry 
extensionPoints) {
+        UtilityExtensionPoint utilities = 
extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
+        if (utilities != null) {
+            MonitorFactory monitorFactory = 
utilities.getUtility(MonitorFactory.class);
+            if (monitorFactory != null) {
+                return monitorFactory.createMonitor();
+            }
+        }
+        return null;
+    }
+
+    public void addModel(Object resolved) {
+        if (helperContext == null) {
+            helperContext = SDOUtil.createHelperContext();
+        }
+        SDOTypes types = (SDOTypes)resolved;
+        try {
+            loadSDOTypes(types, contribution.getModelResolver());
+        } catch (ContributionResolveException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        sdoTypes.add(types);
+    }
+
+    public Object removeModel(Object resolved) {
+        SDOTypes types = (SDOTypes)resolved;
+        return sdoTypes.remove(types);
+    }
+
+    public <T> T resolveModel(Class<T> modelClass, T unresolved) {
+        SDOTypes types = (SDOTypes)unresolved;
+        String ns = types.getNamespace();
+        for (SDOTypes t : sdoTypes) {
+            if (t.getNamespace().equals(types.getNamespace())) {
+                try {
+                    loadSDOTypes(types, contribution.getModelResolver());
+                } catch (ContributionResolveException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+                return (T)t;
+            }
+        }
+        return (T)types;
+    }
+
+    private static void register(Class<?> factoryClass, HelperContext 
helperContext) throws Exception {
+        Field field = factoryClass.getField("INSTANCE");
+        Object factory = field.get(null);
+        Method method = factory.getClass().getMethod("register", new Class[] 
{HelperContext.class});
+        method.invoke(factory, new Object[] {helperContext});
+    }
+
+    private void defineFromFactory(SDOTypes importSDO, ModelResolver resolver) 
throws ContributionResolveException {
+        String factoryName = importSDO.getFactory();
+        if (factoryName != null) {
+            ClassReference reference = new ClassReference(factoryName);
+            ClassReference resolved = 
resolver.resolveModel(ClassReference.class, reference);
+            if (resolved != null && !resolved.isUnresolved()) {
+                try {
+                    Class<?> factoryClass = resolved.getJavaClass();
+                    // Get the namespace
+                    Field field = factoryClass.getField("NAMESPACE_URI");
+                    importSDO.setNamespace((String)field.get(null));
+                    register(factoryClass, helperContext);
+                    importSDO.setUnresolved(false);
+                } catch (Exception e) {
+                    ContributionResolveException ce = new 
ContributionResolveException(e);
+                    error("ContributionResolveException", resolver, ce);
+                    //throw ce;
+                }
+            } else {
+                error("FailToResolveClass", resolver, factoryName);
+                //ContributionResolveException loaderException =
+                //new ContributionResolveException("Fail to resolve class: " + 
factoryName);
+                //throw loaderException;
+            }
+        }
+    }
+
+    private void defineFromXSD(SDOTypes importSDO, ModelResolver resolver) 
throws ContributionResolveException {
+        String location = importSDO.getSchemaLocation();
+        if (location != null) {
+            try {
+                Artifact artifact = contributionFactory.createArtifact();
+                artifact.setURI(location);
+                artifact = resolver.resolveModel(Artifact.class, artifact);
+                if (artifact.getLocation() != null) {
+                    String wsdlURL = artifact.getLocation();
+                    URLConnection connection = new 
URL(wsdlURL).openConnection();
+                    connection.setUseCaches(false);
+                    InputStream xsdInputStream = connection.getInputStream();
+                    try {
+                        XSDHelper xsdHelper = helperContext.getXSDHelper();
+                        List<Type> sdoTypes = xsdHelper.define(xsdInputStream, 
wsdlURL);
+                        for (Type t : sdoTypes) {
+                            importSDO.setNamespace(t.getURI());
+                            break;
+                        }
+                        importSDO.getTypes().addAll(sdoTypes);
+                    } finally {
+                        xsdInputStream.close();
+                    }
+                    importSDO.setUnresolved(false);
+                } else {
+                    error("FailToResolveLocation", resolver, location);
+                    //ContributionResolveException loaderException = new 
ContributionResolveException("Fail to resolve location: " + location);
+                    //throw loaderException;
+                }
+            } catch (IOException e) {
+                ContributionResolveException ce = new 
ContributionResolveException(e);
+                error("ContributionResolveException", resolver, ce);
+                //throw ce;
+            }
+        } else {
+            String ns = importSDO.getNamespace();
+            if (ns != null) {
+                XSDefinition xsd = xsdFactory.createXSDefinition();
+                xsd.setUnresolved(true);
+                xsd.setNamespace(ns);
+                xsd = resolver.resolveModel(XSDefinition.class, xsd);
+                if (!xsd.isUnresolved()) {
+                    XSDHelper xsdHelper = helperContext.getXSDHelper();
+                    xsdHelper.define(xsd.getLocation().toString());
+                }
+            }
+        }
+    }
+
+    private void loadSDOTypes(SDOTypes types, ModelResolver resolver) throws 
ContributionResolveException {
+        synchronized (types) {
+            if (types.isUnresolved()) {
+                defineFromFactory(types, resolver);
+                defineFromXSD(types, resolver);
+                types.setUnresolved(false);
+            }
+        }
+    }
+
+    /**
+     * Report a exception.
+     *
+     * @param problems
+     * @param message
+     * @param model
+     */
+    private void error(String message, Object model, Exception ex) {
+        if (monitor != null) {
+            Problem problem =
+                new ProblemImpl(this.getClass().getName(), 
"databinding-sdo-validation-messages", Severity.ERROR,
+                                model, message, ex);
+            monitor.problem(problem);
+        }
+    }
+
+    /**
+     * Report a error.
+     *
+     * @param problems
+     * @param message
+     * @param model
+     */
+    private void error(String message, Object model, Object... 
messageParameters) {
+        if (monitor != null) {
+            Problem problem =
+                new ProblemImpl(this.getClass().getName(), 
"databinding-sdo-validation-messages", Severity.ERROR,
+                                model, message, (Object[])messageParameters);
+            monitor.problem(problem);
+        }
+    }
+
+}

Added: 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesProcessor.java?rev=770396&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesProcessor.java
 (added)
+++ 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/xml/SDOTypesProcessor.java
 Thu Apr 30 18:57:32 2009
@@ -0,0 +1,109 @@
+/*
+ * 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.databinding.sdo.xml;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+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.contribution.service.ContributionWriteException;
+import org.apache.tuscany.sca.databinding.sdo.SDOTypes;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+
+/**
+ * Loader that handles &lt;import.sdo&gt; elements.
+ *
+ * @version $Rev: 667376 $ $Date: 2008-06-12 23:29:16 -0700 (Thu, 12 Jun 2008) 
$
+ */
+public class SDOTypesProcessor implements StAXArtifactProcessor<SDOTypes> {
+
+    public SDOTypesProcessor(ModelFactoryExtensionPoint modelFactories, 
Monitor monitor) {
+    }
+
+    public QName getXMLType() {
+        return SDOTypes.SDO_TYPES;
+    }
+
+    public SDOTypes read(XMLStreamReader reader) throws 
ContributionReadException, XMLStreamException {
+        assert SDOTypes.SDO_TYPES.equals(reader.getName());
+
+        // FIXME: How do we associate the application HelperContext with the 
one
+        // imported by the composite
+        SDOTypes sdoTypes = new SDOTypes();
+        String factoryName = reader.getAttributeValue(null, "factory");
+        if (factoryName != null) {
+            sdoTypes.setFactory(factoryName);
+        }
+        String location = reader.getAttributeValue(null, "location");
+        if (location != null) {
+            sdoTypes.setSchemaLocation(location);
+        }
+        String ns = reader.getAttributeValue(null, "namespace");
+        sdoTypes.setNamespace(ns);
+
+        // Skip to end element
+        while (reader.hasNext()) {
+            if (reader.next() == END_ELEMENT && 
SDOTypes.SDO_TYPES.equals(reader.getName())) {
+                break;
+            }
+        }
+        return sdoTypes;
+    }
+
+    public QName getArtifactType() {
+        return SDOTypes.SDO_TYPES;
+    }
+
+    public void write(SDOTypes model, XMLStreamWriter writer) throws 
ContributionWriteException {
+        try {
+            writer.writeStartElement(SDOTypes.SDO_TYPES.getNamespaceURI(), 
SDOTypes.SDO_TYPES.getLocalPart());
+            if (model.getNamespace() != null) {
+                writer.writeAttribute("namespace", model.getNamespace());
+            }
+            if (model.getSchemaLocation() != null) {
+                writer.writeAttribute("location", model.getSchemaLocation());
+            }
+            if (model.getFactory() != null) {
+                writer.writeAttribute("factory", model.getFactory());
+            }
+            writer.writeEndElement();
+        } catch (XMLStreamException e) {
+            throw new ContributionWriteException(e);
+        }
+    }
+
+    public Class<SDOTypes> getModelType() {
+        return SDOTypes.class;
+    }
+
+    public void resolve(SDOTypes types, ModelResolver resolver) throws 
ContributionResolveException {
+        // Defer the resolution to SDOTypesResolver which aggragates the type 
registrations into an instance of HelperContext
+        resolver.addModel(types);
+    }
+
+}

Modified: 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor?rev=770396&r1=770395&r2=770396&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
 Thu Apr 30 18:57:32 2009
@@ -5,14 +5,15 @@
 # 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. 
+# under the License.
 
 
org.apache.tuscany.sca.databinding.sdo.ImportSDOProcessor;qname=http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0#import.sdo,model=org.apache.tuscany.sca.databinding.sdo.ImportSDO
+org.apache.tuscany.sca.databinding.sdo.xml.SDOTypesProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#sdo.types,model=org.apache.tuscany.sca.databinding.sdo.SDOTypes

Added: 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver?rev=770396&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver
 (added)
+++ 
tuscany/branches/sca-java-1.x/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver
 Thu Apr 30 18:57:32 2009
@@ -0,0 +1,17 @@
+# 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.
+org.apache.tuscany.sca.databinding.sdo.xml.SDOTypesModelResolver;model=org.apache.tuscany.sca.databinding.sdo.SDOTypes
\ No newline at end of file

Modified: 
tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java?rev=770396&r1=770395&r2=770396&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
 Thu Apr 30 18:57:32 2009
@@ -6,15 +6,15 @@
  * 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.    
+ * under the License.
  */
 
 package org.apache.tuscany.sca.xsd.xml;
@@ -45,7 +45,7 @@
 
 /**
  * A Model Resolver for XSD models.
- * 
+ *
  * @version $Rev$ $Date$
  */
 public class XSDModelResolver implements ModelResolver {
@@ -85,8 +85,8 @@
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
 
         XSDefinition definition = (XSDefinition)unresolved;
-        String namespace = definition.getNamespace();        
-        
+        String namespace = definition.getNamespace();
+
         // Lookup a definition for the given namespace within the
         // current contribution.
         List<XSDefinition> list = map.get(namespace);
@@ -175,6 +175,7 @@
         } else if (definition.getLocation() != null) {
             if (definition.getLocation().getFragment() != null) {
                 // It's an inline schema
+                // FIXME: We need to trigger the loading of the enclosing WSDL 
models
                 return;
             }
             // Read an XSD document
@@ -216,7 +217,7 @@
 
     /**
      * Create a facade XmlSchema which includes all the definitions
-     * 
+     *
      * @param definitions A list of the XmlSchema under the same target
      *                namespace
      * @return The aggregated XmlSchema
@@ -235,7 +236,7 @@
             loadOnDemand(d);
         }
         String ns = definitions.get(0).getNamespace();
-        
+
         XmlSchema facade = null;
         // Check if the facade XSD is already in the collection
         for (XmlSchema s : schemaCollection.getXmlSchema(AGGREGATED_XSD)) {


Reply via email to