[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