Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Villiger2018-12-06 15:46:57 +0000
committerMatthias Villiger2018-12-06 15:46:57 +0000
commitc00aba41ad2c1eb534a46d2e7e023e7c7a5b4ba1 (patch)
tree6aefc7a9500c85afd98b0481614297c8751e09e7
parent0a7262f39abb98d5bb9b621ae26ddcfa20aa696c (diff)
downloadorg.eclipse.scout.sdk-c00aba41ad2c1eb534a46d2e7e023e7c7a5b4ba1.tar.gz
org.eclipse.scout.sdk-c00aba41ad2c1eb534a46d2e7e023e7c7a5b4ba1.tar.xz
org.eclipse.scout.sdk-c00aba41ad2c1eb534a46d2e7e023e7c7a5b4ba1.zip
Fix web service creation for non-file base URI schemes
If a web service imports another wsdl from e.g. a http or https URL, the corresponding document base URI is the location of the import. Not the local filesystem.
-rw-r--r--org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtils.java18
-rw-r--r--org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperation.java9
2 files changed, 16 insertions, 11 deletions
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtils.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtils.java
index 9c04b7b09..e619a6b17 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtils.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtils.java
@@ -180,10 +180,10 @@ public final class JaxWsUtils implements IMavenConstants {
* The line delimiter to use.
* @param targetPackage
* The target package in which all JaxWs artifacts should be stored.
- * @return A {@link Map} holding a {@link Path} for each created binding and a {@link StringBuilder} with the
- * corresponding content.
+ * @return A {@link Map} holding the binding path filename as {@link String} and the corresponding binding content as
+ * {@link StringBuilder}.
*/
- public static Map<Path, StringBuilder> getJaxwsBindingContents(ParsedWsdl parsedWsdl, URI rootWsdlUri, String lineDelimiter, String targetPackage) {
+ public static Map<String, StringBuilder> getJaxwsBindingContents(ParsedWsdl parsedWsdl, URI rootWsdlUri, String lineDelimiter, String targetPackage) {
Map<URI, Set<JaxWsBindingMapping>> bindingsByFile = new HashMap<>();
for (Entry<Service, URI> service : parsedWsdl.getWebServices().entrySet()) {
WebServiceNames names = parsedWsdl.getServiceNames().get(service.getKey());
@@ -207,17 +207,23 @@ public final class JaxWsUtils implements IMavenConstants {
}
}
- Map<Path, StringBuilder> result = new HashMap<>(bindingsByFile.size());
+ Map<String, StringBuilder> result = new HashMap<>(bindingsByFile.size());
for (Entry<URI, Set<JaxWsBindingMapping>> binding : bindingsByFile.entrySet()) {
URI uri = binding.getKey();
URI relPath = CoreUtils.relativizeURI(rootWsdlUri, uri);
StringBuilder jaxwsBindingContent = JaxWsUtils.getJaxwsBindingContent(targetPackage, relPath, binding.getValue(), lineDelimiter);
- Path path = Paths.get(uri);
+ final Path path;
+ if ("file".equals(uri.getScheme())) {
+ path = Paths.get(uri);
+ }
+ else {
+ path = Paths.get(uri.getPath());
+ }
if (path.getNameCount() < 1) {
SdkLog.warning("Zero length path found for jax-ws binding content of URI '{}'. Skipping.", uri);
}
else {
- result.put(path, jaxwsBindingContent);
+ result.put(path.getFileName().toString(), jaxwsBindingContent);
}
}
return result;
diff --git a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperation.java b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperation.java
index 77d302975..04939e4fb 100644
--- a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperation.java
+++ b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperation.java
@@ -17,7 +17,6 @@ import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
-import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -419,20 +418,20 @@ public class WebServiceNewOperation implements IOperation {
protected void createJaxwsBindings(IFolder wsdlBindingsFolder, String lineDelimiter, IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException {
URI parent = wsdlBindingsFolder.getLocation().toFile().toURI();
- Map<Path, StringBuilder> jaxwsBindingContents = JaxWsUtils.getJaxwsBindingContents(getParsedWsdl(), parent, lineDelimiter, getPackage());
- for (Entry<Path, StringBuilder> binding : jaxwsBindingContents.entrySet()) {
+ Map<String, StringBuilder> jaxwsBindingContents = JaxWsUtils.getJaxwsBindingContents(getParsedWsdl(), parent, lineDelimiter, getPackage());
+ for (Entry<String, StringBuilder> binding : jaxwsBindingContents.entrySet()) {
IFile jaxwsBindingXmlFile = null;
if (jaxwsBindingContents.size() == 1) {
jaxwsBindingXmlFile = wsdlBindingsFolder.getFile(JaxWsUtils.JAXWS_BINDINGS_FILE_NAME);
}
else {
- Path pathFileName = binding.getKey().getFileName();
+ String pathFileName = binding.getKey();
if (pathFileName == null) {
// should not happen because zero len paths are skipped by JaxWsUtils.getJaxwsBindingContents().
throw new IllegalArgumentException("zero length path found.");
}
- String partName = pathFileName.toString().toLowerCase();
+ String partName = pathFileName.toLowerCase();
if (partName.endsWith(JaxWsUtils.WSDL_FILE_EXTENSION)) {
partName = partName.substring(0, partName.length() - JaxWsUtils.WSDL_FILE_EXTENSION.length());
}

Back to the top