org.opends.server.protocols
Class LDIFConnectionHandler

java.lang.Object
  extended by java.lang.Thread
      extended by org.opends.server.api.DirectoryThread
          extended by org.opends.server.api.ConnectionHandler<LDIFConnectionHandlerCfg>
              extended by org.opends.server.protocols.LDIFConnectionHandler
All Implemented Interfaces:
java.lang.Runnable, ConfigurationChangeListener<LDIFConnectionHandlerCfg>, AlertGenerator

public final class LDIFConnectionHandler
extends ConnectionHandler<LDIFConnectionHandlerCfg>
implements ConfigurationChangeListener<LDIFConnectionHandlerCfg>, AlertGenerator

This class defines an LDIF connection handler, which can be used to watch for new LDIF files to be placed in a specified directory. If a new LDIF file is detected, the connection handler will process any changes contained in that file as internal operations.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
LDIFConnectionHandler()
          Creates a new instance of this connection handler.
 
Method Summary
 ConfigChangeResult applyConfigurationChange(LDIFConnectionHandlerCfg configuration)
          Applies the configuration changes to this change listener.
 void finalizeConnectionHandler(Message finalizeReason, boolean closeConnections)
          Closes this connection handler so that it will no longer accept new client connections.
 java.util.LinkedHashMap<java.lang.String,java.lang.String> getAlerts()
          Retrieves information about the set of alerts that this generator may produce.
 java.lang.String getClassName()
          Retrieves the fully-qualified name of the Java class for this alert generator implementation.
 java.util.Collection<ClientConnection> getClientConnections()
          Retrieves the set of active client connections that have been established through this connection handler.
 DN getComponentEntryDN()
          Retrieves the DN of the configuration entry with which this alert generator is associated.
 java.lang.String getConnectionHandlerName()
          Retrieves a name that may be used to refer to this connection handler.
 java.util.Collection<HostPort> getListeners()
          Retrieves information about the listener(s) that will be used to accept client connections.
 java.lang.String getProtocol()
          Retrieves the name of the protocol used to communicate with clients.
 void initializeConnectionHandler(LDIFConnectionHandlerCfg configuration)
          Initializes this connection handler provider based on the information in the provided connection handler configuration.
 boolean isConfigurationAcceptable(ConnectionHandlerCfg configuration, java.util.List<Message> unacceptableReasons)
          Indicates whether the provided configuration is acceptable for this connection handler.
 boolean isConfigurationChangeAcceptable(LDIFConnectionHandlerCfg configuration, java.util.List<Message> unacceptableReasons)
          Indicates whether the proposed change to the configuration is acceptable to this change listener.
 void run()
          Operates in a loop, accepting new connections and ensuring that requests on those connections are handled properly.
 void toString(java.lang.StringBuilder buffer)
          Appends a string representation of this connection handler to the provided buffer.
 
Methods inherited from class org.opends.server.api.ConnectionHandler
getConnectionHandlerMonitor, setConnectionHandlerMonitor, toString
 
Methods inherited from class org.opends.server.api.DirectoryThread
getAssociatedTask, getCreationStackTrace, getDebugProperties, getParentThread, setAssociatedTask
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LDIFConnectionHandler

public LDIFConnectionHandler()
Creates a new instance of this connection handler. All initialization should be performed in the initializeConnectionHandler method.

Method Detail

initializeConnectionHandler

public void initializeConnectionHandler(LDIFConnectionHandlerCfg configuration)
Initializes this connection handler provider based on the information in the provided connection handler configuration.

Specified by:
initializeConnectionHandler in class ConnectionHandler<LDIFConnectionHandlerCfg>
Parameters:
configuration - The connection handler configuration that contains the information to use to initialize this connection handler.

finalizeConnectionHandler

public void finalizeConnectionHandler(Message finalizeReason,
                                      boolean closeConnections)
Closes this connection handler so that it will no longer accept new client connections. It may or may not disconnect existing client connections based on the provided flag. Note, however, that some connection handler implementations may not have any way to continue processing requests from existing connections, in which case they should always be closed regardless of the value of the closeConnections flag.

Specified by:
finalizeConnectionHandler in class ConnectionHandler<LDIFConnectionHandlerCfg>
Parameters:
finalizeReason - The reason that this connection handler should be finalized.
closeConnections - Indicates whether any established client connections associated with the connection handler should also be closed.

getConnectionHandlerName

public java.lang.String getConnectionHandlerName()
Retrieves a name that may be used to refer to this connection handler. Every connection handler instance (even handlers of the same type) must have a unique name.

