summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany')
-rw-r--r--sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java9
-rw-r--r--sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java7
-rw-r--r--sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java25
3 files changed, 38 insertions, 3 deletions
diff --git a/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java b/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
index 7497dd3c2f..9fd4313af0 100644
--- a/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
+++ b/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
@@ -21,6 +21,7 @@ package org.apache.tuscany.sca.interfacedef.wsdl;
import java.net.URI;
import java.util.List;
+import java.util.Map;
import javax.wsdl.Binding;
import javax.wsdl.Definition;
@@ -178,6 +179,12 @@ public interface WSDLDefinition extends Base {
*
* @param nameOfBindingToResolve
*/
- void setNameOfServiceToResolve(QName nameOfServiceToResolve);
+ void setNameOfServiceToResolve(QName nameOfServiceToResolve);
+
+ /**
+ * Gets the wsdli:location attribute namespace mappings
+ * @return a Map with key being namespace and value the location
+ */
+ Map<String, String> getWsdliLocations();
}
diff --git a/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java b/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
index 45763d01b0..5b3ad74229 100644
--- a/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
+++ b/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
@@ -21,6 +21,7 @@ package org.apache.tuscany.sca.interfacedef.wsdl.impl;
import java.net.URI;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -62,6 +63,7 @@ public class WSDLDefinitionImpl implements WSDLDefinition {
private QName nameOfPortTypeToResolve;
private QName nameOfBindingToResolve;
private QName nameOfServiceToResolve;
+ private Map<String, String> wsdliLocations = new HashMap<String, String>();
protected WSDLDefinitionImpl() {
}
@@ -311,4 +313,9 @@ public class WSDLDefinitionImpl implements WSDLDefinition {
public void setNameOfServiceToResolve(QName nameOfServiceToResolve) {
this.nameOfServiceToResolve = nameOfServiceToResolve;
}
+
+ @Override
+ public Map<String, String> getWsdliLocations() {
+ return wsdliLocations ;
+ }
}
diff --git a/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java b/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
index 139a0ebd39..6afa43b905 100644
--- a/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
+++ b/sca-java-2.x/trunk/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
@@ -339,6 +339,17 @@ public class WSDLModelResolver implements ModelResolver {
return modelClass.cast(unresolved);
}
+ // Lookup based on wsdli:location
+ if (((WSDLDefinition)unresolved).getWsdliLocations().containsKey(namespace)) {
+ try {
+ loadDefinition(((WSDLDefinition)unresolved), context);
+ } catch (ContributionReadException e) {
+ context.getMonitor().error(context.getMonitor(), this, "interface-wsdlxml-validation-messages", "wsdliLocationException", e, ((WSDLDefinition)unresolved).getNamespace());
+ }
+ return modelClass.cast((WSDLDefinition)unresolved);
+ }
+
+
// Lookup a definition for the given namespace, from imports
for (Import import_ : this.contribution.getImports()) {
if (import_ instanceof NamespaceImport) {
@@ -458,11 +469,20 @@ public class WSDLModelResolver implements ModelResolver {
* @throws ContributionReadException
*/
private void loadDefinition(WSDLDefinition wsdlDef, ProcessorContext context) throws ContributionReadException {
- if (wsdlDef.getDefinition() != null || wsdlDef.getLocation() == null) {
+ if (wsdlDef.getDefinition() != null) {
return;
}
try {
- URL artifactURL = wsdlDef.getLocation().toURL();
+ URL artifactURL;
+ String loc = wsdlDef.getWsdliLocations().get(wsdlDef.getNamespace());
+ if (loc != null) {
+ artifactURL = new URL(loc);
+ } else {
+ if (wsdlDef.getLocation() == null) {
+ return;
+ }
+ artifactURL = wsdlDef.getLocation().toURL();
+ }
// Read a WSDL document
InputStream is = IOHelper.openStream(artifactURL);
WSDLReader reader = wsdl4jFactory.newWSDLReader();
@@ -474,6 +494,7 @@ public class WSDLModelResolver implements ModelResolver {
// Collection of namespace,location for wsdl:import definition
Map<String, String> wsdlImports = indexRead(wsdlDef.getLocation().toURL());
+ wsdlImports.putAll(wsdlDef.getWsdliLocations());
WSDLLocatorImpl locator = new WSDLLocatorImpl(context, artifactURL, is, wsdlImports);
Definition definition = reader.readWSDL(locator);
wsdlDef.setDefinition(definition);