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/26 22:01:23 UTC

svn commit: r532845 - in /incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core: BaseContext.java ivm/IntraVmArtifact.java

Author: dblevins
Date: Thu Apr 26 13:01:22 2007
New Revision: 532845

URL: http://svn.apache.org/viewvc?view=rev&rev=532845
Log:
Make BaseContext ready for serialization

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmArtifact.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java?view=diff&rev=532845&r1=532844&r2=532845
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseContext.java Thu Apr 26 13:01:22 2007
@@ -17,6 +17,7 @@
 package org.apache.openejb.core;
 
 import java.io.Serializable;
+import java.io.ObjectStreamException;
 import java.security.Identity;
 import java.security.Principal;
 import java.util.List;
@@ -35,6 +36,8 @@
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.core.timer.EjbTimerService;
 import org.apache.openejb.core.timer.TimerServiceImpl;
+import org.apache.openejb.core.ivm.IntraVmCopyMonitor;
+import org.apache.openejb.core.ivm.IntraVmArtifact;
 import org.apache.openejb.spi.SecurityService;
 
 
@@ -264,5 +267,9 @@
             return true;
         }
 
+    }
+
+    protected Object writeReplace() throws ObjectStreamException {
+        return new IntraVmArtifact(this, true);
     }
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmArtifact.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmArtifact.java?view=diff&rev=532845&r1=532844&r2=532845
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmArtifact.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmArtifact.java Thu Apr 26 13:01:22 2007
@@ -26,7 +26,9 @@
 import java.util.List;
 
 public class IntraVmArtifact implements Externalizable {
-    private static final ThreadLocal<List<Object>> handles = new ThreadLocal<List<Object>>() {
+    private static final List<Object> staticHandles = new ArrayList<Object>();
+
+    private static final ThreadLocal<List<Object>> threadHandles = new ThreadLocal<List<Object>>() {
         protected List<Object> initialValue() {
             return new ArrayList<Object>();
         }
@@ -36,13 +38,23 @@
     private static final String NO_ARTIFACT_ERROR = "The artifact this object represents could not be found.";
 
     private int instanceHandle;
+    private boolean staticArtifact;
 
     public IntraVmArtifact(Object obj) {
-        List<Object> list = handles.get();
+        this(obj, false);
+    }
+
+    public IntraVmArtifact(Object obj, boolean storeStatically) {
+        this.staticArtifact = storeStatically;
+        List<Object> list = getHandles(storeStatically);
         instanceHandle = list.size();
         list.add(obj);
     }
 
+    private static List<Object> getHandles(boolean staticArtifact) {
+        return (staticArtifact)? staticHandles: threadHandles.get();
+    }
+
     public IntraVmArtifact() {
     }
 
@@ -55,7 +67,7 @@
     }
 
     protected Object readResolve() throws ObjectStreamException {
-        List<Object> list = handles.get();
+        List<Object> list = getHandles(staticArtifact);
         Object artifact = list.get(instanceHandle);
         if (artifact == null) throw new InvalidObjectException(NO_ARTIFACT_ERROR + instanceHandle);
         // todo WHY?