Specified by:
getConnectionHandlerName in class ConnectionHandler<LDIFConnectionHandlerCfg>
Returns:
A unique name that may be used to refer to this connection handler.

getProtocol

public java.lang.String getProtocol()
Retrieves the name of the protocol used to communicate with clients. It should take into account any special naming that may be needed to express any security mechanisms or other constraints in place (e.g., "LDAPS" for LDAP over SSL).

Specified by:
getProtocol in class ConnectionHandler<LDIFConnectionHandlerCfg>
Returns:
The name of the protocol used to communicate with clients.

getListeners

public java.util.Collection<HostPort> getListeners()
Retrieves information about the listener(s) that will be used to accept client connections.

Specified by:
getListeners in class ConnectionHandler<LDIFConnectionHandlerCfg>
Returns:
Information about the listener(s) that will be used to accept client connections, or an empty list if this connection handler does not accept connections from network clients.

getClientConnections

public java.util.Collection<ClientConnection> getClientConnections()
Retrieves the set of active client connections that have been established through this connection handler.

Specified by:
getClientConnections in class ConnectionHandler<LDIFConnectionHandlerCfg>
Returns:
The set of active client connections that have been established through this connection handler.

run

public void run()
Operates in a loop, accepting new connections and ensuring that requests on those connections are handled properly.

Specified by:
run in interface java.lang.Runnable
Specified by:
run in class ConnectionHandler<LDIFConnectionHandlerCfg>

toString

public void toString(java.lang.StringBuilder buffer)
Appends a string representation of this connection handler to the provided buffer.

Specified by:
toString in class ConnectionHandler<LDIFConnectionHandlerCfg>
Parameters:
buffer - The buffer to which the information should be appended.

isConfigurationAcceptable

public boolean isConfigurationAcceptable(ConnectionHandlerCfg configuration,
                                         java.util.List<Message> unacceptableReasons)
Indicates whether the provided configuration is acceptable for this connection handler. It should be possible to call this method on an uninitialized connection handler instance in order to determine whether the connection handler would be able to use the provided configuration.

Note that implementations which use a subclass of the provided configuration class will likely need to cast the configuration to the appropriate subclass type.

Overrides:
isConfigurationAcceptable in class ConnectionHandler<LDIFConnectionHandlerCfg>
Parameters:
configuration - The connection handler configuration for which to make the determination.
unacceptableReasons - A list that may be used to hold the reasons that the provided configuration is not acceptable.
Returns:
true if the provided configuration is acceptable for this connection handler, or false if not.

isConfigurationChangeAcceptable

public boolean isConfigurationChangeAcceptable(LDIFConnectionHandlerCfg configuration,
                                               java.util.List<Message> unacceptableReasons)
Indicates whether the proposed change to the configuration is acceptable to this change listener.

Specified by:
isConfigurationChangeAcceptable in interface ConfigurationChangeListener<LDIFConnectionHandlerCfg>
Parameters:
configuration - The new configuration containing the changes.
unacceptableReasons - A list that can be used to hold messages about why the provided configuration is not acceptable.
Returns:
Returns true if the proposed change is acceptable, or false if it is not.

applyConfigurationChange

public ConfigChangeResult applyConfigurationChange(LDIFConnectionHandlerCfg configuration)
Applies the configuration changes to this change listener.

Specified by:
applyConfigurationChange in interface ConfigurationChangeListener<LDIFConnectionHandlerCfg>
Parameters:
configuration - The new configuration containing the changes.
Returns:
Returns information about the result of changing the configuration.

getComponentEntryDN

public DN getComponentEntryDN()
Retrieves the DN of the configuration entry with which this alert generator is associated.

Specified by:
getComponentEntryDN in interface AlertGenerator
Returns:
The DN of the configuration entry with which this alert generator is associated.

getClassName

public java.lang.String getClassName()
Retrieves the fully-qualified name of the Java class for this alert generator implementation.

Specified by:
getClassName in interface AlertGenerator
Returns:
The fully-qualified name of the Java class for this alert generator implementation.

getAlerts

public java.util.LinkedHashMap<java.lang.String,java.lang.String> getAlerts()
Retrieves information about the set of alerts that this generator may produce. The map returned should be between the notification type for a particular notification and the human-readable description for that notification. This alert generator must not generate any alerts with types that are not contained in this list.

Specified by:
getAlerts in interface AlertGenerator
Returns:
Information about the set of alerts that this generator may produce.