You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jg...@apache.org on 2006/10/10 14:09:17 UTC

svn commit: r454718 - in /geronimo/sandbox/gcache/server/src: main/java/org/apache/geronimo/gcache/command/ main/java/org/apache/geronimo/gcache/server/impl/ main/java/org/apache/geronimo/gcache/transports/tcp/ main/java/org/apache/geronimo/gcache/util...

Author: jgenender
Date: Tue Oct 10 05:09:16 2006
New Revision: 454718

URL: http://svn.apache.org/viewvc?view=rev&rev=454718
Log:
Clean up code add log debugging

Added:
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/HexDump.java   (with props)
Modified:
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BulkSendCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/ClearCacheCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/Command.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/GetCacheCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/MessageAckCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutEntryCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutSessionCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveEntryCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveSessionCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/server/impl/DefaultThreadPoolImpl.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/DefaultSelectionKeyProcessor.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/SelectionKeyProcessor.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/BaseCommandTest.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CachePayloadBaseCommandTest.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/ClearCacheCommandTest.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutEntryCommandTest.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutSessionCommandTest.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveEntryCommandTest.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveSessionCommandTest.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/AbstractServer.java
    geronimo/sandbox/gcache/server/src/test/resources/log4j.xml

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BulkSendCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BulkSendCommand.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BulkSendCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BulkSendCommand.java Tue Oct 10 05:09:16 2006
@@ -18,12 +18,11 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.CommandVisitor;
-
+import java.io.IOException;
 import java.nio.channels.ReadableByteChannel;
 import java.nio.channels.WritableByteChannel;
-import java.io.IOException;
+
+import org.apache.geronimo.gcache.transports.CommandVisitor;
 
 /**
  * This command is letting the client or server know that it can expext

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/ClearCacheCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/ClearCacheCommand.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/ClearCacheCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/ClearCacheCommand.java Tue Oct 10 05:09:16 2006
@@ -18,11 +18,9 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import net.sf.ehcache.Cache;
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.CommandVisitor;
-
 import java.io.IOException;
+
+import org.apache.geronimo.gcache.transports.CommandVisitor;
 
 public class ClearCacheCommand extends CacheBaseCommand {
 

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/Command.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/Command.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/Command.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/Command.java Tue Oct 10 05:09:16 2006
@@ -18,11 +18,10 @@
  */
 package org.apache.geronimo.gcache.command;
 
+import java.io.IOException;
+
 import org.apache.geronimo.gcache.marshal.MarshalAware;
-import org.apache.geronimo.gcache.CacheInfoHolder;
 import org.apache.geronimo.gcache.transports.CommandVisitor;
