You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/09/28 05:38:10 UTC

svn commit: r292105 - in /maven/components/trunk: maven-core/src/main/java/org/apache/maven/execution/ maven-core/src/main/java/org/apache/maven/plugin/ maven-plugin-api/src/main/java/org/apache/maven/plugin/

Author: jdcasey
Date: Tue Sep 27 20:38:00 2005
New Revision: 292105

URL: http://svn.apache.org/viewcvs?rev=292105&view=rev
Log:
Storing plugin contexts by plugin and project in the release manager, and furnishing access to them via the session. This will restrict shared information scopes to the plugin AND the project, in a reactored situation.

Modified:
    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/execution/ReactorManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/ContextEnabled.java

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=292105&r1=292104&r2=292105&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 Tue Sep 27 20:38:00 2005
@@ -18,6 +18,8 @@
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.monitor.event.EventDispatcher;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -42,14 +44,14 @@
     // TODO: make this the central one, get rid of build settings...
     private final Settings settings;
 
-    private ReactorManager rpm;
+    private ReactorManager reactorManager;
 
     private final String executionRootDir;
 
     private boolean usingPOMsFromFilesystem;
 
     public MavenSession( PlexusContainer container, Settings settings, ArtifactRepository localRepository,
-                         EventDispatcher eventDispatcher, ReactorManager rpm, List goals, String executionRootDir )
+                         EventDispatcher eventDispatcher, ReactorManager reactorManager, List goals, String executionRootDir )
     {
         this.container = container;
 
@@ -59,12 +61,17 @@
 
         this.eventDispatcher = eventDispatcher;
 
-        this.rpm = rpm;
+        this.reactorManager = reactorManager;
 
         this.goals = goals;
 
         this.executionRootDir = executionRootDir;
     }
+    
+    public Map getPluginContext( PluginDescriptor pluginDescriptor, MavenProject project )
+    {
+        return reactorManager.getPluginContext( pluginDescriptor, project );
+    }
 
     public PlexusContainer getContainer()
     {
@@ -121,7 +128,7 @@
 
     public List getSortedProjects()
     {
-        return rpm.getSortedProjects();
+        return reactorManager.getSortedProjects();
     }
 
     public String getExecutionRootDirectory()

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ReactorManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ReactorManager.java?rev=292105&r1=292104&r2=292105&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ReactorManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ReactorManager.java Tue Sep 27 20:38:00 2005
@@ -17,6 +17,7 @@
  */
 
 import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectSorter;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
@@ -39,14 +40,37 @@
 
     private Map buildFailuresByProject = new HashMap();
 
+    private Map pluginContextsByProjectAndPluginKey = new HashMap();
+
     private String failureBehavior = FAIL_FAST;
 
     private final ProjectSorter sorter;
-
+    
     public ReactorManager( List projects )
         throws CycleDetectedException
     {
         this.sorter = new ProjectSorter( projects );
+    }
+    
+    public Map getPluginContext( PluginDescriptor plugin, MavenProject project )
+    {
+        Map pluginContextsByKey = (Map) pluginContextsByProjectAndPluginKey.get( project.getId() );
+        
+        if ( pluginContextsByKey == null )
+        {
+            pluginContextsByKey = new HashMap();
+            pluginContextsByProjectAndPluginKey.put( project.getId(), pluginContextsByKey );
+        }
+        
+        Map pluginContext = (Map) pluginContextsByKey.get( plugin.getPluginLookupKey() );
+        
+        if ( pluginContext == null )
+        {
+            pluginContext = new HashMap();
+            pluginContextsByKey.put( plugin.getPluginLookupKey(), pluginContext );
+        }
+        
+        return pluginContext;
     }
 
     public void setFailureBehavior( String failureBehavior )

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=292105&r1=292104&r2=292105&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 Tue Sep 27 20:38:00 2005
@@ -518,21 +518,7 @@
 
         if ( plugin instanceof ContextEnabled )
         {
-            Map pluginContext;
-            try
-            {
-                pluginContext = (Map) pluginContainer.getContext().get( ContextEnabled.PLUGIN_CONTEXT_SESSION_KEY );
-            }
-            catch ( ContextException e )
-            {
-                // this is thrown the first time for each plugin, since the map hasn't been initialized in the
-                // new plugin's container context.
-                getLogger().debug( "Initializing plugin context map for plugin: " + pluginDescriptor.getPluginLookupKey() );
-                
-                pluginContext = new HashMap();
-                
-                pluginContainer.getContext().put( ContextEnabled.PLUGIN_CONTEXT_SESSION_KEY, pluginContext );
-            }
+            Map pluginContext = session.getPluginContext( pluginDescriptor, project );
             
             ( (ContextEnabled) plugin ).setPluginContext( pluginContext );
         }

Modified: maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/ContextEnabled.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/ContextEnabled.java?rev=292105&r1=292104&r2=292105&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/ContextEnabled.java (original)
+++ maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/ContextEnabled.java Tue Sep 27 20:38:00 2005
@@ -5,8 +5,6 @@
 public interface ContextEnabled
 {
     
-    String PLUGIN_CONTEXT_SESSION_KEY = "mavenPluginContext";
-    
     void setPluginContext( Map pluginContext );
     
     Map getPluginContext();



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org