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 + "  " );
         }
     }