[jboss-cvs] JBossAS SVN: r107006 - projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/jndi/impl.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 21 16:25:07 EDT 2010


Author: smarlow at redhat.com
Date: 2010-07-21 16:25:06 -0400 (Wed, 21 Jul 2010)
New Revision: 107006

Modified:
   projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/jndi/impl/DistributedTreeManagerImpl.java
Log:
JBCLUSTER-256 HA-JNDI

Modified: projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/jndi/impl/DistributedTreeManagerImpl.java
===================================================================
--- projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/jndi/impl/DistributedTreeManagerImpl.java	2010-07-21 20:22:42 UTC (rev 107005)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/jndi/impl/DistributedTreeManagerImpl.java	2010-07-21 20:25:06 UTC (rev 107006)
@@ -40,12 +40,12 @@
 import javax.naming.NamingException;
 import javax.naming.NotContextException;
 
-import org.infinispan.Cache;
 import org.infinispan.tree.Node;
 import org.infinispan.tree.TreeCache;
 import org.infinispan.tree.Fqn;
 import org.infinispan.CacheException;
 import org.infinispan.tree.TreeCacheFactory;
+import org.jboss.ha.framework.server.HAPartitionCacheHandlerImpl;
 import org.jboss.ha.jndi.spi.DistributedTreeManager;
 import org.jboss.logging.Logger;
 import org.jnp.interfaces.Naming;
