You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/02/21 12:25:57 UTC
svn commit: r379426 - in /maven/components/trunk/maven-core-it:
integration-tests.txt
it0094/mojo/src/main/java/org/codehaus/mojo/kodo/Enhance.java
Author: brett
Date: Tue Feb 21 03:25:51 2006
New Revision: 379426
URL: http://svn.apache.org/viewcvs?rev=379426&view=rev
Log:
[MNG-1898] improve the diagnostics and switch on it0094
Modified:
maven/components/trunk/maven-core-it/integration-tests.txt
maven/components/trunk/maven-core-it/it0094/mojo/src/main/java/org/codehaus/mojo/kodo/Enhance.java
Modified: maven/components/trunk/maven-core-it/integration-tests.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/integration-tests.txt?rev=379426&r1=379425&r2=379426&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/integration-tests.txt (original)
+++ maven/components/trunk/maven-core-it/integration-tests.txt Tue Feb 21 03:25:51 2006
@@ -1,4 +1,4 @@
-# it0094 currently fails. It is testing MNG-1898
+it0094 currently fails. It is testing MNG-1898
it0092
# it0091 currrently fails. Not sure if there is an associated JIRA.
it0090
Modified: maven/components/trunk/maven-core-it/it0094/mojo/src/main/java/org/codehaus/mojo/kodo/Enhance.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0094/mojo/src/main/java/org/codehaus/mojo/kodo/Enhance.java?rev=379426&r1=379425&r2=379426&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/it0094/mojo/src/main/java/org/codehaus/mojo/kodo/Enhance.java (original)
+++ maven/components/trunk/maven-core-it/it0094/mojo/src/main/java/org/codehaus/mojo/kodo/Enhance.java Tue Feb 21 03:25:51 2006
@@ -16,23 +16,21 @@
package org.codehaus.mojo.kodo;
-import java.lang.reflect.Field;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-import javax.xml.parsers.SAXParserFactory;
-
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.xerces.jaxp.SAXParserFactoryImpl;
import org.codehaus.classworlds.ClassRealm;
+import javax.xml.parsers.SAXParserFactory;
+import java.lang.reflect.Field;
+import java.net.URL;
+import java.net.URLClassLoader;
+
/**
* Goal that enhances persistant classes
- *
+ *
* @requiresDependancyResolution test
* @goal enhance
- *
* @phase compile
*/
public class Enhance
@@ -55,21 +53,21 @@
setupClassloader();
originalLoader = Thread.currentThread().getContextClassLoader();
System.out.println( originalLoader.getClass() );
-
+
SAXParserFactoryImpl spi = new SAXParserFactoryImpl();
SAXParserFactory spf = SAXParserFactory.newInstance();
this.getLog().info( spf.toString() );
String t = "org/apache/xerces/jaxp/SAXParserFactoryImpl.class";
- this.getLog().info(t);
- URL url = originalLoader.getResource(t);
+ this.getLog().info( t );
+ URL url = originalLoader.getResource( t );
//URL url = spf.getClass().getClassLoader().getResource("javax/xml/parsers/SAXParserFactory.class");
- this.getLog().info("Loaded from: "+url.toString());
-
+ this.getLog().info( "Loaded from: " + url.toString() );
+
}
/**
* Adds nessessary items to the classloader.
- *
+ *
* @return ClassLoader original Classloader.
* @throws MojoExecutionException
*/
@@ -79,26 +77,54 @@
URLClassLoader loader = null;
ClassLoader originalLoader = Thread.currentThread().getContextClassLoader();
- this.getLog().info( originalLoader.toString() );
+ this.getLog().info( "orig classloader:" );
+ printURLClassPath( Thread.currentThread().getContextClassLoader(), "" );
URL[] urls = new URL[0];
loader = new URLClassLoader( urls, originalLoader );
Thread.currentThread().setContextClassLoader( loader );
- printURLClassPath();
+ this.getLog().info( "new classloader:" );
+ printURLClassPath( Thread.currentThread().getContextClassLoader(), "" );
return originalLoader;
}
- public void printURLClassPath()
+ public void printURLClassPath( ClassLoader sysClassLoader, String s )
+ throws MojoExecutionException
{
//Get the Classloader
- ClassLoader sysClassLoader = Thread.currentThread().getContextClassLoader();
//Get the URLs
- URL[] urls = ( (URLClassLoader) sysClassLoader ).getURLs();
- this.getLog().info( "Added to Classpath:" );
+ URL[] urls;
+ if ( sysClassLoader instanceof URLClassLoader )
+ {
+ urls = ( (URLClassLoader) sysClassLoader ).getURLs();
+ }
+ else
+ {
+ try
+ {
+ Field f = sysClassLoader.getClass().getDeclaredField( "realm" );
+ f.setAccessible( true );
+ ClassRealm r = (ClassRealm) f.get( sysClassLoader );
+ urls = r.getConstituents();
+ }
+ catch ( NoSuchFieldException e )
+ {
+ throw new MojoExecutionException( "mee ", e );
+ }
+ catch ( IllegalAccessException e )
+ {
+ throw new MojoExecutionException( "mee ", e );
+ }
+ }
for ( int i = 0; i < urls.length; i++ )
{
- this.getLog().info( urls[i].getFile() );
+ this.getLog().info( s + urls[i].getFile() );
+ }
+
+ if ( sysClassLoader.getParent() != null )
+ {
+ printURLClassPath( sysClassLoader.getParent(), s + " " );
}
}