wsdl2java icon indicating copy to clipboard operation
wsdl2java copied to clipboard

When specifying package name with -p that contains a URL, exception received

Open BillPhillips opened this issue 9 years ago • 2 comments

We have a WSDL that requires WSDL namespace to package name mapping.

In order to generate skeleton from this WSDL, we need to use specify a wsdl to namespace mapping:

-p http://www.multispeak.org/Version_4.1_Release=org.multispeak.version_4_1_release

When I run this through the plugin, I receive the following exception:

C:\work\project04> gradlew -info wsdl2java
Starting Build
Settings evaluated using empty settings script.
Projects loaded. Root project using build file 'C:\work\project04\build.gradle'.
Included projects: [root project 'project04']
Evaluating root project 'project04' using build file 'C:\work\project04\build.gradle'.
All projects evaluated.
Selected primary task 'wsdl2java' from project :
Tasks to be executed: [task ':wsdl2java']
:wsdl2java (Thread[main,5,main]) started.
:wsdl2java
Executing task ':wsdl2java' (up-to-date check took 0.038 secs) due to:
  Value of input property 'wsdls' has changed for task ':wsdl2java'
Clear target folders [work\project04\generated\http:\www\multispeak\org\Version_4\1_Release=org\multispeak\version_4_1_release]
:wsdl2java FAILED
:wsdl2java (Thread[main,5,main]) completed. Took 0.099 secs.

I'm not sure, but it looks like the method deleteOutputFolders() calls findPackagePaths(), which does not account for the optional "wsdl-namespace=" option in the package declaration when mapping namespaces.

Perhaps something like this would work?

private Set<String> findPackagePaths() {
    Set<String> packagePaths = new HashSet<>();
    for (List<String> args : wsdlsToGenerate) {
        int packageArgIdx = args.indexOf("-p");
        int packageIx = packageArgIdx+1;
        if (packageArgIdx != -1 && args.size() >= packageIx) {
            String pathPath = args.get(packageIx);
            int esIdx = pathPath.indexOf("=");
            if (esIdx != -1) {
                pathPath = pathPath.substring(esIdx+1);
            }

            packagePaths.add(pathPath.replace(".", "/"));
        }
    }
    return packagePaths;
}

BillPhillips avatar Apr 28 '16 23:04 BillPhillips

+1 for this bug.

I am also experiencing the same issue.

Don't know it this will help: Caused by: org.gradle.api.UncheckedIOException: Could not normalize path for file 'D:\Workspaces\GitRepos\Dev\ecare-acp2\server\ecare-wsclient-acpx-security\wsdl-generated\main\java\generated\http:\webservices\csgsystems\com\Configuration\16\2\0=generated\ecare\wsclient\acpx\security'. at org.gradle.api.internal.file.AbstractFileResolver.normalise(AbstractFileResolver.java:138) at org.gradle.api.internal.file.AbstractFileResolver.resolve(AbstractFileResolver.java:79) at org.gradle.api.internal.file.AbstractFileResolver.resolve(AbstractFileResolver.java:60) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileCollectionConverter.convertInto(DefaultFileCollectionResolveContext.java:173) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:134) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileCollections(DefaultFileCollectionResolveContext.java:82) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileCollectionConverter.convertInto(DefaultFileCollectionResolveContext.java:157) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:98) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileCollections(DefaultFileCollectionResolveContext.java:82) at org.gradle.api.internal.file.CompositeFileCollection.getSourceCollections(CompositeFileCollection.java:144) at org.gradle.api.internal.file.CompositeFileCollection.getFiles(CompositeFileCollection.java:38) at org.gradle.api.internal.file.AbstractFileCollection.iterator(AbstractFileCollection.java:60) at org.gradle.api.internal.file.copy.DeleteActionImpl.delete(DeleteActionImpl.java:40) at org.gradle.api.internal.file.DefaultFileOperations.delete(DefaultFileOperations.java:121) at org.gradle.api.internal.project.AbstractProject.delete(AbstractProject.java:672) at no.nils.wsdl2java.Wsdl2JavaTask.deleteOutputFolders(Wsdl2JavaTask.groovy:127) at no.nils.wsdl2java.Wsdl2JavaTask.wsdl2java(Wsdl2JavaTask.groovy:55) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) ... 55 more Caused by: java.io.IOException: The filename, directory name, or volume label syntax is incorrect at org.gradle.api.internal.file.AbstractFileResolver.normalise(AbstractFileResolver.java:94) ... 79 more

bosakm avatar May 09 '16 13:05 bosakm

@bosakm could you test version 0.10 now and verify that it works?

nilsmagnus avatar May 09 '16 18:05 nilsmagnus