Class AbstractContext

  • All Implemented Interfaces:
    java.lang.Cloneable, javax.naming.Context
    Direct Known Subclasses:
    MemoryContext

    public abstract class AbstractContext
    extends java.lang.Object
    implements java.lang.Cloneable, javax.naming.Context
    The heart of the system, the abstract implementation of context for simple-jndi. There are no abstract methods in this class, but it is not meant to be instantiated, but extended instead.
    Since:
    Simple-JNDI 0.11
    Version:
    $Rev: 2684 $ $Date: 2008-05-24 22:19:06 -0700 (Sat, 24 May 2008) $
    Author:
    Robert M. Zigweid
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean closing  
      private java.util.Hashtable env  
      private javax.naming.Name nameInNamespace  
      private boolean nameLock  
      private javax.naming.NameParser nameParser  
      private static java.util.Hashtable SUB_CONTEXTS  
      private java.util.Hashtable subContexts  
      private java.util.Hashtable table  
      private static java.util.Hashtable TABLE  
      • Fields inherited from interface javax.naming.Context

        APPLET, AUTHORITATIVE, BATCHSIZE, DNS_URL, INITIAL_CONTEXT_FACTORY, LANGUAGE, OBJECT_FACTORIES, PROVIDER_URL, REFERRAL, SECURITY_AUTHENTICATION, SECURITY_CREDENTIALS, SECURITY_PRINCIPAL, SECURITY_PROTOCOL, STATE_FACTORIES, URL_PKG_PREFIXES
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected AbstractContext()
      Creates a AbstractContext.
      protected AbstractContext​(boolean systemOverride)
      Creates a AbstractContext.
      protected AbstractContext​(boolean systemOverride, javax.naming.NameParser parser)
      Creates a AbstractContext.
      protected AbstractContext​(java.util.Hashtable env)
      Creates a AbstractContext.
      protected AbstractContext​(java.util.Hashtable env, boolean systemOverride)
      Creates a AbstractContext.
      protected AbstractContext​(java.util.Hashtable env, boolean systemOverride, javax.naming.NameParser parser)
      Creates a AbstractContext.
      protected AbstractContext​(java.util.Hashtable env, javax.naming.NameParser parser)
      Creates a AbstractContext.
      protected AbstractContext​(javax.naming.NameParser parser)
      Creates a AbstractContext.
      protected AbstractContext​(AbstractContext that)
      Create a new context based upon the environment of the passed context.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Object addToEnvironment​(java.lang.String name, java.lang.Object object)  
      void bind​(java.lang.String name, java.lang.Object object)  
      void bind​(javax.naming.Name name, java.lang.Object object)  
      void close()  
      java.lang.String composeName​(java.lang.String name, java.lang.String prefix)  
      javax.naming.Name composeName​(javax.naming.Name name, javax.naming.Name prefix)  
      javax.naming.Context createSubcontext​(java.lang.String name)  
      abstract javax.naming.Context createSubcontext​(javax.naming.Name name)  
      void destroySubcontext​(java.lang.String name)  
      void destroySubcontext​(javax.naming.Name name)  
      java.util.Hashtable getEnvironment()  
      java.lang.String getNameInNamespace()  
      javax.naming.NameParser getNameParser​(java.lang.String name)  
      javax.naming.NameParser getNameParser​(javax.naming.Name name)  
      protected java.util.Hashtable getSubContexts()
      Convenience method returning the subcontexts that this context parents.
      boolean isEmpty()
      Determine whether or not the context is empty.
      static boolean isSharedAndLoaded()
      Whether this context is running in shared mode AND has already been loaded with data.
      javax.naming.NamingEnumeration list​(java.lang.String name)  
      javax.naming.NamingEnumeration list​(javax.naming.Name name)  
      javax.naming.NamingEnumeration listBindings​(java.lang.String name)  
      javax.naming.NamingEnumeration listBindings​(javax.naming.Name name)  
      java.lang.Object lookup​(java.lang.String name)  
      java.lang.Object lookup​(javax.naming.Name name)
      Return the named object.
      java.lang.Object lookupLink​(java.lang.String name)  
      java.lang.Object lookupLink​(javax.naming.Name name)  
      void rebind​(java.lang.String name, java.lang.Object object)  
      void rebind​(javax.naming.Name name, java.lang.Object object)  
      java.lang.Object removeFromEnvironment​(java.lang.String name)  
      void rename​(java.lang.String oldName, java.lang.String newName)  
      void rename​(javax.naming.Name oldName, javax.naming.Name newName)  
      protected void setNameInNamespace​(java.lang.String name)
      Set the name of the Context.
      void setNameInNamespace​(javax.naming.Name name)
      Set the name of the Context.
      void unbind​(java.lang.String name)  
      void unbind​(javax.naming.Name name)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • TABLE

        private static final java.util.Hashtable TABLE
      • SUB_CONTEXTS

        private static final java.util.Hashtable SUB_CONTEXTS
      • table

        private java.util.Hashtable table
      • subContexts

        private java.util.Hashtable subContexts
      • env

        private java.util.Hashtable env
      • nameParser

        private javax.naming.NameParser nameParser
      • nameInNamespace

        private javax.naming.Name nameInNamespace
      • nameLock

        private boolean nameLock
      • closing

        private boolean closing
    • Constructor Detail

      • AbstractContext

        protected AbstractContext()
        Creates a AbstractContext.
      • AbstractContext

        protected AbstractContext​(java.util.Hashtable env)
        Creates a AbstractContext.
        Parameters:
        env - a Hashtable containing the Context's environemnt.
      • AbstractContext

        protected AbstractContext​(java.util.Hashtable env,
                                  boolean systemOverride)
        Creates a AbstractContext.
        Parameters:
        env - a Hashtable containing the Context's environment.
        systemOverride - allow System Parameters to override the environment that is passed in.
      • AbstractContext

        protected AbstractContext​(java.util.Hashtable env,
                                  javax.naming.NameParser parser)
        Creates a AbstractContext.
        Parameters:
        env - a Hashtable containing the Context's environment.
        parser - the NameParser being used by the Context.
      • AbstractContext

        protected AbstractContext​(boolean systemOverride)
        Creates a AbstractContext.
        Parameters:
        systemOverride - allow System Parameters to override the environment that is passed in.
      • AbstractContext

        protected AbstractContext​(boolean systemOverride,
                                  javax.naming.NameParser parser)
        Creates a AbstractContext.
        Parameters:
        systemOverride - allow System Parameters to override the environment that is passed in.
        parser - the NameParser being used by the Context.
      • AbstractContext

        protected AbstractContext​(javax.naming.NameParser parser)
        Creates a AbstractContext.
        Parameters:
        parser - the NameParser being used by the Context.
      • AbstractContext

        protected AbstractContext​(java.util.Hashtable env,
                                  boolean systemOverride,
                                  javax.naming.NameParser parser)
        Creates a AbstractContext.
        Parameters:
        env - a Hashtable containing the Context's environment.
        systemOverride - allow System Parameters to override the environment that is passed in.
        parser - the NameParser being used by the Context.
      • AbstractContext

        protected AbstractContext​(AbstractContext that)
        Create a new context based upon the environment of the passed context.
        Parameters:
        that -
    • Method Detail

      • lookup

        public java.lang.Object lookup​(javax.naming.Name name)
                                throws javax.naming.NamingException
        Return the named object. This implementation looks for things in the following order:
        1. The empty element to duplicate the context.
        2. A named object in the environment.
        3. A named object in the Context's store
        4. A named sub-Context of this Context
        Unlike many implementations of the JNDI specification, this implementation returns null when a name is not found, rather than throwing an exception. The specification does not appear to state which way it should be.
        Specified by:
        lookup in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.lookup(javax.naming.Name)
      • lookup

        public java.lang.Object lookup​(java.lang.String name)
                                throws javax.naming.NamingException
        Specified by:
        lookup in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.lookup(java.lang.String)
      • bind

        public void bind​(javax.naming.Name name,
                         java.lang.Object object)
                  throws javax.naming.NamingException
        Specified by:
        bind in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.bind(javax.naming.Name, java.lang.Object)
      • bind

        public void bind​(java.lang.String name,
                         java.lang.Object object)
                  throws javax.naming.NamingException
        Specified by:
        bind in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.bind(java.lang.String, java.lang.Object)
      • rebind

        public void rebind​(javax.naming.Name name,
                           java.lang.Object object)
                    throws javax.naming.NamingException
        Specified by:
        rebind in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.rebind(javax.naming.Name, java.lang.Object)
      • rebind

        public void rebind​(java.lang.String name,
                           java.lang.Object object)
                    throws javax.naming.NamingException
        Specified by:
        rebind in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.rebind(java.lang.String, java.lang.Object)
      • unbind

        public void unbind​(javax.naming.Name name)
                    throws javax.naming.NamingException
        Specified by:
        unbind in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.unbind(javax.naming.Name)
      • unbind

        public void unbind​(java.lang.String name)
                    throws javax.naming.NamingException
        Specified by:
        unbind in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.unbind(java.lang.String)
      • rename

        public void rename​(javax.naming.Name oldName,
                           javax.naming.Name newName)
                    throws javax.naming.NamingException
        Specified by:
        rename in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.rename(javax.naming.Name, javax.naming.Name)
      • rename

        public void rename​(java.lang.String oldName,
                           java.lang.String newName)
                    throws javax.naming.NamingException
        Specified by:
        rename in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.rename(java.lang.String, java.lang.String)
      • list

        public javax.naming.NamingEnumeration list​(javax.naming.Name name)
                                            throws javax.naming.NamingException
        Specified by:
        list in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.list(javax.naming.Name)
      • list

        public javax.naming.NamingEnumeration list​(java.lang.String name)
                                            throws javax.naming.NamingException
        Specified by:
        list in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.list(java.lang.String)
      • listBindings

        public javax.naming.NamingEnumeration listBindings​(javax.naming.Name name)
                                                    throws javax.naming.NamingException
        Specified by:
        listBindings in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.listBindings(javax.naming.Name)
      • listBindings

        public javax.naming.NamingEnumeration listBindings​(java.lang.String name)
                                                    throws javax.naming.NamingException
        Specified by:
        listBindings in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.listBindings(java.lang.String)
      • destroySubcontext

        public void destroySubcontext​(javax.naming.Name name)
                               throws javax.naming.NamingException
        Specified by:
        destroySubcontext in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.destroySubcontext(javax.naming.Name)
      • destroySubcontext

        public void destroySubcontext​(java.lang.String name)
                               throws javax.naming.NamingException
        Specified by:
        destroySubcontext in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.destroySubcontext(java.lang.String)
      • createSubcontext

        public abstract javax.naming.Context createSubcontext​(javax.naming.Name name)
                                                       throws javax.naming.NamingException
        Specified by:
        createSubcontext in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.createSubcontext(javax.naming.Name)
      • createSubcontext

        public javax.naming.Context createSubcontext​(java.lang.String name)
                                              throws javax.naming.NamingException
        Specified by:
        createSubcontext in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.createSubcontext(java.lang.String)
      • lookupLink

        public java.lang.Object lookupLink​(javax.naming.Name name)
                                    throws javax.naming.NamingException
        Specified by:
        lookupLink in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.lookupLink(javax.naming.Name)
      • lookupLink

        public java.lang.Object lookupLink​(java.lang.String name)
                                    throws javax.naming.NamingException
        Specified by:
        lookupLink in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.lookupLink(java.lang.String)
      • getNameParser

        public javax.naming.NameParser getNameParser​(javax.naming.Name name)
                                              throws javax.naming.NamingException
        Specified by:
        getNameParser in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.getNameParser(javax.naming.Name)
      • getNameParser

        public javax.naming.NameParser getNameParser​(java.lang.String name)
                                              throws javax.naming.NamingException
        Specified by:
        getNameParser in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.getNameParser(java.lang.String)
      • composeName

        public javax.naming.Name composeName​(javax.naming.Name name,
                                             javax.naming.Name prefix)
                                      throws javax.naming.NamingException
        Specified by:
        composeName in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.composeName(javax.naming.Name, javax.naming.Name)
      • composeName

        public java.lang.String composeName​(java.lang.String name,
                                            java.lang.String prefix)
                                     throws javax.naming.NamingException
        Specified by:
        composeName in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.composeName(java.lang.String, java.lang.String)
      • addToEnvironment

        public java.lang.Object addToEnvironment​(java.lang.String name,
                                                 java.lang.Object object)
                                          throws javax.naming.NamingException
        Specified by:
        addToEnvironment in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.addToEnvironment(java.lang.String, java.lang.Object)
      • removeFromEnvironment

        public java.lang.Object removeFromEnvironment​(java.lang.String name)
                                               throws javax.naming.NamingException
        Specified by:
        removeFromEnvironment in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.removeFromEnvironment(java.lang.String)
      • getEnvironment

        public java.util.Hashtable getEnvironment()
                                           throws javax.naming.NamingException
        Specified by:
        getEnvironment in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.getEnvironment()
      • close

        public void close()
                   throws javax.naming.NamingException
        Specified by:
        close in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.close()
      • getNameInNamespace

        public java.lang.String getNameInNamespace()
                                            throws javax.naming.NamingException
        Specified by:
        getNameInNamespace in interface javax.naming.Context
        Throws:
        javax.naming.NamingException
        See Also:
        Context.getNameInNamespace()
      • isEmpty

        public boolean isEmpty()
        Determine whether or not the context is empty. Objects bound directly to the context or subcontexts are all that is considered. The environment of the context is not considered.
        Returns:
        true of the context is empty, else false.
      • setNameInNamespace

        public void setNameInNamespace​(javax.naming.Name name)
                                throws javax.naming.NamingException
        Set the name of the Context. This is only used from createSubcontext. It might get replaced by adding more constructors, but there is really no reason to expose it publicly anyway.
        Parameters:
        name - the Name of the context.
        Throws:
        javax.naming.NamingException - if the subContext already has a name.
      • setNameInNamespace

        protected void setNameInNamespace​(java.lang.String name)
                                   throws javax.naming.NamingException
        Set the name of the Context. This is only used from createSubcontext. It might get replaced by adding more constructors, but there is really no reason to expose it publicly anyway.
        Parameters:
        name - a String representation of the Name of the context.
        Throws:
        javax.naming.NamingException - if the subContext already has a name.
      • getSubContexts

        protected java.util.Hashtable getSubContexts()
        Convenience method returning the subcontexts that this context parents.
        Returns:
        a Hashtable of context objects that are parented by this context.
      • isSharedAndLoaded

        public static boolean isSharedAndLoaded()
        Whether this context is running in shared mode AND has already been loaded with data.