diff options
author | Matthias Villiger | 2018-12-06 15:46:57 +0000 |
---|---|---|
committer | Matthias Villiger | 2018-12-06 15:46:57 +0000 |
commit | c00aba41ad2c1eb534a46d2e7e023e7c7a5b4ba1 (patch) | |
tree | 6aefc7a9500c85afd98b0481614297c8751e09e7 | |
parent | 0a7262f39abb98d5bb9b621ae26ddcfa20aa696c (diff) | |
download | org.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.
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()); } |