You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by if...@apache.org on 2015/02/20 20:07:27 UTC
[2/8] maven git commit: mechanism to carryover session scope seeds
from one thread to another
mechanism to carryover session scope seeds from one thread to another
Signed-off-by: Igor Fedorenko <if...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/45563ff5
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/45563ff5
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/45563ff5
Branch: refs/heads/master
Commit: 45563ff5cbfd066761913ae35a4e3e8e6e25e83c
Parents: 117df85
Author: Igor Fedorenko <if...@apache.org>
Authored: Thu Feb 5 12:07:41 2015 -0500
Committer: Igor Fedorenko <if...@apache.org>
Committed: Fri Feb 20 10:26:14 2015 -0500
----------------------------------------------------------------------
.../internal/LifecycleModuleBuilder.java | 2 +-
.../lifecycle/internal/LifecycleStarter.java | 8 ++++-
.../lifecycle/internal/ReactorContext.java | 13 +++++++-
.../session/scope/internal/SessionScope.java | 33 ++++++++++++++++++++
4 files changed, 53 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/45563ff5/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
index d987a30..f9e6e6a 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
@@ -89,7 +89,7 @@ public class LifecycleModuleBuilder
// session may be different from rootSession seeded in DefaultMaven
// explicitly seed the right session here to make sure it is used by Guice
- sessionScope.enter();
+ sessionScope.enter( reactorContext.getSessionScopeMemento() );
sessionScope.seed( MavenSession.class, session );
try
{
http://git-wip-us.apache.org/repos/asf/maven/blob/45563ff5/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java
index cc00ff9..55217dc 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java
@@ -30,6 +30,7 @@ import org.apache.maven.lifecycle.MissingProjectException;
import org.apache.maven.lifecycle.NoGoalSpecifiedException;
import org.apache.maven.lifecycle.internal.builder.Builder;
import org.apache.maven.lifecycle.internal.builder.BuilderNotFoundException;
+import org.apache.maven.session.scope.internal.SessionScope;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
@@ -64,6 +65,9 @@ public class LifecycleStarter
@Requirement
private Map<String, Builder> builders;
+
+ @Requirement
+ private SessionScope sessionScope;
public void execute( MavenSession session )
{
@@ -102,7 +106,9 @@ public class LifecycleStarter
ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
ReactorBuildStatus reactorBuildStatus = new ReactorBuildStatus( session.getProjectDependencyGraph() );
- reactorContext = new ReactorContext( result, projectIndex, oldContextClassLoader, reactorBuildStatus );
+ reactorContext =
+ new ReactorContext( result, projectIndex, oldContextClassLoader, reactorBuildStatus,
+ sessionScope.memento() );
String builderId = session.getRequest().getBuilderId();
Builder builder = builders.get( builderId );
http://git-wip-us.apache.org/repos/asf/maven/blob/45563ff5/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ReactorContext.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ReactorContext.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ReactorContext.java
index a6adc95..feda5fc 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ReactorContext.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/ReactorContext.java
@@ -20,6 +20,7 @@ package org.apache.maven.lifecycle.internal;
*/
import org.apache.maven.execution.MavenExecutionResult;
+import org.apache.maven.session.scope.internal.SessionScope;
/**
* Context that is fixed for the entire reactor build.
@@ -39,14 +40,17 @@ public class ReactorContext
private final ReactorBuildStatus reactorBuildStatus;
+ private final SessionScope.Memento sessionScope;
public ReactorContext( MavenExecutionResult result, ProjectIndex projectIndex,
- ClassLoader originalContextClassLoader, ReactorBuildStatus reactorBuildStatus )
+ ClassLoader originalContextClassLoader, ReactorBuildStatus reactorBuildStatus,
+ SessionScope.Memento sessionScope )
{
this.result = result;
this.projectIndex = projectIndex;
this.originalContextClassLoader = originalContextClassLoader;
this.reactorBuildStatus = reactorBuildStatus;
+ this.sessionScope = sessionScope;
}
public ReactorBuildStatus getReactorBuildStatus()
@@ -69,4 +73,11 @@ public class ReactorContext
return originalContextClassLoader;
}
+ /**
+ * @since 3.2.6
+ */
+ public SessionScope.Memento getSessionScopeMemento()
+ {
+ return sessionScope;
+ }
}
http://git-wip-us.apache.org/repos/asf/maven/blob/45563ff5/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScope.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScope.java b/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScope.java
index ae62ea2..5a38e6e 100644
--- a/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScope.java
+++ b/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScope.java
@@ -19,9 +19,11 @@ package org.apache.maven.session.scope.internal;
* under the License.
*/
+import java.util.Collections;
import java.util.LinkedList;
import java.util.Map;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.google.inject.Key;
import com.google.inject.OutOfScopeException;
@@ -32,6 +34,19 @@ import com.google.inject.util.Providers;
public class SessionScope
implements Scope
{
+ /**
+ * @since 3.2.6
+ */
+ public static class Memento
+ {
+ final Map<Key<?>, Provider<?>> seeded;
+
+ Memento( final Map<Key<?>, Provider<?>> seeded )
+ {
+ this.seeded = ImmutableMap.copyOf( seeded );
+ }
+ }
+
private static final Provider<Object> SEEDED_KEY_PROVIDER = new Provider<Object>()
{
public Object get()
@@ -60,6 +75,15 @@ public class SessionScope
stack.addFirst( new ScopeState() );
}
+ /**
+ * @since 3.2.6
+ */
+ public void enter( Memento memento )
+ {
+ enter();
+ getScopeState().seeded.putAll( memento.seeded );
+ }
+
private ScopeState getScopeState()
{
LinkedList<ScopeState> stack = values.get();
@@ -84,6 +108,15 @@ public class SessionScope
}
}
+ /**
+ * @since 3.2.6
+ */
+ public Memento memento()
+ {
+ LinkedList<ScopeState> stack = values.get();
+ return new Memento( stack != null ? stack.getFirst().seeded : Collections.<Key<?>, Provider<?>>emptyMap() );
+ }
+
public <T> void seed( Class<T> clazz, Provider<T> value )
{
getScopeState().seeded.put( Key.get( clazz ), value );