[jbosscache-commits] JBoss Cache SVN: r5577 - in core/trunk/src/main/java/org/jboss/cache: commands/cachedata and 3 other directories.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Wed Apr 16 10:24:20 EDT 2008


Author: manik.surtani at jboss.com
Date: 2008-04-16 10:24:20 -0400 (Wed, 16 Apr 2008)
New Revision: 5577

Added:
   core/trunk/src/main/java/org/jboss/cache/commands/remote/BaseDirectCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/remote/DirectCommand.java
Modified:
   core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java
   core/trunk/src/main/java/org/jboss/cache/commands/cachedata/GetKeyValueCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/remote/AnnounceBuddyPoolNameCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/remote/AssignToBuddyGroupCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/remote/ClusteredGetCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/remote/GravitateDataCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/remote/RemoveFromBuddyGroupCommand.java
   core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java
   core/trunk/src/main/java/org/jboss/cache/invocation/CacheInvocationDelegate.java
   core/trunk/src/main/java/org/jboss/cache/invocation/InterceptorChain.java
   core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java
Log:
Updated commands

Modified: core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/CommandsFactory.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -384,14 +384,18 @@
          case AnnounceBuddyPoolNameCommand.METHOD_ID:
             returnValue = new AnnounceBuddyPoolNameCommand();
             break;
-
          case AssignToBuddyGroupCommand.METHOD_ID:
             returnValue = new AssignToBuddyGroupCommand();
             break;
-
          case RemoveFromBuddyGroupCommand.METHOD_ID:
             returnValue = new RemoveFromBuddyGroupCommand();
             break;
