Repository: incubator-geode
Updated Branches:
  refs/heads/develop e25ba5c08 -> 306fda086


GEODE-1675: Fix ClassCastException in ClientServer expiry

* Also fix for NPE if session manager somehow is null in a session
* Added tests for client/server session management
* Refactored existing tests so they can share tests with client/server set up


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/306fda08
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/306fda08
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/306fda08

Branch: refs/heads/develop
Commit: 306fda0860218e5a80f3064c55b04396e9e653d1
Parents: e25ba5c
Author: Jason Huynh <huyn...@gmail.com>
Authored: Wed Aug 17 15:28:31 2016 -0700
Committer: Jason Huynh <huyn...@gmail.com>
Committed: Thu Aug 18 14:32:26 2016 -0700

----------------------------------------------------------------------
 .../modules/session/catalina/DeltaSession8.java |  5 +-
 .../session/TestSessionsTomcat8Base.java        | 54 +++--------
 .../Tomcat8SessionsClientServerDUnitTest.java   | 96 ++++++++++++++++++++
 .../session/Tomcat8SessionsDUnitTest.java       | 77 ++++++++++++++++
 .../session/Tomcat8SessionsJUnitTest.java       | 32 -------
 .../session/bootstrap/AbstractCache.java        |  4 +-
 .../session/bootstrap/ClientServerCache.java    |  2 +-
 .../session/bootstrap/PeerToPeerCache.java      |  2 +-
 .../modules/session/catalina/DeltaSession.java  |  5 +-
 .../session/catalina/DeltaSessionInterface.java |  1 +
 .../SessionExpirationCacheListener.java         |  5 +-
 11 files changed, 197 insertions(+), 86 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules-tomcat8/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession8.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules-tomcat8/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession8.java
 