-
-import java.io.IOException;
 
 /**
  * Commands are pushed around the cluster to the various nodes and they are

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/GetCacheCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/GetCacheCommand.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/GetCacheCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/GetCacheCommand.java Tue Oct 10 05:09:16 2006
@@ -18,13 +18,9 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.CommandVisitor;
-
 import java.io.IOException;
-import java.util.List;
 
-import net.sf.ehcache.Cache;
+import org.apache.geronimo.gcache.transports.CommandVisitor;
 
 /**
  * This class represents a request to obtain a copy of an

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/MessageAckCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/MessageAckCommand.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/MessageAckCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/MessageAckCommand.java Tue Oct 10 05:09:16 2006
@@ -18,12 +18,11 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.CommandVisitor;
-
 import java.io.IOException;
 import java.nio.channels.ReadableByteChannel;
 import java.nio.channels.WritableByteChannel;
+
+import org.apache.geronimo.gcache.transports.CommandVisitor;
 
 public class MessageAckCommand extends BaseCommand{
 

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutEntryCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutEntryCommand.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutEntryCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutEntryCommand.java Tue Oct 10 05:09:16 2006
@@ -18,16 +18,9 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.CommandVisitor;
-import org.apache.geronimo.gcache.util.ByteArray;
-import net.sf.ehcache.Cache;
-import net.sf.ehcache.Element;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Collections;
 import java.io.IOException;
+
+import org.apache.geronimo.gcache.transports.CommandVisitor;
 
 public class PutEntryCommand extends CachePayloadBaseCommand {
 

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutSessionCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutSessionCommand.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutSessionCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/PutSessionCommand.java Tue Oct 10 05:09:16 2006
@@ -18,12 +18,6 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.apache.geronimo.gcache.util.ByteArray;
-import org.apache.geronimo.gcache.util.ByteArrayInputStream;
-import org.apache.geronimo.gcache.util.ByteArrayOutputStream;
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.CommandVisitor;
-
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.channels.Channels;
@@ -34,8 +28,10 @@
 import java.util.Map;
 import java.util.Set;
 
-import net.sf.ehcache.Cache;
-import net.sf.ehcache.Element;
+import org.apache.geronimo.gcache.transports.CommandVisitor;
+import org.apache.geronimo.gcache.util.ByteArray;
+import org.apache.geronimo.gcache.util.ByteArrayInputStream;
+import org.apache.geronimo.gcache.util.ByteArrayOutputStream;
 
 public class PutSessionCommand extends CachePayloadBaseCommand {
 

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveEntryCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveEntryCommand.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveEntryCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveEntryCommand.java Tue Oct 10 05:09:16 2006
@@ -18,17 +18,9 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.CommandVisitor;
-import org.apache.geronimo.gcache.util.ByteArray;
-
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Collections;
 import java.io.IOException;
 
-import net.sf.ehcache.Element;
-import net.sf.ehcache.Cache;
+import org.apache.geronimo.gcache.transports.CommandVisitor;
 
 public class RemoveEntryCommand extends CacheBaseCommand{
 

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveSessionCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveSessionCommand.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveSessionCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/RemoveSessionCommand.java Tue Oct 10 05:09:16 2006
@@ -18,11 +18,9 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import net.sf.ehcache.Cache;
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.CommandVisitor;
-
 import java.io.IOException;
+
+import org.apache.geronimo.gcache.transports.CommandVisitor;
 
 public class RemoveSessionCommand extends CacheBaseCommand{
 

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/server/impl/DefaultThreadPoolImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/server/impl/DefaultThreadPoolImpl.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/server/impl/DefaultThreadPoolImpl.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/server/impl/DefaultThreadPoolImpl.java Tue Oct 10 05:09:16 2006
@@ -19,10 +19,10 @@
 package org.apache.geronimo.gcache.server.impl;
 
 import org.apache.geronimo.gcache.server.spi.ThreadPool;
+
 import edu.emory.mathcs.backport.java.util.concurrent.ArrayBlockingQueue;
 import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
 import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
-import edu.emory.mathcs.backport.java.util.concurrent.Executors;
 
 /**
  * Default implementation for a simple Thread Pool

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/DefaultSelectionKeyProcessor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/DefaultSelectionKeyProcessor.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/DefaultSelectionKeyProcessor.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/DefaultSelectionKeyProcessor.java Tue Oct 10 05:09:16 2006
@@ -24,6 +24,7 @@
 import org.apache.geronimo.gcache.command.Command;
 import org.apache.geronimo.gcache.command.CommandTypes;
 import org.apache.geronimo.gcache.util.BufferChannelReader;
+import org.apache.geronimo.gcache.util.HexDump;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -38,105 +39,168 @@
 
 public class DefaultSelectionKeyProcessor extends SelectionKeyProcessor {
 
-    private static Log log = LogFactory.getLog(DefaultSelectionKeyProcessor.class);
+    private static Log log = LogFactory
+	    .getLog(DefaultSelectionKeyProcessor.class);
 
     private final static int HEADER_SIZE = Constants.MAGIC.length + 1 + 8 + 4;
+
     private CacheInfoHolder infoHolder = null;
+
     private SelectionKey key;
 
-    public DefaultSelectionKeyProcessor(CacheInfoHolder infoHolder, SelectionKey key) {
-        this.infoHolder = infoHolder;
-        this.key = key;
+    public DefaultSelectionKeyProcessor(CacheInfoHolder infoHolder,
+	    SelectionKey key) {
+	this.infoHolder = infoHolder;
+	this.key = key;
     }
 
     public void process() throws IOException {
-        SocketChannel channel = (SocketChannel) key.channel();
+	SocketChannel channel = (SocketChannel) key.channel();
 
-        // HEADER BREAKDOWN
-        // ---------------------------------------------------------
-        // MAGIC HEADER - 6 bytes
-        // COMMAND - 1 byte
-        // CHECKSUM - 8 bytes
-        // COMMAND LENGTH - 4 bytes
-        // COMMAND - ? bytes as defined above
-        ByteBuffer buffer = ByteBuffer.allocate(HEADER_SIZE);
-        BufferChannelReader bcr = new BufferChannelReader(channel, buffer);
-        int count = bcr.readBuffer(HEADER_SIZE);
-        if (count < HEADER_SIZE) {
-            //Nope...we are outta here
-            disconnect(channel);
-            return;
-        }
-        buffer.flip();
-
-        //Read the magic
-        byte magic[] = new byte[Constants.MAGIC.length];
-        buffer.get(magic);
-
-        //Better match the Magic
-        if (!Arrays.equals(Constants.MAGIC, magic)) {
-            //Magic doesn't match, so close the socket
-            disconnect(channel);
-            return;
-        }
-
-        //Get the command
-        byte commandIdentifier = buffer.get();
-
-        //Get the checksum
-        long checksum = buffer.getLong();
-
-        //Get the command length
-        int length = buffer.getInt();
-
-        //TODO - This really should be done with a ByteBuffer pool
-        ByteBuffer commandBuffer = ByteBuffer.allocate(length);
-        bcr.reset(channel, commandBuffer);
-        count = bcr.readBuffer(length);
-        if (count < 0) {
-            //Remove the endpoint from the list of clients
-            infoHolder.getEndpointManager().removeEndpoint(new TCPEndpoint(channel));
-            channel.close();
-            return;
-        }
-        if (count < length) {
-            //Command was bad
-            //TODO - Send back a resend?
-            return;
-
-        }
-
-        byte commandArray[] = commandBuffer.array();
-        Checksum calcChecksum = new CRC32();
-        calcChecksum.update(commandArray, 0, commandArray.length);
-        long newCheck  = calcChecksum.getValue();
-        if (newCheck != checksum){
-            //TODO send a resubmit??
-            return;
-        }
-
-        ByteArrayInputStream bias = new ByteArrayInputStream(commandBuffer.array());
-        ReadableByteChannel readChannel = Channels.newChannel(bias);
-
-        //Create the command and unmarshal the data
-        Command command = CommandTypes.createCommand(commandIdentifier);
-        command.readExternal(readChannel);
-
-        //Do something with the data
-        TCPCommandVisitor visitor = new TCPCommandVisitor(infoHolder, key);
-        command.execute(visitor);
+	if (log.isDebugEnabled()) {
+	    log.debug("Process called and receiving data from "
+		    + channel.socket().getRemoteSocketAddress());
+	}
+
+	// HEADER BREAKDOWN
+	// ---------------------------------------------------------
+	// MAGIC HEADER - 6 bytes
+	// COMMAND - 1 byte
+	// CHECKSUM - 8 bytes
+	// COMMAND LENGTH - 4 bytes
+	// COMMAND - ? bytes as defined above
+	ByteBuffer buffer = ByteBuffer.allocate(HEADER_SIZE);
+	BufferChannelReader bcr = new BufferChannelReader(channel, buffer);
+	int count = bcr.readBuffer(HEADER_SIZE);
+	if (count < HEADER_SIZE) {
+	    if (log.isDebugEnabled()) {
+		log.debug("Header != " + HEADER_SIZE
+			+ " in length...disconnecting client.");
+	    }
+
+	    infoHolder.getEndpointManager().removeEndpoint(
+		    new TCPEndpoint(channel));
+
+	    // Nope...we are outta here
+	    disconnect(channel);
+	    return;
+	}
+	buffer.flip();
+	if (log.isDebugEnabled()) {
+	    log.debug("Header read:");
+	    log.debug(HexDump.hexString(buffer.array()));
+	}
+
+	// Read the magic
+	byte magic[] = new byte[Constants.MAGIC.length];
+	buffer.get(magic);
+
+	// Better match the Magic
+	if (!Arrays.equals(Constants.MAGIC, magic)) {
+
+	    // Magic doesn't match, so close the socket
+	    if (log.isDebugEnabled()) {
+		log.debug("Magic did not match...disconnecting client.");
+	    }
+	    infoHolder.getEndpointManager().removeEndpoint(
+		    new TCPEndpoint(channel));
+
+	    disconnect(channel);
+	    return;
+	}
+
+	if (log.isDebugEnabled()) {
+	    log.debug("Magic found");
+	}
+
+	// Get the command
+	byte commandIdentifier = buffer.get();
+	if (log.isDebugEnabled()) {
+	    log.debug("Command Identifier = " + commandIdentifier);
+	}
+
+	// Get the checksum
+	long checksum = buffer.getLong();
+	if (log.isDebugEnabled()) {
+	    log.debug("Command checksum = " + checksum);
+	}
+
+	// Get the command length
+	int length = buffer.getInt();
+	if (log.isDebugEnabled()) {
+	    log.debug("Command length = " + length);
+	}
+
+	// TODO - This really should be done with a ByteBuffer pool
+	ByteBuffer commandBuffer = ByteBuffer.allocate(length);
+	bcr.reset(channel, commandBuffer);
+	count = bcr.readBuffer(length);
+	if (count < 0) {
+	    if (log.isDebugEnabled()) {
+		log.debug("Client disconnected...removing endpoint.");
+	    }
+	    // Remove the endpoint from the list of clients
+	    infoHolder.getEndpointManager().removeEndpoint(
+		    new TCPEndpoint(channel));
+	    channel.close();
+	    return;
+	}
+	if (count < length) {
+	    // Command was bad
+	    if (log.isDebugEnabled()) {
+		log.debug("Command read size (" + count
+			+ ") did not equal expected length (" + length + ")");
+	    }
+	    // TODO - Send back a resend?
+	    return;
+
+	}
+
+	byte commandArray[] = commandBuffer.array();
+
+	if (log.isDebugEnabled()) {
+	    log.debug("Command read:");
+	    log.debug(HexDump.hexString(commandArray));
+	}
+	Checksum calcChecksum = new CRC32();
+	calcChecksum.update(commandArray, 0, commandArray.length);
+	long newCheck = calcChecksum.getValue();
+	if (newCheck != checksum) {
+	    if (log.isDebugEnabled()) {
+		log.debug("Calculated checksum (" + newCheck + " did not equal expected ("+ checksum + ")");
+	    }
+	    // TODO send a resubmit??
+	    return;
+	}
+	if (log.isDebugEnabled()) {
+	    log.debug("Checksums matched.");
+	}
+
+	ByteArrayInputStream bias = new ByteArrayInputStream(commandBuffer
+		.array());
+	ReadableByteChannel readChannel = Channels.newChannel(bias);
+
+	// Create the command and unmarshal the data
+	Command command = CommandTypes.createCommand(commandIdentifier);
+	if (log.isDebugEnabled()) {
+	    log.debug("Command is a " + command.getClass().getSimpleName());
+	}
+	command.readExternal(readChannel);
+
+	// Do something with the data
+	TCPCommandVisitor visitor = new TCPCommandVisitor(infoHolder, key);
+	command.execute(visitor);
 
     }
 
     private void disconnect(SocketChannel channel) throws IOException {
-        try {
-            channel.socket().shutdownOutput();
-        } catch (IOException e) {
-            // It seems you have to ignore this due to lots of
-            // transport endpoint not connected issues.
-        }
-        channel.close();
+	try {
+	    channel.socket().shutdownOutput();
+	} catch (IOException e) {
+	    // It seems you have to ignore this due to lots of
+	    // transport endpoint not connected issues.
+	}
+	channel.close();
     }
-
 
 }

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/SelectionKeyProcessor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/SelectionKeyProcessor.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/SelectionKeyProcessor.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/SelectionKeyProcessor.java Tue Oct 10 05:09:16 2006
@@ -18,11 +18,10 @@
  */
 package org.apache.geronimo.gcache.transports.tcp;
 
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;
-
 import java.io.IOException;
