Class JNDIConfiguration
- java.lang.Object
-
- org.apache.commons.configuration2.event.BaseEventSource
-
- org.apache.commons.configuration2.AbstractConfiguration
-
- org.apache.commons.configuration2.JNDIConfiguration
-
- All Implemented Interfaces:
Configuration
,EventSource
,ImmutableConfiguration
,SynchronizerSupport
public class JNDIConfiguration extends AbstractConfiguration
This Configuration class allows you to interface with a JNDI datasource. A JNDIConfiguration is read-only, write operations will throw an UnsupportedOperationException. The clear operations are supported but the underlying JNDI data source is not changed.
-
-
Field Summary
Fields Modifier and Type Field Description private javax.naming.Context
baseContext
The base JNDI context.private java.util.Set<java.lang.String>
clearedProperties
The Set of keys that have been virtually cleared.private javax.naming.Context
context
The initial JNDI context.private java.lang.String
prefix
The prefix of the context.
-
Constructor Summary
Constructors Constructor Description JNDIConfiguration()
Creates a JNDIConfiguration using the default initial context as the root of the properties.JNDIConfiguration(java.lang.String prefix)
Creates a JNDIConfiguration using the default initial context, shifted with the specified prefix, as the root of the properties.JNDIConfiguration(javax.naming.Context context)
Creates a JNDIConfiguration using the specified initial context as the root of the properties.JNDIConfiguration(javax.naming.Context context, java.lang.String prefix)
Creates a JNDIConfiguration using the specified initial context shifted by the specified prefix as the root of the properties.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addPropertyDirect(java.lang.String key, java.lang.Object obj)
This operation is not supported and will throw an UnsupportedOperationException.protected void
clearPropertyDirect(java.lang.String key)
Removes the specified property.protected boolean
containsKeyInternal(java.lang.String key)
Checks whether the specified key is contained in this configuration.protected boolean
containsValueInternal(java.lang.Object value)
Tests whether this configuration contains one or more matches to this value.javax.naming.Context
getBaseContext()
Gets the base context with the prefix applied.javax.naming.Context
getContext()
Gets the initial context used by this configuration.private javax.naming.Context
getContext(java.util.List<java.lang.String> path, javax.naming.Context context)
Because JNDI is based on a tree configuration, we need to filter down the tree, till we find the Context specified by the key to start from.protected java.util.Iterator<java.lang.String>
getKeysInternal()
Gets an iterator with all property keys stored in this configuration.protected java.util.Iterator<java.lang.String>
getKeysInternal(java.lang.String prefix)
Gets an iterator with all property keys starting with the given prefix.java.lang.String
getPrefix()
Gets the prefix.protected java.lang.Object
getPropertyInternal(java.lang.String key)
Gets the value of the specified property.protected boolean
isEmptyInternal()
Returns a flag whether this configuration is empty.private void
recursiveGetKeys(java.util.Set<java.lang.String> keys, javax.naming.Context context, java.lang.String prefix, java.util.Set<javax.naming.Context> processedCtx)
This method recursive traverse the JNDI tree, looking for Context objects.void
setContext(javax.naming.Context context)
Sets the initial context of the configuration.void
setPrefix(java.lang.String prefix)
Sets the prefix.protected void
setPropertyInternal(java.lang.String key, java.lang.Object value)
This operation is not supported and will throw an UnsupportedOperationException.-
Methods inherited from class org.apache.commons.configuration2.AbstractConfiguration
addErrorLogListener, addProperty, addPropertyInternal, append, beginRead, beginWrite, clear, clearInternal, clearProperty, cloneInterpolator, contains, containsKey, containsValue, copy, endRead, endWrite, get, get, getArray, getArray, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getCollection, getCollection, getConfigurationDecoder, getConversionHandler, getDouble, getDouble, getDouble, getDuration, getDuration, getEncodedString, getEncodedString, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getInterpolator, getKeys, getKeys, getKeys, getKeysInternal, getList, getList, getList, getList, getListDelimiterHandler, getLogger, getLong, getLong, getLong, getProperties, getProperties, getProperty, getShort, getShort, getShort, getString, getString, getStringArray, getSynchronizer, immutableSubset, initLogger, installInterpolator, interpolate, interpolate, interpolatedConfiguration, isEmpty, isScalarValue, isThrowExceptionOnMissing, lock, setConfigurationDecoder, setConversionHandler, setDefaultLookups, setInterpolator, setListDelimiterHandler, setLogger, setParentInterpolator, setPrefixLookups, setProperty, setSynchronizer, setThrowExceptionOnMissing, size, sizeInternal, subset, unlock
-
Methods inherited from class org.apache.commons.configuration2.event.BaseEventSource
addEventListener, clearErrorListeners, clearEventListeners, clone, copyEventListeners, createErrorEvent, createEvent, fireError, fireEvent, getEventListenerRegistrations, getEventListeners, isDetailEvents, removeEventListener, setDetailEvents
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.commons.configuration2.ImmutableConfiguration
getEnum, getEnum
-
-
-
-
Field Detail
-
prefix
private java.lang.String prefix
The prefix of the context.
-
context
private javax.naming.Context context
The initial JNDI context.
-
baseContext
private javax.naming.Context baseContext
The base JNDI context.
-
clearedProperties
private final java.util.Set<java.lang.String> clearedProperties
The Set of keys that have been virtually cleared.
-
-
Constructor Detail
-
JNDIConfiguration
public JNDIConfiguration() throws javax.naming.NamingException
Creates a JNDIConfiguration using the default initial context as the root of the properties.- Throws:
javax.naming.NamingException
- thrown if an error occurs when initializing the default context
-
JNDIConfiguration
public JNDIConfiguration(javax.naming.Context context)
Creates a JNDIConfiguration using the specified initial context as the root of the properties.- Parameters:
context
- the initial context
-
JNDIConfiguration
public JNDIConfiguration(javax.naming.Context context, java.lang.String prefix)
Creates a JNDIConfiguration using the specified initial context shifted by the specified prefix as the root of the properties.- Parameters:
context
- the initial contextprefix
- the prefix
-
JNDIConfiguration
public JNDIConfiguration(java.lang.String prefix) throws javax.naming.NamingException
Creates a JNDIConfiguration using the default initial context, shifted with the specified prefix, as the root of the properties.- Parameters:
prefix
- the prefix- Throws:
javax.naming.NamingException
- thrown if an error occurs when initializing the default context
-
-
Method Detail
-
addPropertyDirect
protected void addPropertyDirect(java.lang.String key, java.lang.Object obj)
This operation is not supported and will throw an UnsupportedOperationException.
- Specified by:
addPropertyDirect
in classAbstractConfiguration
- Parameters:
key
- the keyobj
- the value- Throws:
java.lang.UnsupportedOperationException
- always thrown as this method is not supported
-
clearPropertyDirect
protected void clearPropertyDirect(java.lang.String key)
Removes the specified property.- Specified by:
clearPropertyDirect
in classAbstractConfiguration
- Parameters:
key
- the key of the property to remove
-
containsKeyInternal
protected boolean containsKeyInternal(java.lang.String key)
Checks whether the specified key is contained in this configuration.- Specified by:
containsKeyInternal
in classAbstractConfiguration
- Parameters:
key
- the key to check- Returns:
- a flag whether this key is stored in this configuration
-
containsValueInternal
protected boolean containsValueInternal(java.lang.Object value)
Tests whether this configuration contains one or more matches to this value. This operation stops at first match but may be more expensive than the containsKey method.- Specified by:
containsValueInternal
in classAbstractConfiguration
- Parameters:
value
- the value in question- Returns:
true
if and only if some key maps to thevalue
argument in this configuration as determined by theequals
method;false
otherwise.- Since:
- 2.11.0
-
getBaseContext
public javax.naming.Context getBaseContext() throws javax.naming.NamingException
Gets the base context with the prefix applied.- Returns:
- the base context
- Throws:
javax.naming.NamingException
- if an error occurs
-
getContext
public javax.naming.Context getContext()
Gets the initial context used by this configuration. This context is independent of the prefix specified.- Returns:
- the initial context
-
getContext
private javax.naming.Context getContext(java.util.List<java.lang.String> path, javax.naming.Context context) throws javax.naming.NamingException
Because JNDI is based on a tree configuration, we need to filter down the tree, till we find the Context specified by the key to start from. Otherwise return null.- Parameters:
path
- the path of keys to traverse in order to find the contextcontext
- the context to start from- Returns:
- The context at that key's location in the JNDI tree, or null if not found
- Throws:
javax.naming.NamingException
- if JNDI has an issue
-
getKeysInternal
protected java.util.Iterator<java.lang.String> getKeysInternal()
Gets an iterator with all property keys stored in this configuration.- Specified by:
getKeysInternal
in classAbstractConfiguration
- Returns:
- an iterator with all keys
-
getKeysInternal
protected java.util.Iterator<java.lang.String> getKeysInternal(java.lang.String prefix)
Gets an iterator with all property keys starting with the given prefix.- Overrides:
getKeysInternal
in classAbstractConfiguration
- Parameters:
prefix
- the prefix- Returns:
- an iterator with the selected keys
-
getPrefix
public java.lang.String getPrefix()
Gets the prefix.- Returns:
- the prefix
-
getPropertyInternal
protected java.lang.Object getPropertyInternal(java.lang.String key)
Gets the value of the specified property.- Specified by:
getPropertyInternal
in classAbstractConfiguration
- Parameters:
key
- the key of the property- Returns:
- the value of this property
-
isEmptyInternal
protected boolean isEmptyInternal()
Returns a flag whether this configuration is empty.- Specified by:
isEmptyInternal
in classAbstractConfiguration
- Returns:
- the empty flag
-
recursiveGetKeys
private void recursiveGetKeys(java.util.Set<java.lang.String> keys, javax.naming.Context context, java.lang.String prefix, java.util.Set<javax.naming.Context> processedCtx) throws javax.naming.NamingException
This method recursive traverse the JNDI tree, looking for Context objects. When it finds them, it traverses them as well. Otherwise it just adds the values to the list of keys found.- Parameters:
keys
- All the keys that have been found.context
- The parent contextprefix
- What prefix we are building on.processedCtx
- a set with the so far processed objects- Throws:
javax.naming.NamingException
- If JNDI has an issue.
-
setContext
public void setContext(javax.naming.Context context)
Sets the initial context of the configuration.- Parameters:
context
- the context
-
setPrefix
public void setPrefix(java.lang.String prefix)
Sets the prefix.- Parameters:
prefix
- The prefix to set
-
setPropertyInternal
protected void setPropertyInternal(java.lang.String key, java.lang.Object value)
This operation is not supported and will throw an UnsupportedOperationException.
- Overrides:
setPropertyInternal
in classAbstractConfiguration
- Parameters:
key
- the keyvalue
- the value- Throws:
java.lang.UnsupportedOperationException
- always thrown as this method is not supported
-
-