+         case DataGravitationCleanupCommand.METHOD_ID:
+            returnValue = new DataGravitationCleanupCommand();
+            break;
+         case GravitateDataCommand.METHOD_ID:
+            returnValue = new GravitateDataCommand();
+            break;
 
          default:
             throw new CacheException("Unknown command id " + id + "!");

Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/GetKeyValueCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/GetKeyValueCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/GetKeyValueCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -32,7 +32,7 @@
 
    public Object perform(InvocationContext ctx)
    {
-      if (log.isTraceEnabled())
+      if (trace)
       {
          log.trace(new StringBuffer("_get(").append("\"").append(fqn).append("\", \"").append(key).append("\", \"").
                append(sendNodeEvent).append("\")"));

Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/InvalidateCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -59,7 +59,7 @@
       //todo - rather than using CacheSPI this can rely in cache loader directly to load data
       Node node = spi.getNode(fqn); // force interceptor chain, load if necessary from cache loader.
 
-      if (log.isTraceEnabled()) log.trace("Invalidating fqn:" + fqn);
+      if (trace) log.trace("Invalidating fqn:" + fqn);
       if (node == null)
       {
          // if pessimistic locking, just return.
@@ -71,11 +71,11 @@
          {
             if (dataVersion == null)
             {
-               if (log.isTraceEnabled())
+               if (trace)
                   log.trace("Would have created a tombstone since the node doesn't exist, but the version to invalidate is null and hence cannot create a tombstone!");
                return null;
             }
-            if (log.isTraceEnabled())
+            if (trace)
                log.trace("Node doesn't exist; creating a tombstone with data version " + dataVersion);
             // create the node we need.
             Map m = Collections.emptyMap();
@@ -171,7 +171,7 @@
    public String toString()
    {
       return "InvalidateCommand{" +
-            "dataVersion=" + dataVersion+
+            "dataVersion=" + dataVersion +
             ", fqn=" + fqn +
             '}';
    }

Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutDataMapCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -7,11 +7,9 @@
 import org.jboss.cache.commands.functional.TxCacheCommand;
 import org.jboss.cache.commands.state.BaseDataVersionCommand;
 import org.jboss.cache.commands.state.GlobalTransactionCommand;
-import org.jboss.cache.factories.annotations.Inject;
 import org.jboss.cache.notifications.event.NodeModifiedEvent;
 import org.jboss.cache.optimistic.DataVersion;
 import org.jboss.cache.transaction.GlobalTransaction;
-import org.jboss.cache.transaction.TransactionTable;
 
 import java.util.Map;
 
@@ -52,7 +50,7 @@
 
    public Object perform(InvocationContext ctx)
    {
-      if (log.isTraceEnabled())
+      if (trace)
       {
          log.trace("perform(" + globalTransaction + ", \"" + fqn + "\", " + data + " undo=" + createUndoOps + " erase=" + eraseContents + ")");
       }
@@ -69,7 +67,7 @@
 
    public void rollback()
    {
-      if (log.isTraceEnabled())
+      if (trace)
       {
          log.trace("rollback(" + globalTransaction + ", \"" + fqn + "\", " + data + ")");
       }

Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/PutKeyValueCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -63,7 +63,7 @@
 
    public Object perform(InvocationContext ctx)
    {
-      if (log.isTraceEnabled())
+      if (trace)
       {
          log.trace(new StringBuffer("perform(").append(globalTransaction).append(", \"").
                append(fqn).append("\", k=").append(key).append(", v=").append(value).append(")"));

Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveDataCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -58,7 +58,7 @@
 
    public Object perform(InvocationContext ctx)
    {
-      if (log.isTraceEnabled()) log.trace("perform(" + globalTransaction + ", \"" + fqn + "\")");
+      if (trace) log.trace("perform(" + globalTransaction + ", \"" + fqn + "\")");
       NodeSPI targetNode = cacheData.findNode(fqn, dataVersion);
       if (targetNode == null)
       {
@@ -120,7 +120,7 @@
 
    public void rollback()
    {
-      if (log.isTraceEnabled()) log.trace("rollback(" + globalTransaction + ", \"" + fqn + "\", " + originalData + ")");
+      if (trace) log.trace("rollback(" + globalTransaction + ", \"" + fqn + "\", " + originalData + ")");
       boolean isRollback = true;
       NodeSPI nodeSPI = cacheData.findNodeCheck(globalTransaction, fqn, isRollback);
       nodeSPI.putAllDirect(originalData);

Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveKeyCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -56,7 +56,7 @@
 
    public Object perform(InvocationContext ctx)
    {
-      if (log.isTraceEnabled()) log.trace("perform(" + globalTransaction + ", \"" + fqn + "\", key=" + key + ")");
+      if (trace) log.trace("perform(" + globalTransaction + ", \"" + fqn + "\", key=" + key + ")");
 
       NodeSPI n = cacheData.findNode(fqn);
       if (n == null)

Modified: core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/cachedata/RemoveNodeCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -58,14 +58,14 @@
    public Object perform(InvocationContext ctx)
    {
       NodeSPI parentNode;
-      if (log.isTraceEnabled())
+      if (trace)
          log.trace("perform(" + globalTransaction + ", \"" + fqn + "\", undo=" + createUndoOps + ")");
 
       // Find the node. This will add the temporarily created parent nodes to the TX's node list if globalTransaction != null)
       targetNode = cacheData.findNode(fqn, dataVersion, true);
       if (targetNode == null)
       {
-         if (log.isTraceEnabled()) log.trace("node " + fqn + " not found");
+         if (trace) log.trace("node " + fqn + " not found");
          return false;
       }
 
@@ -135,7 +135,7 @@
    public void rollback()
    {
       String childName = (String) targetNode.getFqn().getLastElement();
-      if (log.isTraceEnabled())
+      if (trace)
       {
          log.trace("rollback(\"" + parentFqn + "\", \"" + childName + "\", node=" + targetNode + ")");
       }

Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/AnnounceBuddyPoolNameCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/AnnounceBuddyPoolNameCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/AnnounceBuddyPoolNameCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -4,8 +4,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.jboss.cache.InvocationContext;
 import org.jboss.cache.buddyreplication.BuddyManager;
-import org.jboss.cache.commands.BaseCommand;
-import org.jboss.cache.commands.CacheCommand;
 import org.jboss.cache.commands.CommandsVisitor;
 import org.jboss.cache.factories.annotations.Inject;
 import org.jgroups.Address;
@@ -14,7 +12,7 @@
  * @author Mircea.Markus at jboss.com
  * @since 2.2
  */
-public class AnnounceBuddyPoolNameCommand extends BaseCommand implements CacheCommand
+public class AnnounceBuddyPoolNameCommand extends BaseDirectCommand
 {
    public static final int METHOD_ID = 28;
    private static final Log log = LogFactory.getLog(AnnounceBuddyPoolNameCommand.class);
@@ -43,12 +41,13 @@
    }
 
 
-   public Object perform(InvocationContext ctx) throws Throwable
+   public Object performDirectly()
    {
       if (buddyManager != null)
          buddyManager.handlePoolNameBroadcast(address, buddyPoolName);
       else if (log.isWarnEnabled())
          log.warn("Received annouceBuddyPoolName call from [" + address + "] but buddy replication is not enabled on this node!");
+
       return null;
    }
 

Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/AssignToBuddyGroupCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/AssignToBuddyGroupCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/AssignToBuddyGroupCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -4,8 +4,6 @@
 import org.jboss.cache.InvocationContext;
 import org.jboss.cache.buddyreplication.BuddyGroup;
 import org.jboss.cache.buddyreplication.BuddyManager;
-import org.jboss.cache.commands.BaseCommand;
-import org.jboss.cache.commands.CacheCommand;
 import org.jboss.cache.commands.CommandsVisitor;
 import org.jboss.cache.factories.annotations.Inject;
 
@@ -15,7 +13,7 @@
  * @author Mircea.Markus at jboss.com
  * @since 2.2
  */
-public class AssignToBuddyGroupCommand extends BaseCommand implements CacheCommand
+public class AssignToBuddyGroupCommand extends BaseDirectCommand
 {
    public static final int METHOD_ID = 29;
 
@@ -41,12 +39,13 @@
       this.buddyManager = manager;
    }
 
-   public Object perform(InvocationContext ctx) throws Throwable
+   public Object performDirectly() throws Exception
    {
       if (buddyManager != null)
          buddyManager.handleAssignToBuddyGroup(group, state);
       else if (log.isWarnEnabled())
          log.warn("Received assignToBuddyGroup call from group owner [" + group.getDataOwner() + "] but buddy replication is not enabled on this node!");
+
       return null;
    }
 

Added: core/trunk/src/main/java/org/jboss/cache/commands/remote/BaseDirectCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/BaseDirectCommand.java	                        (rev 0)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/BaseDirectCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -0,0 +1,18 @@
+package org.jboss.cache.commands.remote;
+
+import org.jboss.cache.InvocationContext;
+import org.jboss.cache.commands.BaseCommand;
+
+/**
+ * Base class that implements DirectCommand
+ *
+ * @author Manik Surtani (<a href="mailto:manik at jboss.org">manik at jboss.org</a>)
+ * @since 2.2.0
+ */
+public abstract class BaseDirectCommand extends BaseCommand implements DirectCommand
+{
+   public final Object perform(InvocationContext ctx)
+   {
+      throw new UnsupportedOperationException("Direct commands are not meant to be passed up the interceptor chain!");
+   }
+}

Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/ClusteredGetCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/ClusteredGetCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/ClusteredGetCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -1,8 +1,6 @@
 package org.jboss.cache.commands.remote;
 
 import org.jboss.cache.InvocationContext;
-import org.jboss.cache.commands.BaseCommand;
-import org.jboss.cache.commands.CacheCommand;
 import org.jboss.cache.commands.CommandsVisitor;
 import org.jboss.cache.commands.cachedata.CacheDataCommand;
 import org.jboss.cache.commands.cachedata.ExistsNodeCommand;
@@ -10,6 +8,7 @@
 import org.jboss.cache.commands.cachedata.GetDataMapCommand;
 import org.jboss.cache.factories.annotations.Inject;
 import org.jboss.cache.invocation.CacheData;
+import org.jboss.cache.invocation.InterceptorChain;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -19,13 +18,14 @@
  * @author Mircea.Markus at jboss.com
  * @since 2.2
  */
-public class ClusteredGetCommand extends BaseCommand implements CacheCommand
+public class ClusteredGetCommand extends BaseDirectCommand
 {
    public static final int METHOD_ID = 22;
 
    private CacheDataCommand cacheDataComand;
    private Boolean searchBackupSubtrees;
    private CacheData cacheData;
+   private InterceptorChain interceptorChain;
 
    public ClusteredGetCommand()
    {
@@ -38,31 +38,30 @@
    }
 
    @Inject
-   public void initialize(CacheData cacheData)
+   public void initialize(CacheData cacheData, InterceptorChain interceptorChain)
    {
       this.cacheData = cacheData;
+      this.interceptorChain = interceptorChain;
    }
 
    /**
     * A 'clustered get' call, called from a remote ClusteredCacheLoader.
     *
-    * @param ctx
     * @return a List containing 2 elements: (true or false) and a value (Object).  If buddy replication
     *         is used one further element is added - an Fqn of the backup subtree in which this node may be found.
     */
-   public Object perform(InvocationContext ctx) throws Throwable
+   public Object performDirectly() throws Throwable
    {
-      if (log.isTraceEnabled())
+      if (trace)
          log.trace("Clustered Get called with params: " + cacheDataComand + ", " + searchBackupSubtrees);
 
       Object callResults = null;
-
       try
       {
-         if (log.isTraceEnabled()) log.trace("Clustered get: invoking call with Fqn " + cacheDataComand.getFqn());
-         callResults = cacheDataComand.perform(ctx);
+         if (trace) log.trace("Clustered get: invoking call with Fqn " + cacheDataComand.getFqn());
+         callResults = interceptorChain.invoke(cacheDataComand, false);
          boolean found = validResult(callResults);
-         if (log.isTraceEnabled()) log.trace("Got result " + callResults + ", found=" + found);
+         if (trace) log.trace("Got result " + callResults + ", found=" + found);
          if (found && callResults == null) callResults = createEmptyResults();
       }
       catch (Exception e)
@@ -82,7 +81,6 @@
          results.add(null);
       }
       return results;
-
    }
 
    public Object accept(InvocationContext ctx, CommandsVisitor handler) throws Throwable

Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -27,7 +27,7 @@
  *        todo this calls other commands through the invocation chain, check wheter direct call is not okay
  *        todo it is not natural for this command to extend TxCC, revisit
  */
-public class DataGravitationCleanupCommand extends BaseCacheDataCommand implements TxCacheCommand, GlobalTransactionCommand
+public class DataGravitationCleanupCommand extends BaseCacheDataCommand implements TxCacheCommand, GlobalTransactionCommand, DirectCommand
 {
    public static final int METHOD_ID = 34;
 
@@ -64,17 +64,20 @@
 
    public Object perform(InvocationContext invocationContext) throws Throwable
    {
+      throw new UnsupportedOperationException("Direct commands are not meant to be passed up the interceptor chain!");
+   }
+
+   public Object performDirectly() throws Throwable
+   {
       if (buddyManager.isDataGravitationRemoveOnFind())
       {
-         if (log.isTraceEnabled())
+         if (trace)
             log.trace("DataGravitationCleanup: Removing primary (" + fqn + ") and backup (" + backup + ")");
 
-         invocationContext.getOptionOverrides().setCacheModeLocal(true);
          GlobalTransaction gtx = transactionHelper.getCurrentTransaction();
          if (!executeRemove(gtx, fqn))
          {
             // only attempt to clean up the backup if the primary did not exist - a waste of a call otherwise.
-            invocationContext.getOptionOverrides().setCacheModeLocal(true);
             Object result = executeRemove(gtx, fqn);
             if (wasNodeRemoved(result))
             {
@@ -84,14 +87,14 @@
                   NodeSPI deadBackupRoot = cacheData.peek(backup.getParent(), false);
                   if (deadBackupRoot.getChildrenMapDirect().isEmpty())
                   {
-                     if (log.isTraceEnabled()) log.trace("Removing dead backup region " + deadBackupRoot.getFqn());
+                     if (trace) log.trace("Removing dead backup region " + deadBackupRoot.getFqn());
                      executeRemove(gtx, deadBackupRoot.getFqn());
 
                      // now check the grand parent and see if we are free of versions
                      deadBackupRoot = cacheData.peek(deadBackupRoot.getFqn().getParent(), false);
                      if (deadBackupRoot.getChildrenMapDirect().isEmpty())
                      {
-                        if (log.isTraceEnabled()) log.trace("Removing dead backup region " + deadBackupRoot.getFqn());
+                        if (trace) log.trace("Removing dead backup region " + deadBackupRoot.getFqn());
                         executeRemove(gtx, deadBackupRoot.getFqn());
                      }
                   }
@@ -101,7 +104,7 @@
       }
       else
       {
-         if (log.isTraceEnabled())
+         if (trace)
             log.trace("DataGravitationCleanup: Evicting primary (" + fqn + ") and backup (" + backup + ")");
          evictNode(fqn);
          evictNode(backup);
@@ -116,7 +119,10 @@
    {
       Object result;
       RemoveNodeCommand removeBackupCommand = commandsFactory.buildRemoveNodeCommand(gtx, toRemove, true, true, false);
-      result = invoker.invoke(removeBackupCommand);
+
+      InvocationContext ctx = invoker.getInvocationContext();
+      ctx.getOptionOverrides().setCacheModeLocal(true);
+      result = invoker.invoke(ctx, removeBackupCommand);
       return result != null && (Boolean) result;
    }
 

Added: core/trunk/src/main/java/org/jboss/cache/commands/remote/DirectCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/DirectCommand.java	                        (rev 0)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/DirectCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -0,0 +1,20 @@
+package org.jboss.cache.commands.remote;
+
+import org.jboss.cache.commands.functional.MarshallableCommand;
+
+/**
+ * Commands implementing this interface will not be passed up the interceptor chain and instead will be executed directly.
+ *
+ * @author Manik Surtani (<a href="mailto:manik at jboss.org">manik at jboss.org</a>)
+ * @since 2.2.0
+ */
+public interface DirectCommand extends MarshallableCommand
+{
+   /**
+    * Performs this command directly, with no invocation context.
+    *
+    * @return an object if this call was to return values, otherwise null.
+    * @throws Throwable if something goes wrong
+    */
+   Object performDirectly() throws Throwable;
+}

Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/GravitateDataCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/GravitateDataCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/GravitateDataCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -35,6 +35,10 @@
    /* parametres */
    private boolean searchSubtrees;
 
+   public GravitateDataCommand()
+   {
+   }
+
    public GravitateDataCommand(Fqn fqn, boolean searchSubtrees)
    {
       this.fqn = fqn;
@@ -50,7 +54,7 @@
    public Object perform(InvocationContext ctx)
    {
       // for now, perform a very simple series of getData calls.
-      if (log.isTraceEnabled()) log.trace("Caller is asking for " + fqn);
+      if (trace) log.trace("Caller is asking for " + fqn);
       try
       {
          ctx.setOriginLocal(false);
@@ -60,7 +64,7 @@
          Node actualNode = spi.getNode(fqn);
          ctx.getOptionOverrides().setSkipDataGravitation(false);
 
-         if (log.isTraceEnabled()) log.trace("In local tree, this is " + actualNode);
+         if (trace) log.trace("In local tree, this is " + actualNode);
 
          Fqn backupNodeFqn = null;
          if (actualNode == null && searchSubtrees)
@@ -108,7 +112,7 @@
                         ctx.getOptionOverrides().setSkipDataGravitation(false);
                      }
 
-                     if (log.isTraceEnabled())
+                     if (trace)
                         log.trace("Looking for " + backupNodeFqn + ". Search result: " + actualNode);
 
                      // break out of outer loop searching through all available backups.
@@ -139,7 +143,7 @@
       }
       catch (RuntimeException re)
       {
-         if (log.isTraceEnabled()) log.trace("Caught throwable", re);
+         if (trace) log.trace("Caught throwable", re);
          throw re;
       }
       finally

Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/RemoveFromBuddyGroupCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/RemoveFromBuddyGroupCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/RemoveFromBuddyGroupCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -2,8 +2,6 @@
 
 import org.jboss.cache.InvocationContext;
 import org.jboss.cache.buddyreplication.BuddyManager;
-import org.jboss.cache.commands.BaseCommand;
-import org.jboss.cache.commands.CacheCommand;
 import org.jboss.cache.commands.CommandsVisitor;
 import org.jboss.cache.factories.annotations.Inject;
 
@@ -11,7 +9,7 @@
  * @author Mircea.Markus at jboss.com
  * @since 2.2
  */
-public class RemoveFromBuddyGroupCommand extends BaseCommand implements CacheCommand
+public class RemoveFromBuddyGroupCommand extends BaseDirectCommand
 {
    public static final int METHOD_ID = 30;
 
@@ -34,7 +32,7 @@
       this.buddyManager = buddyManager;
    }
 
-   public Object perform(InvocationContext ctx) throws Throwable
+   public Object performDirectly()
    {
       if (buddyManager != null)
          buddyManager.handleRemoveFromBuddyGroup(groupName);

Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/ReplicateCommand.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -1,14 +1,12 @@
 package org.jboss.cache.commands.remote;
 
-import org.jboss.cache.CacheSPI;
 import org.jboss.cache.InvocationContext;
-import org.jboss.cache.commands.BaseCommand;
 import org.jboss.cache.commands.CacheCommand;
 import org.jboss.cache.commands.CommandsVisitor;
 import org.jboss.cache.commands.cachedata.PutKeyValueCommand;
 import org.jboss.cache.commands.functional.MarshallableCommand;
 import org.jboss.cache.factories.annotations.Inject;
-import org.jboss.cache.invocation.AbstractInvocationDelegate;
+import org.jboss.cache.invocation.InterceptorChain;
 
 import java.util.List;
 
@@ -18,14 +16,12 @@
  * @author Mircea.Markus at jboss.com
  * @since 2.2
  */
-public class ReplicateCommand extends BaseCommand implements CacheCommand
+public class ReplicateCommand extends BaseDirectCommand
 {
    public static final int SINGLE_METHOD_ID = 13;
    public static final int MULTIPLE_METHOD_ID = 14;
 
-   //todo [mmarkus] extract the invoking oart from AbstractInvocationDelegate and make a new component that wraps that
-   // logic together with InterceptorChain
-   private AbstractInvocationDelegate invoker;
+   private InterceptorChain invoker;
 
    /**
     * optimisation - rather than constructing a new list each for scenarios where a single modification needs
@@ -56,12 +52,12 @@
    }
 
    @Inject
-   public void initialize(CacheSPI invoker)
+   public void initialize(InterceptorChain interceptorChain)
    {
-      this.invoker = (AbstractInvocationDelegate) invoker;
+      this.invoker = interceptorChain;
    }
 
-   public Object perform(InvocationContext ctx) throws Throwable
+   public Object performDirectly() throws Throwable
    {
       if (isSingleCommand()) return processSingleCommand(singleModification);
       for (MarshallableCommand command : modifications) processSingleCommand(command);
@@ -75,7 +71,8 @@
       try
       {
          if (trace) log.trace("Invoking command " + cacheCommand + ", with originLocal flag set to false.");
-         Object retVal = invoker.invoke(cacheCommand);
+
+         Object retVal = invoker.invoke(cacheCommand, false);
          // we only need to return values for a set of remote calls; not every call.
          if (returnValueForRemoteCall(cacheCommand))
          {

Modified: core/trunk/src/main/java/org/jboss/cache/invocation/CacheInvocationDelegate.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/invocation/CacheInvocationDelegate.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/invocation/CacheInvocationDelegate.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -4,10 +4,10 @@
 import org.jboss.cache.buddyreplication.BuddyManager;
 import org.jboss.cache.buddyreplication.GravitateResult;
 import org.jboss.cache.commands.CommandsFactory;
-import org.jboss.cache.commands.remote.GravitateDataCommand;
 import org.jboss.cache.commands.cachedata.*;
 import org.jboss.cache.commands.channel.BlockChannelCommand;
 import org.jboss.cache.commands.channel.UnblockChannelCommand;
+import org.jboss.cache.commands.remote.GravitateDataCommand;
 import org.jboss.cache.config.Configuration;
 import org.jboss.cache.config.Option;
 import org.jboss.cache.factories.annotations.Inject;
@@ -245,7 +245,8 @@
    public GravitateResult gravitateData(Fqn fqn, boolean searchBuddyBackupSubtrees, InvocationContext ctx)
    {
       GravitateDataCommand command = commandsFactory.buildGravitateDataCacheCommand(fqn, searchBuddyBackupSubtrees);
-      return (GravitateResult) command.perform(null);
+      return (GravitateResult) invoke(command);
+//      return (GravitateResult) command.perform(null);
    }
 
    public NodeSPI<K, V> peek(Fqn fqn, boolean includeDeletedNodes, boolean includeInvalidNodes)

Modified: core/trunk/src/main/java/org/jboss/cache/invocation/InterceptorChain.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/invocation/InterceptorChain.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/invocation/InterceptorChain.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -257,4 +257,8 @@
       return firstInChain;
    }
 
+   public InvocationContext getInvocationContext()
+   {
+      return invocationContextContainer.get();
+   }
 }

Modified: core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java	2008-04-16 13:39:01 UTC (rev 5576)
+++ core/trunk/src/main/java/org/jboss/cache/marshall/CommandAwareRpcDispatcher.java	2008-04-16 14:24:20 UTC (rev 5577)
@@ -1,7 +1,7 @@
 package org.jboss.cache.marshall;
 
 import org.jboss.cache.commands.CacheCommand;
-import org.jboss.cache.commands.remote.*;
+import org.jboss.cache.commands.remote.DirectCommand;
 import org.jboss.cache.invocation.CacheInvocationDelegate;
 import org.jgroups.Channel;
 import org.jgroups.MembershipListener;
@@ -55,15 +55,16 @@
          try
          {
             CacheCommand cmd = (CacheCommand) req_marshaller.objectFromByteBuffer(req.getBuffer());
+            if (trace) log.trace("[sender=" + req.getSrc() + "], command: " + cmd);
 
             //todo [mmarkus] this is very ugly and caused by the fact that in the previous version the call for these methods was not chained.
             //todo re-thinking of these commands is necessary
-            if (cmd instanceof ReplicateCommand || cmd instanceof AssignToBuddyGroupCommand || cmd instanceof RemoveFromBuddyGroupCommand ||
-                  cmd instanceof AnnounceBuddyPoolNameCommand || cmd instanceof DataGravitationCleanupCommand || cmd instanceof ClusteredGetCommand)
+            if (cmd instanceof DirectCommand)
             {
-               return cmd.perform(null);
+               if (trace) log.trace("This is a direct command - so performing directlty and not via the invoker.");
+               DirectCommand dCmd = (DirectCommand) cmd;
+               return dCmd.performDirectly();
             }
-            if (trace) log.trace("[sender=" + req.getSrc() + "], command: " + cmd);
 
             return cid.invoke(cmd);
          }




More information about the jbosscache-commits mailing list