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/02 22:21:24 UTC
svn commit: r452193 - in /geronimo/sandbox/gcache/server/src:
main/java/org/apache/geronimo/gcache/command/
main/java/org/apache/geronimo/gcache/transports/
main/java/org/apache/geronimo/gcache/transports/tcp/
test/java/org/apache/geronimo/gcache/command/
Author: jgenender
Date: Mon Oct 2 13:21:22 2006
New Revision: 452193
URL: http://svn.apache.org/viewvc?view=rev&rev=452193
Log:
Add visitor
Added:
geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/CommandVisitor.java (with props)
geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.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/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/transports/tcp/DefaultSelectionKeyProcessor.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
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -20,6 +20,7 @@
import org.apache.geronimo.gcache.CacheInfoHolder;
import org.apache.geronimo.gcache.transports.tcp.Constants;
+import org.apache.geronimo.gcache.transports.CommandVisitor;
import org.apache.geronimo.gcache.util.ByteArrayInputStream;
import org.apache.geronimo.gcache.util.ByteArrayOutputStream;
import org.apache.geronimo.gcache.util.UniqueId;
@@ -57,7 +58,7 @@
}
- public void execute(CacheInfoHolder info) throws IOException{
+ public void execute(CommandVisitor visitor) throws IOException{
// nothing to do in the base
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -19,6 +19,7 @@
package org.apache.geronimo.gcache.command;
import org.apache.geronimo.gcache.CacheInfoHolder;
+import org.apache.geronimo.gcache.transports.CommandVisitor;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
@@ -53,7 +54,8 @@
writeInt(channel, numberOfCommands);
}
- public void execute(CacheInfoHolder info) throws IOException{
- //Nothing to execute, this is just an outbound header
+ public void execute(CommandVisitor visitor) throws IOException{
+
+ visitor.processBulkSend(this);
}
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -20,6 +20,7 @@
import net.sf.ehcache.Cache;
import org.apache.geronimo.gcache.CacheInfoHolder;
+import org.apache.geronimo.gcache.transports.CommandVisitor;
import java.io.IOException;
@@ -29,11 +30,7 @@
return CommandTypes.CLEARCACHE_COMMAND;
}
- public void execute(CacheInfoHolder info) throws IOException {
- Cache cache = info.getCache(getCacheName(), true);
- cache.removeAll();
-
- //Notify peers
- info.getCacheNotifier().notifyClearCache(this);
+ public void execute(CommandVisitor visitor) throws IOException {
+ visitor.processClearCache(this);
}
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -20,6 +20,7 @@
import org.apache.geronimo.gcache.marshal.MarshalAware;
import org.apache.geronimo.gcache.CacheInfoHolder;
+import org.apache.geronimo.gcache.transports.CommandVisitor;
import java.io.IOException;
@@ -32,5 +33,5 @@
public byte getCommandType() throws IOException;
- public void execute(CacheInfoHolder info) throws IOException;
+ public void execute(CommandVisitor visitor) throws IOException;
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -19,6 +19,7 @@
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;
@@ -38,6 +39,7 @@
return CommandTypes.GET_CACHE_COMMAND;
}
- public void execute(CacheInfoHolder info) throws IOException {
+ public void execute(CommandVisitor visitor) throws IOException {
+ visitor.processGetCache(this);
}
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -19,6 +19,7 @@
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;
@@ -55,7 +56,7 @@
writeLong(channel, messageId);
}
- public void execute(CacheInfoHolder info) throws IOException{
- //Nothing to send, this is just an ack
+ public void execute(CommandVisitor visitor) throws IOException{
+ visitor.processMessageAck(this);
}
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -19,6 +19,7 @@
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;
@@ -34,34 +35,8 @@
return CommandTypes.PUT_ENTRY_COMMAND;
}
- public void execute(CacheInfoHolder info) throws IOException {
- Cache cache = info.getCache(getCacheName(), true);
-
- //Check if we are using sessions
- if (this.hasSession()){
-
- Map sessionMap = null;
-
- //We are so use the session maps that is stored
- Element element = cache.get(getSessionId());
- if (element != null){
- sessionMap = (Map)element.getObjectValue();
- } else {
- sessionMap = Collections.synchronizedMap(new HashMap());
- }
-
- sessionMap.put(getHashableKey(), getRawPayload());
- //Put the session away
- cache.put(new Element(getSessionId(), sessionMap));
-
- } else {
-
- //No session map so store the value
- cache.put(new Element(getHashableKey(), getRawPayload()));
- }
-
- //Notify peers
- info.getCacheNotifier().notifyPut(this);
+ public void execute(CommandVisitor visitor) throws IOException {
+ visitor.processPutEntry(this);
}
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -22,6 +22,7 @@
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;
@@ -261,13 +262,7 @@
return sessionMap;
}
- public void execute(CacheInfoHolder info) throws IOException {
- Cache cache = info.getCache(getCacheName(), true);
-
- //Place the raw session in the cache
- cache.put(new Element(getSessionId(), getRawSessionFromPayload()));
-
- //Notify peers
- info.getCacheNotifier().notifyPutSession(this);
+ public void execute(CommandVisitor visitor) throws IOException {
+ visitor.processPutSession(this);
}
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -19,6 +19,7 @@
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;
@@ -35,34 +36,7 @@
return CommandTypes.REMOVE_ENTRY_COMMAND;
}
- public void execute(CacheInfoHolder info) throws IOException {
- Cache cache = info.getCache(getCacheName(), true);
-
- //Check if we are using sessions
- if (this.hasSession()){
-
- Map sessionMap = null;
-
- //We are so use the session maps that is stored
- Element element = cache.get(getSessionId());
- if (element != null){
- sessionMap = (Map)element.getObjectValue();
- } else {
- sessionMap = Collections.synchronizedMap(new HashMap());
- }
-
- sessionMap.remove(getHashableKey());
-
- //Put the session away
- cache.put(new Element(getSessionId(), sessionMap));
-
- } else {
-
- //No session map so store the value
- cache.remove(getHashableKey());
- }
-
- //Notify peers
- info.getCacheNotifier().notifyRemove(this);
+ public void execute(CommandVisitor visitor) throws IOException {
+ visitor.processRemoveEntry(this);
}
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -20,6 +20,7 @@
import net.sf.ehcache.Cache;
import org.apache.geronimo.gcache.CacheInfoHolder;
+import org.apache.geronimo.gcache.transports.CommandVisitor;
import java.io.IOException;
@@ -29,17 +30,7 @@
return CommandTypes.REMOVE_SESSION_COMMAND;
}
- public void execute(CacheInfoHolder info) throws IOException {
- Cache cache = info.getCache(getCacheName(), true);
-
- //Be sure a session was sent
- if (!this.hasSession()){
- throw new IOException("Session does not exist.");
- }
-
- cache.remove(this.getSessionId());
-
- //Notify peers
- info.getCacheNotifier().notifyRemoveSession(this);
+ public void execute(CommandVisitor visitor) throws IOException {
+ visitor.processRemoveSession(this);
}
}
Added: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/CommandVisitor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/CommandVisitor.java?view=auto&rev=452193
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/CommandVisitor.java (added)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/CommandVisitor.java Mon Oct 2 13:21:22 2006
@@ -0,0 +1,42 @@
+/*
+ * 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.transports;
+
+import org.apache.geronimo.gcache.command.BulkSendCommand;
+import org.apache.geronimo.gcache.command.ClearCacheCommand;
+import org.apache.geronimo.gcache.command.GetCacheCommand;
+import org.apache.geronimo.gcache.command.MessageAckCommand;
+import org.apache.geronimo.gcache.command.PutEntryCommand;
+import org.apache.geronimo.gcache.command.PutSessionCommand;
+import org.apache.geronimo.gcache.command.RemoveEntryCommand;
+import org.apache.geronimo.gcache.command.RemoveSessionCommand;
+
+import java.io.IOException;
+
+public interface CommandVisitor {
+
+ public void processRemoveSession(RemoveSessionCommand command);
+ public void processRemoveEntry(RemoveEntryCommand command);
+ public void processPutSession(PutSessionCommand command) throws IOException;
+ public void processPutEntry(PutEntryCommand command);
+ public void processMessageAck(MessageAckCommand command);
+ public void processGetCache(GetCacheCommand command);
+ public void processClearCache(ClearCacheCommand command);
+ public void processBulkSend(BulkSendCommand command);
+}
Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/CommandVisitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/CommandVisitor.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/CommandVisitor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -113,7 +113,8 @@
command.readExternal(readChannel);
//Do something with the data
- command.execute(infoHolder);
+ TCPCommandVisitor visitor = new TCPCommandVisitor(infoHolder, key);
+ command.execute(visitor);
// Test for closed connection on the client side
if (count < 0) {
Added: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java?view=auto&rev=452193
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java (added)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java Mon Oct 2 13:21:22 2006
@@ -0,0 +1,159 @@
+/*
+ * 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.transports.tcp;
+
+import org.apache.geronimo.gcache.transports.CommandVisitor;
+import org.apache.geronimo.gcache.CacheInfoHolder;
+import org.apache.geronimo.gcache.command.RemoveSessionCommand;
+import org.apache.geronimo.gcache.command.RemoveEntryCommand;
+import org.apache.geronimo.gcache.command.PutSessionCommand;
+import org.apache.geronimo.gcache.command.PutEntryCommand;
+import org.apache.geronimo.gcache.command.MessageAckCommand;
+import org.apache.geronimo.gcache.command.GetCacheCommand;
+import org.apache.geronimo.gcache.command.ClearCacheCommand;
+import org.apache.geronimo.gcache.command.BulkSendCommand;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.Element;
+
+import java.util.Map;
+import java.util.Collections;
+import java.util.HashMap;
+import java.io.IOException;
+import java.nio.channels.SelectionKey;
+
+public class TCPCommandVisitor implements CommandVisitor {
+ Log log = LogFactory.getLog(TCPCommandVisitor.class);
+
+ private CacheInfoHolder infoHolder;
+ private SelectionKey key;
+
+ public TCPCommandVisitor(CacheInfoHolder infoHolder, SelectionKey key) {
+ this.key = key;
+ this.infoHolder = infoHolder;
+ }
+
+ public void processRemoveSession(RemoveSessionCommand command) {
+
+ Cache cache = infoHolder.getCache(command.getCacheName(), true);
+
+ //Be sure a session was sent
+ if (command.hasSession()) {
+ cache.remove(command.getSessionId());
+ }
+
+ //Notify peers
+ infoHolder.getCacheNotifier().notifyRemoveSession(command);
+ }
+
+ public void processRemoveEntry(RemoveEntryCommand command) {
+
+
+ Cache cache = infoHolder.getCache(command.getCacheName(), true);
+
+ //Check if we are using sessions
+ if (command.hasSession()) {
+
+ Map sessionMap = null;
+
+ //We are so use the session maps that is stored
+ Element element = cache.get(command.getSessionId());
+ if (element != null) {
+ sessionMap = (Map) element.getObjectValue();
+ } else {
+ sessionMap = Collections.synchronizedMap(new HashMap());
+ }
+
+ sessionMap.remove(command.getHashableKey());
+
+ //Put the session away
+ cache.put(new Element(command.getSessionId(), sessionMap));
+
+ } else {
+
+ //No session map so store the value
+ cache.remove(command.getHashableKey());
+ }
+
+ //Notify peers
+ infoHolder.getCacheNotifier().notifyRemove(command);
+ }
+
+ public void processPutSession(PutSessionCommand command) {
+ Cache cache = infoHolder.getCache(command.getCacheName(), true);
+
+ //Place the raw session in the cache
+ try {
+ cache.put(new Element(command.getSessionId(), command.getRawSessionFromPayload()));
+ } catch (IOException e) {
+ log.info(e);
+ }
+
+ //Notify peers
+ infoHolder.getCacheNotifier().notifyPutSession(command);
+ }
+
+ public void processPutEntry(PutEntryCommand command) {
+ Cache cache = infoHolder.getCache(command.getCacheName(), true);
+
+ //Check if we are using sessions
+ if (command.hasSession()) {
+
+ Map sessionMap = null;
+
+ //We are so use the session maps that is stored
+ Element element = cache.get(command.getSessionId());
+ if (element != null) {
+ sessionMap = (Map) element.getObjectValue();
+ } else {
+ sessionMap = Collections.synchronizedMap(new HashMap());
+ }
+
+ sessionMap.put(command.getHashableKey(), command.getRawPayload());
+ //Put the session away
+ cache.put(new Element(command.getSessionId(), sessionMap));
+
+ } else {
+
+ //No session map so store the value
+ cache.put(new Element(command.getHashableKey(), command.getRawPayload()));
+ }
+
+ //Notify peers
+ infoHolder.getCacheNotifier().notifyPut(command);
+ }
+
+ public void processMessageAck(MessageAckCommand command) {
+ }
+
+ public void processGetCache(GetCacheCommand command) {
+ }
+
+ public void processClearCache(ClearCacheCommand command) {
+ Cache cache = infoHolder.getCache(command.getCacheName(), true);
+ cache.removeAll();
+
+ //Notify peers
+ infoHolder.getCacheNotifier().notifyClearCache(command);
+ }
+
+ public void processBulkSend(BulkSendCommand command) {
+ }
+}
Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -20,10 +20,14 @@
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.Element;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.Channels;
+
public class ClearCacheCommandTest {
@Test
@@ -58,7 +62,8 @@
command.setCacheName(cacheName1);
CacheInfoHolder info = new CacheInfoHolder(cacheMgr);
- command.execute(info);
+ TCPCommandVisitor visitor = new TCPCommandVisitor(info, null);
+ command.execute(visitor);
//Cache1 should be empty
assert cache1.getSize() == 0;
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -20,6 +20,7 @@
import org.testng.annotations.Test;
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;
@@ -39,7 +40,6 @@
String data = "My Data";
CacheManager cacheMgr = CacheManager.create();
- CacheInfoHolder info = new CacheInfoHolder(cacheMgr);
PutEntryCommand command = new PutEntryCommand();
@@ -48,7 +48,9 @@
command.setSessionId(sessionId);
command.setPayload(data);
- command.execute(info);
+ CacheInfoHolder info = new CacheInfoHolder(cacheMgr);
+ TCPCommandVisitor visitor = new TCPCommandVisitor(info, null);
+ command.execute(visitor);
Cache cache = cacheMgr.getCache(cacheName);
assert cache != null;
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -21,6 +21,7 @@
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 net.sf.ehcache.Cache;
@@ -84,7 +85,8 @@
assert cache.getSize() == 0;
//Execute the command and it should repopulate the cache
- command.execute(info);
+ TCPCommandVisitor visitor = new TCPCommandVisitor(info, null);
+ command.execute(visitor);
//Test the cache it repoulated
runTest();
@@ -111,7 +113,8 @@
command.setSessionId(sessionId);
command.setPayloadFromSession(sessionMap);
- command.execute(info);
+ TCPCommandVisitor visitor = new TCPCommandVisitor(info, null);
+ command.execute(visitor);
//Test the cache got populated
runTest();
@@ -155,7 +158,8 @@
command.setSessionId(sessionId);
command.setPayload(data);
- command.execute(info);
+ TCPCommandVisitor visitor = new TCPCommandVisitor(info, null);
+ command.execute(visitor);
}
}
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -20,6 +20,7 @@
import org.testng.annotations.Test;
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.Element;
import net.sf.ehcache.CacheManager;
@@ -59,7 +60,8 @@
//Execute the command
CacheInfoHolder info = new CacheInfoHolder(cacheMgr);
- command.execute(info);
+ TCPCommandVisitor visitor = new TCPCommandVisitor(info, null);
+ command.execute(visitor);
//Check the cache
Element element = cache.get(sessionId);
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=452193&r1=452192&r2=452193
==============================================================================
--- 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 Mon Oct 2 13:21:22 2006
@@ -22,6 +22,7 @@
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import org.apache.geronimo.gcache.CacheInfoHolder;
+import org.apache.geronimo.gcache.transports.tcp.TCPCommandVisitor;
import org.apache.geronimo.gcache.util.ByteArray;
import org.testng.annotations.Test;
@@ -29,7 +30,7 @@
import java.util.Map;
public class RemoveSessionCommandTest {
- @Test
+ @Test
public void testRemoveEntry() throws Exception {
String cacheName = "Test";
String key = "My Key";
@@ -59,7 +60,8 @@
//Execute the command
CacheInfoHolder info = new CacheInfoHolder(cacheMgr);
- command.execute(info);
+ TCPCommandVisitor visitor = new TCPCommandVisitor(info, null);
+ command.execute(visitor);
//Check the cache
Element element = cache.get(sessionId);