b/extensions/geode-modules-tomcat8/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession8.java
index aa07b5b..0b9f58f 100644
--- 
a/extensions/geode-modules-tomcat8/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession8.java
+++ 
b/extensions/geode-modules-tomcat8/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession8.java
@@ -309,9 +309,11 @@ public class DeltaSession8 extends StandardSession 
implements DataSerializable,
   }
 
   public void processExpired() {
-    if (((DeltaSessionManager) getManager()).getLogger().isDebugEnabled()) {
+    DeltaSessionManager manager = (DeltaSessionManager) getManager();
+    if (manager != null && manager.getLogger() != null && 
manager.getLogger().isDebugEnabled()) {
       ((DeltaSessionManager) getManager()).getLogger().debug(this + ": 
Expired");
     }
+
     // Set expired (so region.destroy is not called again)
     setExpired(true);
 
@@ -319,7 +321,6 @@ public class DeltaSession8 extends StandardSession 
implements DataSerializable,
     expire();
 
     // Update statistics
-    DeltaSessionManager manager = (DeltaSessionManager) getManager();
     if (manager != null) {
       manager.getStatistics().incSessionsExpired();
     }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/TestSessionsTomcat8Base.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/TestSessionsTomcat8Base.java
 
b/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/TestSessionsTomcat8Base.java
index 76b301d..f8604bf 100644
--- 
a/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/TestSessionsTomcat8Base.java
+++ 
b/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/TestSessionsTomcat8Base.java
@@ -35,60 +35,28 @@ import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.internal.AvailablePortHelper;
-import 
com.gemstone.gemfire.modules.session.catalina.ClientServerCacheLifecycleListener;
 import com.gemstone.gemfire.modules.session.catalina.DeltaSessionManager;
-import 
com.gemstone.gemfire.modules.session.catalina.PeerToPeerCacheLifecycleListener;
+import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase;
 
-public abstract class TestSessionsTomcat8Base {
+public abstract class TestSessionsTomcat8Base extends 
JUnit4DistributedTestCase{
 
-  private static EmbeddedTomcat8 server;
+  protected static EmbeddedTomcat8 server;
 
-  private static Region<String, HttpSession> region;
+  protected static Region<String, HttpSession> region;
 
-  private static StandardWrapper servlet;
+  protected static StandardWrapper servlet;
 
-  private static DeltaSessionManager sessionManager;
+  protected static DeltaSessionManager sessionManager;
 
-  private static int port;
+  protected static int port;
 
-  // Set up the servers we need
-  public static void setupServer(DeltaSessionManager manager) throws Exception 
{
-    port = AvailablePortHelper.getRandomAvailableTCPPort();
-    server = new EmbeddedTomcat8("/test", port, "JVM-1");
+  protected Cache cache;
 
-    PeerToPeerCacheLifecycleListener p2pListener = new 
PeerToPeerCacheLifecycleListener();
-    p2pListener.setProperty(MCAST_PORT, "0");
-    p2pListener.setProperty(LOG_LEVEL, "config");
-    server.addLifecycleListener(p2pListener);
-    sessionManager = manager;
-    sessionManager.setEnableCommitValve(true);
-    server.getRootContext().setManager(sessionManager);
+  protected VM vm0;
 
-    servlet = server.addServlet("/test/*", "default", 
CommandServlet.class.getName());
-    server.startContainer();
-
-    /*
-     * Can only retrieve the region once the container has started up
-     * (and the cache has started too).
-     */
-    region = sessionManager.getSessionCache().getSessionRegion();
-  }
-
-  @AfterClass
-  public static void teardownClass() throws Exception {
-    server.stopContainer();
-  }
-
-  /**
-   * Reset some data
-   */
-  @Before
-  public void setup() throws Exception {
-    sessionManager.getTheContext().setSessionTimeout(30);
-    region.clear();
-  }
 
   /**
    * Check that the basics are working

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsClientServerDUnitTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsClientServerDUnitTest.java
 
b/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsClientServerDUnitTest.java
new file mode 100644
index 0000000..ca9cdbe
--- /dev/null
+++ 
b/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsClientServerDUnitTest.java
@@ -0,0 +1,96 @@
+/*
+* 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 com.gemstone.gemfire.modules.session;
+
+import static com.gemstone.gemfire.distributed.ConfigurationProperties.*;
+import static 
com.gemstone.gemfire.internal.cache.CacheServerLauncher.serverPort;
+
+import java.util.Properties;
+
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.CacheFactory;
+import com.gemstone.gemfire.cache.client.PoolFactory;
+import com.gemstone.gemfire.cache.client.PoolManager;
+import com.gemstone.gemfire.cache.server.CacheServer;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import 
com.gemstone.gemfire.modules.session.catalina.ClientServerCacheLifecycleListener;
+import com.gemstone.gemfire.modules.session.catalina.DeltaSessionManager;
+import 
com.gemstone.gemfire.modules.session.catalina.Tomcat8DeltaSessionManager;
+import com.gemstone.gemfire.test.dunit.Host;
+import com.gemstone.gemfire.test.junit.categories.DistributedTest;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(DistributedTest.class)
+public class Tomcat8SessionsClientServerDUnitTest extends 
TestSessionsTomcat8Base {
+
+  // Set up the session manager we need
+  @Override
+  public void postSetUp() throws Exception {
+    setupServer(new Tomcat8DeltaSessionManager());
+  }
+
+  @Override
+  public void preTearDown() {
+    vm0.invoke(() -> {
+      GemFireCacheImpl.getInstance().getCacheServers().forEach(e -> 
((CacheServer)e).stop());
+    });
+    server.stopContainer();
+  }
+
+  // Set up the servers we need
+  public void setupServer(DeltaSessionManager manager) throws Exception {
+    Host host = Host.getHost(0);
+    vm0 = host.getVM(1);
+    String hostName = vm0.getHost().getHostName();
+    int cacheServerPort = vm0.invoke(() -> {
+      Properties props = new Properties();
+      CacheFactory cf = new CacheFactory(props);
+      Cache cache = cf.create();
+      CacheServer server = cache.addCacheServer();
+      server.start();
+      return server.getPort();
+    });
+
+    port = AvailablePortHelper.getRandomAvailableTCPPort();
+    server = new EmbeddedTomcat8("/test", port, "JVM-1");
+
+    ClientServerCacheLifecycleListener listener = new 
ClientServerCacheLifecycleListener();
+    listener.setProperty(MCAST_PORT, "0");
+    listener.setProperty(LOG_LEVEL, "config");
+    server.addLifecycleListener(listener);
+    sessionManager = manager;
+    sessionManager.setEnableCommitValve(true);
+    server.getRootContext().setManager(sessionManager);
+
+    servlet = server.addServlet("/test/*", "default", 
CommandServlet.class.getName());
+    server.startContainer();
+
+    PoolFactory pf = PoolManager.createFactory();
+    pf.addServer(hostName, cacheServerPort);
+    pf.create("Pool Connecting to Cache Server");
+
+    /*
+     * Can only retrieve the region once the container has started up
+     * (and the cache has started too).
+     */
+    region = sessionManager.getSessionCache().getSessionRegion();
+    sessionManager.getTheContext().setSessionTimeout(30);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsDUnitTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsDUnitTest.java
 
b/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsDUnitTest.java
new file mode 100644
index 0000000..e573c4e
--- /dev/null
+++ 
b/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsDUnitTest.java
@@ -0,0 +1,77 @@
+/*
+* 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 com.gemstone.gemfire.modules.session;
+
+import static com.gemstone.gemfire.distributed.ConfigurationProperties.*;
+
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.modules.session.catalina.DeltaSessionManager;
+import 
com.gemstone.gemfire.modules.session.catalina.PeerToPeerCacheLifecycleListener;
+import 
com.gemstone.gemfire.modules.session.catalina.Tomcat8DeltaSessionManager;
+import com.gemstone.gemfire.test.junit.categories.DistributedTest;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.experimental.categories.Category;
+
+@Category(DistributedTest.class)
+public class Tomcat8SessionsDUnitTest extends TestSessionsTomcat8Base {
+
+  // Set up the session manager we need
+  @Override
+  public void postSetUp() throws Exception {
+    setupServer(new Tomcat8DeltaSessionManager());
+  }
+
+  @Override
+  public void preTearDown() throws Exception {
+    server.stopContainer();
+  }
+
+  public void setupServer(DeltaSessionManager manager) throws Exception {
+    port = AvailablePortHelper.getRandomAvailableTCPPort();
+    server = new EmbeddedTomcat8("/test", port, "JVM-1");
+
+    PeerToPeerCacheLifecycleListener p2pListener = new 
PeerToPeerCacheLifecycleListener();
+    p2pListener.setProperty(MCAST_PORT, "0");
+    p2pListener.setProperty(LOG_LEVEL, "config");
+    server.addLifecycleListener(p2pListener);
+    sessionManager = manager;
+    sessionManager.setEnableCommitValve(true);
+    server.getRootContext().setManager(sessionManager);
+
+    servlet = server.addServlet("/test/*", "default", 
CommandServlet.class.getName());
+    server.startContainer();
+
+    /*
+     * Can only retrieve the region once the container has started up
+     * (and the cache has started too).
+     */
+    region = sessionManager.getSessionCache().getSessionRegion();
+  }
+
+  /**
+   * Reset some data
+   */
+  @Before
+  public void setup() throws Exception {
+    sessionManager.getTheContext().setSessionTimeout(30);
+    region.clear();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsJUnitTest.java
 
b/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsJUnitTest.java
deleted file mode 100644
index df65690..0000000
--- 
a/extensions/geode-modules-tomcat8/src/test/java/com/gemstone/gemfire/modules/session/Tomcat8SessionsJUnitTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-* 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 com.gemstone.gemfire.modules.session;
-
-import 
com.gemstone.gemfire.modules.session.catalina.Tomcat8DeltaSessionManager;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-import org.junit.BeforeClass;
-import org.junit.experimental.categories.Category;
-
-@Category(UnitTest.class)
-public class Tomcat8SessionsJUnitTest extends TestSessionsTomcat8Base {
-
-  // Set up the session manager we need
-  @BeforeClass
-  public static void setupClass() throws Exception {
-    setupServer(new Tomcat8DeltaSessionManager());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/AbstractCache.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/AbstractCache.java
 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/AbstractCache.java
index c14f829..9704853 100644
--- 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/AbstractCache.java
+++ 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/AbstractCache.java
@@ -90,9 +90,7 @@ public abstract class AbstractCache {
         rebalanceCache();
       }
     } else if (eventType.equals(LifecycleTypeAdapter.STOP)) {
-      // Close the cache
-//      closeCache();
-      // TODO: Do we need to reset the started flag here?
+      started.set(false);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/ClientServerCache.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/ClientServerCache.java
 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/ClientServerCache.java
index f8cff16..a4bd7a5 100644
--- 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/ClientServerCache.java
+++ 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/ClientServerCache.java
@@ -52,7 +52,7 @@ public class ClientServerCache extends AbstractCache {
 
     // If no cache exists, create one
     String message = null;
-    if (this.cache == null) {
+    if (this.cache == null || this.cache.isClosed()) {
       // enable pool subscription so that default cache can be used by 
hibernate module
       this.cache = new 
ClientCacheFactory(createDistributedSystemProperties()).create();
       message = "Created ";

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/PeerToPeerCache.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/PeerToPeerCache.java
 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/PeerToPeerCache.java
index b0b3b4a..92c5f1f 100644
--- 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/PeerToPeerCache.java
+++ 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/bootstrap/PeerToPeerCache.java
@@ -55,7 +55,7 @@ public class PeerToPeerCache extends AbstractCache {
 
     // If no cache exists, create one
     String message = null;
-    if (this.cache == null) {
+    if (this.cache == null || cache.isClosed()) {
       this.cache = new 
CacheFactory(createDistributedSystemProperties()).create();
       message = "Created ";
     } else {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession.java
 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession.java
index ff7133d..754376a 100644
--- 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession.java
+++ 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSession.java
@@ -317,9 +317,11 @@ public class DeltaSession extends StandardSession 
implements DataSerializable, D
   }
 
   public void processExpired() {
-    if (((DeltaSessionManager) getManager()).getLogger().isDebugEnabled()) {
+    DeltaSessionManager manager = (DeltaSessionManager) getManager();
+    if (manager != null && manager.getLogger() != null && 
manager.getLogger().isDebugEnabled()) {
       ((DeltaSessionManager) getManager()).getLogger().debug(this + ": 
Expired");
     }
+
     // Set expired (so region.destroy is not called again)
     setExpired(true);
 
@@ -327,7 +329,6 @@ public class DeltaSession extends StandardSession 
implements DataSerializable, D
     expire();
 
     // Update statistics
-    DeltaSessionManager manager = (DeltaSessionManager) getManager();
     if (manager != null) {
       manager.getStatistics().incSessionsExpired();
     }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSessionInterface.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSessionInterface.java
 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSessionInterface.java
index 1d3d1f7..a293432 100644
--- 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSessionInterface.java
+++ 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/DeltaSessionInterface.java
@@ -49,4 +49,5 @@ public interface DeltaSessionInterface extends Session {
   void setOwner(Object manager);
   void activate();
 
+  void processExpired();
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/306fda08/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/callback/SessionExpirationCacheListener.java
----------------------------------------------------------------------
diff --git 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/callback/SessionExpirationCacheListener.java
 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/callback/SessionExpirationCacheListener.java
index 5893c95..4fd1136 100644
--- 
a/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/callback/SessionExpirationCacheListener.java
+++ 
b/extensions/geode-modules/src/main/java/com/gemstone/gemfire/modules/session/catalina/callback/SessionExpirationCacheListener.java
@@ -21,6 +21,7 @@ import com.gemstone.gemfire.cache.EntryEvent;
 import com.gemstone.gemfire.cache.Operation;
 import com.gemstone.gemfire.cache.util.CacheListenerAdapter;
 import com.gemstone.gemfire.modules.session.catalina.DeltaSession;
+import com.gemstone.gemfire.modules.session.catalina.DeltaSessionInterface;
 import com.gemstone.gemfire.modules.session.catalina.DeltaSessionManager;
 import com.gemstone.gemfire.modules.util.ContextMapper;
 
@@ -35,9 +36,9 @@ public class SessionExpirationCacheListener extends 
CacheListenerAdapter<String,
     // A Session expired. If it was destroyed by GemFire expiration, process 
it.
     // If it was destroyed via Session.invalidate, ignore it since it has
     // already been processed.
-    DeltaSession session = null;
+    DeltaSessionInterface session = null;
     if (event.getOperation() == Operation.EXPIRE_DESTROY) {
-      session = (DeltaSession) event.getOldValue();
+      session = (DeltaSessionInterface) event.getOldValue();
     } else {
       /*
        * This comes into play when we're dealing with an empty client proxy. We

Reply via email to