You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/04/17 00:37:28 UTC

svn commit: r529421 - in /incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful: StatefulContainer.java StatefulInstanceManager.java

Author: dblevins
Date: Mon Apr 16 15:37:23 2007
New Revision: 529421

URL: http://svn.apache.org/viewvc?view=rev&rev=529421
Log:
Stubbed out putting stateful session cache into the DeploymentInfo
Need to do the same thing in the stateless container for its pool

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?view=diff&rev=529421&r1=529420&r2=529421
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java Mon Apr 16 15:37:23 2007
@@ -216,18 +216,20 @@
         undeploy((CoreDeploymentInfo) info);
     }
 
-    private synchronized void undeploy(CoreDeploymentInfo deploymentInfo) {
+    private synchronized void undeploy(CoreDeploymentInfo deploymentInfo) throws OpenEJBException {
         deploymentsById.remove(deploymentInfo.getDeploymentID());
         deploymentInfo.setContainer(null);
         deploymentInfo.setContainerData(null);
+        instanceManager.undeploy(deploymentInfo);
     }
 
-    private synchronized void deploy(CoreDeploymentInfo deploymentInfo) {
+    private synchronized void deploy(CoreDeploymentInfo deploymentInfo) throws OpenEJBException {
         Map<Method, MethodType> methods = getLifecycelMethodsOfInterface(deploymentInfo);
         deploymentInfo.setContainerData(new Data(new Index<Method, MethodType>(methods)));
 
         deploymentsById.put(deploymentInfo.getDeploymentID(), deploymentInfo);
         deploymentInfo.setContainer(this);
+        instanceManager.deploy(deploymentInfo);
     }
 
     /**

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java?view=diff&rev=529421&r1=529420&r2=529421
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java Mon Apr 16 15:37:23 2007
@@ -21,6 +21,7 @@
 import org.apache.openejb.InvalidateReferenceException;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.SystemException;
+import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.core.BaseContext;
 import org.apache.openejb.core.CoreDeploymentInfo;
 import org.apache.openejb.core.CoreUserTransaction;
@@ -96,6 +97,15 @@
         }
     }
 
+    public void deploy(DeploymentInfo deploymentInfo) throws OpenEJBException {
+        deploymentInfo.set(Data.class, new Data());
+    }
+
+    public void undeploy(DeploymentInfo deploymentInfo) throws OpenEJBException {
+        deploymentInfo.set(Data.class, null);
+    }
+
+
     public Transaction getBeanTransaction(Object primaryKey) throws OpenEJBException {
         BeanEntry entry = getBeanEntry(primaryKey);
         return entry.beanTransaction;
@@ -204,7 +214,7 @@
 
         // add to index
         BeanEntry entry = new BeanEntry(bean, primaryKey, timeOut);
-        beanIndex.put(primaryKey, entry);
+        getBeanIndex().put(primaryKey, entry);
 
         return bean;
     }
@@ -230,7 +240,7 @@
         }
 
         // look for entry in index
-        BeanEntry entry = beanIndex.get(primaryKey);
+        BeanEntry entry = getBeanIndex().get(primaryKey);
 
         // if we didn't find the bean in the index, try to activate it
         if (entry == null) {
@@ -248,7 +258,7 @@
         if (queueEntry != null) {
             // if bean is timed out, destroy it
             if (entry.isTimedOut()) {
-                entry = beanIndex.remove(entry.primaryKey);
+                entry = getBeanIndex().remove(entry.primaryKey);
                 handleTimeout(entry, callContext);
                 throw new InvalidateReferenceException(new NoSuchObjectException("Stateful SessionBean has timed-out"));
             }
@@ -308,7 +318,7 @@
         }
 
         // add it to the index
-        beanIndex.put(primaryKey, entry);
+        getBeanIndex().put(primaryKey, entry);
 
         return entry.bean;
     }
@@ -351,7 +361,7 @@
             throw new SystemException("Invalid arguments");
         }
 
-        BeanEntry entry = beanIndex.get(primaryKey);
+        BeanEntry entry = getBeanIndex().get(primaryKey);
         if (entry == null) {
             entry = activate(primaryKey);
             if (entry == null) {
@@ -378,7 +388,7 @@
 
     public Object freeInstance(Object primaryKey) throws SystemException {
         BeanEntry entry = null;
-        entry = beanIndex.remove(primaryKey);// remove frm index
+        entry = getBeanIndex().remove(primaryKey);// remove frm index
         if (entry == null) {
             entry = activate(primaryKey);
         } else {
@@ -406,7 +416,7 @@
                 if (currentEntry == null) {
                     break;
                 }
-                beanIndex.remove(currentEntry.primaryKey);
+                getBeanIndex().remove(currentEntry.primaryKey);
                 if (currentEntry.isTimedOut()) {
                     handleTimeout(currentEntry, threadContext);
                 } else {
@@ -458,7 +468,7 @@
 
     protected InvalidateReferenceException destroy(BeanEntry entry, Exception t) throws SystemException {
 
-        beanIndex.remove(entry.primaryKey);// remove frm index
+        getBeanIndex().remove(entry.primaryKey);// remove frm index
         lruQueue.remove(entry);// remove from queue
         if (entry.beanTransaction != null) {
             try {
@@ -484,13 +494,30 @@
         if (primaryKey == null) {
             throw new SystemException(new NullPointerException("The primary key is null. Cannot get the bean entry"));
         }
-        BeanEntry entry = beanIndex.get(primaryKey);
+        BeanEntry entry = getBeanIndex().get(primaryKey);
         if (entry == null) {
             Object bean = this.obtainInstance(primaryKey, ThreadContext.getThreadContext());
             this.poolInstance(primaryKey, bean);
-            entry = beanIndex.get(primaryKey);
+            entry = getBeanIndex().get(primaryKey);
         }
         return entry;
+    }
+
+    private Hashtable<Object, BeanEntry> getBeanIndex() {
+        // TODO:
+//        ThreadContext threadContext = null;
+//        DeploymentInfo deployment = threadContext.getDeploymentInfo();
+//        StatefulInstanceManager.Data data = deployment.get(StatefulInstanceManager.Data.class);
+//        return data.getBeanIndex();
+        return beanIndex;
+    }
+
+    private static class Data {
+        private final Hashtable<Object, BeanEntry> beanIndex = new Hashtable<Object, BeanEntry>();
+
+        public Hashtable<Object, BeanEntry> getBeanIndex() {
+            return beanIndex;
+        }
     }
 
     class BeanEntryQueue {