summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java')
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
index a55de8f20e..6e3bedc205 100644
--- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
+++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
@@ -34,6 +34,7 @@ import org.apache.tuscany.sca.runtime.RuntimeComponentContext;
* @version $Rev$ $Date$
*/
public class CompositeContext {
+ protected final static InheritableThreadLocal<CompositeContext> context = new InheritableThreadLocal<CompositeContext>();
protected ExtensionPointRegistry extensionPointRegistry;
protected EndpointRegistry endpointRegistry;
protected ComponentContextFactory componentContextFactory;
@@ -73,8 +74,12 @@ public class CompositeContext {
public static CompositeContext getCurrentCompositeContext() {
RuntimeComponent component = getCurrentComponent();
if (component != null) {
- RuntimeComponentContext context = component.getComponentContext();
- return context.getCompositeContext();
+ RuntimeComponentContext componentContext = component.getComponentContext();
+ return componentContext.getCompositeContext();
+ }
+ CompositeContext compositeContext = context.get();
+ if (compositeContext != null) {
+ return compositeContext;
}
return null;
}
@@ -111,5 +116,12 @@ public class CompositeContext {
public Composite getDomainComposite() {
return domainComposite;
}
-
+
+ public static void setThreadCompositeContext(CompositeContext value) {
+ context.set(value);
+ }
+
+ public static void removeCompositeContext() {
+ context.remove();
+ }
}