@@ -53,9 +53,9 @@
 import org.jnp.interfaces.NamingParser;
 
 /**
- *  This class utilizes Infinispan to provide a DistributedTreeManager implementation.
+ *  This class utilizes Infinispan to provide a HA-JNDI implementation.
  *
- *  @author <a href="mailto:jgauthier at novell.com">Jerry Gauthier</a>
+ *  @author Jerry Gauthier
  *  @author Brian Stansberry
  *  @author Scott Marlow
  *  
@@ -64,90 +64,87 @@
 public class DistributedTreeManagerImpl
    implements org.jnp.interfaces.Naming, DistributedTreeManager
 {
-   private static Logger log = Logger.getLogger(DistributedTreeManagerImpl.class);
+   private static final Logger LOG = Logger.getLogger(DistributedTreeManagerImpl.class);
+   private static final NamingParser PARSER = new NamingParser();
+   private static final String DEFAULT_ROOT = "__HA_JNDI__";
+   private static final Fqn FQN_ROOT = Fqn.fromString(DEFAULT_ROOT);
 
-   private static final NamingParser parser = new NamingParser();
-  
-   public static final String DEFAULT_ROOT = "__HA_JNDI__";
-   
-   // Attributes --------------------------------------------------------
+   private volatile TreeCache<String, Binding> m_cache;
+   private volatile HAPartitionCacheHandlerImpl cacheHandler;
+   private final Naming haStub;
 
-   private TreeCache<String, Binding> m_cache;
-   private Cache m_backingCache;
-   private Fqn m_root = Fqn.fromString(DEFAULT_ROOT);
-   private Naming haStub;
+   public HAPartitionCacheHandlerImpl getCacheHandler()
+   {
+      return cacheHandler;
+   }
 
-   // Properties --------------------------------------------------------
+   public void setCacheHandler(HAPartitionCacheHandlerImpl cacheHandler)
+   {
+      this.cacheHandler = cacheHandler;
+   }
 
-   public void setClusteredCache(Cache<String, Binding> cache)
+   public DistributedTreeManagerImpl(Naming haStub)
    {
-      m_backingCache = cache;
-      TreeCacheFactory tcf = new TreeCacheFactory();
-      m_cache = tcf.createTreeCache(m_backingCache);
+      this.haStub = haStub;
    }
-   
 
-   // Public -----------------------------------------------------------------
 
-   @SuppressWarnings("unchecked")
    public void init()
    {
-      if (this.haStub == null)
-      {
-         throw new IllegalStateException("Must call setHAStub before starting");
-      }
-      
-      if (this.m_cache == null)
-      {
-         throw new IllegalStateException("Must call setClusteredCache before starting");
-      }
-      
-      log.debug("initializing HAJNDITreeCache root");
+      TreeCacheFactory tcf = new TreeCacheFactory();
+      m_cache = tcf.createTreeCache(cacheHandler.getCache());
+
+      LOG.debug("initializing HAJNDITreeCache root");
    }
 
+
    public void shutdown()
    {
       m_cache = null;
-      m_backingCache = null;   
    }
 
+
    public Naming getHAStub()
    {
       return this.haStub;
    }
 
+   @Override
    public void setHAStub(Naming stub)
    {
-      this.haStub = stub;
+      // TODO:  delete this method from the interface as its ignored (ctor accepts the stub)
    }
 
    // Naming implementation -----------------------------------------
-  
+
+   @Override
    public void bind(Name name, Object obj, String className) throws NamingException
    {
-      if (log.isTraceEnabled())
+      if (LOG.isTraceEnabled())
       {
-         log.trace("bind, name="+name);
+         LOG.trace("bind, name="+name);
       }
       
       this.internalBind(name, obj, className, false);
    }
-   
+
+   @Override
    public void rebind(Name name, Object obj, String className) throws NamingException
    {
-      if (log.isTraceEnabled())
+      if (LOG.isTraceEnabled())
       {
-         log.trace("rebind, name="+name);
+         LOG.trace("rebind, name="+name);
       }
 
       this.internalBind(name, obj, className, true);
    }
 
+   @Override   
    public void unbind(Name name) throws NamingException
    {
-      if (log.isTraceEnabled())
+      if (LOG.isTraceEnabled())
       {
-         log.trace("unbind, name="+name);
+         LOG.trace("unbind, name="+name);
       }
       if (name.isEmpty())
       {
@@ -158,7 +155,7 @@
       // is the name a context?
       try
       {
-         Fqn temp = Fqn.fromRelativeFqn(this.m_root, Fqn.fromString(name.toString()));
+         Fqn temp = Fqn.fromRelativeFqn(this.FQN_ROOT, Fqn.fromString(name.toString()));
          // TODO why not jst call remove -- why hasChild first?
          if (this.m_cache.getRoot().hasChild(temp))
          {
@@ -183,11 +180,11 @@
       {
          String prefix = name.getPrefix(size - 1).toString();
          Fqn fqn = Fqn.fromString(prefix);
-         ctx = Fqn.fromRelativeFqn(this.m_root, fqn);
+         ctx = Fqn.fromRelativeFqn(this.FQN_ROOT, fqn);
       }
       else
       {
-         ctx = this.m_root;
+         ctx = this.FQN_ROOT;
       }
       
       try
@@ -211,25 +208,26 @@
          throw ne;
       }
    }
-   
+
+   @Override
    public Object lookup(Name name) throws NamingException
    {
-      boolean trace = log.isTraceEnabled();
+      boolean trace = LOG.isTraceEnabled();
       if (trace)
       {
-         log.trace("lookup, name="+name);
+         LOG.trace("lookup, name="+name);
       }
    
       if (name.isEmpty())
       {
          // Return this
-         return new NamingContext(null, parser.parse(""), this.getHAStub());
+         return new NamingContext(null, PARSER.parse(""), this.getHAStub());
       }
 
       // is the name a context?
       try
       {
-         Node<String, Binding> n = this.m_cache.getRoot().getChild(Fqn.fromRelativeFqn(this.m_root, Fqn.fromString(name.toString())));
+         Node<String, Binding> n = this.m_cache.getRoot().getChild(Fqn.fromRelativeFqn(this.FQN_ROOT, Fqn.fromString(name.toString())));
          if (n != null)
          {
             Name fullName = (Name) name.clone();
@@ -253,11 +251,11 @@
       {
          String prefix = name.getPrefix(size - 1).toString();
          Fqn fqn = Fqn.fromString(prefix);
-         ctx = Fqn.fromRelativeFqn(this.m_root, fqn);
+         ctx = Fqn.fromRelativeFqn(this.FQN_ROOT, fqn);
       }
       else
       {
-         ctx = this.m_root;
+         ctx = this.FQN_ROOT;
       }
    
       try
@@ -275,12 +273,13 @@
          throw ne;
       }
    }
-   
+
+   @Override
    public Collection<NameClassPair> list(Name name) throws NamingException
    {
-      if (log.isTraceEnabled())
+      if (LOG.isTraceEnabled())
       {
-         log.trace("list, name="+name);
+         LOG.trace("list, name="+name);
       }
    
       // get the context
@@ -291,11 +290,11 @@
       {
          ctxName = name.toString();
          Fqn fqn = Fqn.fromString(ctxName);
-         ctx = Fqn.fromRelativeFqn(this.m_root, fqn);
+         ctx = Fqn.fromRelativeFqn(this.FQN_ROOT, fqn);
       }
       else
       {
-         ctx = this.m_root;
+         ctx = this.FQN_ROOT;
       }
       
       boolean exists = this.m_cache.getRoot().hasChild(ctx);
@@ -348,11 +347,12 @@
       }
    }
 
+   @Override
    public Collection<Binding> listBindings(Name name) throws NamingException
    {
-      if (log.isTraceEnabled())
+      if (LOG.isTraceEnabled())
       {
-         log.trace("listBindings, name="+name);
+         LOG.trace("listBindings, name="+name);
       }
       
       // get the context
@@ -363,11 +363,11 @@
       {
          ctxName = name.toString();
          Fqn fqn = Fqn.fromString(ctxName);
-         ctx = Fqn.fromRelativeFqn(this.m_root, fqn);
+         ctx = Fqn.fromRelativeFqn(this.FQN_ROOT, fqn);
       }
       else
       {
-         ctx = this.m_root;
+         ctx = this.FQN_ROOT;
       }
       
       boolean exists = this.m_cache.getRoot().hasChild(ctx);
@@ -416,18 +416,19 @@
       }
       catch (CacheException ce)
       {
-         // don't chain CacheException since JBoss Cache may not be on remote client's classpath
+         // don't chain CacheException since Infinispan may not be on remote client's classpath
          NamingException ne = new NamingException(ce.getClass().getName() + ": " + ce.getMessage());
          ne.setStackTrace(ce.getStackTrace());
          throw ne;
       }
    }
 
+   @Override
    public Context createSubcontext(Name name) throws NamingException
    {
-      if (log.isTraceEnabled())
+      if (LOG.isTraceEnabled())
       {
-         log.trace("createSubcontext, name="+name);
+         LOG.trace("createSubcontext, name="+name);
       }
       
       int size = name.size();
@@ -440,7 +441,7 @@
       // does the new context already exist?
       String str = name.toString();
       Fqn fqn = Fqn.fromString(str);
-      Fqn ctx = Fqn.fromRelativeFqn(this.m_root, fqn);
+      Fqn ctx = Fqn.fromRelativeFqn(this.FQN_ROOT, fqn);
       if (this.m_cache.getRoot().hasChild(ctx))
       {
          throw new NameAlreadyBoundException(str);
@@ -453,11 +454,11 @@
       {
          String prefix = name.getPrefix(size - 1).toString();
          Fqn fqn2 = Fqn.fromString(prefix);
-         pctx = Fqn.fromRelativeFqn(this.m_root, fqn2);
+         pctx = Fqn.fromRelativeFqn(this.FQN_ROOT, fqn2);
       }
       else
       {
-         pctx = this.m_root;
+         pctx = this.FQN_ROOT;
       }
       
       boolean exists = this.m_cache.getRoot().hasChild(pctx);
@@ -479,7 +480,7 @@
          throw ne;
       }
    
-      Name fullName = parser.parse("");
+      Name fullName = PARSER.parse("");
       fullName.addAll(name);
       
       return new NamingContext(null, fullName, this.getHAStub());
@@ -501,11 +502,11 @@
       {
          String prefix = name.getPrefix(size - 1).toString();
          Fqn fqn = Fqn.fromString(prefix);
-         ctx = Fqn.fromRelativeFqn(this.m_root, fqn);
+         ctx = Fqn.fromRelativeFqn(this.FQN_ROOT, fqn);
       }
       else
       {
-         ctx = this.m_root;
+         ctx = this.FQN_ROOT;
       }
    
       boolean exists = this.m_cache.getRoot().hasChild(ctx);



More information about the jboss-cvs-commits mailing list