[jboss-cvs] JBossCache/src/org/jboss/cache/aop/statetransfer ...

Vladmir Blagojevic vladimir.blagojevic at jboss.com
Fri Sep 1 18:03:37 EDT 2006


  User: vblagojevic
  Date: 06/09/01 18:03:37

  Modified:    src/org/jboss/cache/aop/statetransfer    
                        PojoStateTransferIntegrator_200.java
                        PojoStateTransferGenerator_200.java
                        StreamingPojoStateTransferGenerator_200.java
                        StreamingPojoStateTransferIntegrator_200.java
  Log:
  read/write associated state as NodeData object (conform to streaming format)
  
  Revision  Changes    Path
  1.3       +27 -23    JBossCache/src/org/jboss/cache/aop/statetransfer/PojoStateTransferIntegrator_200.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PojoStateTransferIntegrator_200.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/aop/statetransfer/PojoStateTransferIntegrator_200.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- PojoStateTransferIntegrator_200.java	31 Aug 2006 20:30:44 -0000	1.2
  +++ PojoStateTransferIntegrator_200.java	1 Sep 2006 22:03:37 -0000	1.3
  @@ -6,8 +6,9 @@
    */
   package org.jboss.cache.aop.statetransfer;
   
  -import java.io.EOFException;
   import java.io.ObjectInputStream;
  +import java.util.Iterator;
  +import java.util.Map;
   
   import org.jboss.cache.DataNode;
   import org.jboss.cache.Fqn;
  @@ -15,6 +16,7 @@
   import org.jboss.cache.TreeNode;
   import org.jboss.cache.aop.InternalDelegate;
   import org.jboss.cache.factories.NodeFactory;
  +import org.jboss.cache.loader.NodeData;
   import org.jboss.cache.statetransfer.StateTransferIntegrator_200;
   
   class PojoStateTransferIntegrator_200 extends StateTransferIntegrator_200
  @@ -26,37 +28,39 @@
      {
         super(state, targetFqn, cache);
      }
  -   
  +   /**
  +    * 
  +    * Integrates associated state previously written to stream as one NodeData 
  +    * object. Associated state is internal reference counting mechanism for pojo cache. 
  +    *  
  +    * 
  +    * 
  +    */ 
      protected void integrateAssociatedState(ObjectInputStream in) throws Exception
      {
  -
  +      NodeData nd = (NodeData) in.readObject();
  +      if (nd != null && !nd.isMarker())
  +      {
         TreeCache cache = getCache();
         DataNode refMapNode = cache.get(InternalDelegate.JBOSS_INTERNAL_MAP);
  -      try
  -      {
  -         Object[] nameValue;
            NodeFactory factory = getFactory();
  -         while ((nameValue = (Object[]) in.readObject()) != null)
  +         Map attrs = nd.getAttributes();
  +         for (Iterator iter = attrs.keySet().iterator(); iter.hasNext();)
            {
  -            TreeNode target = refMapNode.getChild(nameValue[0]);
  +            Object attr = iter.next();
  +            TreeNode target = refMapNode.getChild(attr);
   
               if (target == null)
               {
                  // Create the node
  -               Fqn fqn = new Fqn(InternalDelegate.JBOSS_INTERNAL_MAP, nameValue[0]);
  -               target = factory.createDataNode(getNodeType(), nameValue[0], fqn, refMapNode, null, true, cache);
  -               refMapNode.addChild(nameValue[0], target);
  -            }
  -
  -            target.put(nameValue[0], nameValue[1]);
  -         }
  +               Fqn fqn = new Fqn(InternalDelegate.JBOSS_INTERNAL_MAP, attr);
  +               target = factory.createDataNode(getNodeType(), attr, fqn, refMapNode, null, true, cache);
  +               refMapNode.addChild(attr, target);
         }
  -      catch (EOFException eof)
  -      {
  -         // all done
  +            target.put(attr, attrs.get(attr));
         }
  -
         if (log.isTraceEnabled())
            log.trace("associated state successfully integrated for " + getTargetFqn());
      }        
  +   }        
   }
  
  
  
  1.3       +24 -7     JBossCache/src/org/jboss/cache/aop/statetransfer/PojoStateTransferGenerator_200.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PojoStateTransferGenerator_200.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/aop/statetransfer/PojoStateTransferGenerator_200.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- PojoStateTransferGenerator_200.java	31 Aug 2006 20:30:44 -0000	1.2
  +++ PojoStateTransferGenerator_200.java	1 Sep 2006 22:03:37 -0000	1.3
  @@ -7,6 +7,7 @@
   package org.jboss.cache.aop.statetransfer;
   
   import java.io.ObjectOutputStream;
  +import java.util.HashMap;
   import java.util.Iterator;
   import java.util.Map;
   
  @@ -15,6 +16,7 @@
   import org.jboss.cache.TreeCache;
   import org.jboss.cache.aop.InternalDelegate;
   import org.jboss.cache.aop.util.ObjectUtil;
  +import org.jboss.cache.loader.NodeData;
   import org.jboss.cache.statetransfer.StateTransferGenerator_200;
   
   class PojoStateTransferGenerator_200 extends StateTransferGenerator_200
  @@ -25,10 +27,19 @@
      }
      
      /**
  -    * For each node in the internal reference map that is associated with the 
  -    * given Fqn, writes an Object[] to the stream containing the node's
  -    * name and the value of its sole attribute.  Does nothing if the Fqn is the 
  -    * root node (i.e. "/") or if it is in the internal reference area itself.
  +    * Marshalls associated state as one NodeData object. Associated state is 
  +    * internal reference counting mechanism for pojo cache. 
  +    * 
  +    * 
  +    * Internal reference map representing associated state contains children 
  +    * nodes without any descendants. Each child has a key (name) and only one value in its 
  +    * map stored under key (name).  
  +    * 
  +    * For each node in the internal reference map that is associated with parameter
  +    * fqn we create an entry in NodeData's attributes along with its value and marshall only 
  +    * one NodeData instance to stream. 
  +    * 
  +    * 
       */
      protected void marshallAssociatedState(Fqn fqn, ObjectOutputStream out) 
            throws Exception
  @@ -48,14 +59,20 @@
            Map.Entry entry;
            String key;
            DataNode value;
  -         for (Iterator iter = children.entrySet().iterator(); iter.hasNext();) {
  +         Fqn mapFqn = new Fqn(InternalDelegate.JBOSS_INTERNAL_MAP);
  +         Map attrs = new HashMap();
  +         NodeData nd = new NodeData(mapFqn, attrs);
  +         for (Iterator iter = children.entrySet().iterator(); iter.hasNext();)
  +         {
               entry = (Map.Entry) iter.next();
               key = (String) entry.getKey();
  -            if (key.startsWith(targetFqn)) {
  +            if (key.startsWith(targetFqn))
  +            {
                  value = (DataNode) entry.getValue();
  -               out.writeObject(new Object[] { key, value.get(key) });
  +               attrs.put(key, value.get(key));
               }
            }
  +         out.writeObject(nd);
         }          
      }
   }
  
  
  
  1.2       +25 -8     JBossCache/src/org/jboss/cache/aop/statetransfer/StreamingPojoStateTransferGenerator_200.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: StreamingPojoStateTransferGenerator_200.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/aop/statetransfer/StreamingPojoStateTransferGenerator_200.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- StreamingPojoStateTransferGenerator_200.java	31 Aug 2006 20:30:44 -0000	1.1
  +++ StreamingPojoStateTransferGenerator_200.java	1 Sep 2006 22:03:37 -0000	1.2
  @@ -8,6 +8,7 @@
   
   import java.io.ObjectOutputStream;
   import java.io.OutputStream;
  +import java.util.HashMap;
   import java.util.Iterator;
   import java.util.Map;
   
  @@ -16,6 +17,7 @@
   import org.jboss.cache.TreeCache;
   import org.jboss.cache.aop.InternalDelegate;
   import org.jboss.cache.aop.util.ObjectUtil;
  +import org.jboss.cache.loader.NodeData;
   import org.jboss.cache.statetransfer.StreamingStateTransferGenerator_200;
   
   class StreamingPojoStateTransferGenerator_200 extends StreamingStateTransferGenerator_200
  @@ -27,10 +29,19 @@
      }
   
      /**
  -    * For each node in the internal reference map that is associated with the 
  -    * given Fqn, writes an Object[] to the stream containing the node's
  -    * name and the value of its sole attribute.  Does nothing if the Fqn is the 
  -    * root node (i.e. "/") or if it is in the internal reference area itself.
  +    * Marshalls associated state as one NodeData object. Associated state is 
  +    * internal reference counting mechanism for pojo cache. 
  +    * 
  +    * 
  +    * Internal reference map representing associated state contains children 
  +    * nodes without any descendants. Each child has a key (name) and only one value in its 
  +    * map stored under key (name).  
  +    * 
  +    * For each node in the internal reference map that is associated with parameter
  +    * fqn we create an entry in NodeData's attributes along with its value and marshall only 
  +    * one NodeData instance to stream. 
  +    * 
  +    * 
       */
      protected void marshallAssociatedState(Fqn fqn, ObjectOutputStream out) 
            throws Exception
  @@ -50,14 +61,20 @@
            Map.Entry entry;
            String key;
            DataNode value;
  -         for (Iterator iter = children.entrySet().iterator(); iter.hasNext();) {
  +         Fqn mapFqn = new Fqn(InternalDelegate.JBOSS_INTERNAL_MAP);
  +         Map attrs = new HashMap();
  +         NodeData nd = new NodeData(mapFqn, attrs);
  +         for (Iterator iter = children.entrySet().iterator(); iter.hasNext();)
  +         {
               entry = (Map.Entry) iter.next();
               key = (String) entry.getKey();
  -            if (key.startsWith(targetFqn)) {
  +            if (key.startsWith(targetFqn))
  +            {
                  value = (DataNode) entry.getValue();
  -               out.writeObject(new Object[] { key, value.get(key) });
  +               attrs.put(key, value.get(key));
               }
            }
  +         out.writeObject(nd);
         }          
      }
   }
  
  
  
  1.2       +28 -23    JBossCache/src/org/jboss/cache/aop/statetransfer/StreamingPojoStateTransferIntegrator_200.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: StreamingPojoStateTransferIntegrator_200.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/aop/statetransfer/StreamingPojoStateTransferIntegrator_200.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- StreamingPojoStateTransferIntegrator_200.java	31 Aug 2006 20:30:44 -0000	1.1
  +++ StreamingPojoStateTransferIntegrator_200.java	1 Sep 2006 22:03:37 -0000	1.2
  @@ -6,8 +6,9 @@
    */
   package org.jboss.cache.aop.statetransfer;
   
  -import java.io.EOFException;
   import java.io.ObjectInputStream;
  +import java.util.Iterator;
  +import java.util.Map;
   
   import org.jboss.cache.DataNode;
   import org.jboss.cache.Fqn;
  @@ -15,6 +16,7 @@
   import org.jboss.cache.TreeNode;
   import org.jboss.cache.aop.InternalDelegate;
   import org.jboss.cache.factories.NodeFactory;
  +import org.jboss.cache.loader.NodeData;
   import org.jboss.cache.statetransfer.StreamingStateTransferIntegrator_200;
   
   class StreamingPojoStateTransferIntegrator_200 extends StreamingStateTransferIntegrator_200
  @@ -25,36 +27,39 @@
         super(inputStream, targetFqn, cache);     
      }
   
  +   /**
  +    * 
  +    * Integrates associated state previously written to stream as one NodeData 
  +    * object. Associated state is internal reference counting mechanism for pojo cache. 
  +    *  
  +    * 
  +    * 
  +    */ 
      protected void integrateAssociatedState(ObjectInputStream in) throws Exception
      {
  -
  +      NodeData nd = (NodeData) in.readObject();
  +      if (nd != null && !nd.isMarker())
  +      {
         TreeCache cache = getCache();
         DataNode refMapNode = cache.get(InternalDelegate.JBOSS_INTERNAL_MAP);
  -      try
  -      {
  -         Object[] nameValue;
            NodeFactory factory = getFactory();
  -         while ((nameValue = (Object[]) in.readObject()) != null)
  +         Map attrs = nd.getAttributes();
  +         for (Iterator iter = attrs.keySet().iterator(); iter.hasNext();)
            {
  -            TreeNode target = refMapNode.getChild(nameValue[0]);
  +            Object attr = iter.next();
  +            TreeNode target = refMapNode.getChild(attr);
   
               if (target == null)
               {
                  // Create the node
  -               Fqn fqn = new Fqn(InternalDelegate.JBOSS_INTERNAL_MAP, nameValue[0]);
  -               target = factory.createDataNode(getNodeType(), nameValue[0], fqn, refMapNode, null, true, cache);
  -               refMapNode.addChild(nameValue[0], target);
  -            }
  -
  -            target.put(nameValue[0], nameValue[1]);
  +               Fqn fqn = new Fqn(InternalDelegate.JBOSS_INTERNAL_MAP, attr);
  +               target = factory.createDataNode(getNodeType(), attr, fqn, refMapNode, null, true, cache);
  +               refMapNode.addChild(attr, target);
            }
  +            target.put(attr, attrs.get(attr));
         }
  -      catch (EOFException eof)
  -      {
  -         // all done
  -      }
  -
         if (log.isTraceEnabled())
            log.trace("associated state successfully integrated for " + getTargetFqn());
      }        
  +   }         
   }
  
  
  



More information about the jboss-cvs-commits mailing list