You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/05/05 06:17:17 UTC

svn commit: r399945 - in /incubator/tuscany/sandbox/jboynes/sca: core2/src/main/java/org/apache/tuscany/core/context/scope/ spi/src/main/java/org/apache/tuscany/spi/context/

Author: jmarino
Date: Thu May  4 21:17:16 2006
New Revision: 399945

URL: http://svn.apache.org/viewcvs?rev=399945&view=rev
Log:
add scope registry and cleanup aggregate context

Added:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java
Modified:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java?rev=399945&r1=399944&r2=399945&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java Thu May  4 21:17:16 2006
@@ -13,10 +13,8 @@
  */
 package org.apache.tuscany.core.context.scope;
 
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.tuscany.core.AbstractLifecycle;
 import org.apache.tuscany.model.Scope;
@@ -27,7 +25,6 @@
 import org.apache.tuscany.spi.context.ScopeInitializationException;
 import org.apache.tuscany.spi.context.ScopeRuntimeException;
 import org.apache.tuscany.spi.context.TargetException;
-import org.apache.tuscany.spi.context.WorkContext;
 import org.apache.tuscany.spi.event.Event;
 
 /**
@@ -39,13 +36,11 @@
 public class CompositeScopeContext extends AbstractLifecycle implements ScopeContext<CompositeContext> {
 
     // Composite component contexts in this scope keyed by parent
-    private Map<CompositeContext, List<CompositeContext>> contexts = new ConcurrentHashMap<CompositeContext, List<CompositeContext>>();
-    private WorkContext workContext;
+    private final List<CompositeContext> contexts;
 
-    public CompositeScopeContext(WorkContext workContext) {
+    public CompositeScopeContext() {
         setName("Composite Scope");
-        assert(workContext != null): "Work context was null";
-        this.workContext = workContext;
+        contexts = new CopyOnWriteArrayList<CompositeContext>();
     }
 
     public Scope getScope() {
@@ -65,15 +60,7 @@
 
     public void register(CompositeContext context) {
         checkInit();
-        CompositeContext module = workContext.getCurrentModule();
-        List<CompositeContext> ctxs = contexts.get(module);
-        if (ctxs == null) {
-            ctxs = new ArrayList<CompositeContext>();
-        }
-        synchronized (ctxs) {
-            ctxs.add(context);
-        }
-        contexts.put(module, ctxs);
+        contexts.add(context);
     }
 
     public Object getInstance(CompositeContext context) throws TargetException {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java?rev=399945&r1=399944&r2=399945&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java Thu May  4 21:17:16 2006
@@ -23,8 +23,8 @@
 
     public static final Object HTTP_IDENTIFIER = new Object();
 
-    private Map<AtomicContext, Map<Object, InstanceContext>> contexts;
-    private Map<Object, List<InstanceContext>> destroyQueues;
+    private final Map<AtomicContext, Map<Object, InstanceContext>> contexts;
+    private final Map<Object, List<InstanceContext>> destroyQueues;
 
     public HttpSessionScopeContext(WorkContext workContext) {
         super("Session Scope", workContext);

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java?rev=399945&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java Thu May  4 21:17:16 2006
@@ -0,0 +1,48 @@
+package org.apache.tuscany.core.context.scope;
+
+import java.util.List;
+import java.util.Map;
+import java.util.ArrayList;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.context.ScopeRegistry;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ScopeRegistryImpl implements ScopeRegistry {
+
+    private final Map<CompositeContext, List<ScopeContext>> cache;
+    private final List<ObjectFactory<ScopeContext>> factories;
+
+    public ScopeRegistryImpl() {
+        cache = new ConcurrentHashMap<CompositeContext, List<ScopeContext>>();
+        factories = new CopyOnWriteArrayList<ObjectFactory<ScopeContext>>();
+    }
+
+    public List<ScopeContext> getScopeContexts(CompositeContext module) {
+        List<ScopeContext> scopes = cache.get(module);
+        if (scopes == null){
+            scopes = new ArrayList<ScopeContext>();
+            for (ObjectFactory<ScopeContext> factory : factories) {
+                scopes.add(factory.getInstance());
+            }
+            cache.put(module,scopes);
+        }
+        return scopes;
+    }
+
+    public void registerFactory(ObjectFactory<ScopeContext> factory) {
+        factories.add(factory);
+    }
+
+    public void deRegisterFactory(ObjectFactory<ScopeContext> factory) {
+       factories.remove(factory);
+    }
+
+
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java?rev=399945&r1=399944&r2=399945&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java Thu May  4 21:17:16 2006
@@ -15,10 +15,15 @@
 
 import java.util.List;
 
+import org.apache.tuscany.common.ObjectFactory;
+
 /**
  * @version $$Rev$$ $$Date$$
  */
 public interface ScopeRegistry {
 
     List<ScopeContext> getScopeContexts(CompositeContext module);
+
+    void registerFactory(ObjectFactory<ScopeContext> factory);
+    
 }