Package org.apache.activemq.artemis.jndi
Class ReadOnlyContext
- java.lang.Object
-
- org.apache.activemq.artemis.jndi.ReadOnlyContext
-
- All Implemented Interfaces:
java.io.Serializable,javax.naming.Context
- Direct Known Subclasses:
LazyCreateContext
public class ReadOnlyContext extends java.lang.Object implements javax.naming.Context, java.io.SerializableA read-only ContextThis version assumes it and all its subcontext are read-only and any attempt to modify (e.g. through bind) will result in an OperationNotSupportedException. Each Context in the tree builds a cache of the entries in all sub-contexts to optimise the performance of lookup.
This implementation is intended to optimise the performance of lookup(String) to about the level of a HashMap get. It has been observed that the scheme resolution phase performed by the JVM takes considerably longer, so for optimum performance lookups should be coded like:
Context componentContext = (Context)new InitialContext().lookup("java:comp"); String envEntry = (String) componentContext.lookup("env/myEntry"); String envEntry2 = (String) componentContext.lookup("env/myEntry2");- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<java.lang.String,java.lang.Object>bindingsprotected java.util.Hashtable<java.lang.String,java.lang.Object>environmentprotected static javax.naming.NameParserNAME_PARSERstatic java.lang.StringSEPARATORprotected java.util.Map<java.lang.String,java.lang.Object>treeBindings
-
Constructor Summary
Constructors Modifier Constructor Description ReadOnlyContext()ReadOnlyContext(java.util.Hashtable env)ReadOnlyContext(java.util.Hashtable environment, java.util.Map<java.lang.String,java.lang.Object> bindings)ReadOnlyContext(java.util.Hashtable environment, java.util.Map<java.lang.String,java.lang.Object> bindings, java.lang.String nameInNamespace)protectedReadOnlyContext(ReadOnlyContext clone, java.util.Hashtable env)protectedReadOnlyContext(ReadOnlyContext clone, java.util.Hashtable<java.lang.String,java.lang.Object> env, java.lang.String nameInNamespace)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.ObjectaddToEnvironment(java.lang.String propName, java.lang.Object propVal)voidbind(java.lang.String name, java.lang.Object obj)voidbind(javax.naming.Name name, java.lang.Object obj)voidclose()java.lang.StringcomposeName(java.lang.String name, java.lang.String prefix)javax.naming.NamecomposeName(javax.naming.Name name, javax.naming.Name prefix)javax.naming.ContextcreateSubcontext(java.lang.String name)javax.naming.ContextcreateSubcontext(javax.naming.Name name)voiddestroySubcontext(java.lang.String name)voiddestroySubcontext(javax.naming.Name name)voidfreeze()java.util.Hashtable<java.lang.String,java.lang.Object>getEnvironment()java.lang.StringgetNameInNamespace()javax.naming.NameParsergetNameParser(java.lang.String name)javax.naming.NameParsergetNameParser(javax.naming.Name name)protected java.util.Map<java.lang.String,java.lang.Object>internalBind(java.lang.String name, java.lang.Object value)internalBind is intended for use only during setup or possibly by suitably synchronized superclasses.javax.naming.NamingEnumeration<javax.naming.NameClassPair>list(java.lang.String name)javax.naming.NamingEnumeration<javax.naming.NameClassPair>list(javax.naming.Name name)javax.naming.NamingEnumeration<javax.naming.Binding>listBindings(java.lang.String name)javax.naming.NamingEnumeration<javax.naming.Binding>listBindings(javax.naming.Name name)java.lang.Objectlookup(java.lang.String name)java.lang.Objectlookup(javax.naming.Name name)java.lang.ObjectlookupLink(java.lang.String name)java.lang.ObjectlookupLink(javax.naming.Name name)protected ReadOnlyContextnewContext()voidrebind(java.lang.String name, java.lang.Object obj)voidrebind(javax.naming.Name name, java.lang.Object obj)java.lang.ObjectremoveFromEnvironment(java.lang.String propName)voidrename(java.lang.String oldName, java.lang.String newName)voidrename(javax.naming.Name oldName, javax.naming.Name newName)voidunbind(java.lang.String name)voidunbind(javax.naming.Name name)
-
-
-
Field Detail
-
SEPARATOR
public static final java.lang.String SEPARATOR
- See Also:
- Constant Field Values
-
NAME_PARSER
protected static final javax.naming.NameParser NAME_PARSER
-
environment
protected final java.util.Hashtable<java.lang.String,java.lang.Object> environment
-
bindings
protected final java.util.Map<java.lang.String,java.lang.Object> bindings
-
treeBindings
protected final java.util.Map<java.lang.String,java.lang.Object> treeBindings
-
-
Constructor Detail
-
ReadOnlyContext
public ReadOnlyContext()
-
ReadOnlyContext
public ReadOnlyContext(java.util.Hashtable env)
-
ReadOnlyContext
public ReadOnlyContext(java.util.Hashtable environment, java.util.Map<java.lang.String,java.lang.Object> bindings)
-
ReadOnlyContext
public ReadOnlyContext(java.util.Hashtable environment, java.util.Map<java.lang.String,java.lang.Object> bindings, java.lang.String nameInNamespace)
-
ReadOnlyContext
protected ReadOnlyContext(ReadOnlyContext clone, java.util.Hashtable env)
-
ReadOnlyContext
protected ReadOnlyContext(ReadOnlyContext clone, java.util.Hashtable<java.lang.String,java.lang.Object> env, java.lang.String nameInNamespace)
-
-
Method Detail
-
freeze
public void freeze()
-
internalBind
protected java.util.Map<java.lang.String,java.lang.Object> internalBind(java.lang.String name, java.lang.Object value) throws javax.naming.NamingExceptioninternalBind is intended for use only during setup or possibly by suitably synchronized superclasses. It binds every possible lookup into a map in each context. To do this, each context strips off one name segment and if necessary creates a new context for it. Then it asks that context to bind the remaining name. It returns a map containing all the bindings from the next context, plus the context it just created (if it in fact created it). (the names are suitably extended by the segment originally lopped off).- Parameters:
name-value-- Returns:
- Throws:
javax.naming.NamingException
-
newContext
protected ReadOnlyContext newContext()
-
addToEnvironment
public java.lang.Object addToEnvironment(java.lang.String propName, java.lang.Object propVal) throws javax.naming.NamingException- Specified by:
addToEnvironmentin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
getEnvironment
public java.util.Hashtable<java.lang.String,java.lang.Object> getEnvironment() throws javax.naming.NamingException- Specified by:
getEnvironmentin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
removeFromEnvironment
public java.lang.Object removeFromEnvironment(java.lang.String propName) throws javax.naming.NamingException- Specified by:
removeFromEnvironmentin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
lookup
public java.lang.Object lookup(java.lang.String name) throws javax.naming.NamingException- Specified by:
lookupin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
lookup
public java.lang.Object lookup(javax.naming.Name name) throws javax.naming.NamingException- Specified by:
lookupin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
lookupLink
public java.lang.Object lookupLink(java.lang.String name) throws javax.naming.NamingException- Specified by:
lookupLinkin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
composeName
public javax.naming.Name composeName(javax.naming.Name name, javax.naming.Name prefix) throws javax.naming.NamingException- Specified by:
composeNamein interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
composeName
public java.lang.String composeName(java.lang.String name, java.lang.String prefix) throws javax.naming.NamingException- Specified by:
composeNamein interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
list
public javax.naming.NamingEnumeration<javax.naming.NameClassPair> list(java.lang.String name) throws javax.naming.NamingException- Specified by:
listin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
listBindings
public javax.naming.NamingEnumeration<javax.naming.Binding> listBindings(java.lang.String name) throws javax.naming.NamingException- Specified by:
listBindingsin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
lookupLink
public java.lang.Object lookupLink(javax.naming.Name name) throws javax.naming.NamingException- Specified by:
lookupLinkin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
list
public javax.naming.NamingEnumeration<javax.naming.NameClassPair> list(javax.naming.Name name) throws javax.naming.NamingException- Specified by:
listin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
listBindings
public javax.naming.NamingEnumeration<javax.naming.Binding> listBindings(javax.naming.Name name) throws javax.naming.NamingException- Specified by:
listBindingsin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
bind
public void bind(javax.naming.Name name, java.lang.Object obj) throws javax.naming.NamingException- Specified by:
bindin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
bind
public void bind(java.lang.String name, java.lang.Object obj) throws javax.naming.NamingException- Specified by:
bindin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
close
public void close() throws javax.naming.NamingException- Specified by:
closein interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
createSubcontext
public javax.naming.Context createSubcontext(javax.naming.Name name) throws javax.naming.NamingException- Specified by:
createSubcontextin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
createSubcontext
public javax.naming.Context createSubcontext(java.lang.String name) throws javax.naming.NamingException- Specified by:
createSubcontextin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
destroySubcontext
public void destroySubcontext(javax.naming.Name name) throws javax.naming.NamingException- Specified by:
destroySubcontextin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
destroySubcontext
public void destroySubcontext(java.lang.String name) throws javax.naming.NamingException- Specified by:
destroySubcontextin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
getNameInNamespace
public java.lang.String getNameInNamespace() throws javax.naming.NamingException- Specified by:
getNameInNamespacein interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
getNameParser
public javax.naming.NameParser getNameParser(javax.naming.Name name) throws javax.naming.NamingException- Specified by:
getNameParserin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
getNameParser
public javax.naming.NameParser getNameParser(java.lang.String name) throws javax.naming.NamingException- Specified by:
getNameParserin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
rebind
public void rebind(javax.naming.Name name, java.lang.Object obj) throws javax.naming.NamingException- Specified by:
rebindin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
rebind
public void rebind(java.lang.String name, java.lang.Object obj) throws javax.naming.NamingException- Specified by:
rebindin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
rename
public void rename(javax.naming.Name oldName, javax.naming.Name newName) throws javax.naming.NamingException- Specified by:
renamein interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
rename
public void rename(java.lang.String oldName, java.lang.String newName) throws javax.naming.NamingException- Specified by:
renamein interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
unbind
public void unbind(javax.naming.Name name) throws javax.naming.NamingException- Specified by:
unbindin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
unbind
public void unbind(java.lang.String name) throws javax.naming.NamingException- Specified by:
unbindin interfacejavax.naming.Context- Throws:
javax.naming.NamingException
-
-