summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/xsd-xml
diff options
context:
space:
mode:
authornash <nash@13f79535-47bb-0310-9956-ffa450edef68>2008-06-22 14:13:35 +0000
committernash <nash@13f79535-47bb-0310-9956-ffa450edef68>2008-06-22 14:13:35 +0000
commit517609638e03d901d797c993bf8cacbf99d5b37a (patch)
treed2d01cde7bc2403e828b3534a21d4e20e0d52ea3 /java/sca/modules/xsd-xml
parentc6e6aabeccfad8d564cffb296ab4d5482d493d76 (diff)
Fix TUSCANY-2418
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@670360 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/xsd-xml')
-rw-r--r--java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java b/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
index 42b34c7acc..652d9e8d83 100644
--- a/java/sca/modules/xsd-xml/src/main/java/org/apache/tuscany/sca/xsd/xml/XSDModelResolver.java
+++ b/java/sca/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<XSDefinition> 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;