[jboss-cvs] JBossAS SVN: r81810 - in projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss: web/tomcat/service/session/distributedcache/impl and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Nov 29 12:19:55 EST 2008


Author: bstansberry at jboss.com
Date: 2008-11-29 12:19:55 -0500 (Sat, 29 Nov 2008)
New Revision: 81810

Modified:
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/CacheManager.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/CacheManagerManagedCache.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/DependencyInjectedConfigurationRegistry.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/PojoCacheManagerManagedPojoCache.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerFactoryImpl.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/AbstractJBossCacheService.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/AttributeBasedJBossCacheService.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/CacheListener.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/CacheListenerBase.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/FieldBasedJBossCacheService.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/JBossCacheWrapper.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/PassivationListener.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/SessionBasedJBossCacheService.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/Util.java
   projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/sso/jbc/JBossCacheSSOClusterManager.java
Log:
Generics!

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/CacheManager.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/CacheManager.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/CacheManager.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -128,7 +128,6 @@
    
    // -------------------------------------------------------- PojoCacheManager
 
-   @SuppressWarnings("unchecked")
    public Set<String> getConfigurationNames()
    {
       synchronized (pojoCaches)
@@ -187,7 +186,6 @@
     * @param config the Configuration for the cache
     * @return the PojoCache
     */
-   @SuppressWarnings("unchecked")
    protected PojoCache createPojoCache(Configuration config)
    {
        return PojoCacheFactory.createCache(config, false);
@@ -239,7 +237,9 @@
                       " the PojoCache's underlying plain cache");
             PojoCache pc = getPojoCache(configName, false);
             if (pc != null)
+            {
                return wrapCache(pc.getCache());
+            }
          }
          
          return wrapCache(super.getCache(configName, create));
@@ -545,9 +545,9 @@
    /**
     * Wrap the pojocache to control classloading and disable stop/destroy
     */
-   private Cache wrapCache(Cache toWrap)
+   private Cache<Object, Object> wrapCache(Cache<Object, Object> toWrap)
    {
-      return toWrap == null ? null : new CacheManagerManagedCache(toWrap);
+      return toWrap == null ? null : new CacheManagerManagedCache<Object, Object>(toWrap);
    }
 
    private int incrementPojoCacheCheckout(String configName)

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/CacheManagerManagedCache.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/CacheManagerManagedCache.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/CacheManagerManagedCache.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -51,18 +51,20 @@
  * 
  * @author Brian Stansberry
  */
