[ http://jira.codehaus.org/browse/MNG-908?page=all ]
Kenney Westerhof closed MNG-908:
--------------------------------
Assign To: Kenney Westerhof
Resolution: Fixed
Fixed in svn revision 290040.
Tested with a custom Mojo and a dependency that has a resource.
> Context class loader references incorrect realm during plugin execution
> -----------------------------------------------------------------------
>
> Key: MNG-908
> URL: http://jira.codehaus.org/browse/MNG-908
> Project: Maven 2
> Type: Bug
> Versions: 2.0-beta-1
> Environment: WinXP SP2, Java 1.4.2, Maven-2.0-beta-1
> Reporter: John Fallows
> Assignee: Kenney Westerhof
> Fix For: 2.0-beta-2
>
>
> John Fallows wrote:
> I am currently developing a custom maven2 plugin that needs to parse
> some xml files (using xmlbeans). Therefore I used the m2 xmlbeans
> plugin at mojo.codehaus.org to generate the Java code for 3 different
> schema namespaces.
> Unit tests within the plugin verify that this code has been generated
> correctly and works as expected.
> However, when another m2 project attempts to use the custom plugin,
> not all the parsed xml data structures are strongly typed Java
> Objects. Instead, some are just simple XmlObjects, as though no type
> information was generated.
> It seems as though some of the type information cannot be located by
> the xmlbeans runtime when executed through a maven2 plugin. Could the
> classworlds classloader be somehow preventing xmlbeans from seeing all
> the type information?
> John Fallows wrote:
> Ok, so i've done some more digging and it appears to be a classloader
> problem in M2 rather than anything xmlbeans-specific.
> The reason that some of the xmlbeans type information is not available
> is that a call to
> contextClassLoader.getResourceAsStream("some-generated-xmlbeans-resource")
> is returning null when it should be returning non-null.
> However, the class loader of the CustomMojo.class itself does return a
> non-null stream as desired.
> So, I have worked around this by doing the following in CustomMojo:
> public void execute() throws MojoExecutionException
> {
> ClassLoader ccl = Thread.currentThread().getContextClassLoader();
> try
> {
>
> Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
> ... other Mojo code that calls XmlBeans here ...
> }
> finally
> {
> Thread.currentThread().setContextClassLoader(ccl);
> }
> }
> Is this something that could be managed by the M2 runtime instead?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]