-import java.nio.channels.SelectionKey;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * Processes the reciept of data

Added: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/HexDump.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/HexDump.java?view=auto&rev=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/HexDump.java (added)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/HexDump.java Tue Oct 10 05:09:16 2006
@@ -0,0 +1,49 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.gcache.util;
+
+public class HexDump {
+    
+    public static String hexString(byte[] b) {
+	StringBuffer sb = new StringBuffer();
+        sb.append("\n");
+        for (int i = 0; i < b.length; ++i) {
+            if (i % 16 == 0) {
+                sb.append(Integer.toHexString ((i & 0xFFFF) | 0x10000).substring(1,5) + " - ");
+            }
+            sb.append(Integer.toHexString((b[i]&0xFF) | 0x100).substring(1,3) + " ");
+            if (i % 16 == 15 || i == b.length - 1)
+            {
+                int j;
+                for (j = 16 - i % 16; j > 1; --j)
+                    sb.append("   ");
+                sb.append(" - ");
+                int start = (i / 16) * 16;
+                int end = (b.length < i + 1) ? b.length : (i + 1);
+                for (j = start; j < end; ++j)
+                    if (b[j] >= 32 && b[j] <= 126)
+                        sb.append((char)b[j]);
+                    else
+                        sb.append(".");
+                sb.append("\n");
+            }
+        }
+        return 	sb.toString();
+    }
+    
+}

Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/HexDump.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/HexDump.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/HexDump.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/BaseCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/BaseCommandTest.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/BaseCommandTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/BaseCommandTest.java Tue Oct 10 05:09:16 2006
@@ -18,15 +18,6 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.ReadableByteChannel;
-import java.nio.channels.WritableByteChannel;
-import java.nio.charset.Charset;
-
-import org.testng.annotations.Test;
 
 public class BaseCommandTest {
 /**

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CachePayloadBaseCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CachePayloadBaseCommandTest.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CachePayloadBaseCommandTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CachePayloadBaseCommandTest.java Tue Oct 10 05:09:16 2006
@@ -18,11 +18,11 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.testng.annotations.Test;
-
 import java.io.ByteArrayInputStream;
-import java.nio.channels.ReadableByteChannel;
 import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+
+import org.testng.annotations.Test;
 
 public class CachePayloadBaseCommandTest {
 
@@ -49,7 +49,7 @@
         readCommand.readExternal(channel);
 
         byte readData[] = readCommand.getRawPayload();
-        String readString = (String)readCommand.convertObjectFromBytes(readData);
+        String readString = (String)BaseCommand.convertObjectFromBytes(readData);
         assert readString.equals(data);
 
         assert readCommand.getCommandId() == commandId;

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/ClearCacheCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/ClearCacheCommandTest.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/ClearCacheCommandTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/ClearCacheCommandTest.java Tue Oct 10 05:09:16 2006
@@ -18,15 +18,13 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.testng.annotations.Test;
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.tcp.TCPCommandVisitor;
-import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Cache;
+import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Element;
 
-import java.nio.channels.SelectionKey;
-import java.nio.channels.Channels;
+import org.apache.geronimo.gcache.CacheInfoHolder;
+import org.apache.geronimo.gcache.transports.tcp.TCPCommandVisitor;
+import org.testng.annotations.Test;
 
 public class ClearCacheCommandTest {
 

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutEntryCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutEntryCommandTest.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutEntryCommandTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutEntryCommandTest.java Tue Oct 10 05:09:16 2006
@@ -59,10 +59,10 @@
         assert element != null;
 
         Map sessionMap = (Map)element.getObjectValue();
-        byte rawKey[] = command.convertObjectToBytes(key);
+        byte rawKey[] = BaseCommand.convertObjectToBytes(key);
         byte[] testData = (byte[])sessionMap.get(new ByteArray(rawKey));
         assert testData != null;
-        String savedString = (String)command.convertObjectFromBytes(testData);
+        String savedString = (String)BaseCommand.convertObjectFromBytes(testData);
         assert data.equals(savedString);
     }
 }

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutSessionCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutSessionCommandTest.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutSessionCommandTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/PutSessionCommandTest.java Tue Oct 10 05:09:16 2006
@@ -18,21 +18,18 @@
  */
 package org.apache.geronimo.gcache.command;
 
-import org.testng.annotations.Test;
-import org.testng.annotations.BeforeSuite;
-import org.apache.geronimo.gcache.CacheInfoHolder;
-import org.apache.geronimo.gcache.transports.tcp.TCPCommandVisitor;
-import org.apache.geronimo.gcache.util.ByteArray;
-import net.sf.ehcache.CacheManager;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
 import net.sf.ehcache.Cache;
+import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Element;
 
-import java.io.IOException;
-import java.util.Map;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.HashMap;
-import java.util.Collections;
+import org.apache.geronimo.gcache.CacheInfoHolder;
+import org.apache.geronimo.gcache.transports.tcp.TCPCommandVisitor;
+import org.testng.annotations.Test;
 
 public class PutSessionCommandTest {
 

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveEntryCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveEntryCommandTest.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveEntryCommandTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveEntryCommandTest.java Tue Oct 10 05:09:16 2006
@@ -32,6 +32,7 @@
 public class RemoveEntryCommandTest {
 
     @Test
+    @SuppressWarnings("unchecked")
     public void testRemoveEntry() throws Exception {
         String cacheName = "Test";
         String key = "My Key";
@@ -69,7 +70,7 @@
 
         Map theSession = (Map)element.getObjectValue();
 
-        byte rawKey[] = command.convertObjectToBytes(key);
+        byte rawKey[] = BaseCommand.convertObjectToBytes(key);
 
         //Should not find any data
         byte[] testData = (byte[])theSession.get(new ByteArray(rawKey));

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveSessionCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveSessionCommandTest.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveSessionCommandTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/RemoveSessionCommandTest.java Tue Oct 10 05:09:16 2006
@@ -31,6 +31,7 @@
 
 public class RemoveSessionCommandTest {
     @Test
+    @SuppressWarnings("unchecked")
     public void testRemoveEntry() throws Exception {
         String cacheName = "Test";
         String key = "My Key";

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/AbstractServer.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/AbstractServer.java?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/AbstractServer.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/AbstractServer.java Tue Oct 10 05:09:16 2006
@@ -40,9 +40,7 @@
 import org.apache.geronimo.gcache.util.BufferChannelWriter;
 import org.apache.geronimo.gcache.util.ByteArrayInputStream;
 import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterSuite;
 import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeSuite;
 
 public abstract class AbstractServer {
     protected static final int port = 45678;

Modified: geronimo/sandbox/gcache/server/src/test/resources/log4j.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/resources/log4j.xml?view=diff&rev=454718&r1=454717&r2=454718
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/resources/log4j.xml (original)
+++ geronimo/sandbox/gcache/server/src/test/resources/log4j.xml Tue Oct 10 05:09:16 2006
@@ -15,7 +15,7 @@
    </category>
 
 	<root>
-		<priority value="info"/>
+		<priority value="debug"/>
 		<appender-ref ref="ConsoleAppender"/>
 	</root>