[jboss-cvs] jboss-serialization/src/org/jboss/serial/objectmetamodel ...
Clebert Suconic
csuconic at jboss.com
Mon Apr 9 19:05:20 EDT 2007
User: csuconic
Date: 07/04/09 19:05:20
Modified: src/org/jboss/serial/objectmetamodel DataContainer.java
ObjectsCache.java
Log:
http://jira.jboss.org/jira/browse/JBSER-84 - Basic implementation
Revision Changes Path
1.45 +3 -3 jboss-serialization/src/org/jboss/serial/objectmetamodel/DataContainer.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DataContainer.java
===================================================================
RCS file: /cvsroot/jboss/jboss-serialization/src/org/jboss/serial/objectmetamodel/DataContainer.java,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- DataContainer.java 28 Aug 2006 18:35:34 -0000 1.44
+++ DataContainer.java 9 Apr 2007 23:05:20 -0000 1.45
@@ -55,7 +55,7 @@
* DataContainer is a Container of Immutables and Object References.
* It emmulates the repository as it would be a DataOutputStream and DataInputStream
*
- * $Id: DataContainer.java,v 1.44 2006/08/28 18:35:34 csuconic Exp $
+ * $Id: DataContainer.java,v 1.45 2007/04/09 23:05:20 csuconic Exp $
*
* @author clebert suconic
*/
@@ -280,14 +280,14 @@
public void saveImmutable(ObjectsCache cache, Object obj) throws IOException {
- int id=cache.findIdInCacheWrite(obj);
+ int id=cache.findIdInCacheWrite(obj, true);
if (id!=0)
{
this.writeByte(DataContainerConstants.IMMUTABLE_OBJREF);
this.addObjectReference(id);
return;
}
- id=cache.putObjectInCacheWrite(obj);
+ id=cache.putObjectInCacheWrite(obj, true);
if (obj instanceof String)
{
this.writeByte(DataContainerConstants.STRING);
1.23 +29 -7 jboss-serialization/src/org/jboss/serial/objectmetamodel/ObjectsCache.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ObjectsCache.java
===================================================================
RCS file: /cvsroot/jboss/jboss-serialization/src/org/jboss/serial/objectmetamodel/ObjectsCache.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- ObjectsCache.java 28 Aug 2006 18:35:34 -0000 1.22
+++ ObjectsCache.java 9 Apr 2007 23:05:20 -0000 1.23
@@ -40,7 +40,8 @@
public class ObjectsCache extends DataExport implements ClassMetaConsts
{
-
+ int objectIdOnCache = 0;
+ final TObjectIntHashMap objectsImmutableCacheOnWrite = new TObjectIntHashMap(regularHashStrategy);
final TObjectIntHashMap objectsCacheOnWrite = new TObjectIntHashMap(identityHashStrategy);
final TIntObjectHashMap objectsCacheOnRead = new TIntObjectHashMap();
@@ -90,6 +91,8 @@
}
objectsCacheOnWrite.clear();
objectsCacheOnRead.clear();
+ objectsImmutableCacheOnWrite.clear();
+ objectIdOnCache = 0;
}
public ClassLoader getLoader() {
if (loader==null)
@@ -126,11 +129,22 @@
this.stringBuffer = stringBuffer;
}
- // @todo should stop using ObjectReference
public int findIdInCacheWrite(final Object obj)
{
+ return findIdInCacheWrite(obj, false);
+ }
+
+ public int findIdInCacheWrite(final Object obj, boolean immutable)
+ {
+ if (immutable)
+ {
+ return objectsImmutableCacheOnWrite.get(obj);
+ }
+ else
+ {
return objectsCacheOnWrite.get(obj);
}
+ }
/**
* @param cacheId
@@ -152,11 +166,19 @@
}
-
public int putObjectInCacheWrite(final Object obj)
{
- objectsCacheOnWrite.put(obj,objectsCacheOnWrite.size()+1);
- return objectsCacheOnWrite.size();
+ return putObjectInCacheWrite(obj,false);
+ }
+
+ public int putObjectInCacheWrite(final Object obj, boolean isImmutable)
+ {
+ objectsCacheOnWrite.put(obj,++objectIdOnCache);
+ if (isImmutable)
+ {
+ objectsImmutableCacheOnWrite.put(obj, objectIdOnCache);
+ }
+ return objectIdOnCache;
}
/*public void putClassMetaData(final ClassMetaData metaData)
More information about the jboss-cvs-commits
mailing list