[jbosscache-commits] JBoss Cache SVN: r6268 - in core/trunk/src: main/java/org/jboss/cache/commands/read and 6 other directories.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Tue Jul 15 08:41:07 EDT 2008
Author: manik.surtani at jboss.com
Date: 2008-07-15 08:41:07 -0400 (Tue, 15 Jul 2008)
New Revision: 6268
Modified:
core/trunk/src/main/java/org/jboss/cache/DataContainer.java
core/trunk/src/main/java/org/jboss/cache/DataContainerImpl.java
core/trunk/src/main/java/org/jboss/cache/commands/read/GravitateDataCommand.java
core/trunk/src/main/java/org/jboss/cache/interceptors/DataGravitatorInterceptor.java
core/trunk/src/main/java/org/jboss/cache/loader/AbstractCacheLoader.java
core/trunk/src/main/java/org/jboss/cache/loader/JDBCCacheLoader.java
core/trunk/src/main/java/org/jboss/cache/marshall/NodeData.java
core/trunk/src/main/java/org/jboss/cache/statetransfer/DefaultStateTransferGenerator.java
core/trunk/src/test/java/org/jboss/cache/DataContainerTest.java
core/trunk/src/test/java/org/jboss/cache/commands/read/GravitateDataCommandTest.java
Log:
added option to defensively copy data map when generating node data
Modified: core/trunk/src/main/java/org/jboss/cache/DataContainer.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/DataContainer.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/main/java/org/jboss/cache/DataContainer.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -76,11 +76,12 @@
/**
* Prepares a list of {@link NodeData} objects for a specified node and all its children.
*
- * @param list List of NodeData objects, which will be added to.
- * @param node node to recursively add to the list
+ * @param list List of NodeData objects, which will be added to.
+ * @param node node to recursively add to the list
+ * @param mapSafe if true, the node's data map reference is passed to the NodeData instance created. Otherwise, the map is copied.
* @return the same list passed in
*/
- List<NodeData> buildNodeData(List<NodeData> list, NodeSPI node);
+ List<NodeData> buildNodeData(List<NodeData> list, NodeSPI node, boolean mapSafe);
/**
* Generates a list of nodes for eviction. This filters out nodes that cannot be evicted, such as those which are
Modified: core/trunk/src/main/java/org/jboss/cache/DataContainerImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/DataContainerImpl.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/main/java/org/jboss/cache/DataContainerImpl.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -161,13 +161,13 @@
return n != null && n.hasChildrenDirect();
}
- public List<NodeData> buildNodeData(List<NodeData> list, NodeSPI node)
+ public List<NodeData> buildNodeData(List<NodeData> list, NodeSPI node, boolean mapSafe)
{
- NodeData data = new NodeData(buddyFqnTransformer.getActualFqn(node.getFqn()), node.getDataDirect());
+ NodeData data = new NodeData(buddyFqnTransformer.getActualFqn(node.getFqn()), node.getDataDirect(), mapSafe);
list.add(data);
for (Object childNode : node.getChildrenDirect())
{
- buildNodeData(list, (NodeSPI) childNode);
+ buildNodeData(list, (NodeSPI) childNode, true);
}
return list;
}
Modified: core/trunk/src/main/java/org/jboss/cache/commands/read/GravitateDataCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/read/GravitateDataCommand.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/main/java/org/jboss/cache/commands/read/GravitateDataCommand.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -159,7 +159,7 @@
backupNodeFqn = buddyFqnTransformer.getBackupFqn(buddyFqnTransformer.getGroupNameFromAddress(localAddress), fqn);
}
- List<NodeData> list = dataContainer.buildNodeData(new LinkedList<NodeData>(), (NodeSPI) actualNode);
+ List<NodeData> list = dataContainer.buildNodeData(new LinkedList<NodeData>(), (NodeSPI) actualNode, false);
return GravitateResult.subtreeResult(list, backupNodeFqn);
}
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/DataGravitatorInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/DataGravitatorInterceptor.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/DataGravitatorInterceptor.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -153,7 +153,7 @@
if (isGravitationEnabled(ctx))
{
// test that the Fqn being requested exists locally in the cache.
- if (trace) log.trace("Checking local existence of command " + command);
+ if (trace) log.trace("Checking local existence of requested fqn " + command.getFqn());
if (buddyFqnTransformer.isBackupFqn(command.getFqn()))
{
log.info("Is call for a backup Fqn, not performing any gravitation. Direct calls on internal backup nodes are *not* supported.");
@@ -378,6 +378,7 @@
}
}
+ if (trace) log.trace("Retrieved data " + data + " found = " + found);
return data;
}
@@ -393,6 +394,15 @@
this.backupFqn = gr.getBuddyBackupFqn();
this.backupData = gr.getNodeData();
}
+
+ public String toString()
+ {
+ return "BackupData{" +
+ "primaryFqn=" + primaryFqn +
+ ", backupFqn=" + backupFqn +
+ ", backupData=" + backupData +
+ '}';
+ }
}
public static class ResponseValidityFilter implements RspFilter
Modified: core/trunk/src/main/java/org/jboss/cache/loader/AbstractCacheLoader.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/loader/AbstractCacheLoader.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/main/java/org/jboss/cache/loader/AbstractCacheLoader.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -259,7 +259,7 @@
}
else
{
- nd = new NodeData(fqn, attrs);
+ nd = new NodeData(fqn, attrs, true);
}
//out.writeObject(nd);
list.add(nd);
Modified: core/trunk/src/main/java/org/jboss/cache/loader/JDBCCacheLoader.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/loader/JDBCCacheLoader.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/main/java/org/jboss/cache/loader/JDBCCacheLoader.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -167,7 +167,7 @@
{
Map<Object, Object> attributes = readAttributes(rs, 2);
Fqn path = Fqn.fromString(rs.getString(1));
- NodeData nodeData = (attributes == null || attributes.isEmpty()) ? new NodeData(path) : new NodeData(path, attributes);
+ NodeData nodeData = (attributes == null || attributes.isEmpty()) ? new NodeData(path) : new NodeData(path, attributes, true);
list.add(nodeData);
}
}
Modified: core/trunk/src/main/java/org/jboss/cache/marshall/NodeData.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/marshall/NodeData.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/main/java/org/jboss/cache/marshall/NodeData.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -6,6 +6,7 @@
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.util.HashMap;
import java.util.Map;
/**
@@ -31,16 +32,18 @@
this.fqn = fqn;
}
- public NodeData(Fqn<?> fqn, Map<?, ?> attrs)
+ public NodeData(Fqn<?> fqn, Map<?, ?> attrs, boolean mapSafe)
{
this.fqn = fqn;
- this.attrs = attrs;
+ if (mapSafe || attrs == null)
+ this.attrs = attrs;
+ else
+ this.attrs = new HashMap<Object, Object>(attrs);
}
- public NodeData(String fqn, Map<?, ?> attrs)
+ public NodeData(String fqn, Map<?, ?> attrs, boolean mapSafe)
{
- this.fqn = Fqn.fromString(fqn);
- this.attrs = attrs;
+ this(Fqn.fromString(fqn), attrs, mapSafe);
}
public Map getAttributes()
Modified: core/trunk/src/main/java/org/jboss/cache/statetransfer/DefaultStateTransferGenerator.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/statetransfer/DefaultStateTransferGenerator.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/main/java/org/jboss/cache/statetransfer/DefaultStateTransferGenerator.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -159,7 +159,7 @@
}
else
{
- nd = new NodeData(node.getFqn(), attrs);
+ nd = new NodeData(node.getFqn(), attrs, true);
}
list.add(nd);
Modified: core/trunk/src/test/java/org/jboss/cache/DataContainerTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/DataContainerTest.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/test/java/org/jboss/cache/DataContainerTest.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -89,17 +89,17 @@
}
/**
- * test {@link DataContainerImpl#buildNodeData(java.util.List, NodeSPI)}
+ * test {@link DataContainer#buildNodeData(java.util.List}
*/
public void testBuildNodeData()
{
nodes.abNode.put("ab", "ab");
nodes.abcNode.put("abc", "abc");
List<NodeData> result = new ArrayList<NodeData>();
- container.buildNodeData(result, nodes.abNode);
+ container.buildNodeData(result, nodes.abNode, true);
assert result.size() == 2;
- assert result.contains(new NodeData(nodes.ab, nodes.abNode.getData()));
- assert result.contains(new NodeData(nodes.abc, nodes.abcNode.getData()));
+ assert result.contains(new NodeData(nodes.ab, nodes.abNode.getData(), true));
+ assert result.contains(new NodeData(nodes.abc, nodes.abcNode.getData(), true));
}
/**
Modified: core/trunk/src/test/java/org/jboss/cache/commands/read/GravitateDataCommandTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/commands/read/GravitateDataCommandTest.java 2008-07-15 11:52:04 UTC (rev 6267)
+++ core/trunk/src/test/java/org/jboss/cache/commands/read/GravitateDataCommandTest.java 2008-07-15 12:41:07 UTC (rev 6268)
@@ -64,7 +64,7 @@
expect(spiMock.getNode(fqn)).andReturn(nodes.adfNode);
ArrayList arrayList = new ArrayList();
- expect(containerMock.buildNodeData(Collections.EMPTY_LIST, nodes.adfNode)).andReturn(arrayList);
+ expect(containerMock.buildNodeData(Collections.EMPTY_LIST, nodes.adfNode, false)).andReturn(arrayList);
control.replay();
GravitateResult result = (GravitateResult) command.perform(ctx);
control.verify();
@@ -83,7 +83,7 @@
expect(spiMock.getNode(firstSearch)).andReturn(nodes.abcNode);
ArrayList listReference = new ArrayList();
- expect(containerMock.buildNodeData(Collections.EMPTY_LIST, nodes.abcNode)).andReturn(listReference);
+ expect(containerMock.buildNodeData(Collections.EMPTY_LIST, nodes.abcNode, false)).andReturn(listReference);
control.replay();
GravitateResult result = (GravitateResult) command.perform(ctx);
More information about the jbosscache-commits
mailing list