[infinispan-commits] Infinispan SVN: r2549 - in trunk/core/src/main/java/org/infinispan: commands/read and 1 other directory.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Thu Oct 21 09:56:03 EDT 2010


Author: mircea.markus
Date: 2010-10-21 09:56:03 -0400 (Thu, 21 Oct 2010)
New Revision: 2549

Modified:
   trunk/core/src/main/java/org/infinispan/CacheDelegate.java
   trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
Log:
migrated 2518 to trunk

Modified: trunk/core/src/main/java/org/infinispan/CacheDelegate.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/CacheDelegate.java	2010-10-21 13:35:39 UTC (rev 2548)
+++ trunk/core/src/main/java/org/infinispan/CacheDelegate.java	2010-10-21 13:56:03 UTC (rev 2549)
@@ -173,7 +173,7 @@
 
    public final int size() {
       SizeCommand command = commandsFactory.buildSizeCommand();
-      return (Integer) invoker.invoke(icc.createNonTxInvocationContext(), command);
+      return (Integer) invoker.invoke(getInvocationContext(false), command);
    }
 
    public final boolean isEmpty() {

Modified: trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java	2010-10-21 13:35:39 UTC (rev 2548)
+++ trunk/core/src/main/java/org/infinispan/commands/read/AbstractLocalCommand.java	2010-10-21 13:56:03 UTC (rev 2549)
@@ -1,13 +1,19 @@
 package org.infinispan.commands.read;
 
 import org.infinispan.commands.LocalCommand;
+import org.infinispan.container.DataContainer;
+import org.infinispan.container.entries.CacheEntry;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.context.impl.TxInvocationContext;
 
+import java.util.HashSet;
+import java.util.Set;
+
 /**
  * Abstract class
  *
  * @author Manik Surtani
+ * @author Mircea.Markus at jboss.com
  * @since 4.1
  */
 public class AbstractLocalCommand implements LocalCommand {
@@ -31,5 +37,21 @@
 
    protected boolean noTxModifications(InvocationContext ctx) {
       return !ctx.isInTxScope() || !((TxInvocationContext)ctx).hasModifications();
-   }   
+   }
+
+   protected Set<Object> ketKeySetWithinTransaction(InvocationContext ctx, DataContainer container) {
+      Set<Object> objects = container.keySet();
+      Set<Object> result = new HashSet<Object>();
+      result.addAll(objects);
+      for (CacheEntry ce : ctx.getLookedUpEntries().values()) {
+         if (ce.isRemoved()) {
+            result.remove(ce.getKey());
+         } else {
+            if (ce.isCreated()) {
+               result.add(ce.getKey());
+            }
+         }
+      }
+      return result;
+   }
 }

Modified: trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2010-10-21 13:35:39 UTC (rev 2548)
+++ trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2010-10-21 13:56:03 UTC (rev 2549)
@@ -24,12 +24,9 @@
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
-import org.infinispan.container.entries.CacheEntry;
 import org.infinispan.context.InvocationContext;
-import org.infinispan.context.impl.TxInvocationContext;
 import org.infinispan.util.Immutables;
 
-import java.util.HashSet;
 import java.util.Set;
 
 /**
@@ -55,17 +52,7 @@
       if (noTxModifications(ctx)) {
          return Immutables.immutableSetWrap(objects);
       }
-      Set<Object> result = new HashSet<Object>();
-      result.addAll(objects);
-      for (CacheEntry ce : ctx.getLookedUpEntries().values()) {
-         if (ce.isRemoved()) {
-            result.remove(ce.getKey());
-         } else {
-            if (ce.isCreated()) {
-               result.add(ce.getKey());
-            }
-         }
-      }
+      Set<Object> result = ketKeySetWithinTransaction(ctx, container);
       return Immutables.immutableSetWrap(result);
    }
 

Modified: trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2010-10-21 13:35:39 UTC (rev 2548)
+++ trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2010-10-21 13:56:03 UTC (rev 2549)
@@ -30,6 +30,7 @@
  * Command to calculate the size of the cache
  *
  * @author Manik Surtani (<a href="mailto:manik at jboss.org">manik at jboss.org</a>)
+ * @author Mircea.Markus at jboss.com
  * @since 4.0
  */
 public class SizeCommand extends AbstractLocalCommand implements VisitableCommand {
@@ -44,7 +45,10 @@
    }
 
    public Integer perform(InvocationContext ctx) throws Throwable {
-      return container.size();
+      if (noTxModifications(ctx)) {
+         return container.size();
+      }
+      return super.ketKeySetWithinTransaction(ctx, container).size();
    }
 
    @Override



More information about the infinispan-commits mailing list