Author: vsiveton
Date: Wed Feb  6 16:56:18 2008
New Revision: 619234

URL: http://svn.apache.org/viewvc?rev=619234&view=rev
Log:
MNG-3388: DefaultPluginManager needs to catch LinkageError

o added the catch

Modified:
    
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java

Modified: 
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=619234&r1=619233&r2=619234&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Wed Feb  6 16:56:18 2008
@@ -60,6 +60,7 @@
 import org.apache.maven.project.path.PathTranslator;
 import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.settings.Settings;
+import org.codehaus.classworlds.ClassRealm;
 import org.codehaus.classworlds.NoSuchRealmException;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
@@ -463,6 +464,45 @@
         }
         catch ( MojoFailureException e )
         {
+            session.getEventDispatcher().dispatchError( event, goalExecId, e );
+
+            throw e;
+        }
+        catch ( LinkageError e )
+        {
+            if ( getLogger().isFatalErrorEnabled() )
+            {
+                getLogger().fatalError(
+                                        plugin.getClass().getName() + 
"#execute() caused a linkage error "
+                                            + "and may be out-of-date. Check 
the realms:" );
+
+                ClassRealm pluginRealm = 
mojoDescriptor.getPluginDescriptor().getClassRealm();
+                StringBuffer sb = new StringBuffer();
+                sb.append( "Plugin realm = " + pluginRealm.getId() ).append( 
'\n' );
+                for ( int i = 0; i < pluginRealm.getConstituents().length; i++ 
)
+                {
+                    sb.append( "urls[" + i + "] = " + 
pluginRealm.getConstituents()[i] );
+                    if ( i != ( pluginRealm.getConstituents().length - 1 ) )
+                    {
+                        sb.append( '\n' );
+                    }
+                }
+                getLogger().fatalError( sb.toString() );
+
+                ClassRealm containerRealm = container.getContainerRealm();
+                sb = new StringBuffer();
+                sb.append( "Container realm = " + containerRealm.getId() 
).append( '\n' );
+                for ( int i = 0; i < containerRealm.getConstituents().length; 
i++ )
+                {
+                    sb.append( "urls[" + i + "] = " + 
containerRealm.getConstituents()[i] );
+                    if ( i != ( containerRealm.getConstituents().length - 1 ) )
+                    {
+                        sb.append( '\n' );
+                    }
+                }
+                getLogger().fatalError( sb.toString() );
+            }
+
             session.getEventDispatcher().dispatchError( event, goalExecId, e );
 
             throw e;


Reply via email to