-class CacheManagerManagedCache implements Cache
+class CacheManagerManagedCache<K, V> implements Cache<K, V>
 {
    private static final Logger log = Logger.getLogger(CacheManagerManagedCache.class);
    
-   private final Cache delegate;
+   private final Cache<K, V> delegate;
    private final ContextClassLoaderSwitcher switcher;
    
-   CacheManagerManagedCache(Cache delegate)
+   CacheManagerManagedCache(Cache<K, V> delegate)
    {
       assert delegate != null : "delegate is null";
       this.delegate = delegate;
-      this.switcher = (ContextClassLoaderSwitcher) AccessController.doPrivileged(ContextClassLoaderSwitcher.INSTANTIATOR);
+      @SuppressWarnings("unchecked")
+      ContextClassLoaderSwitcher unchecked = (ContextClassLoaderSwitcher) AccessController.doPrivileged(ContextClassLoaderSwitcher.INSTANTIATOR);
+      this.switcher = unchecked;
    }
 
    /**
@@ -130,7 +132,7 @@
       delegate.addCacheListener(arg0);
    }
 
-   public void addInterceptor(CommandInterceptor arg0, Class arg1)
+   public void addInterceptor(CommandInterceptor arg0, Class<? extends CommandInterceptor> arg1)
    {
       delegate.addInterceptor(arg0, arg1);      
    }
@@ -140,7 +142,7 @@
       delegate.addInterceptor(arg0, arg1); 
    }
 
-   public void removeInterceptor(Class arg0)
+   public void removeInterceptor(Class<? extends CommandInterceptor> arg0)
    {
       delegate.removeInterceptor(arg0);
    }
@@ -180,17 +182,17 @@
       delegate.evict(arg0, arg1);
    }
 
-   public Object get(Fqn arg0, Object arg1)
+   public V get(Fqn arg0, K arg1)
    {
       return delegate.get(arg0, arg1);
    }
 
-   public Object get(String arg0, Object arg1)
+   public V get(String arg0, K arg1)
    {
       return delegate.get(arg0, arg1);
    }
 
-   public Set getCacheListeners()
+   public Set<Object> getCacheListeners()
    {
       return delegate.getCacheListeners();
    }
@@ -205,7 +207,7 @@
       return delegate.getConfiguration();
    }
 
-   public Map getData(Fqn arg0)
+   public Map<K, V> getData(Fqn arg0)
    {
       return delegate.getData(arg0);
    }
@@ -215,12 +217,12 @@
       return delegate.getInvocationContext();
    }
 
-   public Set getKeys(String arg0)
+   public Set<K> getKeys(String arg0)
    {
       return getKeys(arg0);
    }
 
-   public Set getKeys(Fqn arg0)
+   public Set<K> getKeys(Fqn arg0)
    {
       return getKeys(arg0);
    }
@@ -230,17 +232,17 @@
       return delegate.getLocalAddress();
    }
 
-   public List getMembers()
+   public List<Address> getMembers()
    {
       return delegate.getMembers();
    }
 
-   public Node getNode(Fqn arg0)
+   public Node<K, V> getNode(Fqn arg0)
    {
       return delegate.getNode(arg0);
    }
 
-   public Node getNode(String arg0)
+   public Node<K, V> getNode(String arg0)
    {
       return delegate.getNode(arg0);
    }
@@ -250,7 +252,7 @@
       return delegate.getRegion(arg0, arg1);
    }
 
-   public Node getRoot()
+   public Node<K, V> getRoot()
    {
       return delegate.getRoot();
    }
@@ -270,37 +272,37 @@
       delegate.move(arg0, arg1);
    }
 
-   public void put(Fqn arg0, Map arg1)
+   public void put(Fqn arg0, Map<? extends K, ? extends V> arg1)
    {
       delegate.put(arg0, arg1);
    }
 
-   public void put(String arg0, Map arg1)
+   public void put(String arg0, Map<? extends K, ? extends V> arg1)
    {
       delegate.put(arg0, arg1);
    }
 
-   public Object put(Fqn arg0, Object arg1, Object arg2)
+   public V put(Fqn arg0, K arg1, V arg2)
    {
       return delegate.put(arg0, arg1, arg2);
    }
 
-   public Object put(String arg0, Object arg1, Object arg2)
+   public V put(String arg0, K arg1, V arg2)
    {
       return delegate.put(arg0, arg1, arg2);
    }
 
-   public void putForExternalRead(Fqn arg0, Object arg1, Object arg2)
+   public void putForExternalRead(Fqn arg0, K arg1, V arg2)
    {
       delegate.putForExternalRead(arg0, arg1, arg2);
    }
 
-   public Object remove(Fqn arg0, Object arg1)
+   public V remove(Fqn arg0, K arg1)
    {
       return delegate.remove(arg0, arg1);
    }
 
-   public Object remove(String arg0, Object arg1)
+   public V remove(String arg0, K arg1)
    {
       return delegate.remove(arg0, arg1);
    }
@@ -337,7 +339,8 @@
    {
       if (obj instanceof CacheManagerManagedCache)
       {
-         CacheManagerManagedCache other = (CacheManagerManagedCache) obj;
+         @SuppressWarnings("unchecked")
+         CacheManagerManagedCache<K, V> other = (CacheManagerManagedCache<K, V>) obj;
          return delegate.equals(other.delegate);
       }
       return false;

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/DependencyInjectedConfigurationRegistry.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/DependencyInjectedConfigurationRegistry.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/DependencyInjectedConfigurationRegistry.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -14,7 +14,6 @@
 
 import org.jboss.cache.config.Configuration;
 import org.jboss.cache.config.ConfigurationRegistry;
-import org.jboss.cache.factories.CacheConfigsXmlParser;
 
 /**
  * {@link ConfigurationRegistry} that can obtain its initial set of 
@@ -25,14 +24,14 @@
  */
 public class DependencyInjectedConfigurationRegistry implements ConfigurationRegistry 
 {    
-    private CacheConfigsXmlParser parser;
+    @SuppressWarnings("deprecation")
+    private org.jboss.cache.factories.CacheConfigsXmlParser parser = new org.jboss.cache.factories.CacheConfigsXmlParser();
     private String configResource;
     private Map<String, Configuration> configs = new Hashtable<String, Configuration>();
     private boolean started;
     
     public DependencyInjectedConfigurationRegistry() 
-    {        
-        parser = new CacheConfigsXmlParser();
+    {
     }
     
     public void start() throws Exception

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/PojoCacheManagerManagedPojoCache.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/PojoCacheManagerManagedPojoCache.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/ha/cachemanager/PojoCacheManagerManagedPojoCache.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -59,7 +59,9 @@
    {
       assert delegate != null : "delegate is null";
       this.delegate = delegate;
-      this.switcher = (ContextClassLoaderSwitcher) AccessController.doPrivileged(ContextClassLoaderSwitcher.INSTANTIATOR);
+      @SuppressWarnings("unchecked")
+      ContextClassLoaderSwitcher unchecked = (ContextClassLoaderSwitcher) AccessController.doPrivileged(ContextClassLoaderSwitcher.INSTANTIATOR);
+      this.switcher = unchecked;
    }
 
    /**
@@ -177,8 +179,8 @@
 
    public Cache<Object, Object> getCache()
    {
-      Cache c = delegate.getCache();
-      return c == null ? null : new CacheManagerManagedCache(c);
+      Cache<Object, Object> c = delegate.getCache();
+      return c == null ? null : new CacheManagerManagedCache<Object, Object>(c);
    }
 
    public Fqn<?> getInternalFqn(Object arg0)

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerFactoryImpl.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerFactoryImpl.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerFactoryImpl.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -72,7 +72,7 @@
    private boolean pojoCacheLocal = false;
    
    private PojoCache pojoCache;
-   private Cache plainCache;
+   private Cache<Object, Object> plainCache;
    
    public DistributedCacheManager getDistributedCacheManager(LocalDistributableSessionManager localManager)
          throws ClusteringNotSupportedException
@@ -139,7 +139,7 @@
       this.plainCache = pojoCache.getCache();
    }
 
-   public Cache getPlainCache()
+   public Cache<Object, Object> getPlainCache()
    {
       return plainCache;
    }
@@ -149,7 +149,7 @@
     * be used to create the DistributedCacheManager in preference to any
     * passed <code>cacheConfigName</code>.
     */
-   public void setPlainCache(Cache plainCache)
+   public void setPlainCache(Cache<Object, Object> plainCache)
    {
       this.plainCache = plainCache;
       this.pojoCache = null;

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/AbstractJBossCacheService.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/AbstractJBossCacheService.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/AbstractJBossCacheService.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -68,7 +68,8 @@
 public abstract class AbstractJBossCacheService implements DistributedCacheManager
 {   
    public static final String BUDDY_BACKUP = BuddyManager.BUDDY_BACKUP_SUBTREE;
-   public static final Fqn BUDDY_BACKUP_FQN = BuddyManager.BUDDY_BACKUP_SUBTREE_FQN;
+   @SuppressWarnings("unchecked")
+   public static final Fqn<String> BUDDY_BACKUP_FQN = BuddyManager.BUDDY_BACKUP_SUBTREE_FQN;
    public static final String SESSION = "JSESSION";
    
    // Use Integers as JBC keys -- replication performant but won't be
@@ -87,18 +88,19 @@
       return contextPath + "_" + hostname;
    }
    
-   public static Fqn getSessionFqn(String contextHostPath, String sessionId)
+   public static Fqn<String> getSessionFqn(String contextHostPath, String sessionId)
    {
-      Object[] objs = new Object[]{SESSION, contextHostPath, sessionId};
+      String[] objs = new String[]{SESSION, contextHostPath, sessionId};
       return Fqn.fromList(Arrays.asList(objs), true);
    }
    
-   public static Fqn getBuddyBackupSessionFqn(String dataOwner, String contextHostPath, String sessionId)
+   public static Fqn<String> getBuddyBackupSessionFqn(String dataOwner, String contextHostPath, String sessionId)
    {
-      Object[] objs = new Object[]{BUDDY_BACKUP, dataOwner, SESSION, contextHostPath, sessionId};
+      String[] objs = new String[]{BUDDY_BACKUP, dataOwner, SESSION, contextHostPath, sessionId};
       return Fqn.fromList(Arrays.asList(objs), true);
-   }   
+   } 
    
+   @SuppressWarnings("unchecked")
    private static ContextClassLoaderSwitcher getContextClassLoaderSwitcher()
    {
       return (ContextClassLoaderSwitcher) AccessController.doPrivileged(ContextClassLoaderSwitcher.INSTANTIATOR);
@@ -106,7 +108,7 @@
    
    protected Logger log_ = Logger.getLogger(getClass());
    
-   private Cache plainCache_;
+   private Cache<Object, Object> plainCache_;
    
    /** Context path for webapp + hostName; this + session id is a unique combo. */
    protected String combinedPath_;
@@ -136,7 +138,7 @@
       this.cacheConfigName_ = Util.getCacheConfigName(localManager);
    }
    
-   protected AbstractJBossCacheService(LocalDistributableSessionManager localManager, Cache cache)
+   protected AbstractJBossCacheService(LocalDistributableSessionManager localManager, Cache<Object, Object> cache)
    {
       this.manager_    = localManager;
       this.plainCache_ = cache;
@@ -156,12 +158,12 @@
       return manager_;
    }
    
-   protected Cache getCache()
+   protected Cache<Object, Object> getCache()
    {
       return plainCache_;
    }
    
-   protected void setCache(Cache cache)
+   protected void setCache(Cache<Object, Object> cache)
    {
       this.plainCache_ = cache;
    }
@@ -215,8 +217,8 @@
       }
       this.batchingManager = new BatchingManagerImpl(tm);
       
-      Object[] objs = new Object[]{SESSION, combinedPath_};
-      Fqn pathFqn = Fqn.fromList(Arrays.asList(objs), true);
+      String[] objs = new String[]{SESSION, combinedPath_};
+      Fqn<String> pathFqn = Fqn.fromList(Arrays.asList(objs), true);
       
       BuddyReplicationConfig brc = plainCache_.getConfiguration().getBuddyReplicationConfig();
       this.useBuddyReplication_ = brc != null && brc.isEnabled();
@@ -240,7 +242,7 @@
             log_.debug("UseMarshalling is true. We will register the fqn: " +
                         pathFqn + " with class loader" +webAppClassLoader_ +
                         " and activate the webapp's Region");
-            Node root = plainCache_.getRoot();
+            Node<Object, Object> root = plainCache_.getRoot();
             if (root.hasChild(pathFqn) == false)
             {
                plainCache_.getInvocationContext().getOptionOverrides().setCacheModeLocal(true);
@@ -275,8 +277,8 @@
          plainCache_.removeCacheListener(passivationListener_);
       
       // Construct the fqn
-      Object[] objs = new Object[]{SESSION, combinedPath_};
-      Fqn pathFqn = Fqn.fromList(Arrays.asList(objs), true);
+      String[] objs = new String[]{SESSION, combinedPath_};
+      Fqn<String> pathFqn = Fqn.fromList(Arrays.asList(objs), true);
 
       if(useTreeCacheMarshalling_)
       {
@@ -341,7 +343,7 @@
    {
       if (session.needRegionForSession())
       {
-         Fqn fqn = getSessionFqn(combinedPath_, session.getRealId());
+         Fqn<String> fqn = getSessionFqn(combinedPath_, session.getRealId());
          setupSessionRegion(session, fqn);
       }      
    }
@@ -356,8 +358,8 @@
     */
    public <T extends DistributableSession> T loadSession(String realId, T toLoad)
    {
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
-      Map sessionData =  cacheWrapper_.getData(fqn, true);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
+      Map<Object, Object> sessionData =  cacheWrapper_.getData(fqn, true);
       
       if (sessionData == null) {
          // Requested session is no longer in the cache; return null
@@ -369,7 +371,18 @@
          setupSessionRegion(toLoad, fqn);
       }
       
-      DistributableSessionData dsd = getDistributableSessionData(realId, sessionData, true);
+      DistributableSessionData dsd = null;
+      
+      try
+      {
+         dsd = getDistributableSessionData(realId, sessionData, true);
+      }
+      catch (Exception e)
+      {
+         log_.warn("Problem accessing session data : " + e.getClass() + " " + e.getLocalizedMessage());
+         return null;
+      }
+      
       toLoad.update(dsd);
       
       return toLoad;
@@ -384,9 +397,9 @@
          log_.trace("putSession(): putting session " + realId);
       }     
       
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       
-      Map map = new HashMap();
+      Map<Object, Object> map = new HashMap<Object, Object>();
       map.put(VERSION_KEY, session.getVersion());
       
       boolean replicateTimestamp = false;
@@ -401,7 +414,7 @@
       {
          if (getStoreAttributesInSingleKey())
          {
-            Map attrs = session.getSessionAttributeMap();
+            Map<String, Object> attrs = session.getSessionAttributeMap();
             map.put(ATTRIBUTE_KEY, getMarshalledValue(attrs));
          }
          // Whether or not we stored the attributes above, we need
@@ -423,7 +436,7 @@
     * @param session the session
     * @param fqn the fqn for the session
     */
-   protected void setupSessionRegion(DistributableSession session, Fqn fqn)
+   protected void setupSessionRegion(DistributableSession session, Fqn<String> fqn)
    {      
    }
 
@@ -433,13 +446,13 @@
     * @param session the session
     * @param fqn the fqn for the session
     */
-   protected void removeSessionRegion(String realId, Fqn fqn)
+   protected void removeSessionRegion(String realId, Fqn<String> fqn)
    {      
    }
 
    public void removeSession(String realId)
    {
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       if (log_.isTraceEnabled())
       {
          log_.trace("Remove session from distributed store. Fqn: " + fqn);
@@ -452,7 +465,7 @@
 
    public void removeSessionLocal(String realId)
    {
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       if (log_.isTraceEnabled())
       {
          log_.trace("Remove session from my own distributed store only. Fqn: " + fqn);
@@ -471,7 +484,7 @@
       }
       else
       {         
-         Fqn fqn = getBuddyBackupSessionFqn(dataOwner, combinedPath_, realId);
+         Fqn<String> fqn = getBuddyBackupSessionFqn(dataOwner, combinedPath_, realId);
          if (log_.isTraceEnabled())
          {
             log_.trace("Remove session from my own distributed store only. Fqn: " + fqn);
@@ -487,7 +500,7 @@
       
    public void evictSession(String realId, String dataOwner)
    {    
-      Fqn fqn = dataOwner == null ? getSessionFqn(combinedPath_, realId) : getBuddyBackupSessionFqn(dataOwner, combinedPath_, realId);
+      Fqn<String> fqn = dataOwner == null ? getSessionFqn(combinedPath_, realId) : getBuddyBackupSessionFqn(dataOwner, combinedPath_, realId);
       if(log_.isTraceEnabled())
       {
          log_.trace("evictSession(): evicting session from my distributed store. Fqn: " + fqn);
@@ -497,7 +510,7 @@
    
    public DistributableSessionData getSessionData(String realId, String dataOwner, boolean includeAttributes)
    {
-      Fqn fqn = dataOwner == null ? getSessionFqn(combinedPath_, realId) : getBuddyBackupSessionFqn(dataOwner, combinedPath_, realId);
+      Fqn<String> fqn = dataOwner == null ? getSessionFqn(combinedPath_, realId) : getBuddyBackupSessionFqn(dataOwner, combinedPath_, realId);
       Map<Object, Object> distributedCacheData = cacheWrapper_.getData(fqn, false);
       return getDistributableSessionData(realId, distributedCacheData, includeAttributes);
    }
@@ -514,19 +527,21 @@
    {
       Map<String, String> result = new HashMap<String, String>();
       
-      Fqn webappFqn = getWebappFqn();
+      Fqn<String> webappFqn = getWebappFqn();
       
-      Node bbRoot = plainCache_.getRoot().getChild(BUDDY_BACKUP_FQN);
+      Node<Object, Object> bbRoot = plainCache_.getRoot().getChild(BUDDY_BACKUP_FQN);
       if (bbRoot != null)
       {
-         Set<Node> owners = bbRoot.getChildren();
+         Set<Node<Object, Object>> owners = bbRoot.getChildren();
          if (owners != null)
          {
-            for (Node owner : owners)
+            for (Node<Object, Object> owner : owners)
             {
+               @SuppressWarnings("unchecked")
                Node webRoot = owner.getChild(webappFqn);
                if (webRoot != null)
                {
+                  @SuppressWarnings("unchecked")
                   Set<String> ids = webRoot.getChildrenNames();
                   storeSessionOwners(ids, (String) owner.getFqn().getLastElement(), result);
                }
@@ -539,10 +554,12 @@
       return result;
    }
    
-   protected Set getChildrenNames(Fqn fqn)
+   protected Set<String> getChildrenNames(Fqn<String> fqn)
    {
-      Node node = plainCache_.getRoot().getChild(fqn);
-      return (node == null ? Collections.EMPTY_SET : node.getChildrenNames());
+      Node<Object, Object> node = plainCache_.getRoot().getChild(fqn);
+      @SuppressWarnings("unchecked")
+      Set<String> children = (node == null ? Collections.EMPTY_SET : node.getChildrenNames());
+      return children;
    }
 
    private void storeSessionOwners(Set<String> ids, String owner, Map<String, String> map)
@@ -564,10 +581,10 @@
       return usePassivation_;      
    }
 
-   protected Fqn getWebappFqn()
+   protected Fqn<String> getWebappFqn()
    {
       // /SESSION/webAppPath_hostName
-      Object[] objs = new Object[]{SESSION, combinedPath_};
+      String[] objs = new String[]{SESSION, combinedPath_};
       return Fqn.fromList(Arrays.asList(objs), true);
    }
    
@@ -684,7 +701,7 @@
       }
    }
 
-   private void cleanWebappRegion(Fqn regionFqn)
+   private void cleanWebappRegion(Fqn<String> regionFqn)
    {
       try {
          // Remove locally.

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/AttributeBasedJBossCacheService.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/AttributeBasedJBossCacheService.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/AttributeBasedJBossCacheService.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -23,7 +23,6 @@
 
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -44,7 +43,7 @@
       super(localManager);
    }
    
-   public AttributeBasedJBossCacheService(LocalDistributableSessionManager localManager, Cache cache)
+   public AttributeBasedJBossCacheService(LocalDistributableSessionManager localManager, Cache<Object, Object> cache)
    {
       super(localManager, cache);
    }
@@ -56,35 +55,33 @@
 
    public Object getAttribute(String realId, String key)
    {
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       return getUnMarshalledValue(cacheWrapper_.get(fqn, key));
    }
 
    public void putAttribute(String realId, String key, Object value)
    {
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       cacheWrapper_.put(fqn, key, getMarshalledValue(value));
    }
 
    public void putAttribute(String realId, Map<String, Object> map)
    {
       // Duplicate the map with marshalled values
-      Map marshalled = new HashMap(map.size());
-      Set entries = map.entrySet();
-      for (Iterator it = entries.iterator(); it.hasNext(); )
+      Map<Object, Object> marshalled = new HashMap<Object, Object>(map.size());
+      for (Map.Entry<String, Object> entry : map.entrySet())
       {
-         Map.Entry entry = (Map.Entry) it.next();
          marshalled.put(entry.getKey(), getMarshalledValue(entry.getValue()));
       }
       
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       cacheWrapper_.put(fqn, marshalled);
       
    }
 
    public Object removeAttribute(String realId, String key)
    {
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       if (log_.isTraceEnabled())
       {
          log_.trace("Remove attribute from distributed store. Fqn: " + fqn + " key: " + key);
@@ -94,8 +91,7 @@
 
    public void removeAttributeLocal(String realId, String key)
    {
-
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       if (log_.isTraceEnabled())
       {
          log_.trace("Remove attribute from distributed store. Fqn: " + fqn + " key: " + key);
@@ -107,13 +103,14 @@
     * Obtain the keys associated with this fqn. Note that it is not the fqn children.
     *
     */
-   public Set getAttributeKeys(String realId)
+   @SuppressWarnings("unchecked")
+   public Set<String> getAttributeKeys(String realId)
    {
       Set keys = null;
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       try
       {
-         Node node = getCache().getRoot().getChild(fqn);
+         Node<Object, Object> node = getCache().getRoot().getChild(fqn);
          if (node != null)
          {
             keys = node.getKeys();
@@ -136,11 +133,16 @@
     */
    public Map<String, Object> getAttributes(String realId)
    {
-      if (realId == null || realId.length() == 0) return Collections.EMPTY_MAP;
+      if (realId == null || realId.length() == 0) 
+      {
+         @SuppressWarnings("unchecked")
+         Map<String, Object> empty = Collections.EMPTY_MAP;
+         return empty;
+      }
       
-      Fqn fqn = getSessionFqn(combinedPath_, realId);
+      Fqn<String> fqn = getSessionFqn(combinedPath_, realId);
       
-      Node node = getCache().getRoot().getChild(fqn);
+      Node<Object, Object> node = getCache().getRoot().getChild(fqn);
       Map<Object, Object> rawData = node.getData();
       
       return getSessionAttributes(realId, rawData);

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/CacheListener.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/CacheListener.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/CacheListener.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -77,7 +77,8 @@
       if (!fieldBased_ && local)
          return;
       
-      Fqn fqn = event.getFqn();
+      @SuppressWarnings("unchecked")
+      Fqn<String> fqn = event.getFqn();
       boolean isBuddy = isBuddyFqn(fqn);
       
       if (!local 
@@ -110,7 +111,8 @@
       if (!fieldBased_ && local)
          return;
       
-      Fqn fqn = event.getFqn();
+      @SuppressWarnings("unchecked")
+      Fqn<String> fqn = event.getFqn();
       boolean isBuddy = isBuddyFqn(fqn);      
       
       if (!local 
@@ -119,7 +121,8 @@
       {
          // Query if we have version value in the distributed cache. 
          // If we have a version value, compare the version and invalidate if necessary.
-         Map data = event.getData();
+         @SuppressWarnings("unchecked")
+         Map<Object, Object> data = event.getData();
          AtomicInteger version = (AtomicInteger) data.get(AbstractJBossCacheService.VERSION_KEY);
          if(version != null)
          {
@@ -167,7 +170,7 @@
       }
    }
    
-   public static String getPojoKeyFromFqn(Fqn fqn, boolean isBuddy)
+   public static String getPojoKeyFromFqn(Fqn<String> fqn, boolean isBuddy)
    {
       return (String) fqn.get(isBuddy ? BUDDY_BACKUP_ROOT_OWNER_SIZE + POJO_KEY_FQN_INDEX: POJO_KEY_FQN_INDEX);
    }
@@ -193,7 +196,7 @@
     * @param fqn
     * @return
     */
-   public static boolean isPossibleInternalPojoFqn(Fqn fqn)
+   public static boolean isPossibleInternalPojoFqn(Fqn<String> fqn)
    {      
       return (fqn.size() > POJO_INTERNAL_FQN_SIZE 
             && FieldBasedJBossCacheService.ATTRIBUTE.equals(fqn.get(POJO_INTERNAL_FQN_INDEX)) == false);

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/CacheListenerBase.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/CacheListenerBase.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/CacheListenerBase.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -48,7 +48,7 @@
       this.contextHostPath_ = contextHostPath;
    }
 
-   protected boolean isFqnForOurWebapp(Fqn fqn, boolean isBuddy)
+   protected boolean isFqnForOurWebapp(Fqn<String> fqn, boolean isBuddy)
    {
       try
       {
@@ -64,17 +64,17 @@
       return false;
    }
 
-   public static boolean isFqnSessionRootSized(Fqn fqn, boolean isBuddy)
+   public static boolean isFqnSessionRootSized(Fqn<String> fqn, boolean isBuddy)
    {
       return fqn.size() == (isBuddy ? BUDDY_BACKUP_ROOT_OWNER_SIZE + SESSION_FQN_SIZE : SESSION_FQN_SIZE);
    }
 
-   public static String getIdFromFqn(Fqn fqn, boolean isBuddy)
+   public static String getIdFromFqn(Fqn<String> fqn, boolean isBuddy)
    {
       return (String)fqn.get(isBuddy ? BUDDY_BACKUP_ROOT_OWNER_SIZE + SESSION_ID_FQN_INDEX : SESSION_ID_FQN_INDEX);
    }
 
-   public static boolean isBuddyFqn(Fqn fqn)
+   public static boolean isBuddyFqn(Fqn<String> fqn)
    {
       try
       {
@@ -94,7 +94,7 @@
     * 
     * @param fqn An Fqn that is a child of the buddy backup root node.
     */
-   public static String getBuddyOwner(Fqn fqn)
+   public static String getBuddyOwner(Fqn<String> fqn)
    {
       return (String) fqn.get(BUDDY_BACKUP_ROOT_OWNER_INDEX);     
    }

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/FieldBasedJBossCacheService.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/FieldBasedJBossCacheService.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/FieldBasedJBossCacheService.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -48,15 +48,15 @@
 {
    public static final String ATTRIBUTE = "ATTRIBUTE";
 
-   public static Fqn getAttributeFqn(String contextHostPath, String sessionId)
+   public static Fqn<String> getAttributeFqn(String contextHostPath, String sessionId)
    {
-      Object[] objs = new Object[]{SESSION, contextHostPath, sessionId, ATTRIBUTE};
+      String[] objs = new String[]{SESSION, contextHostPath, sessionId, ATTRIBUTE};
       return Fqn.fromList(Arrays.asList(objs), true);
    }
    
-   public static Fqn getFieldFqn(String contextHostPath, String sessionId, String attributeKey)
+   public static Fqn<String> getFieldFqn(String contextHostPath, String sessionId, String attributeKey)
    {
-      List list = new ArrayList(5);
+      List<String> list = new ArrayList<String>(5);
       list.add(SESSION);
       list.add(contextHostPath);
       list.add(sessionId);
@@ -66,7 +66,7 @@
       return Fqn.fromList(list, true);      
    }
 
-   private static void breakKeys(String key, List list)
+   private static void breakKeys(String key, List<String> list)
    {
       StringTokenizer token = new StringTokenizer(key, FQN_DELIMITER);
       while(token.hasMoreTokens())
@@ -117,7 +117,7 @@
                     " object: " + value.toString());
       } 
       
-      Fqn fqn = getFieldFqn(combinedPath_, realId, key);
+      Fqn<String> fqn = getFieldFqn(combinedPath_, realId, key);
       try {
          pojoCache_.attach(fqn.toString(), value);
       } 
@@ -140,7 +140,7 @@
          log_.trace("removePojo(): session id: " +realId + " key: " +key);
       }
       // Construct the fqn.
-      Fqn fqn = getFieldFqn(combinedPath_, realId, key);
+      Fqn<String> fqn = getFieldFqn(combinedPath_, realId, key);
       try {
          return pojoCache_.detach(fqn.toString());
       } 
@@ -157,14 +157,14 @@
          log_.trace("removePojoLocal(): session id: " + realId + " key: " +key);
       }
       
-      Fqn fqn = getFieldFqn(combinedPath_, realId, key);
+      Fqn<String> fqn = getFieldFqn(combinedPath_, realId, key);
       cacheWrapper_.removeLocal(fqn);
    }
    
-   public Set getAttributeKeys(String realId)
+   public Set<String> getAttributeKeys(String realId)
    {
-      Set keys = null;
-      Fqn fqn = getAttributeFqn(combinedPath_, realId);
+      Set<String> keys = null;
+      Fqn<String> fqn = getAttributeFqn(combinedPath_, realId);
       try
       {
          keys = getChildrenNames(fqn);
@@ -186,7 +186,7 @@
     */
    public Object getAttribute(String realId, String key)
    {
-      Fqn fqn = getFieldFqn(combinedPath_, realId, key);
+      Fqn<String> fqn = getFieldFqn(combinedPath_, realId, key);
       if(log_.isTraceEnabled())
       {
          log_.trace("getPojo(): session id: " +realId + " key: " + key +
@@ -204,7 +204,7 @@
    }
    
    @Override
-   protected void setupSessionRegion(DistributableSession session, Fqn fqn)
+   protected void setupSessionRegion(DistributableSession session, Fqn<String> fqn)
    {
       getCache().getRegion(fqn, true);
       session.createdRegionForSession();
@@ -215,7 +215,7 @@
    }
    
    @Override
-   protected void removeSessionRegion(String realId, Fqn fqn)
+   protected void removeSessionRegion(String realId, Fqn<String> fqn)
    {
       getCache().removeRegion(fqn);
       if (log_.isTraceEnabled())

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/JBossCacheWrapper.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/JBossCacheWrapper.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/JBossCacheWrapper.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -33,14 +33,14 @@
    private static final String RETRY_FAIL_MSG = 
       "Continued to catch TimeoutException during " + 
        RETRY + " retry attempts. Giving up.";
-   private Cache plainCache_;
+   private Cache<Object, Object> plainCache_;
    
-   JBossCacheWrapper(Cache cache)
+   JBossCacheWrapper(Cache<Object, Object> cache)
    {
       plainCache_ = cache;
    }
    
-   Map getData(Fqn fqn, boolean gravitate)
+   Map<Object, Object> getData(Fqn<String> fqn, boolean gravitate)
    {
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)
@@ -69,7 +69,7 @@
     * @param id
     * @return
     */
-   Object get(Fqn fqn, String id)
+   Object get(Fqn<String> fqn, String id)
    {
       return get(fqn, id, false);
    }
@@ -81,7 +81,7 @@
     * @param id
     * @return
     */
-   Object get(Fqn fqn, String id, boolean gravitate)
+   Object get(Fqn<String> fqn, String id, boolean gravitate)
    {
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)
@@ -112,7 +112,7 @@
     * @param value
     * @return
     */
-   void put(Fqn fqn, String id, Object value)
+   void put(Fqn<String> fqn, String id, Object value)
    {
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)
@@ -138,7 +138,7 @@
     * @param fqn
     * @param map
     */
-   void put(Fqn fqn, Map map)
+   void put(Fqn<String> fqn, Map<Object, Object> map)
    {
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)
@@ -164,7 +164,7 @@
     * @param id
     * @return
     */
-   Object remove(Fqn fqn, String id)
+   Object remove(Fqn<String> fqn, String id)
    {
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)
@@ -189,7 +189,7 @@
     * @param id
     * @return
     */
-   Object removeLocal(Fqn fqn, String id)
+   Object removeLocal(Fqn<String> fqn, String id)
    {
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)
@@ -214,7 +214,7 @@
     *
     * @param fqn
     */
-   void remove(Fqn fqn)
+   void remove(Fqn<String> fqn)
    {
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)
@@ -238,7 +238,7 @@
     *
     * @param fqn
     */
-   void removeLocal(Fqn fqn)
+   void removeLocal(Fqn<String> fqn)
    {
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)
@@ -259,7 +259,7 @@
       throw new RuntimeException(RETRY_FAIL_MSG, ex);
    }
    
-   void evictSubtree(Fqn fqn)
+   void evictSubtree(Fqn<String> fqn)
    {      
       TimeoutException ex = null;
       for (int i = 0; i < RETRY; i++)

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/PassivationListener.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/PassivationListener.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/PassivationListener.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -63,7 +63,8 @@
    @NodeActivated
    public void nodeActivated(NodeActivatedEvent event)
    {
-      Fqn fqn = event.getFqn();
+      @SuppressWarnings("unchecked")
+      Fqn<String> fqn = event.getFqn();
       boolean isBuddy = isBuddyFqn(fqn);      
       if (isFqnSessionRootSized(fqn, isBuddy) 
             && isFqnForOurWebapp(fqn, isBuddy))

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/SessionBasedJBossCacheService.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/SessionBasedJBossCacheService.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/SessionBasedJBossCacheService.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -44,7 +44,7 @@
       super(localManager);
    }
    
-   public SessionBasedJBossCacheService(LocalDistributableSessionManager localManager, Cache cache)
+   public SessionBasedJBossCacheService(LocalDistributableSessionManager localManager, Cache<Object, Object> cache)
    {
       super(localManager, cache);
    }
@@ -82,9 +82,8 @@
 
    /**
     * Obtain the keys associated with this fqn. Note that it is not the fqn children.
-    *
     */
-   public Set getAttributeKeys(String realId)
+   public Set<String> getAttributeKeys(String realId)
    {
       throw UNSUPPORTED;
    }
@@ -108,6 +107,7 @@
     * <strong>Note:</strong> This operation may alter the contents of the 
     * passed in map. If this is unacceptable, pass in a defensive copy.
     */
+   @SuppressWarnings("unchecked")
    protected Map<String, Object> getSessionAttributes(String realId, Map<Object, Object> distributedCacheData)
    {
       Map<String, Object> result = (Map<String, Object>) getUnMarshalledValue(distributedCacheData.get(ATTRIBUTE_KEY));

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/Util.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/Util.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/impl/jbc/Util.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -72,7 +72,7 @@
       }
    }
    
-   public static Cache findPlainCache(String cacheConfigName) throws ClusteringNotSupportedException
+   public static Cache<Object, Object> findPlainCache(String cacheConfigName) throws ClusteringNotSupportedException
    {
       CacheManager pcm = getManagerForCache(cacheConfigName);
       

Modified: projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/sso/jbc/JBossCacheSSOClusterManager.java
===================================================================
--- projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/sso/jbc/JBossCacheSSOClusterManager.java	2008-11-29 16:49:40 UTC (rev 81809)
+++ projects/cluster/ha-server-cache-jbc/trunk/src/main/java/org/jboss/web/tomcat/service/sso/jbc/JBossCacheSSOClusterManager.java	2008-11-29 17:19:55 UTC (rev 81810)
@@ -24,7 +24,6 @@
 import java.io.Serializable;
 import java.security.AccessController;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -63,6 +62,7 @@
 import org.jboss.web.tomcat.service.sso.spi.SSOClusterManager;
 import org.jboss.web.tomcat.service.sso.spi.SSOCredentials;
 import org.jboss.web.tomcat.service.sso.spi.SSOLocalManager;
+import org.jgroups.Address;
 
 /**
  * An implementation of SSOClusterManager that uses a TreeCache
@@ -142,7 +142,7 @@
    /**
     * The cache itself.
     */
-   private Cache cache = null;
+   private Cache<Object, Object> cache = null;
 
    /**
     * Transaction Manager
@@ -194,7 +194,7 @@
    private Serializable localAddress = null;
    
    /** The members of the last view passed to viewChange() */
-   private Set currentView = new HashSet();;
+   private Set<Object> currentView = new HashSet<Object>();;
    
    /** Mutex lock to ensure only one view change at a time is being processed */
    private Object cleanupMutex = new Object();
@@ -261,7 +261,7 @@
             " to cached session set for SSO " + ssoId);
       }
 
-      Fqn fqn = getSessionsFqn(ssoId);
+      Fqn<Serializable> fqn = getSessionsFqn(ssoId);
       boolean doTx = false;
       try
       {
@@ -373,7 +373,7 @@
             " in clustered cache");
       }
 
-      Fqn fqn = getSingleSignOnFqn(ssoId);
+      Fqn<Serializable> fqn = getSingleSignOnFqn(ssoId);
       
       try
       {         
@@ -400,7 +400,7 @@
 
       SSOCredentials credentials = null;
       // Find the latest credential info from the cluster
-      Fqn fqn = getCredentialsFqn(ssoId);
+      Fqn<Serializable> fqn = getCredentialsFqn(ssoId);
       try
       {         
          credentials = (SSOCredentials) getFromTreeCache(fqn, KEY);
@@ -471,7 +471,7 @@
             " from cached session set for SSO " + ssoId);
       }
 
-      Fqn fqn = getSessionsFqn(ssoId);
+      Fqn<Serializable> fqn = getSessionsFqn(ssoId);
       boolean doTx = false;
       boolean removing = false;
       try
@@ -489,7 +489,7 @@
          if(doTx)
             tm.begin();
 
-         Set keys = getSessionKeys(ssoId);
+         Set<Object> keys = getSessionKeys(ssoId);
          if (keys.contains(sessionId))
          {
             if (keys.size() == 1)
@@ -583,7 +583,8 @@
       if (event.isPre())
          return;
       
-      Fqn fqn = event.getFqn();
+      @SuppressWarnings("unchecked")
+      Fqn<Serializable> fqn = event.getFqn();
       String ssoId = getIdFromFqn(fqn);
       
       if (ssoId == null)
@@ -621,7 +622,7 @@
       
       log.debug("Received ViewChangedEvent " + event);
       
-      Set oldMembers = new HashSet(currentView);   
+      Set<Object> oldMembers = new HashSet<Object>(currentView);   
       synchronized (currentView)
       {
          currentView.clear();
@@ -702,7 +703,7 @@
    {
       try
       {
-         Set peers = getSSOPeers(ssoId);
+         Set<Object> peers = getSSOPeers(ssoId);
          if (peers.size() == 0)
          {
             ssoValve.notifySSOEmpty(ssoId);
@@ -735,11 +736,14 @@
       if (event.isPre() || event.isOriginLocal())
          return;
       
-      Fqn fqn = event.getFqn();
+      @SuppressWarnings("unchecked")
+      Fqn<Serializable> fqn = event.getFqn();
       String type = getTypeFromFqn(fqn);
       if (CREDENTIALS.equals(type))
       {
-         handleCredentialUpdate(getIdFromFqn(fqn), event.getData());
+         @SuppressWarnings("unchecked")
+         Map<Object, Object> nodeData = event.getData();
+         handleCredentialUpdate(getIdFromFqn(fqn), nodeData);
       }
       else if (SESSIONS.equals(type))
       {
@@ -751,7 +755,7 @@
     * @param ssoId the id of the sso
     * @param nodeData JBC data map assoicated with the update
     */
-   private void handleCredentialUpdate(String ssoId, Map nodeData)
+   private void handleCredentialUpdate(String ssoId, Map<Object, Object> nodeData)
    {
       // Ignore invocations that come as a result of our additions
       if (ssoId.equals(beingLocallyAdded.get()))
@@ -782,7 +786,7 @@
     *  
     * @param fqn an Fqn that points to the SESSIONS node of an SSO or lower
     */
-   private void handleSessionSetChange(Fqn fqn)
+   private void handleSessionSetChange(Fqn<Serializable> fqn)
    {
       // Ignore anything not for a peer's session node
       if (fqn.size() != 4)
@@ -853,10 +857,10 @@
    public int getSessionCount(String ssoId) throws Exception
    {
       int count = 0;
-      Set peers = getSSOPeers(ssoId);
-      for (Iterator it = peers.iterator(); it.hasNext();)
+      Set<Object> peers = getSSOPeers(ssoId);
+      for (Object peer : peers)
       {
-         Set ids = getSessionKeys(ssoId, (Serializable) it.next());
+         Set<Object> ids = getSessionKeys(ssoId, (Serializable) peer);
          count += ids.size();
       }
       return count;
@@ -864,51 +868,55 @@
    
    // -------------------------------------------------------  Private Methods
 
-   private Object getFromTreeCache(Fqn fqn, Object key) throws Exception
+   private Object getFromTreeCache(Fqn<Serializable> fqn, String key) throws Exception
    {
       return cache.get(fqn, key);
    }
    
-   private Set getSSOIds() throws Exception
+   private Set<String> getSSOIds() throws Exception
    {
-      Fqn ssoRootFqn = Fqn.fromElements(new Object[] {SSO});
+      Fqn<Serializable> ssoRootFqn = Fqn.fromElements(new Serializable[] {SSO});
+      @SuppressWarnings("unchecked")
       Node ssoRoot = cache.getRoot().getChild(ssoRootFqn);
-      return ssoRoot == null ? new HashSet() : ssoRoot.getChildrenNames();
+      @SuppressWarnings("unchecked")
+      Set<String> result = ssoRoot == null ? new HashSet<String>() : ssoRoot.getChildrenNames();
+      return result;
    }
    
-   private Set getSSOPeers(String ssoId) throws Exception
+   private Set<Object> getSSOPeers(String ssoId) throws Exception
    {
-      Fqn fqn = getSessionRootFqn(ssoId);
-      Node ssoRoot = cache.getRoot().getChild(fqn);
-      return ssoRoot == null ? new HashSet() : ssoRoot.getChildrenNames();
+      Fqn<Serializable> fqn = getSessionRootFqn(ssoId);
+      Node<Object, Object> ssoRoot = cache.getRoot().getChild(fqn);
+      Set<Object> result = ssoRoot == null ? new HashSet<Object>() : ssoRoot.getChildrenNames();
+      return result;
    }
 
-   private Fqn getCredentialsFqn(String ssoid)
+   private Fqn<Serializable> getCredentialsFqn(String ssoid)
    {
-      Object[] objs = new Object[]{SSO, ssoid, CREDENTIALS};
+      Serializable[] objs = new Serializable[]{SSO, ssoid, CREDENTIALS};
       return Fqn.fromElements(objs);
    }
 
-   private Fqn getSessionRootFqn(String ssoId)
+   private Fqn<Serializable> getSessionRootFqn(String ssoId)
    {
-      Object[] objs = new Object[]{SSO, ssoId, SESSIONS };
+      Serializable[] objs = new Serializable[]{SSO, ssoId, SESSIONS };
       return Fqn.fromElements(objs);      
    }
    
-   private Fqn getSessionsFqn(String ssoid)
+   private Fqn<Serializable> getSessionsFqn(String ssoid)
    {
       return getSessionsFqn(ssoid, localAddress);
    }
    
-   private Fqn getSessionsFqn(String ssoid, Serializable address)
+   private Fqn<Serializable> getSessionsFqn(String ssoid, Serializable address)
    {
-      Object[] objs = new Object[]{SSO, ssoid, SESSIONS, address };
+      Serializable[] objs = new Serializable[]{SSO, ssoid, SESSIONS, address };
       return Fqn.fromElements(objs);
    }
 
-   private Fqn getSingleSignOnFqn(String ssoid)
+   private Fqn<Serializable> getSingleSignOnFqn(String ssoid)
    {
-      Object[] objs = new Object[]{SSO, ssoid};
+      Serializable[] objs = new Serializable[]{SSO, ssoid};
       return Fqn.fromElements(objs);
    }
 
@@ -918,7 +926,7 @@
     * @param fqn the Fully Qualified Name used by TreeCache
     * @return the second element in the Fqn -- the SSO session id
     */
-   private String getIdFromFqn(Fqn fqn)
+   private String getIdFromFqn(Fqn<Serializable> fqn)
    {
       String id = null;
       if (fqn.size() > 1 && SSO.equals(fqn.get(0)))
@@ -937,7 +945,7 @@
     *         {@link #CREDENTIALS CREDENTIALS} or {@link #SESSIONS SESSIONS},
     *         or <code>null</code> if <code>fqn</code> is not for an SSO.
     */
-   private String getTypeFromFqn(Fqn fqn)
+   private String getTypeFromFqn(Fqn<Serializable> fqn)
    {
       String type = null;
       if (fqn.size() > 2 && SSO.equals(fqn.get(0)))
@@ -945,23 +953,23 @@
       return type;
    }
    
-   private Set getSessionKeys(String ssoId)
+   private Set<Object> getSessionKeys(String ssoId)
    {
       return getSessionKeys(ssoId, localAddress);
    }
    
-   private Set getSessionKeys(String ssoId, Serializable peer)
+   private Set<Object> getSessionKeys(String ssoId, Serializable peer)
    {
-      Fqn fqn = getSessionsFqn(ssoId, peer);
-      Set keys = null;
-      Node sessions = cache.getRoot().getChild(fqn);
+      Fqn<Serializable> fqn = getSessionsFqn(ssoId, peer);
+      Set<Object> keys = null;
+      Node<Object, Object> sessions = cache.getRoot().getChild(fqn);
       if (sessions != null)
       {
          keys = sessions.getKeys();
       }
       else
       {
-          keys = new HashSet();
+          keys = new HashSet<Object>();
       }
       return keys;
    }
@@ -1020,7 +1028,7 @@
       synchronized (currentView)
       {
          currentView.clear();
-         List members = cache.getMembers();
+         List<Address> members = cache.getMembers();
          if (members != null)
          {
             currentView.addAll(members);
@@ -1095,6 +1103,7 @@
                try
                {
                   ObjectName oname = new ObjectName(onameStr);
+                  @SuppressWarnings("unchecked")
                   Set s = getMBeanServer().queryMBeans(oname, null);
                   if (s.size() > 0)
                   {
@@ -1144,7 +1153,7 @@
       return avail;
    }
 
-   private void putInTreeCache(Fqn fqn, Object key, Object data) throws Exception
+   private void putInTreeCache(Fqn<Serializable> fqn, Object key, Object data) throws Exception
    {
       cache.put(fqn, key, data);
    }
@@ -1156,6 +1165,7 @@
          // We are likely going to cause creation and start of a cache here;
          // we don't want to leak the TCCL to cache/jgroups threads, so
          // we switch it to our classloader
+         @SuppressWarnings("unchecked")
          ContextClassLoaderSwitcher switcher = (ContextClassLoaderSwitcher) AccessController.doPrivileged(ContextClassLoaderSwitcher.INSTANTIATOR);
          ContextClassLoaderSwitcher.SwitchContext switchContext = switcher.getSwitchContext(getClass().getClassLoader());
          try
@@ -1180,7 +1190,9 @@
                   }
                   else if ("Cache".equals(attr.getName()))
                   {
-                     cache = (Cache) getMBeanServer().getAttribute(cacheObjectName, "Cache");
+                     @SuppressWarnings("unchecked")
+                     Cache<Object, Object> unchecked = (Cache<Object, Object>) getMBeanServer().getAttribute(cacheObjectName, "Cache");
+                     cache = unchecked;
                      break;
                   }
                }
@@ -1269,7 +1281,7 @@
       }
    }
 
-   private void removeFromTreeCache(Fqn fqn, boolean localOnly) throws Exception
+   private void removeFromTreeCache(Fqn<Serializable> fqn, boolean localOnly) throws Exception
    {
       if (localOnly)
       {
@@ -1281,7 +1293,7 @@
       cache.removeNode(fqn);
    }
 
-   private void removeFromTreeCache(Fqn fqn, Object key) throws Exception
+   private void removeFromTreeCache(Fqn<Serializable> fqn, Object key) throws Exception
    {
       cache.remove(fqn, key);
    }
@@ -1412,10 +1424,10 @@
                if (tm == null)
                   configureFromCache();
                
-               Set ids = getSSOIds();
-               for (Iterator iter = ids.iterator(); iter.hasNext();)
+               Set<String> ids = getSSOIds();
+               for (String sso : ids)
                {
-                  cleanSSO((String) iter.next());                  
+                  cleanSSO(sso);                  
                }
             }
             catch (Exception e)
@@ -1437,12 +1449,11 @@
             if(doTx)
                tm.begin();
             
-            Set peers = getSSOPeers(ssoId);
+            Set<Object> peers = getSSOPeers(ssoId);
             if (peers != null && peers.size() > 0)
             {
-               for (Iterator iter = peers.iterator(); iter.hasNext(); )
+               for (Object peer : peers)
                {
-                  Serializable peer = (Serializable) iter.next();
                   boolean alive = true;
                   synchronized (currentView)
                   {
@@ -1455,7 +1466,7 @@
                         log.trace("Removing peer " + peer + " from SSO " + ssoId);
                      }
                      
-                     Fqn fqn = getSessionsFqn(ssoId, peer);
+                     Fqn<Serializable> fqn = getSessionsFqn(ssoId, (Serializable) peer);
                      // Remove the peer node, but local-only
                      // Each cache is responsible for cleaning itself
                      removeFromTreeCache(fqn, true);




More information about the jboss-cvs-commits mailing list