Author: boisvert Date: Thu Jun 7 11:34:44 2007 New Revision: 545260 URL: http://svn.apache.org/viewvc?view=rev&rev=545260 Log: Cache ObjectStreamClass objects
Modified: incubator/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java Modified: incubator/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java?view=diff&rev=545260&r1=545259&r2=545260 ============================================================================== --- incubator/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java (original) +++ incubator/ode/trunk/jacob/src/main/java/org/apache/ode/jacob/vpu/ExecutionQueueImpl.java Thu Jun 7 11:34:44 2007 @@ -55,6 +55,7 @@ import java.util.LinkedList; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; @@ -67,6 +68,9 @@ private ClassLoader _classLoader; + private static ConcurrentHashMap<String, ObjectStreamClass> _classDescriptors + = new ConcurrentHashMap<String, ObjectStreamClass>(); + /** * Cached set of enqueued [EMAIL PROTECTED] Continuation} objects (i.e. those read using * [EMAIL PROTECTED] #enqueueReaction(org.apache.ode.jacob.soup.Continuation)}). @@ -522,7 +526,7 @@ public String toString() { StringBuffer buf = new StringBuffer(32); buf.append("{CFRAME "); - buf.append(ObjectPrinter.getShortClassName(type)); + buf.append(type.getSimpleName()); buf.append(':'); buf.append(description); buf.append('#'); @@ -720,7 +724,12 @@ boolean ser = readBoolean(); if (ser) { String clsName = readUTF(); - return ObjectStreamClass.lookup(Class.forName(clsName, true, _classLoader)); + ObjectStreamClass cached = _classDescriptors.get(clsName); + if (cached == null) { + cached = ObjectStreamClass.lookup(Class.forName(clsName, true, _classLoader)); + _classDescriptors.put(clsName, cached); + } + return cached; } return super.readClassDescriptor(); }