Author: jdcasey
Date: Sun Sep 25 08:03:59 2005
New Revision: 291422

URL: http://svn.apache.org/viewcvs?rev=291422&view=rev
Log:
Adding validation of @requiresProject and @requiresOnline to 
PluginManager.executeMojo(..), in order to centrally block mojos from executing 
under the wrong conditions.

Modified:
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=291422&r1=291421&r2=291422&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Sun Sep 25 08:03:59 2005
@@ -153,6 +153,7 @@
 
         ProfileManager globalProfileManager = 
request.getGlobalProfileManager();
 
+        boolean foundProjects = true;
         try
         {
             loadSettingsProfiles( globalProfileManager, request.getSettings() 
);
@@ -169,6 +170,8 @@
             {
                 MavenProject superProject = 
projectBuilder.buildStandaloneSuperProject( request.getLocalRepository() );
                 projects.add( superProject );
+                
+                foundProjects = false;
             }
 
             rm = new ReactorManager( projects );
@@ -204,6 +207,8 @@
         try
         {
             MavenSession session = createSession( request, rm );
+            
+            session.setUsingPOMsFromFilesystem( foundProjects );
 
             try
             {

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=291422&r1=291421&r2=291422&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 Sun Sep 25 08:03:59 2005
@@ -46,6 +46,8 @@
 
     private final String executionRootDir;
 
+    private boolean usingPOMsFromFilesystem;
+
     public MavenSession( PlexusContainer container, Settings settings, 
ArtifactRepository localRepository,
                          EventDispatcher eventDispatcher, ReactorManager rpm, 
List goals, String executionRootDir )
     {
@@ -125,5 +127,15 @@
     public String getExecutionRootDirectory()
     {
         return executionRootDir;
+    }
+
+    public void setUsingPOMsFromFilesystem( boolean usingPOMsFromFilesystem )
+    {
+        this.usingPOMsFromFilesystem = usingPOMsFromFilesystem;
+    }
+    
+    public boolean isUsingPOMsFromFilesystem()
+    {
+        return usingPOMsFromFilesystem;
     }
 }

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=291422&r1=291421&r2=291422&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Sun Sep 25 08:03:59 2005
@@ -310,6 +310,19 @@
         throws ArtifactResolutionException, PluginManagerException, 
MojoExecutionException
     {
         MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
+        
+        // NOTE: I'm putting these checks in here, since this is the central 
point of access for 
+        // anything that wants to execute a mojo.
+        if( mojoDescriptor.isProjectRequired() && 
!session.isUsingPOMsFromFilesystem() )
+        {
+            throw new MojoExecutionException( "Cannot execute mojo: " + 
mojoDescriptor.getGoal() + ". It requires a project, but the build is not using 
one." ); 
+        }
+        
+        if ( mojoDescriptor.isOnlineRequired() && 
session.getSettings().isOffline() )
+        {
+            // TODO: Should we error out, or simply warn and skip??
+            throw new MojoExecutionException( "Mojo: " + 
mojoDescriptor.getGoal() + " requires online mode for execution. Maven is 
currently offline." );
+        }
 
         if ( mojoDescriptor.isDependencyResolutionRequired() != null )
         {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to