[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