You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Andreas Veithen (JIRA)" <ax...@ws.apache.org> on 2012/09/19 21:16:08 UTC

[jira] [Commented] (AXIS-2877) wsdl2java ant task fails to load custom GeneratorFactory from

    [ https://issues.apache.org/jira/browse/AXIS-2877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13458994#comment-13458994 ] 

Andreas Veithen commented on AXIS-2877:
---------------------------------------

In addition to that, Wsdl2javaAntTask creates the class loader with parent-last delegation mode. If the nested <classpath> happens to contain the Axis JARs, then the execution fails with the following error:

java.lang.ClassCastException: xxx.MyGeneratorFactory cannot be cast to org.apache.axis.wsdl.gen.GeneratorFactory
        at org.apache.axis.wsdl.toJava.Emitter.setFactory(Emitter.java:469)
        at org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask.execute(Wsdl2javaAntTask.java:243)
                
> wsdl2java ant task fails to load custom GeneratorFactory from <classpath>
> -------------------------------------------------------------------------
>
>                 Key: AXIS-2877
>                 URL: https://issues.apache.org/jira/browse/AXIS-2877
>             Project: Axis
>          Issue Type: Bug
>          Components: WSDL processing
>    Affects Versions: 1.4
>            Reporter: Andreas Veithen
>            Assignee: Andreas Veithen
>            Priority: Minor
>             Fix For: 1.4.1
>
>
> The wsdl2java ant task fails to load a custom GeneratorFactory (specified using the "factory" attribute) from the class path specified using a nested <classpath> element. This is caused by the following code in Wsdl2javaAntTask:
>             if (factory != null) {
>                 emitter.setFactory(factory);
>             }
>             ...
>             if (classpath != null) {
>                 AntClassLoader cl = new AntClassLoader(
>                         getClass().getClassLoader(),
>                         getProject(),
>                         classpath,
>                         false);
>                 log("Using CLASSPATH " + cl.getClasspath(),
>                         Project.MSG_VERBOSE);
>                 ClassUtils.setDefaultClassLoader(cl);
>             }
> Axis attempts to load the custom GeneratorFactory in the Emitter#setFactory method, but the class loader (for the nested <classpath> element) is only set up later.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org