org.osjava.sj.jndi
Class AbstractContext

java.lang.Object
  extended by org.osjava.sj.jndi.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
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
protected AbstractContext()
          Creates a AbstractContext.
protected AbstractContext(AbstractContext that)
          Create a new context based upon the environment of the passed context.
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.
 
Method Summary
 java.lang.Object addToEnvironment(java.lang.String name, java.lang.Object object)
           
 void bind(javax.naming.Name name, java.lang.Object object)
           
 void bind(java.lang.String name, java.lang.Object object)
           
 void close()
           
 javax.naming.Name composeName(javax.naming.Name name, javax.naming.Name prefix)
           
 java.lang.String composeName(java.lang.String name, java.lang.String prefix)
           
abstract  javax.naming.Context createSubcontext(javax.naming.Name name)
           
 javax.naming.Context createSubcontext(java.lang.String name)
           
 void destroySubcontext(javax.naming.Name name)
           
 void destroySubcontext(java.lang.String name)
           
 java.util.Hashtable getEnvironment()
           
 java.lang.String getNameInNamespace()
           
 javax.naming.NameParser getNameParser(javax.naming.Name name)
           
 javax.naming.NameParser getNameParser(java.lang.String 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(javax.naming.Name name)
           
 javax.naming.NamingEnumeration list(java.lang.String name)
           
 javax.naming.NamingEnumeration listBindings(javax.naming.Name name)
           
 javax.naming.NamingEnumeration listBindings(java.lang.String name)
           
 java.lang.Object lookup(javax.naming.Name name)
          Return the named object.
 java.lang.Object lookup(java.lang.String name)
           
 java.lang.Object lookupLink(javax.naming.Name name)
           
 java.lang.Object lookupLink(java.lang.String name)
           
 void rebind(javax.naming.Name name, java.lang.Object object)
           
 void rebind(java.lang.String name, java.lang.Object object)
           
 java.lang.Object removeFromEnvironment(java.lang.String name)
           
 void rename(javax.naming.Name oldName, javax.naming.Name newName)
           
 void rename(java.lang.String oldName, java.lang.String newName)
           
 void setNameInNamespace(javax.naming.Name name)
          Set the name of the Context.
protected  void setNameInNamespace(java.lang.String name)
          Set the name of the Context.
 void unbind(javax.naming.Name name)
           
 void unbind(java.lang.String 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.