[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