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


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]

Reply via email to