From 418233223529e72a1027cb4a714cae854fdd3787 Mon Sep 17 00:00:00 2001 From: nash Date: Sun, 22 Jun 2008 20:26:27 +0000 Subject: Fix TUSCANY-2418 git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@670410 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'branches/sca-java-1.3/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java') diff --git a/branches/sca-java-1.3/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java b/branches/sca-java-1.3/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java index 42b34c7acc..652d9e8d83 100644 --- a/branches/sca-java-1.3/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java +++ b/branches/sca-java-1.3/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java @@ -87,11 +87,13 @@ public class XSDModelResolver implements ModelResolver { // Lookup a definition for the given namespace String namespace = definition.getNamespace(); List list = map.get(namespace); + XSDefinition modelXSD = null; if (list != null && definition.getDocument() != null) { // Set the document for the inline schema int index = list.indexOf(definition); - if (index != -1) { - list.get(index).setDocument(definition.getDocument()); + if (index != -1) { // a matching (not identical) document was found + modelXSD = list.get(index); + modelXSD.setDocument(definition.getDocument()); } } if (list == null && definition.getDocument() != null) { @@ -107,6 +109,14 @@ public class XSDModelResolver implements ModelResolver { throw new ContributionRuntimeException(e); } if (resolved != null && !resolved.isUnresolved()) { + if (definition.isUnresolved() && definition.getSchema() == null && modelXSD != null) { + // Update the unresolved model with schema information and mark it + // resolved. This information in the unresolved model is needed when + // this method is called by WSDLModelResolver.readInlineSchemas(). + definition.setSchema(modelXSD.getSchema()); + definition.setSchemaCollection(modelXSD.getSchemaCollection()); + definition.setUnresolved(false); + } return modelClass.cast(resolved); } @@ -221,7 +231,7 @@ public class XSDModelResolver implements ModelResolver { java.lang.String schemaLocation, java.lang.String baseUri) { try { - if (schemaLocation == null || schemaLocation.startsWith("/")) { + if (schemaLocation == null) { return null; } URL url = null; -- cgit v1.2.3