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/09/23 00:57:40 UTC

svn commit: r449117 - in /geronimo/sandbox/gcache/server/src: main/java/org/apache/geronimo/gcache/command/ main/java/org/apache/geronimo/gcache/util/ test/java/org/apache/geronimo/gcache/command/

Author: jgenender
Date: Fri Sep 22 15:57:39 2006
New Revision: 449117

URL: http://svn.apache.org/viewvc?view=rev&rev=449117
Log:
More commands

Added:
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/MessageAckCommand.java   (with props)
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/UniqueId.java   (with props)
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/MessageAckCommandTest.java   (with props)
Modified:
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BaseCommand.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CacheBaseCommand.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/CommandTypes.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/CacheBaseCommandTest.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CachePayloadBaseCommandTest.java

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BaseCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BaseCommand.java?view=diff&rev=449117&r1=449116&r2=449117
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BaseCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/BaseCommand.java Fri Sep 22 15:57:39 2006
@@ -20,6 +20,7 @@
 
 import org.apache.geronimo.gcache.util.ByteArrayOutputStream;
 import org.apache.geronimo.gcache.util.ByteArrayInputStream;
+import org.apache.geronimo.gcache.util.UniqueId;
 import org.apache.geronimo.gcache.marshal.MarshalAware;
 import org.apache.geronimo.gcache.CacheInfoHolder;
 
