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?