@@ -35,24 +36,19 @@
 
 public class BaseCommand implements Command {
 
-    private String commandId = null;
-    private String cacheName = null;
+    private long commandId = 0;
 
-    public String getCommandId() {
+    public long getCommandId() {
+        if (commandId == 0){
+            commandId = UniqueId.get();
+        }
         return commandId;
     }
 
-    public void setCommandId(String commandId) {
+    public void setCommandId(long commandId) {
         this.commandId = commandId;
     }
 
-    public String getCacheName() {
-        return cacheName;
-    }
-
-    public void setCacheName(String cacheName) {
-        this.cacheName = cacheName;
-    }
 
     public void execute(CacheInfoHolder info) {
         // nothing to do in the base
@@ -60,15 +56,17 @@
 
     public void readExternal(ReadableByteChannel channel) throws IOException {
         // this is the root so no super impl, others should call super first
-        cacheName = readString(channel);
-        commandId = readString(channel);
+        commandId = readLong(channel);
 
     }
 
     public void writeExternal(WritableByteChannel channel) throws IOException {
         // this is the root so no super impl, others should call super first
-        writeString(channel, cacheName);
-        writeString(channel, commandId);
+
+        if (commandId == 0){
+            commandId = UniqueId.get();
+        }
+        writeLong(channel, commandId);
     }
 
     public byte[] marshal() throws IOException {
@@ -90,6 +88,31 @@
         } catch (ClassNotFoundException e) {
             throw new IOException(e.getMessage());
         }
+    }
+
+    protected long readLong(ReadableByteChannel channel) throws IOException {
+        ByteBuffer buffer = ByteBuffer.allocateDirect(8);
+        int read = channel.read(buffer);
+        long longValue = 0;
+        if (read == 8) {
+            buffer.flip();
+            longValue = buffer.getLong();
+        } else {
+            throw new IOException("Could not read identifier length from the channel");
+        }
+
+        return longValue;
+    }
+
+    protected void writeLong(WritableByteChannel channel, long longValue) throws IOException {
+
+        // first the length of the string
+        ByteBuffer buffer = ByteBuffer.allocateDirect(8);
+        buffer.putLong(longValue);
+
+        buffer.flip();
+        channel.write(buffer);
+
     }
 
     protected String readString(ReadableByteChannel channel) throws IOException {

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CacheBaseCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CacheBaseCommand.java?view=diff&rev=449117&r1=449116&r2=449117
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CacheBaseCommand.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CacheBaseCommand.java Fri Sep 22 15:57:39 2006
@@ -26,12 +26,23 @@
 
 public class CacheBaseCommand extends BaseCommand {
 
+    //Name of cache
+    private String cacheName = null;
+
     // The Session to store the payload under
     private String sessionId;
 
     // The key to store the payload under
     private byte[] key;
 
+    public String getCacheName() {
+        return cacheName;
+    }
+
+    public void setCacheName(String cacheName) {
+        this.cacheName = cacheName;
+    }
+
     public boolean hasSession(){
         return sessionId != null;
     }
@@ -67,11 +78,12 @@
 
         return new ByteArray(key);
     }
-    
+
     public void readExternal(ReadableByteChannel channel) throws IOException {
         super.readExternal(channel);
 
         //Process what we want read
+        cacheName = readString(channel);
         key = this.readBytes(channel);
         sessionId = readString(channel);
     }
@@ -80,6 +92,7 @@
         super.writeExternal(channel);
 
         //Process what we want to write
+        writeString(channel, cacheName);
         writeBytes(channel, key);
         writeString(channel, sessionId);
     }

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=449117&r1=449116&r2=449117
==============================================================================
--- 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 Fri Sep 22 15:57:39 2006
@@ -26,9 +26,7 @@
  * invoked upon reciept.
  */
 public interface Command extends MarshalAware {
-    String getCommandId();
-
-    void setCommandId(String commandId);
+    long getCommandId();
 
     void execute(CacheInfoHolder info);
 }

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CommandTypes.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CommandTypes.java?view=diff&rev=449117&r1=449116&r2=449117
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CommandTypes.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/CommandTypes.java Fri Sep 22 15:57:39 2006
@@ -4,6 +4,7 @@
     public static final int PUT_ENTRY_COMMAND = 1;
     public static final int REMOVE_ENTRY_COMMAND = 2;
     public static final int CLEARCACHE_COMMAND = 3;
+    public static final int MESSAGE_ACK_COMMAND = 4;
 
     public static Command createCommand(int identifier) {
         Command command = null;
@@ -16,6 +17,9 @@
                 break;
             case(CLEARCACHE_COMMAND):
                 command = new ClearCacheCommand();
+                break;
+            case(MESSAGE_ACK_COMMAND):
+                command = new MessageAckCommand();
                 break;
         }
         return command;

Added: 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=auto&rev=449117
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/MessageAckCommand.java (added)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/command/MessageAckCommand.java Fri Sep 22 15:57:39 2006
@@ -0,0 +1,52 @@
+/*
+ * 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.command;
+
+import java.io.IOException;
+import java.nio.channels.ReadableByteChannel;
+import java.nio.channels.WritableByteChannel;
+
+public class MessageAckCommand extends BaseCommand{
+
+    private long messageId = 0;
+
+    public long getMessageId() {
+        return messageId;
+    }
+
+    public void setMessageId(long messageId) {
+        this.messageId = messageId;
+    }
+
+    public void readExternal(ReadableByteChannel channel) throws IOException {
+
+        super.readExternal(channel);
+
+        messageId = readLong(channel);
+
+    }
+
+    public void writeExternal(WritableByteChannel channel) throws IOException {
+
+        super.writeExternal(channel);
+
+        writeLong(channel, messageId);
+    }
+
+}

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

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

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

Added: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/UniqueId.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/UniqueId.java?view=auto&rev=449117
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/UniqueId.java (added)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/UniqueId.java Fri Sep 22 15:57:39 2006
@@ -0,0 +1,27 @@
+/*
+ * 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 UniqueId {
+  static long current= System.currentTimeMillis();
+    
+  static public synchronized long get(){
+    return current++;
+    }
+}

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

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

Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/util/UniqueId.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=449117&r1=449116&r2=449117
==============================================================================
--- 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 Fri Sep 22 15:57:39 2006
@@ -29,11 +29,10 @@
 import org.testng.annotations.Test;
 
 public class BaseCommandTest {
-
+/**
     @Test
     public void testReadBaseCommand() throws Exception {
         BaseCommand command = new BaseCommand();
-        String commandId = "this is the id";
         command.setCommandId("bad id");
         byte bytes[] = new byte[34];
         // write the length
@@ -71,5 +70,5 @@
         String newCommandId = Charset.defaultCharset().decode(buffer).toString();
         assert newCommandId.equals(commandId);
     }
-    
+  **/  
 }

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CacheBaseCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CacheBaseCommandTest.java?view=diff&rev=449117&r1=449116&r2=449117
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CacheBaseCommandTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/CacheBaseCommandTest.java Fri Sep 22 15:57:39 2006
@@ -29,15 +29,15 @@
     @Test
     public void testCacheBaseCommand() throws Exception {
 
-        String commandId = "the command id";
         String key = "My Key";
         String sessionId = "My Session Id";
 
         CacheBaseCommand command = new CacheBaseCommand();
-        command.setCommandId(commandId);
         command.setKey(key);
         command.setSessionId(sessionId);
 
+        long commandId = command.getCommandId();
+
         //Convert the command to bytes
         byte[] marshalled = command.marshal();
 
@@ -45,7 +45,7 @@
         ReadableByteChannel channel = Channels.newChannel(bias);
         CacheBaseCommand readCommand = new CacheBaseCommand();
         readCommand.readExternal(channel);
-        assert readCommand.getCommandId().equals(commandId);
+        assert readCommand.getCommandId() == commandId;
         assert readCommand.getKey().equals(key);
         assert readCommand.getSessionId().equals(sessionId);
 
@@ -54,12 +54,11 @@
     @Test
     public void testCacheBaseCommandNoSession() throws Exception {
 
-        String commandId = "the command id";
         String key = "My Key";
 
         CacheBaseCommand command = new CacheBaseCommand();
-        command.setCommandId(commandId);
         command.setKey(key);
+        long commandId = command.getCommandId();
 
         //Convert the command to bytes
         byte[] marshalled = command.marshal();
@@ -68,7 +67,7 @@
         ReadableByteChannel channel = Channels.newChannel(bias);
         CacheBaseCommand readCommand = new CacheBaseCommand();
         readCommand.readExternal(channel);
-        assert readCommand.getCommandId().equals(commandId);
+        assert readCommand.getCommandId() == commandId;
         assert readCommand.getKey().equals(key);
         assert readCommand.getSessionId() == null;
         assert readCommand.hasSession() == false;

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=449117&r1=449116&r2=449117
==============================================================================
--- 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 Fri Sep 22 15:57:39 2006
@@ -29,17 +29,17 @@
     @Test
     public void testCacheValueBaseCommandSerializable() throws Exception {
 
-        String commandId = "the command id";
         String key = "My Key";
         String sessionId = "My Session Id";
         String data = "This is some serializable data...";
 
         CachePayloadBaseCommand command = new CachePayloadBaseCommand();
-        command.setCommandId(commandId);
         command.setKey(key);
         command.setSessionId(sessionId);
         command.setPayload(data);
 
+        long commandId = command.getCommandId();
+
         //Convert the command to bytes
         byte[] marshalled = command.marshal();
 
@@ -52,7 +52,7 @@
         String readString = (String)readCommand.convertObjectFromBytes(readData);
         assert readString.equals(data);
 
-        assert readCommand.getCommandId().equals(commandId);
+        assert readCommand.getCommandId() == commandId;
         assert readCommand.getKey().equals(key);
         assert readCommand.getSessionId().equals(sessionId);
     }

Added: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/MessageAckCommandTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/MessageAckCommandTest.java?view=auto&rev=449117
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/MessageAckCommandTest.java (added)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/MessageAckCommandTest.java Fri Sep 22 15:57:39 2006
@@ -0,0 +1,47 @@
+/*
+ * 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.command;
+
+import org.testng.annotations.Test;
+
+import java.io.ByteArrayInputStream;
+import java.nio.channels.ReadableByteChannel;
+import java.nio.channels.Channels;
+
+public class MessageAckCommandTest {
+
+    @Test
+    public void testMessageAckCommand() throws Exception {
+
+        MessageAckCommand command = (MessageAckCommand) CommandTypes.createCommand(CommandTypes.MESSAGE_ACK_COMMAND);
+        command.setMessageId(99);
+        long commandId = command.getCommandId();
+
+        //Convert the command to bytes
+        byte[] marshalled = command.marshal();
+
+        ByteArrayInputStream bias = new ByteArrayInputStream(marshalled);
+        ReadableByteChannel channel = Channels.newChannel(bias);
+        MessageAckCommand readCommand = new MessageAckCommand();
+        readCommand.readExternal(channel);
+        assert readCommand.getCommandId() == commandId;
+        assert readCommand.getMessageId() == 99;
+
+    }
+}

Propchange: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/MessageAckCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/MessageAckCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/command/MessageAckCommandTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain