mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

neil_a_wilson
02.32.2006 48e73e27e5a6b254471fabeefa3a197dd071c1b8
Perform significant refactoring in the core and plugin code in order to help
make it easier for external developers to extend OpenDS. In particular, this
is a big step towards eliminating the need for developers to reference anything
in the core package, and it's also a signficant simplification to the plugin
API because it helps expose which operation methods are safe to call at various
points in the plugin processing.

The most significant changes in this commit include:

- I've created a new org.opends.server.types.operation package and added
a lot of interfaces into it. These interfaces define the set of methods
that may be called on operations at various points in plugin processing
(e.g., there's a PreParseAddOperation interface that exposes the methods
of the AddOperation class that are safe to call from a pre-parse
plugin). All of the core operation types now implement the appropriate
set of interfaces, and the plugin API methods now take these interfaces
as arguments rather than the Operation subclass itself.

- I've moved a number of classes from the core package to the types
package. All references to these classes anywhere in the code were
updated to reflect the change. The classes that were moved include:
* CancelledOperationException
* CancelRequest
* CancelResult
* CryptoManager
* DirectoryException
* InitializationException
* LockManager
* OperationType
* Schema

- I've also moved the test cases for the DirectoryException and
InitializationException classes from the core to the types package.

- Some general cleanup in the core operation classes. Virtually all
methods should now be marked final. All methods inherited from the
abstract Operation class now use "{@inheritDoc}" for the javadoc
documentation and have the "@override" annotation.

- The DirectoryServerPlugin class has been updated so that the default
implementations for all plugin methods now throw a runtime exception to
indicate that the requested functionality has not been implemented.
3 files deleted
47 files added
8 files renamed
305 files modified
19076 ■■■■■ changed files
opends/src/server/org/opends/server/api/AccessControlProvider.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/AccessLogger.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/AlertHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/AttributeSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/AttributeValueDecoder.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/Backend.java 8 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/CertificateMapper.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/ClientConnection.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/ConfigHandler.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/ConnectionHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/ConnectionSecurityProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/DebugLogger.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/EntryCache.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/ErrorLogger.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/ExtendedOperationHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/IdentityMapper.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/InvokableComponent.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/KeyManagerProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/MatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/MonitorProvider.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/PasswordGenerator.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/PasswordValidator.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/SASLMechanismHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/SubstringMatchingRule.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/SynchronizationProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/TrustManagerProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/VirtualAttribute.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/WorkQueue.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java 427 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/authorization/BasicAccessControlProvider.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/BackupBackend.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/MemoryBackend.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/MonitorBackend.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/RootDSEBackend.java 10 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/SchemaBackend.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/BackendImpl.java 14 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/BackupManager.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/Config.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/DN2URI.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/EntryContainer.java 10 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/EqualityIndexer.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/ImportJob.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/Index.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/JebFormat.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/OrderingIndexer.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/SubstringIndexer.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/VerifyJob.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/task/RecurringTask.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/task/Task.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/task/TaskBackend.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/task/TaskScheduler.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/changelog/ChangelogDB.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/changelog/DbHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/changelog/ServerHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/config/ConfigFileHandler.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/config/JMXMBean.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/AbandonOperation.java 141 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/AbsoluteSubtreeSpecification.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/AccessControlConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/AddOperation.java 294 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/BackendConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/BindOperation.java 192 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/CancelRequest.java 205 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/CertificateMapperConfigManager.java 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/CompareOperation.java 182 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/CoreConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/DeleteOperation.java 163 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/DirectoryServer.java 34 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/EntryCacheConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/ExtendedOperation.java 176 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/ExtendedOperationConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/IdentityMapperConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/LockManager.java 783 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/LoggerConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/ModifyDNOperation.java 243 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/ModifyOperation.java 208 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/MonitorConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/Operation.java 221 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/PasswordPolicy.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/PasswordPolicyConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/PasswordPolicyState.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/PasswordValidatorConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/PersistentSearch.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/PluginConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/RFC3672SubtreeSpecification.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/RelativeSubtreeSpecification.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/RootDNConfigManager.java 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/SASLConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/Schema.java 2178 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/SchemaConfigManager.java 3 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/SearchOperation.java 265 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/SimpleSubtreeSpecification.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/UnbindOperation.java 161 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/AnonymousSASLMechanismHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/Base64PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/BlindTrustManagerProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/ClearPasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/DefaultEntryCache.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/FIFOEntryCache.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/InternalConnectionSecurityProvider.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/JMXAlertHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/NullKeyManagerProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/NullTrustManagerProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/TLSCapableConnection.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/WhoAmIExtendedOperation.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/loggers/DirectoryFileHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/messages/PluginMessages.java 16 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/monitors/StackTraceMonitorProvider.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/monitors/SystemInfoMonitorProvider.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/monitors/TraditionalWorkQueueMonitor.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/plugins/EntryUUIDPlugin.java 100 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/plugins/LDAPADListPlugin.java 125 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/plugins/LastModPlugin.java 189 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java 112 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java 95 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/protocols/internal/InternalConnectionHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/BitStringSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/BooleanSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/IntegerSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/NameFormSyntax.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/ObjectClassSyntax.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/UTCTimeSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/UserPasswordSyntax.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/synchronization/MultimasterSynchronization.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/synchronization/ServerStartMessage.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/synchronization/ServerState.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tasks/BackupTask.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tasks/ExportTask.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tasks/ImportTask.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tasks/RestoreTask.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tasks/ShutdownTask.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tasks/TaskUtils.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/BackUpDB.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/ConfigureDS.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/EncodePassword.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/ExportLDIF.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/ImportLDIF.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDIFModify.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/RestoreDB.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/VerifyIndex.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/AttributeValueTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/DNTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/FileTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/FirstNameTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/GUIDTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/IfAbsentTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/IfPresentTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/LastNameTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/ParentDNTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/PresenceTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/RDNTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/RandomTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/SequentialTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/StaticTextTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/Tag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/TemplateFile.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/UnderscoreDNTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/makeldif/UnderscoreParentDNTag.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/AttributeType.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/AttributeValue.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/BackupDirectory.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/CancelRequest.java 184 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/CancelResult.java 47 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/CancelledOperationException.java 73 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/CryptoManager.java 448 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/DN.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/DirectoryException.java 125 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/Entry.java 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/FilePermission.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/InitializationException.java 48 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/InvokableMethod.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/LDAPURL.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/LDIFExportConfig.java 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/LDIFImportConfig.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/LockManager.java 836 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/OperationType.java 15 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/RDN.java 3 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/Schema.java 2381 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/SearchFilter.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/InProgressOperation.java 417 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationAbandonOperation.java 49 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java 131 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationBindOperation.java 197 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationCompareOperation.java 101 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationDeleteOperation.java 73 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationExtendedOperation.java 102 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationModifyDNOperation.java 184 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java 143 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationOperation.java 402 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java 173 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostOperationUnbindOperation.java 41 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java 131 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseBindOperation.java 173 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseCompareOperation.java 101 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseDeleteOperation.java 73 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseExtendedOperation.java 82 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseModifyDNOperation.java 184 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java 143 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseOperation.java 315 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java 173 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java 189 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationBindOperation.java 146 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationCompareOperation.java 111 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationDeleteOperation.java 73 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationExtendedOperation.java 84 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationModifyDNOperation.java 196 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java 164 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationOperation.java 415 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java 151 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseAbandonOperation.java 49 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java 101 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseBindOperation.java 157 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseCompareOperation.java 101 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseDeleteOperation.java 64 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseExtendedOperation.java 106 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseModifyDNOperation.java 135 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java 105 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseOperation.java 422 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java 209 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/PreParseUnbindOperation.java 41 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java 151 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java 151 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/operation/package-info.java 43 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/util/LDIFReader.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/changelog/UpdateComparatorTest.java 6 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java 2 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java 41 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/PasswordPolicyTestCase.java 1 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestAbsoluteSubtreeSpecification.java 1 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandlerTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandlerTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandlerTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java 4 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExternalSASLMechanismHandlerTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedKeyManagerProviderTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedTrustManagerProviderTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/LengthBasedPasswordValidatorTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordStorageSchemeTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/RandomPasswordGeneratorTestCase.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java 43 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java 275 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/InvocationCounterPlugin.java 150 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java 132 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java 4 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java 20 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java 30 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ServerStateTest.java 24 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationMsgTest.java 64 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java 58 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/LdifFileWriter.java 2 ●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/types/DirectoryExceptionTestCase.java 6 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/types/InitializationExceptionTestCase.java 4 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestDN.java 1 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestEntry.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/api/AccessControlProvider.java
@@ -28,7 +28,7 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
/**
 * This class defines an interface for managing the life-cycle of an
opends/src/server/org/opends/server/api/AccessLogger.java
@@ -36,12 +36,12 @@
import org.opends.server.core.CompareOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.UnbindOperation;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.InitializationException;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SearchResultReference;
opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java
@@ -30,10 +30,10 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.AccountStatusNotification;
import org.opends.server.types.AccountStatusNotificationType;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/AlertHandler.java
@@ -30,7 +30,7 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/api/AttributeSyntax.java
@@ -30,8 +30,8 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ByteString;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/AttributeValueDecoder.java
@@ -26,8 +26,8 @@
 */
package org.opends.server.api;
import org.opends.server.core.DirectoryException;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
/**
 * A factory interface for decoding attribute values into objects.
opends/src/server/org/opends/server/api/Backend.java
@@ -36,21 +36,21 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.AddOperation;
import org.opends.server.core.CancelledOperationException;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockManager;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LockManager;
import org.opends.server.types.RestoreConfig;
import org.opends.server.types.WritabilityMode;
opends/src/server/org/opends/server/api/CertificateMapper.java
@@ -32,9 +32,9 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/ClientConnection.java
@@ -34,14 +34,14 @@
import java.util.concurrent.CopyOnWriteArrayList;
import org.opends.server.api.plugin.IntermediateResponsePluginResult;
import org.opends.server.core.CancelRequest;
import org.opends.server.core.CancelResult;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.Operation;
import org.opends.server.core.PersistentSearch;
import org.opends.server.core.PluginConfigManager;
import org.opends.server.core.SearchOperation;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.IntermediateResponse;
import org.opends.server.types.SearchResultEntry;
opends/src/server/org/opends/server/api/ConfigHandler.java
@@ -30,9 +30,9 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/api/ConnectionHandler.java
@@ -31,7 +31,7 @@
import java.util.Collection;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/ConnectionSecurityProvider.java
@@ -32,8 +32,8 @@
import java.nio.channels.SocketChannel;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/api/DebugLogger.java
@@ -31,9 +31,9 @@
import java.nio.ByteBuffer;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DebugLogCategory;
import org.opends.server.types.DebugLogSeverity;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/api/EntryCache.java
@@ -33,9 +33,9 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockType;
opends/src/server/org/opends/server/api/ErrorLogger.java
@@ -30,9 +30,9 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/api/ExtendedOperationHandler.java
@@ -31,7 +31,7 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/IdentityMapper.java
@@ -30,9 +30,9 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/InvokableComponent.java
@@ -29,7 +29,7 @@
import org.opends.server.config.ConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.InvokableMethod;
opends/src/server/org/opends/server/api/KeyManagerProvider.java
@@ -32,8 +32,8 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/api/MatchingRule.java
@@ -30,10 +30,10 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConditionResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/MonitorProvider.java
@@ -32,8 +32,8 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.Attribute;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/PasswordGenerator.java
@@ -30,10 +30,10 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/PasswordStorageScheme.java
@@ -30,9 +30,9 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/PasswordValidator.java
@@ -31,9 +31,9 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.Operation;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ByteString;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/SASLMechanismHandler.java
@@ -31,7 +31,7 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.BindOperation;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/SubstringMatchingRule.java
@@ -30,9 +30,9 @@
import java.util.List;
import org.opends.server.core.DirectoryException;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConditionResult;
import org.opends.server.types.DirectoryException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/SynchronizationProvider.java
@@ -32,10 +32,10 @@
import org.opends.server.config.ConfigException;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.SynchronizationProviderResult;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/api/TrustManagerProvider.java
@@ -32,8 +32,8 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/api/VirtualAttribute.java
@@ -30,11 +30,11 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.core.SearchOperation;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.SearchResultEntry;
opends/src/server/org/opends/server/api/WorkQueue.java
@@ -30,9 +30,9 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.core.Operation;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java
@@ -33,28 +33,21 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.AbandonOperation;
import org.opends.server.core.AddOperation;
import org.opends.server.core.BindOperation;
import org.opends.server.core.CompareOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.UnbindOperation;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.IntermediateResponse;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SearchResultReference;
import org.opends.server.types.operation.*;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.PluginMessages.*;
@@ -168,7 +161,7 @@
   *
   * @return  The DN of the configuration entry for this plugin.
   */
  public DN getPluginEntryDN()
  public final DN getPluginEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getPluginEntryDN");
@@ -183,7 +176,7 @@
   *
   * @return  The plugin types for which this plugin is registered.
   */
  public Set<PluginType> getPluginTypes()
  public final Set<PluginType> getPluginTypes()
  {
    assert debugEnter(CLASS_NAME, "getPluginTypes");
@@ -196,8 +189,7 @@
   * Performs any processing that should be done when the Directory
   * Server is in the process of starting.  This method will be called
   * after virtually all other initialization has been performed but
   * before other plugins have before the connection handlers are
   * started.
   * before the connection handlers are started.
   *
   * @return  The result of the startup plugin processing.
   */
@@ -205,8 +197,10 @@
  {
    assert debugEnter(CLASS_NAME, "doStartup");
    // No implementation is required by default.
    return new StartupPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                                PluginType.STARTUP.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -222,7 +216,10 @@
  {
    assert debugEnter(CLASS_NAME, "doShutdown");
    // No implementation is required by default.
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                                PluginType.SHUTDOWN.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -244,8 +241,10 @@
    assert debugEnter(CLASS_NAME, "doPostConnect",
                      String.valueOf(clientConnection));
    // No implementation is required by default.
    return new PostConnectPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                                PluginType.POST_CONNECT.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -278,8 +277,10 @@
                      String.valueOf(messageID),
                      String.valueOf(message));
    // No implementation is required by default.
    return new PostDisconnectPluginResult();
    int    msgID = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String msg   = getMessage(msgID, String.valueOf(pluginDN),
                              PluginType.POST_DISCONNECT.getName());
    throw new UnsupportedOperationException(msg);
  }
@@ -303,8 +304,10 @@
                      String.valueOf(importConfig),
                      String.valueOf(entry));
    // No implementation is required by default.
    return new LDIFPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                                PluginType.LDIF_IMPORT.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -326,8 +329,10 @@
                      String.valueOf(exportConfig),
                      String.valueOf(entry));
    // No implementation is required by default.
    return new LDIFPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                                PluginType.LDIF_EXPORT.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -341,14 +346,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(AbandonOperation
                                              abandonOperation)
  public PreParsePluginResult
       doPreParse(PreParseAbandonOperation abandonOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(abandonOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_PARSE_ABANDON.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -364,13 +371,16 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult
              doPostOperation(AbandonOperation abandonOperation)
       doPostOperation(PostOperationAbandonOperation abandonOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(abandonOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.POST_OPERATION_ABANDON.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -383,13 +393,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(AddOperation addOperation)
  public PreParsePluginResult
       doPreParse(PreParseAddOperation addOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(addOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                                PluginType.PRE_PARSE_ADD.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -405,14 +418,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreOperationPluginResult doPreOperation(AddOperation
                                                      addOperation)
  public PreOperationPluginResult
       doPreOperation(PreOperationAddOperation addOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(addOperation));
    // No implementation is required by default.
    return new PreOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_OPERATION_ADD.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -428,14 +443,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult doPostOperation(AddOperation
                                                        addOperation)
  public PostOperationPluginResult
       doPostOperation(PostOperationAddOperation addOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(addOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_OPERATION_ADD.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -451,14 +468,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PostResponsePluginResult doPostResponse(AddOperation
                                                      addOperation)
  public PostResponsePluginResult
       doPostResponse(PostResponseAddOperation addOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostResponse",
                      String.valueOf(addOperation));
    // No implementation is required by default.
    return new PostResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_RESPONSE_ADD.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -472,13 +491,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(BindOperation bindOperation)
  public PreParsePluginResult
       doPreParse(PreParseBindOperation bindOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(bindOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                                PluginType.PRE_PARSE_BIND.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -492,14 +514,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreOperationPluginResult doPreOperation(BindOperation
                                                      bindOperation)
  public PreOperationPluginResult
       doPreOperation(PreOperationBindOperation bindOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(bindOperation));
    // No implementation is required by default.
    return new PreOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_OPERATION_BIND.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -515,14 +539,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult doPostOperation(BindOperation
                                                        bindOperation)
  public PostOperationPluginResult
       doPostOperation(PostOperationBindOperation bindOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(bindOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_OPERATION_BIND.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -538,14 +564,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PostResponsePluginResult doPostResponse(BindOperation
                                                      bindOperation)
  public PostResponsePluginResult
       doPostResponse(PostResponseBindOperation bindOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostResponse",
                      String.valueOf(bindOperation));
    // No implementation is required by default.
    return new PostResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_RESPONSE_BIND.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -559,14 +587,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(CompareOperation
                                              compareOperation)
  public PreParsePluginResult
       doPreParse(PreParseCompareOperation compareOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(compareOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_PARSE_COMPARE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -581,13 +611,15 @@
   * @return  Information about the result of the plugin processing.
   */
  public PreOperationPluginResult
              doPreOperation(CompareOperation compareOperation)
       doPreOperation(PreOperationCompareOperation compareOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(compareOperation));
    // No implementation is required by default.
    return new PreOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_OPERATION_COMPARE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -604,13 +636,16 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult
              doPostOperation(CompareOperation compareOperation)
       doPostOperation(PostOperationCompareOperation compareOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(compareOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.POST_OPERATION_COMPARE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -627,13 +662,15 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostResponsePluginResult
              doPostResponse(CompareOperation compareOperation)
       doPostResponse(PostResponseCompareOperation compareOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostResponse",
                      String.valueOf(compareOperation));
    // No implementation is required by default.
    return new PostResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_RESPONSE_COMPARE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -647,14 +684,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(DeleteOperation
                                              deleteOperation)
  public PreParsePluginResult
       doPreParse(PreParseDeleteOperation deleteOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(deleteOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_PARSE_DELETE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -670,14 +709,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreOperationPluginResult doPreOperation(DeleteOperation
                                                      deleteOperation)
  public PreOperationPluginResult
       doPreOperation(PreOperationDeleteOperation deleteOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(deleteOperation));
    // No implementation is required by default.
    return new PreOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_OPERATION_DELETE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -694,13 +735,15 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult
              doPostOperation(DeleteOperation deleteOperation)
       doPostOperation(PostOperationDeleteOperation deleteOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(deleteOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_OPERATION_DELETE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -716,14 +759,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PostResponsePluginResult doPostResponse(DeleteOperation
                                                      deleteOperation)
  public PostResponsePluginResult
       doPostResponse(PostResponseDeleteOperation deleteOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostResponse",
                      String.valueOf(deleteOperation));
    // No implementation is required by default.
    return new PostResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_RESPONSE_DELETE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -737,14 +782,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(ExtendedOperation
                                              extendedOperation)
  public PreParsePluginResult
       doPreParse(PreParseExtendedOperation extendedOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(extendedOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_PARSE_EXTENDED.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -760,13 +807,16 @@
   * @return  Information about the result of the plugin processing.
   */
  public PreOperationPluginResult
              doPreOperation(ExtendedOperation extendedOperation)
       doPreOperation(PreOperationExtendedOperation extendedOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(extendedOperation));
    // No implementation is required by default.
    return new PreOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.PRE_OPERATION_EXTENDED.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -784,13 +834,17 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult
              doPostOperation(ExtendedOperation extendedOperation)
       doPostOperation(PostOperationExtendedOperation
                            extendedOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(extendedOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.POST_OPERATION_EXTENDED.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -807,13 +861,16 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostResponsePluginResult
              doPostResponse(ExtendedOperation extendedOperation)
       doPostResponse(PostResponseExtendedOperation extendedOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostResponse",
                      String.valueOf(extendedOperation));
    // No implementation is required by default.
    return new PostResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.POST_RESPONSE_EXTENDED.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -827,14 +884,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(ModifyOperation
                                              modifyOperation)
  public PreParsePluginResult
       doPreParse(PreParseModifyOperation modifyOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(modifyOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_PARSE_MODIFY.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -850,14 +909,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreOperationPluginResult doPreOperation(ModifyOperation
                                                      modifyOperation)
  public PreOperationPluginResult
       doPreOperation(PreOperationModifyOperation modifyOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(modifyOperation));
    // No implementation is required by default.
    return new PreOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_OPERATION_MODIFY.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -874,13 +935,15 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult
              doPostOperation(ModifyOperation modifyOperation)
       doPostOperation(PostOperationModifyOperation modifyOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(modifyOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_OPERATION_MODIFY.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -896,14 +959,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PostResponsePluginResult doPostResponse(ModifyOperation
                                                      modifyOperation)
  public PostResponsePluginResult
       doPostResponse(PostResponseModifyOperation modifyOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostResponse",
                      String.valueOf(modifyOperation));
    // No implementation is required by default.
    return new PostResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_RESPONSE_MODIFY.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -917,14 +982,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(ModifyDNOperation
                                              modifyDNOperation)
  public PreParsePluginResult
       doPreParse(PreParseModifyDNOperation modifyDNOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(modifyDNOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_PARSE_MODIFY_DN.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -942,13 +1009,16 @@
   * @return  Information about the result of the plugin processing.
   */
  public PreOperationPluginResult
              doPreOperation(ModifyDNOperation modifyDNOperation)
       doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(modifyDNOperation));
    // No implementation is required by default.
    return new PreOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.PRE_OPERATION_MODIFY_DN.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -965,13 +1035,17 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult
              doPostOperation(ModifyDNOperation modifyDNOperation)
       doPostOperation(PostOperationModifyDNOperation
                            modifyDNOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(modifyDNOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.POST_OPERATION_MODIFY_DN.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -988,13 +1062,16 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostResponsePluginResult
              doPostResponse(ModifyDNOperation modifyDNOperation)
       doPostResponse(PostResponseModifyDNOperation modifyDNOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostResponse",
                      String.valueOf(modifyDNOperation));
    // No implementation is required by default.
    return new PostResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.POST_RESPONSE_MODIFY_DN.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1008,14 +1085,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(SearchOperation
                                              searchOperation)
  public PreParsePluginResult
       doPreParse(PreParseSearchOperation searchOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(searchOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_PARSE_SEARCH.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1029,14 +1108,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreOperationPluginResult doPreOperation(SearchOperation
                                                      searchOperation)
  public PreOperationPluginResult
       doPreOperation(PreOperationSearchOperation searchOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(searchOperation));
    // No implementation is required by default.
    return new PreOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_OPERATION_SEARCH.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1057,16 +1138,18 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public SearchEntryPluginResult processSearchEntry(
                                      SearchOperation searchOperation,
                                      SearchResultEntry searchEntry)
  public SearchEntryPluginResult
       processSearchEntry(SearchEntrySearchOperation searchOperation,
                          SearchResultEntry searchEntry)
  {
    assert debugEnter(CLASS_NAME, "processSearchEntry",
                      String.valueOf(searchOperation),
                      String.valueOf(searchEntry));
    // No implementation is required by default.
    return new SearchEntryPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.SEARCH_RESULT_ENTRY.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1084,15 +1167,19 @@
   * @return  Information about the result of the plugin processing.
   */
  public SearchReferencePluginResult
              processSearchReference(SearchOperation searchOperation,
                   SearchResultReference searchReference)
       processSearchReference(SearchReferenceSearchOperation
                                   searchOperation,
                              SearchResultReference searchReference)
  {
    assert debugEnter(CLASS_NAME, "processSearchReference",
                      String.valueOf(searchOperation),
                      String.valueOf(searchReference));
    // No implementation is required by default.
    return new SearchReferencePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message =
         getMessage(msgID, String.valueOf(pluginDN),
                    PluginType.SEARCH_RESULT_REFERENCE.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1109,13 +1196,15 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult
              doPostOperation(SearchOperation searchOperation)
       doPostOperation(PostOperationSearchOperation searchOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(searchOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_OPERATION_SEARCH.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1131,14 +1220,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PostResponsePluginResult doPostResponse(SearchOperation
                                                      searchOperation)
  public PostResponsePluginResult
       doPostResponse(PostResponseSearchOperation searchOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostResponse",
                      String.valueOf(searchOperation));
    // No implementation is required by default.
    return new PostResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_RESPONSE_SEARCH.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1152,14 +1243,16 @@
   *
   * @return  Information about the result of the plugin processing.
   */
  public PreParsePluginResult doPreParse(UnbindOperation
                                              unbindOperation)
  public PreParsePluginResult
       doPreParse(PreParseUnbindOperation unbindOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParse",
                      String.valueOf(unbindOperation));
    // No implementation is required by default.
    return new PreParsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.PRE_PARSE_UNBIND.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1175,13 +1268,15 @@
   * @return  Information about the result of the plugin processing.
   */
  public PostOperationPluginResult
              doPostOperation(UnbindOperation unbindOperation)
       doPostOperation(PostOperationUnbindOperation unbindOperation)
  {
    assert debugEnter(CLASS_NAME, "doPostOperation",
                      String.valueOf(unbindOperation));
    // No implementation is required by default.
    return new PostOperationPluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.POST_OPERATION_UNBIND.getName());
    throw new UnsupportedOperationException(message);
  }
@@ -1202,8 +1297,10 @@
    assert debugEnter(CLASS_NAME, "processIntermediateResponse",
                      String.valueOf(intermediateResponse));
    // No implementation is required by default.
    return new IntermediateResponsePluginResult();
    int    msgID   = MSGID_PLUGIN_TYPE_NOT_SUPPORTED;
    String message = getMessage(msgID, String.valueOf(pluginDN),
                          PluginType.INTERMEDIATE_RESPONSE.getName());
    throw new UnsupportedOperationException(message);
  }
}
opends/src/server/org/opends/server/authorization/BasicAccessControlProvider.java
@@ -33,7 +33,7 @@
import org.opends.server.api.AccessControlProvider;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
/**
 * This class implements an access control handler for the Directory
opends/src/server/org/opends/server/backends/BackupBackend.java
@@ -47,9 +47,7 @@
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
@@ -63,8 +61,10 @@
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.ObjectClass;
opends/src/server/org/opends/server/backends/MemoryBackend.java
@@ -38,7 +38,6 @@
import org.opends.server.config.ConfigException;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
@@ -46,6 +45,7 @@
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LDIFExportConfig;
opends/src/server/org/opends/server/backends/MonitorBackend.java
@@ -44,9 +44,7 @@
import org.opends.server.config.ConfigException;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
@@ -57,8 +55,10 @@
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.ObjectClass;
opends/src/server/org/opends/server/backends/RootDSEBackend.java
@@ -48,13 +48,8 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.core.AddOperation;
import org.opends.server.core.CancelledOperationException;
import org.opends.server.core.CancelRequest;
import org.opends.server.core.CancelResult;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
@@ -64,11 +59,16 @@
import org.opends.server.types.AttributeValue;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.ObjectClass;
opends/src/server/org/opends/server/backends/SchemaBackend.java
@@ -59,11 +59,8 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.core.AddOperation;
import org.opends.server.core.CryptoManager;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
@@ -74,10 +71,13 @@
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.CryptoManager;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.ObjectClass;
opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
@@ -40,11 +40,11 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
import org.opends.server.types.SearchFilter;
opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -58,23 +58,23 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.core.AddOperation;
import org.opends.server.core.CancelledOperationException;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DebugLogCategory;
import org.opends.server.types.DebugLogSeverity;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.RestoreConfig;
@@ -1046,9 +1046,9 @@
   * @param modifyDNOperation The modify DN operation with which this action is
   *                          associated.  This may be <CODE>null</CODE> for
   *                          modify DN operations performed internally.
   * @throws org.opends.server.core.DirectoryException
   * @throws org.opends.server.types.DirectoryException
   *          If a problem occurs while trying to perform the rename.
   * @throws org.opends.server.core.CancelledOperationException
   * @throws org.opends.server.types.CancelledOperationException
   *          If this backend noticed and reacted to a request to cancel or
   *          abandon the modify DN operation.
   */
@@ -1104,7 +1104,7 @@
   * <CODE>SearchOperation.returnEntry</CODE> method.
   *
   * @param searchOperation The search operation to be processed.
   * @throws org.opends.server.core.DirectoryException
   * @throws org.opends.server.types.DirectoryException
   *          If a problem occurs while processing the search.
   */
  public void search(SearchOperation searchOperation)
@@ -1142,7 +1142,7 @@
   * @param configEntry  The configuration entry for this backend.
   * @param baseDNs      The set of base DNs configured for this backend.
   * @param exportConfig The configuration to use when performing the export.
   * @throws org.opends.server.core.DirectoryException
   * @throws org.opends.server.types.DirectoryException
   *          If a problem occurs while performing the LDIF export.
   */
  public void exportLDIF(ConfigEntry configEntry, DN[] baseDNs,
opends/src/server/org/opends/server/backends/jeb/BackupManager.java
@@ -28,13 +28,13 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.CryptoManager;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.util.DynamicConstants;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.types.CryptoManager;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.RestoreConfig;
opends/src/server/org/opends/server/backends/jeb/Config.java
@@ -52,9 +52,9 @@
import org.opends.server.config.IntegerWithUnitConfigAttribute;
import org.opends.server.config.MultiChoiceConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/backends/jeb/DN2URI.java
@@ -37,13 +37,13 @@
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LDAPURL;
opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
@@ -41,9 +41,7 @@
import org.opends.server.api.Backend;
import org.opends.server.api.EntryCache;
import org.opends.server.core.AddOperation;
import org.opends.server.core.CancelledOperationException;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
@@ -55,7 +53,9 @@
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LockType;
@@ -504,7 +504,7 @@
   * <CODE>SearchOperation.returnEntry</CODE> method.
   *
   * @param searchOperation The search operation to be processed.
   * @throws org.opends.server.core.DirectoryException
   * @throws org.opends.server.types.DirectoryException
   *          If a problem occurs while processing the
   *          search.
   * @throws DatabaseException If an error occurs in the JE database.
@@ -2454,10 +2454,10 @@
   * @param modifyDNOperation The modify DN operation with which this action
   *                          is associated.  This may be <CODE>null</CODE>
   *                          for modify DN operations performed internally.
   * @throws org.opends.server.core.DirectoryException
   * @throws org.opends.server.types.DirectoryException
   *          If a problem occurs while trying to perform
   *          the rename.
   * @throws org.opends.server.core.CancelledOperationException
   * @throws org.opends.server.types.CancelledOperationException
   *          If this backend noticed and reacted
   *          to a request to cancel or abandon the
   *          modify DN operation.
opends/src/server/org/opends/server/backends/jeb/EqualityIndexer.java
@@ -31,11 +31,11 @@
import com.sleepycat.je.Transaction;
import com.sleepycat.je.DatabaseException;
import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
opends/src/server/org/opends/server/backends/jeb/ImportJob.java
@@ -34,12 +34,12 @@
import com.sleepycat.je.Transaction;
import org.opends.server.api.Backend;
import org.opends.server.core.DirectoryException;
import org.opends.server.loggers.Debug;
import org.opends.server.messages.JebMessages;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DebugLogCategory;
import org.opends.server.types.DebugLogSeverity;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
opends/src/server/org/opends/server/backends/jeb/Index.java
@@ -41,9 +41,9 @@
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ConditionResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
opends/src/server/org/opends/server/backends/jeb/JebFormat.java
@@ -29,8 +29,6 @@
import static org.opends.server.loggers.Debug.debugEnter;
import org.opends.server.core.CryptoManager;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1Exception;
@@ -42,6 +40,8 @@
import org.opends.server.protocols.ldap.LDAPException;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.CryptoManager;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
opends/src/server/org/opends/server/backends/jeb/OrderingIndexer.java
@@ -29,11 +29,11 @@
import static org.opends.server.loggers.Debug.debugException;
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
opends/src/server/org/opends/server/backends/jeb/SubstringIndexer.java
@@ -28,10 +28,10 @@
import static org.opends.server.loggers.Debug.debugException;
import com.sleepycat.je.Transaction;
import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
opends/src/server/org/opends/server/backends/jeb/VerifyJob.java
@@ -42,7 +42,6 @@
import org.opends.server.api.Backend;
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.loggers.Debug;
import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -53,6 +52,7 @@
import org.opends.server.types.ConditionResult;
import org.opends.server.types.DebugLogCategory;
import org.opends.server.types.DebugLogSeverity;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
opends/src/server/org/opends/server/backends/task/RecurringTask.java
@@ -32,13 +32,13 @@
import java.util.LinkedHashSet;
import java.util.List;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/backends/task/Task.java
@@ -38,16 +38,16 @@
import java.util.TimeZone;
import java.util.UUID;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.util.TimeThread;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/backends/task/TaskBackend.java
@@ -43,11 +43,8 @@
import org.opends.server.config.IntegerWithUnitConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.AddOperation;
import org.opends.server.core.CancelledOperationException;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
@@ -55,7 +52,10 @@
import org.opends.server.types.Entry;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.RestoreConfig;
opends/src/server/org/opends/server/backends/task/TaskScheduler.java
@@ -41,18 +41,18 @@
import org.opends.server.api.AlertGenerator;
import org.opends.server.api.DirectoryThread;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.SearchOperation;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/changelog/ChangelogDB.java
@@ -35,10 +35,10 @@
import java.io.File;
import java.io.UnsupportedEncodingException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.core.DirectoryException;
import org.opends.server.synchronization.ChangeNumber;
import org.opends.server.synchronization.UpdateMessage;
opends/src/server/org/opends/server/changelog/DbHandler.java
@@ -45,9 +45,9 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.util.TimeThread;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.synchronization.ChangeNumber;
import org.opends.server.synchronization.UpdateMessage;
opends/src/server/org/opends/server/changelog/ServerHandler.java
@@ -49,8 +49,8 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.synchronization.AckMessage;
import org.opends.server.synchronization.ChangeNumber;
import org.opends.server.synchronization.ChangelogStartMessage;
opends/src/server/org/opends/server/config/ConfigFileHandler.java
@@ -62,11 +62,8 @@
import org.opends.server.api.ConfigHandler;
import org.opends.server.api.ConfigurableComponent;
import org.opends.server.core.AddOperation;
import org.opends.server.core.CryptoManager;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
@@ -75,11 +72,14 @@
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.CryptoManager;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/config/JMXMBean.java
@@ -53,11 +53,11 @@
import org.opends.server.api.DirectoryServerMBean;
import org.opends.server.api.InvokableComponent;
import org.opends.server.api.MonitorProvider;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.jmx.Credential;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java
@@ -31,9 +31,7 @@
import java.util.ArrayList;
import java.util.concurrent.locks.Lock;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockManager;
import org.opends.server.core.PasswordPolicyState;
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -41,8 +39,10 @@
import org.opends.server.protocols.ldap.LDAPException;
import org.opends.server.protocols.ldap.LDAPResultCode;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LockManager;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java
@@ -31,17 +31,17 @@
import java.util.concurrent.locks.Lock;
import org.opends.server.api.IdentityMapper;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockManager;
import org.opends.server.core.PasswordPolicyState;
import org.opends.server.protocols.asn1.ASN1Exception;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.ldap.LDAPException;
import org.opends.server.protocols.ldap.LDAPResultCode;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LockManager;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/core/AbandonOperation.java
@@ -32,8 +32,13 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.api.plugin.PreParsePluginResult;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.operation.PostOperationAbandonOperation;
import org.opends.server.types.operation.PreParseAbandonOperation;
import static org.opends.server.core.CoreConstants.*;
import static org.opends.server.loggers.Access.*;
@@ -50,6 +55,7 @@
 */
public class AbandonOperation
       extends Operation
       implements PreParseAbandonOperation, PostOperationAbandonOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -60,7 +66,7 @@
  // The message ID of the operation that should be abandoned.
  private int idToAbandon;
  private final int idToAbandon;
  // The time that processing started on this operation.
  private long processingStartTime;
@@ -104,7 +110,7 @@
   *
   * @return  The message ID of the operation that should be abandoned.
   */
  public int getIDToAbandon()
  public final int getIDToAbandon()
  {
    assert debugEnter(CLASS_NAME, "getIDToAbandon");
@@ -114,11 +120,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -128,12 +133,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the result was logged.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -143,14 +146,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -160,12 +159,13 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    assert debugEnter(CLASS_NAME, "getOperationType");
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -175,17 +175,13 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    assert debugEnter(CLASS_NAME, "getRequestLogElements");
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -198,16 +194,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -241,15 +231,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.  Note that abandon operations
   * must never have an associated response, so this method will not be used for
   * this type of operation.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -261,12 +246,32 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    // An abandon operation can never have a response, so just ignore this.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    // An abandon operation can never have a response, so just ignore this.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -365,16 +370,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.  Note
   * that an abandon operation may not be canceled, so this should never do
   * anything.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -385,14 +384,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.  Note that an abandon operation may not be canceled, so this
   * will always return <CODE>null</CODE>.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -402,12 +397,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/core/AbsoluteSubtreeSpecification.java
@@ -35,6 +35,7 @@
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/core/AccessControlConfigManager.java
@@ -47,6 +47,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
/**
opends/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java
@@ -48,6 +48,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/AddOperation.java
@@ -62,17 +62,27 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.LockManager;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.OperationType;
import org.opends.server.types.RDN;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SynchronizationProviderResult;
import org.opends.server.types.operation.PostOperationAddOperation;
import org.opends.server.types.operation.PostResponseAddOperation;
import org.opends.server.types.operation.PreOperationAddOperation;
import org.opends.server.types.operation.PreParseAddOperation;
import org.opends.server.util.TimeThread;
import static org.opends.server.config.ConfigConstants.*;
@@ -94,6 +104,8 @@
 */
public class AddOperation
       extends Operation
       implements PreParseAddOperation, PreOperationAddOperation,
                  PostOperationAddOperation, PostResponseAddOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -275,7 +287,7 @@
   *
   * @return  The DN of the entry in a raw, unparsed form.
   */
  public ByteString getRawEntryDN()
  public final ByteString getRawEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getRawEntryDN");
@@ -293,7 +305,7 @@
   *
   * @param  rawEntryDN  The raw entry DN for the entry to add.
   */
  public void setRawEntryDN(ByteString rawEntryDN)
  public final void setRawEntryDN(ByteString rawEntryDN)
  {
    assert debugEnter(CLASS_NAME, "setRawEntryDN", String.valueOf(rawEntryDN));
@@ -312,7 +324,7 @@
   * @return  The DN of the entry to add, or <CODE>null</CODE> if it has not yet
   *          been parsed from the raw DN.
   */
  public DN getEntryDN()
  public final DN getEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getEntryDN");
@@ -322,22 +334,6 @@
  /**
   * Specifies the DN of the entry to add.  This method should not be called by
   * pre-parse plugins, in which case the <CODE>setRawEntryDN</CODE> method
   * should be used instead.
   *
   * @param  entryDN  The DN of the entry to add.
   */
  public void setEntryDN(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "setEntryDN", String.valueOf(entryDN));
    this.entryDN = entryDN;
  }
  /**
   * Retrieves the set of attributes in their raw, unparsed form as read from
   * the client request.  Some of these attributes may be invalid as no
   * validation will have been performed on them.  The returned list must not be
@@ -346,7 +342,7 @@
   * @return  The set of attributes in their raw, unparsed form as read from the
   *          client request.
   */
  public List<LDAPAttribute> getRawAttributes()
  public final List<LDAPAttribute> getRawAttributes()
  {
    assert debugEnter(CLASS_NAME, "getRawAttributes");
@@ -362,7 +358,7 @@
   * @param  rawAttribute  The attribute to add to the set of raw attributes for
   *                       this add operation.
   */
  public void addRawAttribute(LDAPAttribute rawAttribute)
  public final void addRawAttribute(LDAPAttribute rawAttribute)
  {
    assert debugEnter(CLASS_NAME, "addRawAttribute",
                      String.valueOf(rawAttribute));
@@ -382,7 +378,7 @@
   *
   * @param  rawAttributes  The set of raw attributes for this add operation.
   */
  public void setRawAttributes(List<LDAPAttribute> rawAttributes)
  public final void setRawAttributes(List<LDAPAttribute> rawAttributes)
  {
    assert debugEnter(CLASS_NAME, "setRawAttributes",
                      String.valueOf(rawAttributes));
@@ -399,13 +395,13 @@
  /**
   * Retrieves the set of processed objectclasses for the entry to add.  This
   * should not be called by pre-parse plugins because this information will not
   * yet be available.  The contents of the returned map may be altered by the
   * caller.
   * yet be available.  The contents of the returned map may not be altered by
   * the caller.
   *
   * @return  The set of processed objectclasses for the entry to add, or
   *          <CODE>null</CODE> if that information is not yet available.
   */
  public Map<ObjectClass,String> getObjectClasses()
  public final Map<ObjectClass,String> getObjectClasses()
  {
    assert debugEnter(CLASS_NAME, "getObjectClasses");
@@ -415,6 +411,45 @@
  /**
   * Adds the provided objectclass to the entry to add.  This should only be
   * called from pre-operation plugins.  Note that pre-operation plugin
   * processing is invoked after access control and schema validation, so
   * plugins should be careful to only make changes that will not violate either
   * schema or access control rules.
   *
   * @param  objectClass  The objectclass to add to the entry.
   * @param  name         The name to use for the objectclass.
   */
  public final void addObjectClass(ObjectClass objectClass, String name)
  {
    assert debugEnter(CLASS_NAME, "addObjectClass", String.valueOf(objectClass),
                      String.valueOf(name));
    objectClasses.put(objectClass, name);
  }
  /**
   * Removes the provided objectclass from the entry to add.  This should only
   * be called from pre-operation plugins.  Note that pre-operation plugin
   * processing is invoked after access control and schema validation, so
   * plugins should be careful to only make changes that will not violate either
   * schema or access control rules.
   *
   * @param  objectClass  The objectclass to remove from the entry.
   */
  public final void removeObjectClass(ObjectClass objectClass)
  {
    assert debugEnter(CLASS_NAME, "removeObjectClass",
                      String.valueOf(objectClass));
    objectClasses.remove(objectClass);
  }
  /**
   * Retrieves the set of processed user attributes for the entry to add.  This
   * should not be called by pre-parse plugins because this information will not
   * yet be available.  The contents of the returned map may be altered by the
@@ -423,7 +458,7 @@
   * @return  The set of processed user attributes for the entry to add, or
   *          <CODE>null</CODE> if that information is not yet available.
   */
  public Map<AttributeType,List<Attribute>> getUserAttributes()
  public final Map<AttributeType,List<Attribute>> getUserAttributes()
  {
    assert debugEnter(CLASS_NAME, "getUserAttributes");
@@ -441,7 +476,7 @@
   * @return  The set of processed operational attributes for the entry to add,
   *          or <CODE>null</CODE> if that information is not yet available.
   */
  public Map<AttributeType,List<Attribute>> getOperationalAttributes()
  public final Map<AttributeType,List<Attribute>> getOperationalAttributes()
  {
    assert debugEnter(CLASS_NAME, "getOperationalAttributes");
@@ -451,6 +486,75 @@
  /**
   * Sets the specified attribute in the entry to add, overwriting any existing
   * attribute of the specified type if necessary.  This should only be called
   * from pre-operation plugins.  Note that pre-operation plugin processing is
   * invoked after access control and schema validation, so plugins should be
   * careful to only make changes that will not violate either schema or access
   * control rules.
   *
   * @param  attributeType  The attribute type for the attribute.
   * @param  attributeList  The attribute list for the provided attribute type.
   */
  public final void setAttribute(AttributeType attributeType,
                                 List<Attribute> attributeList)
  {
    assert debugEnter(CLASS_NAME, "setAttribute", String.valueOf(attributeType),
                      String.valueOf(attributeList));
    if (attributeType.isOperational())
    {
      if ((attributeList == null) || (attributeList.isEmpty()))
      {
        operationalAttributes.remove(attributeType);
      }
      else
      {
        operationalAttributes.put(attributeType, attributeList);
      }
    }
    else
    {
      if ((attributeList == null) || (attributeList.isEmpty()))
      {
        userAttributes.remove(attributeType);
      }
      else
      {
        userAttributes.put(attributeType, attributeList);
      }
    }
  }
  /**
   * Removes the specified attribute from the entry to add. This should only be
   * called from pre-operation plugins.  Note that pre-operation processing is
   * invoked after access control and schema validation, so plugins should be
   * careful to only make changes that will not violate either schema or access
   * control rules.
   *
   * @param  attributeType  The attribute tyep for the attribute to remove.
   */
  public final void removeAttribute(AttributeType attributeType)
  {
    assert debugEnter(CLASS_NAME, "removeAttribute",
                      String.valueOf(attributeType));
    if (attributeType.isOperational())
    {
      operationalAttributes.remove(attributeType);
    }
    else
    {
      userAttributes.remove(attributeType);
    }
  }
  /**
   * Retrieves the entry to be added to the server.  Note that this will not be
   * available to pre-parse plugins or during the conflict resolution portion of
   * the synchronization processing.
@@ -458,7 +562,7 @@
   * @return  The entry to be added to the server, or <CODE>null</CODE> if it is
   *          not yet available.
   */
  public Entry getEntryToAdd()
  public final Entry getEntryToAdd()
  {
    assert debugEnter(CLASS_NAME, "getEntryToAdd");
@@ -468,11 +572,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -482,13 +585,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -498,14 +598,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -521,7 +617,7 @@
   *          if none has been assigned yet or if there is no applicable
   *          synchronization mechanism in place that uses change numbers.
   */
  public long getChangeNumber()
  public final long getChangeNumber()
  {
    assert debugEnter(CLASS_NAME, "getChangeNumber");
@@ -537,7 +633,7 @@
   * @param  changeNumber  The change number that has been assigned to this
   *                       operation by the synchronization mechanism.
   */
  public void setChangeNumber(long changeNumber)
  public final void setChangeNumber(long changeNumber)
  {
    assert debugEnter(CLASS_NAME, "setChangeNumber",
                      String.valueOf(changeNumber));
@@ -548,11 +644,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -563,16 +658,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -586,16 +675,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -661,13 +744,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public ArrayList<Control> getResponseControls()
  @Override()
  public final ArrayList<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -677,12 +757,32 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    responseControls.add(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    responseControls.remove(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -2062,7 +2162,7 @@
   *
   * @param  objectClass  The objectclass to add to the entry.
   */
  private void addObjectClassChain(ObjectClass objectClass)
  private final void addObjectClassChain(ObjectClass objectClass)
  {
    assert debugEnter(CLASS_NAME, "addObjectClassChain",
                      String.valueOf(objectClass));
@@ -2093,8 +2193,8 @@
   * @throws  DirectoryException  If a problem occurs while performing password
   *                              policy processing for the add operation.
   */
  private void handlePasswordPolicy(PasswordPolicy passwordPolicy,
                                    Entry userEntry)
  private final void handlePasswordPolicy(PasswordPolicy passwordPolicy,
                                          Entry userEntry)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "handlePasswordPolicy",
@@ -2287,14 +2387,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -2332,13 +2428,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -2348,12 +2441,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
@@ -2365,6 +2456,5 @@
    buffer.append(rawEntryDN);
    buffer.append(")");
  }
}
opends/src/server/org/opends/server/core/BackendConfigManager.java
@@ -51,6 +51,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
import org.opends.server.types.WritabilityMode;
opends/src/server/org/opends/server/core/BindOperation.java
@@ -53,12 +53,21 @@
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.AuthenticationType;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.LockManager;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.operation.PostOperationBindOperation;
import org.opends.server.types.operation.PostResponseBindOperation;
import org.opends.server.types.operation.PreOperationBindOperation;
import org.opends.server.types.operation.PreParseBindOperation;
import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.core.CoreConstants.*;
@@ -86,6 +95,8 @@
 */
public class BindOperation
             extends Operation
             implements PreParseBindOperation, PreOperationBindOperation,
                        PostOperationBindOperation, PostResponseBindOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -428,7 +439,7 @@
   *
   * @return  The authentication type for this bind operation.
   */
  public AuthenticationType getAuthenticationType()
  public final AuthenticationType getAuthenticationType()
  {
    assert debugEnter(CLASS_NAME, "getAuthenticationType");
@@ -445,7 +456,7 @@
   * @return  The raw, unprocessed bind DN for this bind operation as contained
   *          in the client request.
   */
  public ByteString getRawBindDN()
  public final ByteString getRawBindDN()
  {
    assert debugEnter(CLASS_NAME, "getRawBindDN");
@@ -456,13 +467,11 @@
  /**
   * Specifies the raw, unprocessed bind DN for this bind operation.  This
   * should only be called by pre-parse plugins; all other code that wishes to
   * alter the bind DN should use the <CODE>getBindDN</CODE> and
   * <CODE>setBindDN</CODE> methods.
   * should only be called by pre-parse plugins.
   *
   * @param  rawBindDN  The raw, unprocessed bind DN for this bind operation.
   */
  public void setRawBindDN(ByteString rawBindDN)
  public final void setRawBindDN(ByteString rawBindDN)
  {
    assert debugEnter(CLASS_NAME, "setRawBindDN", String.valueOf(rawBindDN));
@@ -489,7 +498,7 @@
   * @return  The bind DN for this bind operation, or <CODE>null</CODE> if the
   *          raw DN has not yet been processed.
   */
  public DN getBindDN()
  public final DN getBindDN()
  {
    assert debugEnter(CLASS_NAME, "getBindDN");
@@ -499,27 +508,11 @@
  /**
   * Specifies the bind DN for this bind operation. This method should not be
   * called by pre-parse plugins, which should use <CODE>setRawBindDN</CODE>
   * instead.
   *
   * @param  bindDN  The bind DN for this bind operation.
   */
  public void setBindDN(DN bindDN)
  {
    assert debugEnter(CLASS_NAME, "setBindDN", String.valueOf(bindDN));
    this.bindDN = bindDN;
  }
  /**
   * Retrieves the simple authentication password for this bind operation.
   *
   * @return  The simple authentication password for this bind operation.
   */
  public ByteString getSimplePassword()
  public final ByteString getSimplePassword()
  {
    assert debugEnter(CLASS_NAME, "getSimplePassword");
@@ -534,7 +527,7 @@
   * @param  simplePassword  The simple authentication password for this bind
   *                         operation.
   */
  public void setSimplePassword(ByteString simplePassword)
  public final void setSimplePassword(ByteString simplePassword)
  {
    assert debugEnter(CLASS_NAME, "setSimplePassword",
                      String.valueOf(simplePassword));
@@ -561,7 +554,7 @@
   * @return  The SASL mechanism for this bind operation, or <CODE>null</CODE>
   *          if the bind does not use SASL authentication.
   */
  public String getSASLMechanism()
  public final String getSASLMechanism()
  {
    assert debugEnter(CLASS_NAME, "getSASLMechanism");
@@ -576,7 +569,7 @@
   * @return  The SASL credentials for this bind operation, or <CODE>null</CODE>
   *          if there are none or if the bind does not use SASL authentication.
   */
  public ASN1OctetString getSASLCredentials()
  public final ASN1OctetString getSASLCredentials()
  {
    assert debugEnter(CLASS_NAME, "getSASLCredentials");
@@ -592,8 +585,8 @@
   * @param  saslCredentials  The SASL credentials for this bind operation, or
   *                          <CODE>null</CODE> if there are none.
   */
  public void setSASLCredentials(String saslMechanism,
                                 ASN1OctetString saslCredentials)
  public final void setSASLCredentials(String saslMechanism,
                                       ASN1OctetString saslCredentials)
  {
    assert debugEnter(CLASS_NAME, "setSASLCredentials",
                      String.valueOf(saslCredentials));
@@ -614,7 +607,7 @@
   * @return  The set of server SASL credentials to include in the bind
   *          response, or <CODE>null</CODE> if there are none.
   */
  public ASN1OctetString getServerSASLCredentials()
  public final ASN1OctetString getServerSASLCredentials()
  {
    assert debugEnter(CLASS_NAME, "getServerSASLCredentials");
@@ -630,7 +623,8 @@
   * @param  serverSASLCredentials  The set of server SASL credentials to
   *                                include in the bind response.
   */
  public void setServerSASLCredentials(ASN1OctetString serverSASLCredentials)
  public final void setServerSASLCredentials(ASN1OctetString
                                                  serverSASLCredentials)
  {
    assert debugEnter(CLASS_NAME, "setServerSASLCredentials",
                      String.valueOf(serverSASLCredentials));
@@ -650,7 +644,7 @@
   *          <CODE>null</CODE> if it was not a SASL authentication or the SASL
   *          processing was not able to map the request to a user.
   */
  public Entry getSASLAuthUserEntry()
  public final Entry getSASLAuthUserEntry()
  {
    assert debugEnter(CLASS_NAME, "getSASLAuthUserEntry");
@@ -668,7 +662,7 @@
   * @param  saslAuthUserEntry  The user entry associated with the SASL
   *                            authentication attempt.
   */
  public void setSASLAuthUserEntry(Entry saslAuthUserEntry)
  public final void setSASLAuthUserEntry(Entry saslAuthUserEntry)
  {
    assert debugEnter(CLASS_NAME, "setSASLAuthUserEntry",
                      String.valueOf(saslAuthUserEntry));
@@ -685,7 +679,7 @@
   * @return  A human-readable message providing the reason that the
   *          authentication failed, or <CODE>null</CODE> if none is available.
   */
  public String getAuthFailureReason()
  public final String getAuthFailureReason()
  {
    assert debugEnter(CLASS_NAME, "getAuthFailureReason");
@@ -701,7 +695,7 @@
   * @return  The unique identifier for the authentication failure reason, or
   *          zero if none is available.
   */
  public int getAuthFailureID()
  public final int getAuthFailureID()
  {
    assert debugEnter(CLASS_NAME, "getAuthFailureID");
@@ -718,7 +712,7 @@
   * @param  reason  A human-readable message providing the reason that the
   *                 authentication failed.
   */
  public void setAuthFailureReason(int id, String reason)
  public final void setAuthFailureReason(int id, String reason)
  {
    assert debugEnter(CLASS_NAME, "setAuthFailureReason",
                      String.valueOf(id), String.valueOf(reason));
@@ -740,13 +734,13 @@
  /**
   * Retrieves the user entry DN for this bind operation.  It will only be
   * available if the bind processing has proceeded far enough to identify the
   * user attempting to authenticate or if the user DN could not be determined.
   * user attempting to authenticate.
   *
   * @return  The user entry DN for this bind operation, or <CODE>null</CODE> if
   *          the bind processing has not progressed far enough to identify the
   *          user or if the user DN could not be determined.
   */
  public DN getUserEntryDN()
  public final DN getUserEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getUserEntryDN");
@@ -756,11 +750,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -770,13 +763,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -786,14 +776,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -802,11 +788,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -817,16 +802,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -853,16 +832,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -927,13 +900,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -943,13 +913,10 @@
  /**
   * Adds the provided control to the set of controls to include in the response
   * to the client.
   *
   * @param  control  The control to add to the set of controls to include in
   *                  the response to the client.
   * {@inheritDoc}
   */
  public void addResponseControl(Control control)
  @Override()
  public final void addResponseControl(Control control)
  {
    responseControls.add(control);
  }
@@ -957,13 +924,10 @@
  /**
   * Removes the provided control from the set of controls to include in the
   * response to the client.
   *
   * @param  control  The control to remove from the set of controls to include
   *                  in the response to the client.
   * {@inheritDoc}
   */
  public void removeResponseControl(Control control)
  @Override()
  public final void removeResponseControl(Control control)
  {
    responseControls.remove(control);
  }
@@ -971,12 +935,10 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -2290,16 +2252,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.  Note
   * that a bind operation may not be canceled, so this should never do
   * anything.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -2310,14 +2266,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.  Note that a bind operation may not be canceled, so this will
   * always return <CODE>null</CODE>.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -2327,12 +2279,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/core/CancelRequest.java
File was deleted
opends/src/server/org/opends/server/core/CertificateMapperConfigManager.java
@@ -39,9 +39,11 @@
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.extensions.SubjectEqualsDNCertificateMapper;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/CompareOperation.java
@@ -48,11 +48,20 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LockManager;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
import org.opends.server.types.operation.PostOperationCompareOperation;
import org.opends.server.types.operation.PostResponseCompareOperation;
import org.opends.server.types.operation.PreOperationCompareOperation;
import org.opends.server.types.operation.PreParseCompareOperation;
import static org.opends.server.core.CoreConstants.*;
import static org.opends.server.loggers.Access.*;
@@ -71,6 +80,8 @@
 */
public class CompareOperation
       extends Operation
       implements PreParseCompareOperation, PreOperationCompareOperation,
                  PostOperationCompareOperation, PostResponseCompareOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -211,7 +222,7 @@
   *
   * @return  The raw, unprocessed entry DN as included in the client request.
   */
  public ByteString getRawEntryDN()
  public final ByteString getRawEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getRawEntryDN");
@@ -222,13 +233,12 @@
  /**
   * Specifies the raw, unprocessed entry DN as included in the client request.
   * This should only be called by pre-parse plugins.  All other code that needs
   * to set the entry DN should use the <CODE>setEntryDN</CODE> method.
   * This should only be called by pre-parse plugins.
   *
   * @param  rawEntryDN  The raw, unprocessed entry DN as included in the client
   *                     request.
   */
  public void setRawEntryDN(ByteString rawEntryDN)
  public final void setRawEntryDN(ByteString rawEntryDN)
  {
    assert debugEnter(CLASS_NAME, "setRawEntryDN");
@@ -247,7 +257,7 @@
   * @return  The DN of the entry to compare, or <CODE>null</CODE> if the raw
   *          entry DN has not yet been processed.
   */
  public DN getEntryDN()
  public final DN getEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getEntryDN");
@@ -257,27 +267,11 @@
  /**
   * Specifies the DN of the entry to compare.  This should not be called by
   * pre-parse plugins, since they should use <CODE>setRawEntryDN</CODE>
   * instead.
   *
   * @param  entryDN  The DN of the entry to compare.
   */
  public void setEntryDN(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "setEntryDN", String.valueOf(entryDN));
    this.entryDN = entryDN;
  }
  /**
   * Retrieves the raw attribute type for this compare operation.
   *
   * @return  The raw attribute type for this compare operation.
   */
  public String getRawAttributeType()
  public final String getRawAttributeType()
  {
    assert debugEnter(CLASS_NAME, "getRawAttributeType");
@@ -293,7 +287,7 @@
   * @param  rawAttributeType  The raw attribute type for this compare
   *                           operation.
   */
  public void setRawAttributeType(String rawAttributeType)
  public final void setRawAttributeType(String rawAttributeType)
  {
    assert debugEnter(CLASS_NAME, "setRawAttributeType",
                      String.valueOf(rawAttributeType));
@@ -306,11 +300,13 @@
  /**
   * Retrieves the attribute type for this compare operation.
   * Retrieves the attribute type for this compare operation.  This should not
   * be called by pre-parse plugins because the processed attribute type will
   * not be available yet.
   *
   * @return  The attribute type for this compare operation.
   */
  public AttributeType getAttributeType()
  public final AttributeType getAttributeType()
  {
    assert debugEnter(CLASS_NAME, "getAttributeType");
@@ -324,7 +320,7 @@
   *
   * @return  The assertion value for this compare operation.
   */
  public ByteString getAssertionValue()
  public final ByteString getAssertionValue()
  {
    assert debugEnter(CLASS_NAME, "getAssertionValue");
@@ -334,11 +330,12 @@
  /**
   * Specifies the assertion value for this compare operation.
   * Specifies the assertion value for this compare operation.  This should only
   * be called by pre-parse and pre-operation plugins.
   *
   * @param  assertionValue  The assertion value for this compare operation.
   */
  public void setAssertionValue(ByteString assertionValue)
  public final void setAssertionValue(ByteString assertionValue)
  {
    assert debugEnter(CLASS_NAME, "setAssertionValue",
                      String.valueOf(assertionValue));
@@ -349,13 +346,13 @@
  /**
   * Retrieves the entry to target with the compare operation.  It will not be
   * available to pre-parse plugins.
   * Retrieves the entry to target with the compare operation.  This should not
   * be called by pre-parse plugins.
   *
   * @return  The entry to target with the compare operation, or
   *          <CODE>null</CODE> if the entry is not yet available.
   */
  public Entry getEntryToCompare()
  public final Entry getEntryToCompare()
  {
    assert debugEnter(CLASS_NAME, "getEntryToCompare");
@@ -365,11 +362,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -379,13 +375,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -395,14 +388,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -412,11 +401,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -427,16 +415,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -451,16 +433,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -526,13 +502,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -542,12 +515,32 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    responseControls.add(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    responseControls.remove(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -1083,14 +1076,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -1128,13 +1117,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -1144,12 +1130,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
@@ -46,6 +46,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
opends/src/server/org/opends/server/core/CoreConfigManager.java
@@ -49,6 +49,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.types.WritabilityMode;
opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java
@@ -33,6 +33,7 @@
import org.opends.server.api.AccessControlProvider;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SearchResultReference;
opends/src/server/org/opends/server/core/DeleteOperation.java
@@ -49,15 +49,25 @@
import org.opends.server.protocols.ldap.LDAPException;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.LockManager;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SynchronizationProviderResult;
import org.opends.server.types.operation.PostOperationDeleteOperation;
import org.opends.server.types.operation.PostResponseDeleteOperation;
import org.opends.server.types.operation.PreOperationDeleteOperation;
import org.opends.server.types.operation.PreParseDeleteOperation;
import static org.opends.server.core.CoreConstants.*;
import static org.opends.server.loggers.Access.*;
@@ -76,6 +86,8 @@
 */
public class DeleteOperation
       extends Operation
       implements PreParseDeleteOperation, PreOperationDeleteOperation,
                  PostOperationDeleteOperation, PostResponseDeleteOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -187,7 +199,7 @@
   *
   * @return  The raw, unprocessed entry DN as included in the client request.
   */
  public ByteString getRawEntryDN()
  public final ByteString getRawEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getRawEntryDN");
@@ -204,7 +216,7 @@
   * @param  rawEntryDN  The raw, unprocessed entry DN as included in the client
   *                     request.
   */
  public void setRawEntryDN(ByteString rawEntryDN)
  public final void setRawEntryDN(ByteString rawEntryDN)
  {
    assert debugEnter(CLASS_NAME, "setRawEntryDN");
@@ -223,7 +235,7 @@
   * @return  The DN of the entry to delete, or <CODE>null</CODE> if the raw
   *          entry DN has not yet been processed.
   */
  public DN getEntryDN()
  public final DN getEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getEntryDN");
@@ -233,29 +245,13 @@
  /**
   * Specifies the DN of the entry to delete.  This should not be called by
   * pre-parse plugins, since they should use <CODE>setRawEntryDN</CODE>
   * instead.
   *
   * @param  entryDN  The DN of the entry to delete.
   */
  public void setEntryDN(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "setEntryDN", String.valueOf(entryDN));
    this.entryDN = entryDN;
  }
  /**
   * Retrieves the entry to be deleted.  This will not be available to pre-parse
   * plugins.
   *
   * @return  The entry to be deleted, or <CODE>null</CODE> if the entry is not
   *          yet available.
   */
  public Entry getEntryToDelete()
  public final Entry getEntryToDelete()
  {
    assert debugEnter(CLASS_NAME, "getEntryToDelete");
@@ -265,11 +261,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -279,13 +274,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -295,14 +287,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -318,7 +306,7 @@
   *          if none has been assigned yet or if there is no applicable
   *          synchronization mechanism in place that uses change numbers.
   */
  public long getChangeNumber()
  public final long getChangeNumber()
  {
    assert debugEnter(CLASS_NAME, "getChangeNumber");
@@ -334,7 +322,7 @@
   * @param  changeNumber  The change number that has been assigned to this
   *                       operation by the synchronization mechanism.
   */
  public void setChangeNumber(long changeNumber)
  public final void setChangeNumber(long changeNumber)
  {
    assert debugEnter(CLASS_NAME, "setChangeNumber",
                      String.valueOf(changeNumber));
@@ -345,11 +333,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -360,16 +347,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -383,16 +364,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -458,13 +433,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -474,12 +446,32 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    responseControls.add(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    responseControls.remove(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -1249,14 +1241,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -1294,13 +1282,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -1310,12 +1295,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -123,19 +123,24 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeUsage;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.CryptoManager;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DITContentRule;
import org.opends.server.types.DITStructureRule;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.MatchingRuleUse;
import org.opends.server.types.NameForm;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.ObjectClassType;
import org.opends.server.types.OperatingSystem;
import org.opends.server.types.OperationType;
import org.opends.server.types.RDN;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import org.opends.server.types.WritabilityMode;
import org.opends.server.util.TimeThread;
import org.opends.server.util.args.ArgumentException;
@@ -996,6 +1001,10 @@
      synchronizationProviderConfigManager.initializeSynchronizationProviders();
      // Create and initialize the work queue.
      initializeWorkQueue();
      StartupPluginResult startupPluginResult =
           pluginConfigManager.invokeStartupPlugins();
      if (! startupPluginResult.continueStartup())
@@ -1008,10 +1017,6 @@
      }
      // Create and initialize the work queue.
      initializeWorkQueue();
      // At this point, we should be ready to go.  Start all the connection
      // handlers.
      for (ConnectionHandler c : connectionHandlers)
@@ -6683,6 +6688,17 @@
    }
    directoryServer.connectionHandlers.clear();
    // Call the shutdown plugins, and then finalize all the plugins defined in
    // the server.
    if (directoryServer.pluginConfigManager != null)
    {
      directoryServer.pluginConfigManager.invokeShutdownPlugins();
      directoryServer.pluginConfigManager.finalizePlugins();
    }
    // shutdown the Synchronization Providers
    for (SynchronizationProvider provider :
         directoryServer.synchronizationProviders)
@@ -6720,16 +6736,6 @@
    }
    // Call the shutdown plugins, and then finalize all the plugins defined in
    // the server.
    if (directoryServer.pluginConfigManager != null)
    {
      directoryServer.pluginConfigManager.invokeShutdownPlugins();
      directoryServer.pluginConfigManager.finalizePlugins();
    }
    // Shut down all of the alert handlers.
    for (AlertHandler alertHandler : directoryServer.alertHandlers)
    {
opends/src/server/org/opends/server/core/EntryCacheConfigManager.java
@@ -42,6 +42,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/ExtendedOperation.java
@@ -38,9 +38,16 @@
import org.opends.server.api.plugin.PreOperationPluginResult;
import org.opends.server.api.plugin.PreParsePluginResult;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.operation.PostOperationExtendedOperation;
import org.opends.server.types.operation.PostResponseExtendedOperation;
import org.opends.server.types.operation.PreOperationExtendedOperation;
import org.opends.server.types.operation.PreParseExtendedOperation;
import static org.opends.server.core.CoreConstants.*;
import static org.opends.server.loggers.Access.*;
@@ -57,6 +64,8 @@
 */
public class ExtendedOperation
       extends Operation
       implements PreParseExtendedOperation, PreOperationExtendedOperation,
                  PostOperationExtendedOperation, PostResponseExtendedOperation
{
  /*** The fully-qualified name of this class for debugging purposes.
   */
@@ -142,7 +151,7 @@
   *
   * @return  The OID for the request associated with this extended operation.
   */
  public String getRequestOID()
  public final String getRequestOID()
  {
    assert debugEnter(CLASS_NAME, "getRequestOID");
@@ -153,11 +162,12 @@
  /**
   * Specifies the OID for the request associated with this extended operation.
   * This should only be called by pre-parse plugins.
   *
   * @param  requestOID  The OID for the request associated with this extended
   *                     operation.
   */
  public void setRequestOID(String requestOID)
  public final void setRequestOID(String requestOID)
  {
    assert debugEnter(CLASS_NAME, "setRequestOID", String.valueOf(requestOID));
@@ -172,7 +182,7 @@
   *
   * @return  The value for the request associated with this extended operation.
   */
  public ASN1OctetString getRequestValue()
  public final ASN1OctetString getRequestValue()
  {
    assert debugEnter(CLASS_NAME, "getRequestValue");
@@ -183,12 +193,12 @@
  /**
   * Specifies the value for the request associated with this extended
   * operation.
   * operation.  This should only be called by pre-parse plugins.
   *
   * @param  requestValue  The value for the request associated with this
   *                       extended operation.
   */
  public void setRequestValue(ASN1OctetString requestValue)
  public final void setRequestValue(ASN1OctetString requestValue)
  {
    assert debugEnter(CLASS_NAME, "setRequestValue",
                      String.valueOf(requestValue));
@@ -199,11 +209,12 @@
  /**
   * Retrieves the OID to include in the response to the client.
   * Retrieves the OID to include in the response to the client.  This should
   * not be called by pre-parse or pre-operation plugins.
   *
   * @return  The OID to include in the response to the client.
   */
  public String getResponseOID()
  public final String getResponseOID()
  {
    assert debugEnter(CLASS_NAME, "getResponseOID");
@@ -213,11 +224,12 @@
  /**
   * Specifies the OID to include in the response to the client.
   * Specifies the OID to include in the response to the client.  This should
   * not be called by post-response plugins.
   *
   * @param  responseOID  The OID to include in the response to the client.
   */
  public void setResponseOID(String responseOID)
  public final void setResponseOID(String responseOID)
  {
    assert debugEnter(CLASS_NAME, "setResponseOID",
                      String.valueOf(responseOID));
@@ -228,11 +240,12 @@
  /**
   * Retrieves the value to include in the response to the client.
   * Retrieves the value to include in the response to the client.  This should
   * not be called by pre-parse or pre-operation plugins.
   *
   * @return  The value to include in the response to the client.
   */
  public ASN1OctetString getResponseValue()
  public final ASN1OctetString getResponseValue()
  {
    assert debugEnter(CLASS_NAME, "getResponseValue");
@@ -242,11 +255,12 @@
  /**
   * Specifies the value to include in the response to the client.
   * Specifies the value to include in the response to the client.  This should
   * not be called by post-response plugins.
   *
   * @param  responseValue  The value to include in the response to the client.
   */
  public void setResponseValue(ASN1OctetString responseValue)
  public final void setResponseValue(ASN1OctetString responseValue)
  {
    assert debugEnter(CLASS_NAME, "setResponseValue",
                      String.valueOf(responseValue));
@@ -257,11 +271,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -271,13 +284,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -287,14 +297,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -304,11 +310,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -319,16 +324,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -342,16 +341,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -418,13 +411,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -434,12 +424,32 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    responseControls.add(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    responseControls.remove(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -654,7 +664,7 @@
   * operation in which the response must be sent in the clear before actually
   * enabling TLS protection).
   */
  public void sendExtendedResponse()
  public final void sendExtendedResponse()
  {
    assert debugEnter(CLASS_NAME, "sendExtendedResponse");
@@ -668,13 +678,12 @@
  /**
   * Indicates whether the response for this extended operation has been sent
   * from somewhere outside of this class.  This should only be used by the
   * StartTLS extended operation for the case in which it needs to send a
   * response in the clear after TLS negotiation has already started on the
   * connection.
   * Indicates that the response for this extended operation has been sent from
   * somewhere outside of this class.  This should only be used by the StartTLS
   * extended operation for the case in which it needs to send a response in the
   * clear after TLS negotiation has already started on the connection.
   */
  public void setResponseSent()
  public final void setResponseSent()
  {
    assert debugEnter(CLASS_NAME, "setResponseSent",
                      String.valueOf(responseSent));
@@ -685,14 +694,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -730,13 +735,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -746,12 +748,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/core/ExtendedOperationConfigManager.java
@@ -48,6 +48,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/IdentityMapperConfigManager.java
@@ -48,6 +48,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java
@@ -39,9 +39,11 @@
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.extensions.NullKeyManagerProvider;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/LockManager.java
File was deleted
opends/src/server/org/opends/server/core/LoggerConfigManager.java
@@ -52,6 +52,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/ModifyDNOperation.java
@@ -55,18 +55,28 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.LockManager;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
import org.opends.server.types.OperationType;
import org.opends.server.types.RDN;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SynchronizationProviderResult;
import org.opends.server.types.operation.PostOperationModifyDNOperation;
import org.opends.server.types.operation.PostResponseModifyDNOperation;
import org.opends.server.types.operation.PreOperationModifyDNOperation;
import org.opends.server.types.operation.PreParseModifyDNOperation;
import static org.opends.server.core.CoreConstants.*;
import static org.opends.server.loggers.Access.*;
@@ -85,6 +95,8 @@
 */
public class ModifyDNOperation
       extends Operation
       implements PreParseModifyDNOperation, PreOperationModifyDNOperation,
                  PostOperationModifyDNOperation, PostResponseModifyDNOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -270,7 +282,7 @@
   *
   * @return  The raw, unprocessed entry DN as included in the client request.
   */
  public ByteString getRawEntryDN()
  public final ByteString getRawEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getRawEntryDN");
@@ -281,13 +293,12 @@
  /**
   * Specifies the raw, unprocessed entry DN as included in the client request.
   * This should only be called by pre-parse plugins.  All other code that needs
   * to set the entry DN should use the <CODE>setEntryDN</CODE> method.
   * This should only be called by pre-parse plugins.
   *
   * @param  rawEntryDN  The raw, unprocessed entry DN as included in the client
   *                     request.
   */
  public void setRawEntryDN(ByteString rawEntryDN)
  public final void setRawEntryDN(ByteString rawEntryDN)
  {
    assert debugEnter(CLASS_NAME, "setRawEntryDN");
@@ -306,7 +317,7 @@
   * @return  The DN of the entry to rename, or <CODE>null</CODE> if the raw
   *          entry DN has not yet been processed.
   */
  public DN getEntryDN()
  public final DN getEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getEntryDN");
@@ -316,22 +327,6 @@
  /**
   * Specifies the DN of the entry to rename.  This should not be called by
   * pre-parse plugins, since they should use <CODE>setRawEntryDN</CODE>
   * instead.
   *
   * @param  entryDN  The DN of the entry to compare.
   */
  public void setEntryDN(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "setEntryDN", String.valueOf(entryDN));
    this.entryDN = entryDN;
  }
  /**
   * Retrieves the raw, unprocessed newRDN as included in the request from the
   * client.  This may or may not contain a valid RDN, as no validation will
   * have been performed on it.
@@ -339,7 +334,7 @@
   * @return  The raw, unprocessed newRDN as included in the request from the
   *          client.
   */
  public ByteString getRawNewRDN()
  public final ByteString getRawNewRDN()
  {
    assert debugEnter(CLASS_NAME, "getRawNewRDN");
@@ -351,13 +346,12 @@
  /**
   * Specifies the raw, unprocessed newRDN as included in the request from the
   * client.  This should only be called by pre-parse plugins and should not be
   * used in later stages of processing where the <CODE>getNewRDN</CODE> and
   * <CODE>setNewRDN</CODE> methods should be used instead.
   * used in later stages of processing.
   *
   * @param  rawNewRDN  The raw, unprocessed newRDN as included in the request
   *                    from the client.
   */
  public void setRawNewRDN(ByteString rawNewRDN)
  public final void setRawNewRDN(ByteString rawNewRDN)
  {
    assert debugEnter(CLASS_NAME, "setRawNewRDN", String.valueOf(rawNewRDN));
@@ -376,7 +370,7 @@
   * @return  The new RDN to use for the entry, or <CODE>null</CODE> if the raw
   *          newRDN has not yet been processed.
   */
  public RDN getNewRDN()
  public final RDN getNewRDN()
  {
    assert debugEnter(CLASS_NAME, "getNewRDN");
@@ -386,28 +380,12 @@
  /**
   * Specifies the new RDN to use for the entry.  This should not be called by
   * pre-parse plugins, which should use the <CODE>getRawNewRDN</CODE> and
   * <CODE>setRawNewRDN</CODE> methods instead.
   *
   * @param  newRDN  The new RDN to use for the entry.
   */
  public void setNewRDN(RDN newRDN)
  {
    assert debugEnter(CLASS_NAME, "setNewRDN", String.valueOf(newRDN));
    this.newRDN = newRDN;
  }
  /**
   * Indicates whether the current RDN value should be removed from the entry.
   *
   * @return  <CODE>true</CODE> if the current RDN value should be removed from
   *          the entry, or <CODE>false</CODE> if not.
   */
  public boolean deleteOldRDN()
  public final boolean deleteOldRDN()
  {
    assert debugEnter(CLASS_NAME, "deleteOldRDN");
@@ -422,7 +400,7 @@
   * @param  deleteOldRDN  Specifies whether the current RDN value should be
   *                       removed from the entry.
   */
  public void setDeleteOldRDN(boolean deleteOldRDN)
  public final void setDeleteOldRDN(boolean deleteOldRDN)
  {
    assert debugEnter(CLASS_NAME, "setDeleteOldRDN",
                      String.valueOf(deleteOldRDN));
@@ -440,7 +418,7 @@
   * @return  The raw, unprocessed newSuperior from the client request, or
   *          <CODE>null</CODE> if there is none.
   */
  public ByteString getRawNewSuperior()
  public final ByteString getRawNewSuperior()
  {
    assert debugEnter(CLASS_NAME, "getRawNewSuperior");
@@ -452,13 +430,12 @@
  /**
   * Specifies the raw, unprocessed newSuperior for this modify DN operation, as
   * provided in the request from the client.  This method should only be called
   * by pre-parse plugins.  Later processing that needs to set the newSuperior
   * should use the <CODE>setNewSuperior</CODE> method.
   * by pre-parse plugins.
   *
   * @param  rawNewSuperior  The raw, unprocessed newSuperior as provided in the
   *                         request from the client.
   */
  public void setRawNewSuperior(ByteString rawNewSuperior)
  public final void setRawNewSuperior(ByteString rawNewSuperior)
  {
    assert debugEnter(CLASS_NAME, "setRawNewSuperior",
                      String.valueOf(rawNewSuperior));
@@ -480,7 +457,7 @@
   *          no newSuperior DN for this request or if the raw newSuperior has
   *          not yet been processed.
   */
  public DN getNewSuperior()
  public final DN getNewSuperior()
  {
    assert debugEnter(CLASS_NAME, "getNewSuperior");
@@ -490,23 +467,6 @@
  /**
   * Specifies the new parent DN for the entry.  This should not be called by
   * pre-parse plugins, which should use the <CODE>setRawNewSuperior</CODE>
   * method instead.
   *
   * @param  newSuperior  The new parent DN for the entry.
   */
  public void setNewSuperior(DN newSuperior)
  {
    assert debugEnter(CLASS_NAME, "setNewSuperior",
                      String.valueOf(newSuperior));
    this.newSuperior = newSuperior;
  }
  /**
   * Retrieves the set of modifications applied to attributes of the target
   * entry in the course of processing this modify DN operation.  This will
   * include attribute-level changes from the modify DN itself (e.g., removing
@@ -523,7 +483,7 @@
   *          of the modify DN processing, or <CODE>null</CODE> if that
   *          information is not yet available (e.g., during pre-parse plugins).
   */
  public List<Modification> getModifications()
  public final List<Modification> getModifications()
  {
    assert debugEnter(CLASS_NAME, "getModifications");
@@ -533,6 +493,24 @@
  /**
   * Adds the provided modification to the set of modifications to be applied
   * as part of the update.  This should only be called by pre-operation
   * plugins.
   *
   * @param  modification  The modification to add to the set of modifications
   *                       to apply to the entry.
   */
  public final void addModification(Modification modification)
  {
    assert debugEnter(CLASS_NAME, "addModification",
                      String.valueOf(modification));
    modifications.add(modification);
  }
  /**
   * Retrieves the current entry, before it is renamed.  This will not be
   * available to pre-parse plugins or during the conflict resolution portion of
   * the synchronization processing.
@@ -540,7 +518,7 @@
   * @return  The current entry, or <CODE>null</CODE> if it is not yet
   *           available.
   */
  public Entry getOriginalEntry()
  public final Entry getOriginalEntry()
  {
    assert debugEnter(CLASS_NAME, "getOriginalEntry");
@@ -557,7 +535,7 @@
   * @return  The updated entry, or <CODE>null</CODE> if it is not yet
   *           available.
   */
  public Entry getUpdatedEntry()
  public final Entry getUpdatedEntry()
  {
    assert debugEnter(CLASS_NAME, "getUpdatedEntry");
@@ -567,11 +545,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -581,13 +558,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -597,14 +571,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -620,7 +590,7 @@
   *          if none has been assigned yet or if there is no applicable
   *          synchronization mechanism in place that uses change numbers.
   */
  public long getChangeNumber()
  public final long getChangeNumber()
  {
    assert debugEnter(CLASS_NAME, "getChangeNumber");
@@ -636,7 +606,7 @@
   * @param  changeNumber  The change number that has been assigned to this
   *                       operation by the synchronization mechanism.
   */
  public void setChangeNumber(long changeNumber)
  public final void setChangeNumber(long changeNumber)
  {
    assert debugEnter(CLASS_NAME, "setChangeNumber",
                      String.valueOf(changeNumber));
@@ -647,11 +617,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -662,16 +631,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -698,16 +661,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -773,13 +730,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -789,12 +743,32 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    responseControls.add(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    responseControls.remove(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -2065,14 +2039,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -2110,13 +2080,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -2126,12 +2093,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/core/ModifyOperation.java
@@ -65,18 +65,28 @@
import org.opends.server.types.AttributeValue;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.LockManager;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
import org.opends.server.types.OperationType;
import org.opends.server.types.RDN;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SynchronizationProviderResult;
import org.opends.server.types.operation.PreParseModifyOperation;
import org.opends.server.types.operation.PreOperationModifyOperation;
import org.opends.server.types.operation.PostOperationModifyOperation;
import org.opends.server.types.operation.PostResponseModifyOperation;
import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.core.CoreConstants.*;
@@ -96,6 +106,8 @@
 */
public class ModifyOperation
       extends Operation
       implements PreParseModifyOperation, PreOperationModifyOperation,
                  PostOperationModifyOperation, PostResponseModifyOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -258,7 +270,7 @@
   *
   * @return  The raw, unprocessed entry DN as included in the client request.
   */
  public ByteString getRawEntryDN()
  public final ByteString getRawEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getRawEntryDN");
@@ -269,13 +281,12 @@
  /**
   * Specifies the raw, unprocessed entry DN as included in the client request.
   * This should only be called by pre-parse plugins.  All other code that needs
   * to set the entry DN should use the <CODE>setEntryDN</CODE> method.
   * This should only be called by pre-parse plugins.
   *
   * @param  rawEntryDN  The raw, unprocessed entry DN as included in the client
   *                     request.
   */
  public void setRawEntryDN(ByteString rawEntryDN)
  public final void setRawEntryDN(ByteString rawEntryDN)
  {
    assert debugEnter(CLASS_NAME, "setRawEntryDN");
@@ -294,7 +305,7 @@
   * @return  The DN of the entry to modify, or <CODE>null</CODE> if the raw
   *          entry DN has not yet been processed.
   */
  public DN getEntryDN()
  public final DN getEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getEntryDN");
@@ -304,22 +315,6 @@
  /**
   * Specifies the DN of the entry to modify.  This should not be called by
   * pre-parse plugins, since they should use <CODE>setRawEntryDN</CODE>
   * instead.
   *
   * @param  entryDN  The DN of the entry to modify.
   */
  public void setEntryDN(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "setEntryDN", String.valueOf(entryDN));
    this.entryDN = entryDN;
  }
  /**
   * Retrieves the set of raw, unprocessed modifications as included in the
   * client request.  Note that this may contain one or more invalid
   * modifications, as no validation will have been performed on this
@@ -328,7 +323,7 @@
   * @return  The set of raw, unprocessed modifications as included in the
   *          client request.
   */
  public List<LDAPModification> getRawModifications()
  public final List<LDAPModification> getRawModifications()
  {
    assert debugEnter(CLASS_NAME, "getRawModifications");
@@ -344,7 +339,7 @@
   * @param  rawModification  The modification to add to the set of raw
   *                          modifications for this modify operation.
   */
  public void addRawModification(LDAPModification rawModification)
  public final void addRawModification(LDAPModification rawModification)
  {
    assert debugEnter(CLASS_NAME, "addRawModification",
                      String.valueOf(rawModification));
@@ -361,7 +356,7 @@
   *
   * @param  rawModifications  The raw modifications for this modify operation.
   */
  public void setRawModifications(List<LDAPModification> rawModifications)
  public final void setRawModifications(List<LDAPModification> rawModifications)
  {
    assert debugEnter(CLASS_NAME, "setRawModifications",
                      String.valueOf(rawModifications));
@@ -374,16 +369,14 @@
  /**
   * Retrieves the set of modifications for this modify operation.  Its
   * contents may be altered in pre-operation plugins.  It must not be accessed
   * by pre-parse plugins, which should use the <CODE>getRawModifications</CODE>
   * method instead.
   * Retrieves the set of modifications for this modify operation.  Its contents
   * should not be altered.  It will not be available to pre-parse plugins.
   *
   * @return  The set of modifications for this modify operation, or
   *          <CODE>null</CODE> if the modifications have not yet been
   *          processed.
   */
  public List<Modification> getModifications()
  public final List<Modification> getModifications()
  {
    assert debugEnter(CLASS_NAME, "getModifications");
@@ -393,13 +386,35 @@
  /**
   * Adds the provided modification to the set of modifications to this modify
   * operation.  This may only be called by pre-operation plugins.
   *
   * @param  modification  The modification to add to the set of changes for
   *                       this modify operation.
   *
   * @throws  DirectoryException  If an unexpected problem occurs while applying
   *                              the modification to the entry.
   */
  public final void addModification(Modification modification)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "addModification",
                      String.valueOf(modification));
    modifiedEntry.applyModification(modification);
    modifications.add(modification);
  }
  /**
   * Retrieves the current entry before any modifications are applied.  This
   * will not be available to pre-parse plugins.
   *
   * @return  The current entry, or <CODE>null</CODE> if it is not yet
   *          available.
   */
  public Entry getCurrentEntry()
  public final Entry getCurrentEntry()
  {
    assert debugEnter(CLASS_NAME, "getCurrentEntry");
@@ -417,7 +432,7 @@
   * @return  The modified entry that is to be written to the backend, or
   *          <CODE>null</CODE> if it is not yet available.
   */
  public Entry getModifiedEntry()
  public final Entry getModifiedEntry()
  {
    assert debugEnter(CLASS_NAME, "getModifiedEntry");
@@ -437,7 +452,7 @@
   *          modify request, or <CODE>null</CODE> if there were none or this
   *          information is not yet available.
   */
  public List<AttributeValue> getCurrentPasswords()
  public final List<AttributeValue> getCurrentPasswords()
  {
    assert debugEnter(CLASS_NAME, "getCurrentPasswords");
@@ -456,7 +471,7 @@
   *          request, or <CODE>null</CODE> if there were none or this
   *          information is not yet available.
   */
  public List<AttributeValue> getNewPasswords()
  public final List<AttributeValue> getNewPasswords()
  {
    assert debugEnter(CLASS_NAME, "getNewPasswords");
@@ -466,11 +481,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -480,13 +494,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -496,14 +507,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -519,7 +526,7 @@
   *          if none has been assigned yet or if there is no applicable
   *          synchronization mechanism in place that uses change numbers.
   */
  public long getChangeNumber()
  public final long getChangeNumber()
  {
    assert debugEnter(CLASS_NAME, "getChangeNumber");
@@ -535,7 +542,7 @@
   * @param  changeNumber  The change number that has been assigned to this
   *                       operation by the synchronization mechanism.
   */
  public void setChangeNumber(long changeNumber)
  public final void setChangeNumber(long changeNumber)
  {
    assert debugEnter(CLASS_NAME, "setChangeNumber",
                      String.valueOf(changeNumber));
@@ -546,11 +553,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -561,16 +567,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -584,16 +584,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -659,13 +653,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -675,12 +666,32 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    responseControls.add(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    responseControls.remove(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -2666,14 +2677,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -2711,13 +2718,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -2727,12 +2731,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/core/MonitorConfigManager.java
@@ -48,6 +48,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/Operation.java
@@ -35,10 +35,18 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.OperationType;
import org.opends.server.types.RDN;
import org.opends.server.types.ResultCode;
import org.opends.server.types.operation.PostOperationOperation;
import org.opends.server.types.operation.PostResponseOperation;
import org.opends.server.types.operation.PreOperationOperation;
import org.opends.server.types.operation.PreParseOperation;
import static org.opends.server.core.CoreConstants.*;
import static org.opends.server.loggers.Debug.*;
@@ -52,7 +60,8 @@
 * appropriate for the type of operation.
 */
public abstract class Operation
       implements Runnable
       implements PreParseOperation, PreOperationOperation,
                  PostOperationOperation, PostResponseOperation, Runnable
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -73,21 +82,21 @@
  /**
   * The client connection with which this operation is associated.
   */
  protected ClientConnection clientConnection;
  protected final ClientConnection clientConnection;
  /**
   * The message ID for this operation.
   */
  protected int messageID;
  protected final int messageID;
  /**
   * The operation ID for this operation.
   */
  protected long operationID;
  protected final long operationID;
@@ -196,7 +205,7 @@
   * @return  A standard set of elements that should be logged in requests and
   *          responses for all types of operations.
   */
  public String[][] getCommonLogElements()
  public final String[][] getCommonLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -301,12 +310,11 @@
  /**
   * Retrieves the set of controls included in the request from the client.
   * Note that it is only acceptable for the caller to alter the contents of the
   * returned list in pre-parse plugins.
   * The returned list must not be altered.
   *
   * @return  The set of controls included in the request from the client.
   */
  public List<Control> getRequestControls()
  public final List<Control> getRequestControls()
  {
    assert debugEnter(CLASS_NAME, "getRequestControls");
@@ -316,9 +324,41 @@
  /**
   * Adds the provided control to the set of request controls for this
   * operation.  This method may only be called by pre-parse plugins.
   *
   * @param  control  The control to add to the set of request controls for this
   *                  operation.
   */
  public final void addRequestControl(Control control)
  {
    assert debugEnter(CLASS_NAME, "addRequestControl", String.valueOf(control));
    requestControls.add(control);
  }
  /**
   * Removes the provided control from the set of request controls for this
   * operation.  This method may only be called by pre-parse plugins.
   *
   * @param  control  The control to remove from the set of request controls for
   *                  this operation.
   */
  public final void removeRequestControl(Control control)
  {
    assert debugEnter(CLASS_NAME, "removeRequestControl",
                      String.valueOf(control));
    requestControls.remove(control);
  }
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   * The contents of this list must not be altered.
   *
   * @return  The set of controls to include in the response to the client.
   */
@@ -327,12 +367,35 @@
  /**
   * Adds the provided control to the set of controls to include in the response
   * to the client.  This method may not be called by post-response plugins.
   *
   * @param  control  The control to add to the set of controls to include in
   *                  the response to the client.
   */
  public abstract void addResponseControl(Control control);
  /**
   * Removes the provided control from the set of controls to include in the
   * response to the client.  This method may not be called by post-response
   * plugins.
   *
   * @param  control  The control to remove from the set of controls to include
   *                  in the response to the client.
   */
  public abstract void removeResponseControl(Control control);
  /**
   * Retrieves the result code for this operation.
   *
   * @return  The result code associated for this operation, or
   *          <CODE>null</CODE> if the operation has not yet completed.
   *          <CODE>UNDEFINED</CODE> if the operation has not yet completed.
   */
  public ResultCode getResultCode()
  public final ResultCode getResultCode()
  {
    assert debugEnter(CLASS_NAME, "getResultCode");
@@ -342,11 +405,12 @@
  /**
   * Specifies the result code for this operation.
   * Specifies the result code for this operation.  This method may not be
   * called by post-response plugins.
   *
   * @param  resultCode  The result code for this operation.
   */
  public void setResultCode(ResultCode resultCode)
  public final void setResultCode(ResultCode resultCode)
  {
    assert debugEnter(CLASS_NAME, "setResultCode", String.valueOf(resultCode));
@@ -357,11 +421,12 @@
  /**
   * Retrieves the error message for this operation.  Its contents may be
   * altered by the caller.
   * altered by pre-parse, pre-operation, and post-operation plugins, but not
   * by post-response plugins.
   *
   * @return  The error message for this operation.
   */
  public StringBuilder getErrorMessage()
  public final StringBuilder getErrorMessage()
  {
    assert debugEnter(CLASS_NAME, "getErrorMessage");
@@ -371,11 +436,12 @@
  /**
   * Specifies the error message for this operation.
   * Specifies the error message for this operation.  This method may not be
   * called by post-response plugins.
   *
   * @param  errorMessage  The error message for this operation.
   */
  public void setErrorMessage(StringBuilder errorMessage)
  public final void setErrorMessage(StringBuilder errorMessage)
  {
    assert debugEnter(CLASS_NAME, "setErrorMessage",
                      String.valueOf(errorMessage));
@@ -395,11 +461,11 @@
  /**
   * Appends the provided message to the error message buffer.  If the buffer
   * has not yet been created, then this will create it first and then add the
   * provided message.
   * provided message.  This method may not be called by post-response plugins.
   *
   * @param  message  The message to append to the error message buffer.
   */
  public void appendErrorMessage(String message)
  public final void appendErrorMessage(String message)
  {
    assert debugEnter(CLASS_NAME, "appendErrorMessage",
                      String.valueOf(message));
@@ -424,11 +490,12 @@
  /**
   * Retrieves the additional log message for this operation, which should be
   * written to the log but not included in the response to the client.  The
   * contents of this buffer may be altered by the caller.
   * contents of this buffer may be altered by pre-parse, pre-operation, and
   * post-operation plugins, but not by post-response plugins.
   *
   * @return  The additional log message for this operation.
   */
  public StringBuilder getAdditionalLogMessage()
  public final StringBuilder getAdditionalLogMessage()
  {
    assert debugEnter(CLASS_NAME, "getAdditionalLogMessage");
@@ -439,12 +506,13 @@
  /**
   * Specifies the additional log message for this operation, which should be
   * written to the log but not included in the response to the client.
   * written to the log but not included in the response to the client.  This
   * method may not be called by post-response plugins.
   *
   * @param  additionalLogMessage  The additional log message for this
   *                               operation.
   */
  public void setAdditionalLogMessage(StringBuilder additionalLogMessage)
  public final void setAdditionalLogMessage(StringBuilder additionalLogMessage)
  {
    assert debugEnter(CLASS_NAME, "setAdditionalLogMessage",
                      String.valueOf(additionalLogMessage));
@@ -463,12 +531,12 @@
  /**
   * Appends the provided message to the additional log information for this
   * operation.
   * operation.  This method may not be called by post-response plugins.
   *
   * @param  message  The message that should be appended to the additional log
   *                  information for this operation.
   */
  public void appendAdditionalLogMessage(String message)
  public final void appendAdditionalLogMessage(String message)
  {
    assert debugEnter(CLASS_NAME, "appendAdditionalLogMessage",
                      String.valueOf(message));
@@ -491,7 +559,7 @@
   * @return  The matched DN for this operation, or <CODE>null</CODE> if the
   *          operation has not yet completed or does not have a matched DN.
   */
  public DN getMatchedDN()
  public final DN getMatchedDN()
  {
    assert debugEnter(CLASS_NAME, "getMatchedDN");
@@ -501,11 +569,12 @@
  /**
   * Specifies the matched DN for this operation.
   * Specifies the matched DN for this operation.  This may not be called by
   * post-response plugins.
   *
   * @param  matchedDN  The matched DN for this operation.
   */
  public void setMatchedDN(DN matchedDN)
  public final void setMatchedDN(DN matchedDN)
  {
    assert debugEnter(CLASS_NAME, "setMatchedDN", String.valueOf(matchedDN));
@@ -515,14 +584,14 @@
  /**
   * Retrieves the set of referral URLs for this operation.  If it is non-null
   * then its contents may be altered by the caller.
   * Retrieves the set of referral URLs for this operation.  Its contents must
   * not be altered by the caller.
   *
   * @return  The set of referral URLs for this operation, or <CODE>null</CODE>
   *          if the operation is not yet complete or does not have a set of
   *          referral URLs.
   */
  public List<String> getReferralURLs()
  public final List<String> getReferralURLs()
  {
    assert debugEnter(CLASS_NAME, "getReferralURLs");
@@ -532,11 +601,12 @@
  /**
   * Specifies the set of referral URLs for this operation.
   * Specifies the set of referral URLs for this operation.  This may not be
   * called by post-response plugins.
   *
   * @param  referralURLs  The set of referral URLs for this operation.
   */
  public void setReferralURLs(List<String> referralURLs)
  public final void setReferralURLs(List<String> referralURLs)
  {
    assert debugEnter(CLASS_NAME, "setReferralURLs",
                      String.valueOf(referralURLs));
@@ -548,12 +618,13 @@
  /**
   * Sets the response elements for this operation based on the information
   * contained in the provided <CODE>DirectoryException</CODE> object.
   * contained in the provided <CODE>DirectoryException</CODE> object.  This
   * method may not be called by post-response plugins.
   *
   * @param  directoryException  The exception containing the information to use
   *                             for the response elements.
   */
  public void setResponseData(DirectoryException directoryException)
  public final void setResponseData(DirectoryException directoryException)
  {
    assert debugEnter(CLASS_NAME, "setResponseData");
@@ -573,7 +644,7 @@
   * @return  <CODE>true</CODE> if this is an internal operation, or
   *          <CODE>false</CODE> if it is not.
   */
  public boolean isInternalOperation()
  public final boolean isInternalOperation()
  {
    assert debugEnter(CLASS_NAME, "isInternalOperation");
@@ -584,13 +655,14 @@
  /**
   * Specifies whether this is an internal operation rather than one that was
   * requested by an external client.
   * requested by an external client.  This may not be called from within a
   * plugin.
   *
   * @param  isInternalOperation  Specifies whether this is an internal
   *                              operation rather than one that was requested
   *                              by an external client.
   */
  public void setInternalOperation(boolean isInternalOperation)
  public final void setInternalOperation(boolean isInternalOperation)
  {
    assert debugEnter(CLASS_NAME, "setInternalOperation",
                      String.valueOf(isInternalOperation));
@@ -607,7 +679,7 @@
   * @return  <CODE>true</CODE> if this is a data synchronization operation, or
   *          <CODE>false</CODE> if it is not.
   */
  public boolean isSynchronizationOperation()
  public final boolean isSynchronizationOperation()
  {
    assert debugEnter(CLASS_NAME, "isSynchronizationOperation");
@@ -618,14 +690,16 @@
  /**
   * Specifies whether this is a synchronization operation rather than one that
   * was requested by an external client.
   * was requested by an external client.  This method may not be called from
   * within a plugin.
   *
   * @param  isSynchronizationOperation  Specifies whether this is a
   *                                     synchronization operation rather than
   *                                     one that was requested by an external
   *                                     client.
   */
  public void setSynchronizationOperation(boolean isSynchronizationOperation)
  public final void setSynchronizationOperation(
                         boolean isSynchronizationOperation)
  {
    assert debugEnter(CLASS_NAME, "setSynchronizationOperation",
                      String.valueOf(isSynchronizationOperation));
@@ -641,11 +715,12 @@
   * connection, or the null DN if no authentication has been performed on that
   * connection.  However, it may be some other value if special processing has
   * been requested (e.g., the operation included a proxied authorization
   * control).
   * control).  This method should not be called by pre-parse plugins because
   * the correct value may not have yet been determined.
   *
   * @return  The authorization DN for this operation.
   */
  public DN getAuthorizationDN()
  public final DN getAuthorizationDN()
  {
    assert debugEnter(CLASS_NAME, "getAuthorizationDN");
@@ -670,13 +745,14 @@
  /**
   * Specifies the authorization DN for this operation.
   * Specifies the authorization DN for this operation.  This method may not be
   * called from within a plugin.
   *
   * @param  authorizationDN  The authorization DN for this operation, or
   *                          <CODE>null</CODE> if it should use the DN of the
   *                          authenticated user.
   */
  public void setAuthorizationDN(DN authorizationDN)
  public final void setAuthorizationDN(DN authorizationDN)
  {
    assert debugEnter(CLASS_NAME, "setAuthorizationDN",
                      String.valueOf(authorizationDN));
@@ -692,7 +768,7 @@
   *
   * @return  The set of attachments defined for this operation.
   */
  public Map<String,Object> getAttachments()
  public final Map<String,Object> getAttachments()
  {
    assert debugEnter(CLASS_NAME, "getAttachments");
@@ -710,7 +786,7 @@
   * @return  The requested attachment object, or <CODE>null</CODE> if it does
   *          not exist.
   */
  public Object getAttachment(String name)
  public final Object getAttachment(String name)
  {
    assert debugEnter(CLASS_NAME, "getAttachment", String.valueOf(name));
@@ -728,7 +804,7 @@
   * @return  The attachment that was removed, or <CODE>null</CODE> if it does
   *          not exist.
   */
  public Object removeAttachment(String name)
  public final Object removeAttachment(String name)
  {
    assert debugEnter(CLASS_NAME, "removeAttachment", String.valueOf(name));
@@ -748,7 +824,7 @@
   * @return  The former value held by the attachment with the given name, or
   *          <CODE>null</CODE> if there was previously no such attachment.
   */
  public Object setAttachment(String name, Object value)
  public final Object setAttachment(String name, Object value)
  {
    assert debugEnter(CLASS_NAME, "putAttachment", String.valueOf(name),
                      String.valueOf(value));
@@ -759,6 +835,38 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   */
  public abstract long getProcessingStartTime();
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   */
  public abstract long getProcessingStopTime();
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   */
  public abstract long getProcessingTime();
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
@@ -772,7 +880,7 @@
   * Indicates that processing on this operation has completed successfully and
   * that the client should perform any associated cleanup work.
   */
  public void operationCompleted()
  public final void operationCompleted()
  {
    assert debugEnter(CLASS_NAME, "operationCompleted");
@@ -798,7 +906,8 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.
   * there is one.  This method should not be called by post-operation or
   * post-response plugins.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
@@ -814,7 +923,7 @@
   *          <CODE>null</CODE> if the operation has not seen and reacted to a
   *          cancel request.
   */
  public CancelResult getCancelResult()
  public final CancelResult getCancelResult()
  {
    assert debugEnter(CLASS_NAME, "getCancelResult");
@@ -828,7 +937,7 @@
   *
   * @param  cancelResult  The cancel result for this operation.
   */
  public void setCancelResult(CancelResult cancelResult)
  public final void setCancelResult(CancelResult cancelResult)
  {
    assert debugEnter(CLASS_NAME, "setCancelResult",
                      String.valueOf(cancelResult));
@@ -847,7 +956,7 @@
   *
   * @param  cancelRequest  The request to cancel this operation.
   */
  protected void indicateCancelled(CancelRequest cancelRequest)
  protected final void indicateCancelled(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "indicateCancelled",
                      String.valueOf(cancelRequest));
@@ -876,7 +985,7 @@
   *
   * @return  A string representation of this operation.
   */
  public String toString()
  public final String toString()
  {
    assert debugEnter(CLASS_NAME, "toString");
opends/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java
@@ -48,6 +48,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/PasswordPolicy.java
@@ -59,6 +59,7 @@
import org.opends.server.types.ByteString;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/PasswordPolicyConfigManager.java
@@ -36,6 +36,7 @@
import org.opends.server.config.ConfigException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/PasswordPolicyState.java
@@ -55,6 +55,7 @@
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConditionResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.DebugLogCategory;
import org.opends.server.types.DebugLogSeverity;
opends/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java
@@ -48,6 +48,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/PasswordValidatorConfigManager.java
@@ -48,6 +48,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/PersistentSearch.java
@@ -34,6 +34,7 @@
import org.opends.server.controls.EntryChangeNotificationControl;
import org.opends.server.controls.PersistentSearchChangeType;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.SearchFilter;
opends/src/server/org/opends/server/core/PluginConfigManager.java
@@ -63,6 +63,7 @@
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.IntermediateResponse;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.LDIFImportConfig;
opends/src/server/org/opends/server/core/RFC3672SubtreeSpecification.java
@@ -38,6 +38,7 @@
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
opends/src/server/org/opends/server/core/RelativeSubtreeSpecification.java
@@ -35,6 +35,7 @@
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/core/RootDNConfigManager.java
@@ -41,9 +41,11 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/SASLConfigManager.java
@@ -48,6 +48,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/Schema.java
File was deleted
opends/src/server/org/opends/server/core/SchemaConfigManager.java
@@ -53,17 +53,20 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DITContentRule;
import org.opends.server.types.DITStructureRule;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.MatchingRuleUse;
import org.opends.server.types.NameForm;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import org.opends.server.util.LDIFReader;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/SearchOperation.java
@@ -55,15 +55,26 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelledOperationException;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SearchResultReference;
import org.opends.server.types.SearchScope;
import org.opends.server.types.operation.PostOperationSearchOperation;
import org.opends.server.types.operation.PostResponseSearchOperation;
import org.opends.server.types.operation.PreOperationSearchOperation;
import org.opends.server.types.operation.PreParseSearchOperation;
import org.opends.server.types.operation.SearchEntrySearchOperation;
import org.opends.server.types.operation.SearchReferenceSearchOperation;
import org.opends.server.util.TimeThread;
import static org.opends.server.core.CoreConstants.*;
@@ -82,6 +93,9 @@
 */
public class SearchOperation
       extends Operation
       implements PreParseSearchOperation, PreOperationSearchOperation,
                  PostOperationSearchOperation, PostResponseSearchOperation,
                  SearchEntrySearchOperation, SearchReferenceSearchOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -219,7 +233,15 @@
    this.timeLimit   = timeLimit;
    this.typesOnly   = typesOnly;
    this.rawFilter   = rawFilter;
    this.attributes  = attributes;
    if (attributes == null)
    {
      this.attributes  = new LinkedHashSet<String>(0);
    }
    else
    {
      this.attributes  = attributes;
    }
    if (clientConnection.getSizeLimit() <= 0)
@@ -324,7 +346,15 @@
    this.timeLimit   = timeLimit;
    this.typesOnly   = typesOnly;
    this.filter      = filter;
    this.attributes  = attributes;
    if (attributes == null)
    {
      this.attributes = new LinkedHashSet<String>(0);
    }
    else
    {
      this.attributes  = attributes;
    }
    rawBaseDN = new ASN1OctetString(baseDN.toString());
    rawFilter = new LDAPFilter(filter);
@@ -386,7 +416,7 @@
   * @return  The raw, unprocessed base DN as included in the request from the
   *          client.
   */
  public ByteString getRawBaseDN()
  public final ByteString getRawBaseDN()
  {
    assert debugEnter(CLASS_NAME, "getRawBaseDN");
@@ -397,14 +427,12 @@
  /**
   * Specifies the raw, unprocessed base DN as included in the request from the
   * client.  This method should only be called by pre-parse plugins.  Any other
   * code that wishes to alter the base DN should use the <CODE>setBaseDN</CODE>
   * method instead.
   * client.  This method should only be called by pre-parse plugins.
   *
   * @param  rawBaseDN  The raw, unprocessed base DN as included in the request
   *                    from the client.
   */
  public void setRawBaseDN(ByteString rawBaseDN)
  public final void setRawBaseDN(ByteString rawBaseDN)
  {
    assert debugEnter(CLASS_NAME, "setRawBaseDN", String.valueOf(rawBaseDN));
@@ -423,7 +451,7 @@
   * @return  The base DN for this search operation, or <CODE>null</CODE> if the
   *          raw base DN has not yet been processed.
   */
  public DN getBaseDN()
  public final DN getBaseDN()
  {
    assert debugEnter(CLASS_NAME, "getBaseDN");
@@ -433,13 +461,12 @@
  /**
   * Specifies the base DN for this search operation.  This should not be called
   * by pre-parse plugins, which should use the <CODE>setRawBaseDN</CODE> method
   * instead.
   * Specifies the base DN for this search operation.  This method is only
   * intended for internal use.
   *
   * @param  baseDN  The base DN for this search operation.
   */
  public void setBaseDN(DN baseDN)
  public final void setBaseDN(DN baseDN)
  {
    assert debugEnter(CLASS_NAME, "setBaseDN", String.valueOf(baseDN));
@@ -453,7 +480,7 @@
   *
   * @return  The scope for this search operation.
   */
  public SearchScope getScope()
  public final SearchScope getScope()
  {
    assert debugEnter(CLASS_NAME, "getScope");
@@ -463,11 +490,12 @@
  /**
   * Specifies the scope for this search operation.
   * Specifies the scope for this search operation.  This should only be called
   * by pre-parse plugins.
   *
   * @param  scope  The scope for this search operation.
   */
  public void setScope(SearchScope scope)
  public final void setScope(SearchScope scope)
  {
    assert debugEnter(CLASS_NAME, "setScope", String.valueOf(scope));
@@ -481,7 +509,7 @@
   *
   * @return  The alias dereferencing policy for this search operation.
   */
  public DereferencePolicy getDerefPolicy()
  public final DereferencePolicy getDerefPolicy()
  {
    assert debugEnter(CLASS_NAME, "getDerefPolicy");
@@ -491,12 +519,13 @@
  /**
   * Specifies the alias dereferencing policy for this search operation.
   * Specifies the alias dereferencing policy for this search operation.  This
   * should only be called by pre-parse plugins.
   *
   * @param  derefPolicy  The alias dereferencing policy for this search
   *                      operation.
   */
  public void setDerefPolicy(DereferencePolicy derefPolicy)
  public final void setDerefPolicy(DereferencePolicy derefPolicy)
  {
    assert debugEnter(CLASS_NAME, "setDerefPolicy",
                      String.valueOf(derefPolicy));
@@ -511,7 +540,7 @@
   *
   * @return  The size limit for this search operation.
   */
  public int getSizeLimit()
  public final int getSizeLimit()
  {
    assert debugEnter(CLASS_NAME, "getSizeLimit");
@@ -521,11 +550,12 @@
  /**
   * Specifies the size limit for this search operation.
   * Specifies the size limit for this search operation.  This should only be
   * called by pre-parse plugins.
   *
   * @param  sizeLimit  The size limit for this search operation.
   */
  public void setSizeLimit(int sizeLimit)
  public final void setSizeLimit(int sizeLimit)
  {
    assert debugEnter(CLASS_NAME, "setSizeLimit", String.valueOf(sizeLimit));
@@ -539,7 +569,7 @@
   *
   * @return  The time limit for this search operation.
   */
  public int getTimeLimit()
  public final int getTimeLimit()
  {
    assert debugEnter(CLASS_NAME, "getTimeLimit");
@@ -549,11 +579,12 @@
  /**
   * Specifies the time limit for this search operation.
   * Specifies the time limit for this search operation.  This should only be
   * called by pre-parse plugins.
   *
   * @param  timeLimit  The time limit for this search operation.
   */
  public void setTimeLimit(int timeLimit)
  public final void setTimeLimit(int timeLimit)
  {
    assert debugEnter(CLASS_NAME, "setTimeLimit", String.valueOf(timeLimit));
@@ -567,7 +598,7 @@
   *
   * @return  The typesOnly flag for this search operation.
   */
  public boolean getTypesOnly()
  public final boolean getTypesOnly()
  {
    assert debugEnter(CLASS_NAME, "getTypesOnly");
@@ -577,11 +608,12 @@
  /**
   * Specifies the typesOnly flag for this search operation.
   * Specifies the typesOnly flag for this search operation.  This should only
   * be called by pre-parse plugins.
   *
   * @param  typesOnly  The typesOnly flag for this search operation.
   */
  public void setTypesOnly(boolean typesOnly)
  public final void setTypesOnly(boolean typesOnly)
  {
    assert debugEnter(CLASS_NAME, "setTypesOnly", String.valueOf(typesOnly));
@@ -599,7 +631,7 @@
   * @return  The raw, unprocessed search filter as included in the request from
   *          the client.
   */
  public LDAPFilter getRawFilter()
  public final LDAPFilter getRawFilter()
  {
    assert debugEnter(CLASS_NAME, "getRawFilter");
@@ -611,13 +643,11 @@
  /**
   * Specifies the raw, unprocessed search filter as included in the request
   * from the client.  This method should only be called by pre-parse plugins.
   * All later processing that wishes to change the filter should use the
   * <CODE>setFilter</CODE> method instead.
   *
   * @param  rawFilter  The raw, unprocessed search filter as included in the
   *                    request from the client.
   */
  public void setRawFilter(LDAPFilter rawFilter)
  public final void setRawFilter(LDAPFilter rawFilter)
  {
    assert debugEnter(CLASS_NAME, "setRawFilter", String.valueOf(rawFilter));
@@ -631,12 +661,12 @@
  /**
   * Retrieves the filter for this search operation.  This should not be called
   * by pre-parse plugins, because the raw filter will not yet have been
   * processed.  Instead, they should use the <CODE>getRawFilter</CODE> method.
   * processed.
   *
   * @return  The filter for this search operation, or <CODE>null</CODE> if the
   *          raw filter has not yet been processed.
   */
  public SearchFilter getFilter()
  public final SearchFilter getFilter()
  {
    assert debugEnter(CLASS_NAME, "getFilter");
@@ -646,32 +676,40 @@
  /**
   * Specifies the filter for this search operation.  This should not be called
   * by pre-parse plugins, which should instead use the
   * <CODE>setRawFilter</CODE> method.
   * Retrieves the set of requested attributes for this search operation.  Its
   * contents should not be be altered.
   *
   * @param  filter  The filter for this search operation.
   * @return  The set of requested attributes for this search operation.
   */
  public void setFilter(SearchFilter filter)
  public final LinkedHashSet<String> getAttributes()
  {
    assert debugEnter(CLASS_NAME, "setFilter", String.valueOf(filter));
    assert debugEnter(CLASS_NAME, "getAttributes");
    this.filter = filter;
    return attributes;
  }
  /**
   * Retrieves the set of requested attributes for this search operation.  Its
   * contents may be altered in pre-parse or pre-operation plugins.
   * Specifies the set of requested attributes for this search operation.  It
   * should only be called by pre-parse plugins.
   *
   * @return  The set of requested attributes for this search operation.
   * @param  attributes  The set of requested attributes for this search
   *                     operation.
   */
  public LinkedHashSet<String> getAttributes()
  public final void setAttributes(LinkedHashSet<String> attributes)
  {
    assert debugEnter(CLASS_NAME, "getAttributes");
    assert debugEnter(CLASS_NAME, "setAttributes",
                      String.valueOf(attributes));
    return attributes;
    if (attributes == null)
    {
      this.attributes.clear();
    }
    else
    {
      this.attributes = attributes;
    }
  }
@@ -683,7 +721,7 @@
   * @return  The number of entries sent to the client for this search
   *          operation.
   */
  public int getEntriesSent()
  public final int getEntriesSent()
  {
    assert debugEnter(CLASS_NAME, "getEntriesSent");
@@ -699,7 +737,7 @@
   * @return  The number of search references sent to the client for this search
   *          operation.
   */
  public int getReferencesSent()
  public final int getReferencesSent()
  {
    assert debugEnter(CLASS_NAME, "getReferencesSent");
@@ -709,11 +747,10 @@
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStartTime()
  @Override()
  public final long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
@@ -723,13 +760,10 @@
  /**
   * Retrieves the time that processing stopped for this operation.  This will
   * actually hold a time immediately before the response was sent to the
   * client.
   *
   * @return  The time that processing stopped for this operation.
   * {@inheritDoc}
   */
  public long getProcessingStopTime()
  @Override()
  public final long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
@@ -739,14 +773,10 @@
  /**
   * Retrieves the length of time in milliseconds that the server spent
   * processing this operation.  This should not be called until after the
   * server has sent the response to the client.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   * {@inheritDoc}
   */
  public long getProcessingTime()
  @Override()
  public final long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
@@ -770,7 +800,7 @@
   *          <CODE>false</CODE> if not for some reason (e.g., the size limit
   *          has been reached or the search has been abandoned).
   */
  public boolean returnEntry(Entry entry, List<Control> controls)
  public final boolean returnEntry(Entry entry, List<Control> controls)
  {
    assert debugEnter(CLASS_NAME, "returnEntry", String.valueOf(entry));
@@ -1227,7 +1257,7 @@
   *          <CODE>false</CODE> if not for some reason (e.g., the size limit
   *          has been reached or the search has been abandoned).
   */
  public boolean returnReference(SearchResultReference reference)
  public final boolean returnReference(SearchResultReference reference)
  {
    assert debugEnter(CLASS_NAME, "returnReference", String.valueOf(reference));
@@ -1319,7 +1349,7 @@
   * message should have been set for this operation before this method is
   * called.
   */
  public void sendSearchResultDone()
  public final void sendSearchResultDone()
  {
    assert debugEnter(CLASS_NAME, "sendSearchResultDone");
@@ -1345,11 +1375,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -1360,16 +1389,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -1408,16 +1431,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -1486,13 +1503,10 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
@@ -1502,12 +1516,32 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    responseControls.add(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    responseControls.remove(control);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -2093,7 +2127,7 @@
   *                                       to a request to cancel or abandon the
   *                                       search operation.
   */
  private void searchBackend(Backend backend)
  private final void searchBackend(Backend backend)
          throws DirectoryException, CancelledOperationException
  {
    assert debugEnter(CLASS_NAME, "searchBackend", String.valueOf(backend));
@@ -2132,14 +2166,10 @@
  /**
   * Attempts to cancel this operation before processing has completed.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -2183,13 +2213,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -2199,12 +2226,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/core/SimpleSubtreeSpecification.java
@@ -37,6 +37,7 @@
import java.util.regex.Pattern;
import org.opends.server.api.SubtreeSpecification;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.util.StaticUtils;
opends/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java
@@ -43,6 +43,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
opends/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java
@@ -39,9 +39,11 @@
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.extensions.NullTrustManagerProvider;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/core/UnbindOperation.java
@@ -32,8 +32,13 @@
import java.util.List;
import org.opends.server.api.ClientConnection;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.OperationType;
import org.opends.server.types.operation.PostOperationUnbindOperation;
import org.opends.server.types.operation.PreParseUnbindOperation;
import static org.opends.server.loggers.Access.*;
import static org.opends.server.loggers.Debug.*;
@@ -48,6 +53,7 @@
 */
public class UnbindOperation
       extends Operation
       implements PreParseUnbindOperation, PostOperationUnbindOperation
{
  /**
   * The fully-qualified name of this class for debugging purposes.
@@ -57,6 +63,14 @@
  // The time that processing started on this operation.
  private long processingStartTime;
  // The time that processing ended on this operation.
  private long processingStopTime;
  /**
   * Creates a new unbind operation with the provided information.
   *
@@ -81,11 +95,10 @@
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   * {@inheritDoc}
   */
  public OperationType getOperationType()
  @Override()
  public final OperationType getOperationType()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -96,16 +109,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in requests for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in requests for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getRequestLogElements()
  @Override()
  public final String[][] getRequestLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -118,16 +125,10 @@
  /**
   * Retrieves a standard set of elements that should be logged in responses for
   * this type of operation.  Each element in the array will itself be a
   * two-element array in which the first element is the name of the field and
   * the second is a string representation of the value, or <CODE>null</CODE> if
   * there is no value for that field.
   *
   * @return  A standard set of elements that should be logged in responses for
   *          this type of operation.
   * {@inheritDoc}
   */
  public String[][] getResponseLogElements()
  @Override()
  public final String[][] getResponseLogElements()
  {
    // Note that no debugging will be done in this method because it is a likely
    // candidate for being called by the logging subsystem.
@@ -140,19 +141,14 @@
  /**
   * Retrieves the set of controls to include in the response to the client.
   * Note that the contents of this list should not be altered after
   * post-operation plugins have been called.  Note that unbind operations
   * must never have an associated response, so this method will not be used for
   * this type of operation.
   *
   * @return  The set of controls to include in the response to the client.
   * {@inheritDoc}
   */
  public List<Control> getResponseControls()
  @Override()
  public final List<Control> getResponseControls()
  {
    assert debugEnter(CLASS_NAME, "getResponseControls");
    // An abandon operation can never have a response, so just return an empty
    // An unbind operation can never have a response, so just return an empty
    // list.
    return NO_RESPONSE_CONTROLS;
  }
@@ -160,12 +156,71 @@
  /**
   * Performs the work of actually processing this operation.  This should
   * include all processing for the operation, including invoking plugins,
   * logging messages, performing access control, managing synchronization, and
   * any other work that might need to be done in the course of processing.
   * {@inheritDoc}
   */
  public void run()
  @Override()
  public final void addResponseControl(Control control)
  {
    // An unbind operation can never have a response, so just ignore this.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void removeResponseControl(Control control)
  {
    // An unbind operation can never have a response, so just ignore this.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public long getProcessingStartTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStartTime");
    return processingStartTime;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public long getProcessingStopTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingStopTime");
    return processingStopTime;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public long getProcessingTime()
  {
    assert debugEnter(CLASS_NAME, "getProcessingTime");
    return (processingStopTime - processingStartTime);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final void run()
  {
    assert debugEnter(CLASS_NAME, "run");
@@ -175,6 +230,8 @@
         DirectoryServer.getPluginConfigManager();
    boolean skipPostOperation = false;
    processingStartTime = System.currentTimeMillis();
    // Invoke the pre-parse unbind plugins.  We don't care about the result
    // since we're going to close the connection anyway.
@@ -196,21 +253,17 @@
    // Invoke the post-operation unbind plugins.
    pluginConfigManager.invokePostOperationUnbindPlugins(this);
    processingStopTime = System.currentTimeMillis();
  }
  /**
   * Attempts to cancel this operation before processing has completed.  Note
   * that an unbind operation may not be canceled, so this should never do
   * anything.
   *
   * @param  cancelRequest  Information about the way in which the operation
   *                        should be canceled.
   *
   * @return  A code providing information on the result of the cancellation.
   * {@inheritDoc}
   */
  public CancelResult cancel(CancelRequest cancelRequest)
  @Override()
  public final CancelResult cancel(CancelRequest cancelRequest)
  {
    assert debugEnter(CLASS_NAME, "cancel", String.valueOf(cancelRequest));
@@ -221,14 +274,10 @@
  /**
   * Retrieves the cancel request that has been issued for this operation, if
   * there is one.  Note that an unbind operation may not be canceled, so this
   * will always return <CODE>null</CODE>.
   *
   * @return  The cancel request that has been issued for this operation, or
   *          <CODE>null</CODE> if there has not been any request to cancel.
   * {@inheritDoc}
   */
  public CancelRequest getCancelRequest()
  @Override()
  public final CancelRequest getCancelRequest()
  {
    assert debugEnter(CLASS_NAME, "getCancelRequest");
@@ -238,12 +287,10 @@
  /**
   * Appends a string representation of this operation to the provided buffer.
   *
   * @param  buffer  The buffer into which a string representation of this
   *                 operation should be appended.
   * {@inheritDoc}
   */
  public void toString(StringBuilder buffer)
  @Override()
  public final void toString(StringBuilder buffer)
  {
    assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder");
opends/src/server/org/opends/server/extensions/AnonymousSASLMechanismHandler.java
@@ -33,11 +33,11 @@
import org.opends.server.config.ConfigException;
import org.opends.server.core.BindOperation;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ByteString;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/extensions/Base64PasswordStorageScheme.java
@@ -31,10 +31,10 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/BlindTrustManagerProvider.java
@@ -35,8 +35,8 @@
import org.opends.server.api.TrustManagerProvider;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.ExtensionsMessages.*;
opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
@@ -47,17 +47,17 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.core.BindOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockManager;
import org.opends.server.core.PasswordPolicyState;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockManager;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java
@@ -32,13 +32,13 @@
import org.opends.server.api.ExtendedOperationHandler;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.CancelRequest;
import org.opends.server.core.CancelResult;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1Sequence;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/extensions/ClearPasswordStorageScheme.java
@@ -31,10 +31,10 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.extensions.ExtensionsConstants.*;
opends/src/server/org/opends/server/extensions/DefaultEntryCache.java
@@ -35,9 +35,9 @@
import org.opends.server.api.EntryCache;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockType;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
@@ -52,20 +52,20 @@
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.BindOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockManager;
import org.opends.server.core.PasswordPolicyState;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockManager;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
@@ -40,12 +40,12 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.MultiChoiceConfigAttribute;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.AccountStatusNotificationType;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java
@@ -42,9 +42,7 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
@@ -52,8 +50,10 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SearchScope;
opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
@@ -43,17 +43,17 @@
import org.opends.server.config.MultiChoiceConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.BindOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/FIFOEntryCache.java
@@ -50,14 +50,14 @@
import org.opends.server.config.IntegerWithUnitConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockManager;
import org.opends.server.types.CacheEntry;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockManager;
import org.opends.server.types.LockType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
@@ -48,11 +48,11 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
@@ -47,11 +47,11 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
@@ -46,13 +46,13 @@
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.BindOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java
@@ -42,13 +42,13 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.core.BindOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/extensions/InternalConnectionSecurityProvider.java
@@ -32,7 +32,7 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.api.ConnectionSecurityProvider;
import org.opends.server.core.DirectoryException;
import org.opends.server.types.DirectoryException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/extensions/JMXAlertHandler.java
@@ -55,7 +55,7 @@
import org.opends.server.config.JMXMBean;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.DN;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.ConfigMessages.*;
opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
@@ -39,12 +39,12 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.IntegerConfigAttribute;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.Operation;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
@@ -35,13 +35,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java
@@ -36,9 +36,9 @@
import org.opends.server.api.ConnectionSecurityProvider;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.ExtensionsMessages.*;
opends/src/server/org/opends/server/extensions/NullKeyManagerProvider.java
@@ -33,8 +33,8 @@
import org.opends.server.api.KeyManagerProvider;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.ExtensionsMessages.*;
opends/src/server/org/opends/server/extensions/NullTrustManagerProvider.java
@@ -33,8 +33,8 @@
import org.opends.server.api.TrustManagerProvider;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.ExtensionsMessages.*;
opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
@@ -46,11 +46,11 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
@@ -43,11 +43,8 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockManager;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.PasswordPolicyState;
import org.opends.server.protocols.asn1.ASN1Element;
@@ -63,8 +60,11 @@
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockManager;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
@@ -41,17 +41,17 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.core.BindOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockManager;
import org.opends.server.core.PasswordPolicyState;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockManager;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
@@ -41,13 +41,13 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.NamedCharacterSet;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
@@ -35,13 +35,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java
@@ -36,13 +36,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java
@@ -36,13 +36,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java
@@ -36,13 +36,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java
@@ -36,13 +36,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java
@@ -36,13 +36,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.util.Base64;
opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
@@ -47,14 +47,14 @@
import org.opends.server.config.IntegerWithUnitConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockManager;
import org.opends.server.types.CacheEntry;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockManager;
import org.opends.server.types.LockType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchFilter;
opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java
@@ -32,13 +32,13 @@
import org.opends.server.api.ExtendedOperationHandler;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java
@@ -36,12 +36,12 @@
import org.opends.server.api.CertificateMapper;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockManager;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LockManager;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/extensions/TLSCapableConnection.java
@@ -28,8 +28,8 @@
import org.opends.server.core.DirectoryException;
import org.opends.server.core.Operation;
import org.opends.server.types.DirectoryException;
opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java
@@ -45,10 +45,10 @@
import org.opends.server.api.TrustManagerProvider;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.InitializationException;
import org.opends.server.types.SSLClientAuthPolicy;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
@@ -43,16 +43,16 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.config.IntegerConfigAttribute;
import org.opends.server.core.CancelRequest;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.Operation;
import org.opends.server.monitors.TraditionalWorkQueueMonitor;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java
@@ -29,10 +29,10 @@
import org.opends.server.api.DirectoryThread;
import org.opends.server.core.CancelRequest;
import org.opends.server.core.CancelResult;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.Operation;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.DebugLogCategory;
import org.opends.server.types.DebugLogSeverity;
import org.opends.server.types.DisconnectReason;
opends/src/server/org/opends/server/extensions/WhoAmIExtendedOperation.java
@@ -34,9 +34,9 @@
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/loggers/DirectoryFileHandler.java
@@ -40,9 +40,9 @@
import java.util.logging.LogRecord;
import org.opends.server.api.InvokableComponent;
import org.opends.server.core.DirectoryException;
import org.opends.server.config.ConfigAttribute;
import org.opends.server.config.ConfigEntry;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.InvokableMethod;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/messages/PluginMessages.java
@@ -769,6 +769,17 @@
  /**
   * The message ID for the message that will be used if an attempt is made to
   * invoke a plugin for a plugin type that it does not support.  This takes
   * two arguments, which are the DN of the plugin configuration entry and the
   * name of the unsupported plugin type.
   */
  public static final int MSGID_PLUGIN_TYPE_NOT_SUPPORTED =
       CATEGORY_MASK_PLUGIN | SEVERITY_MASK_SEVERE_ERROR | 67;
  /**
   * Associates a set of generic messages with the message IDs defined in this
   * class.
   */
@@ -1120,6 +1131,11 @@
                    "An error occurred while attempting to encode a password " +
                    "value stored in attribute %s of user entry %s:  %s.  " +
                    "Password values for this user will not be encoded.");
    registerMessage(MSGID_PLUGIN_TYPE_NOT_SUPPORTED,
                    "The plugin defined in configuration entry %s does not " +
                    "support the %s plugin type.");
  }
}
opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java
@@ -33,11 +33,11 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.InitializationException;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
@@ -101,7 +101,7 @@
   * @throws org.opends.server.config.ConfigException
   *          If an unrecoverable problem arises in the
   *          process of performing the initialization.
   * @throws org.opends.server.core.InitializationException
   * @throws org.opends.server.types.InitializationException
   *          If a problem occurs during initialization
   *          that is not related to the server
   *          configuration.
opends/src/server/org/opends/server/monitors/StackTraceMonitorProvider.java
@@ -36,11 +36,11 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/monitors/SystemInfoMonitorProvider.java
@@ -36,11 +36,11 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/monitors/TraditionalWorkQueueMonitor.java
@@ -36,12 +36,12 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.extensions.TraditionalWorkQueue;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java
@@ -35,11 +35,11 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.InitializationException;
import org.opends.server.util.DynamicConstants;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/plugins/EntryUUIDPlugin.java
@@ -42,9 +42,7 @@
import org.opends.server.api.plugin.PreOperationPluginResult;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
@@ -52,6 +50,7 @@
import org.opends.server.types.AttributeValue;
import org.opends.server.types.Entry;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.operation.PreOperationAddOperation;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.MessageHandler.*;
@@ -62,9 +61,14 @@
/**
 * This class implements a Directory Server plugin that will add the entryUUID
 * attribute to an entry whenever it is added or imported.
 * attribute to an entry whenever it is added or imported as per RFC 4530.  For
 * entries added over LDAP, the entryUUID will be based on a semi-random UUID
 * (which is still guaranteed to be unique).  For entries imported from LDIF,
 * the UUID will be constructed from the entry DN using a repeatable algorithm.
 * This will ensure that LDIF files imported in parallel across multiple systems
 * will have identical entryUUID values.
 */
public class EntryUUIDPlugin
public final class EntryUUIDPlugin
       extends DirectoryServerPlugin
{
  /**
@@ -83,7 +87,7 @@
  // The attribute type for the "entryUUID" attribute.
  private AttributeType entryUUIDType;
  private final AttributeType entryUUIDType;
@@ -98,33 +102,33 @@
    super();
    assert debugConstructor(CLASS_NAME);
    // Get the entryUUID attribute type.  This needs to be done in the
    // constructor in order to make the associated variables "final".
    AttributeType at = DirectoryServer.getAttributeType(ENTRYUUID);
    if (at == null)
    {
      at = new AttributeType(ENTRYUUID, Collections.singleton(ENTRYUUID),
                             ENTRYUUID, null, null,
                             DirectoryServer.getDefaultAttributeSyntax(),
                             AttributeUsage.DIRECTORY_OPERATION, false, true,
                             false, true);
    }
    entryUUIDType = at;
  }
  /**
   * Performs any initialization necessary for this plugin.  This will be called
   * as soon as the plugin has been loaded and before it is registered with the
   * server.
   *
   * @param  directoryServer  The reference to the Directory Server instance in
   *                          which the plugin will be running.
   * @param  pluginTypes      The set of plugin types that indicate the ways in
   *                          which this plugin will be invoked.
   * @param  configEntry      The entry containing the configuration information
   *                          for this plugin.
   *
   * @throws  ConfigException  If the provided entry does not contain a valid
   *                           configuration for this plugin.
   *
   * @throws  InitializationException  If a problem occurs while initializing
   *                                   the plugin that is not related to the
   *                                   server configuration.
   * {@inheritDoc}
   */
  public void initializePlugin(DirectoryServer directoryServer,
                               Set<PluginType> pluginTypes,
                               ConfigEntry configEntry)
         throws ConfigException, InitializationException
  @Override()
  public final void initializePlugin(DirectoryServer directoryServer,
                                    Set<PluginType> pluginTypes,
                                    ConfigEntry configEntry)
         throws ConfigException
  {
    assert debugEnter(CLASS_NAME, "initializePlugin",
                      String.valueOf(directoryServer),
@@ -149,37 +153,16 @@
          throw new ConfigException(msgID, message);
      }
    }
    // Get the entryUUID attribute type.
    entryUUIDType = DirectoryServer.getAttributeType(ENTRYUUID);
    if (entryUUIDType == null)
    {
      entryUUIDType = new AttributeType(ENTRYUUID,
          Collections.singleton(ENTRYUUID),
          ENTRYUUID,
          null,
          null,
          DirectoryServer.getDefaultAttributeSyntax(),
          AttributeUsage.DIRECTORY_OPERATION,
          false, true, false, true);
    }
  }
  /**
   * Performs any necessary processing that should be done during an LDIF import
   * operation immediately after reading an entry and confirming that it should
   * be imported based on the provided configuration.
   *
   * @param  importConfig  The configuration used for the LDIF import.
   * @param  entry         The entry that has been read to the LDIF file.
   *
   * @return  The result of the plugin processing.
   * {@inheritDoc}
   */
  public LDIFPluginResult doLDIFImport(LDIFImportConfig importConfig,
                                       Entry entry)
  @Override()
  public final LDIFPluginResult doLDIFImport(LDIFImportConfig importConfig,
                                             Entry entry)
  {
    assert debugEnter(CLASS_NAME, "doLDIFImport",
                      String.valueOf(importConfig), String.valueOf(entry));
@@ -217,14 +200,11 @@
  /**
   * Performs any necessary processing that should be done just before the
   * Directory Server performs the core processing for an add operation.
   *
   * @param  addOperation  The add operation to be processed.
   *
   * @return  Information about the result of the plugin processing.
   * {@inheritDoc}
   */
  public PreOperationPluginResult doPreOperation(AddOperation addOperation)
  @Override()
  public final PreOperationPluginResult
       doPreOperation(PreOperationAddOperation addOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(addOperation));
@@ -252,10 +232,10 @@
    uuidList = new ArrayList<Attribute>(1);
    Attribute uuidAttr = new Attribute(entryUUIDType, "entryUUID", values);
    uuidList.add(uuidAttr);
    operationalAttributes.put(entryUUIDType, uuidList);
    // We shouldn't ever need to return a non-success result.
    // Add the attribute to the entry and return.
    addOperation.setAttribute(entryUUIDType, uuidList);
    return new PreOperationPluginResult();
  }
}
opends/src/server/org/opends/server/plugins/LDAPADListPlugin.java
@@ -36,27 +36,27 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.SearchOperation;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DebugLogCategory;
import org.opends.server.types.DebugLogSeverity;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.operation.PreParseSearchOperation;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.PluginMessages.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
/**
 *  This pre-parse plugin modifies the operation to allow an object class
 * This pre-parse plugin modifies the operation to allow an object class
 * identifier to be specified in attributes lists, such as in Search requests,
 * to request the return all attributes belonging to an object class as per the
 * specification in RFC 4529.  The "@" character is used to distinguish an
 * object class identifier from an attribute descriptions.
 */
public class LDAPADListPlugin
public final class LDAPADListPlugin
       extends DirectoryServerPlugin
{
  private static final String CLASS_NAME =
@@ -80,28 +80,13 @@
  /**
   * Performs any initialization necessary for this plugin.  This will be called
   * as soon as the plugin has been loaded and before it is registered with the
   * server.
   *
   * @param  directoryServer  The reference to the Directory Server instance in
   *                          which the plugin will be running.
   * @param  pluginTypes      The set of plugin types that indicate the ways in
   *                          which this plugin will be invoked.
   * @param  configEntry      The entry containing the configuration information
   *                          for this plugin.
   *
   * @throws  ConfigException  If the provided entry does not contain a valid
   *                           configuration for this plugin.
   *
   * @throws  InitializationException  If a problem occurs while initializing
   *                                   the plugin that is not related to the
   *                                   server configuration.
   * {@inheritDoc}
   */
  public void initializePlugin(DirectoryServer directoryServer,
                               Set<PluginType> pluginTypes,
                               ConfigEntry configEntry)
         throws ConfigException, InitializationException
  @Override()
  public final void initializePlugin(DirectoryServer directoryServer,
                                     Set<PluginType> pluginTypes,
                                     ConfigEntry configEntry)
         throws ConfigException
  {
    assert debugEnter(CLASS_NAME, "initializePlugin",
                      String.valueOf(directoryServer),
@@ -138,70 +123,72 @@
  /**
   * Performs any necessary processing that should be done before the Directory
   * Server parses the elements of a search request.
   *
   * @param  searchOperation  The search operation that has been requested.
   *
   * @return  Information about the result of the plugin processing.
   * {@inheritDoc}
   */
  public PreParsePluginResult doPreParse(SearchOperation searchOperation)
  @Override()
  public final PreParsePluginResult
       doPreParse(PreParseSearchOperation searchOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreParseSearch",
          String.valueOf(searchOperation));
    // Iterate through the requested attributes to see if any of them start with
    // an "@" symbol.  If not, then we don't need to do anything.  If so, then
    // keep track of them.
    LinkedHashSet<String> attributes = searchOperation.getAttributes();
    LinkedHashSet<String> objectClassList = new LinkedHashSet<String> ();
    // Create list of object classes that need to be replaced with attributes.
    for(String attribute : attributes)
    boolean foundOC = false;
    for (String attrName : attributes)
    {
      // check if it starts with "@". If so add it to the list of object classes
      if(attribute.startsWith("@"))
      if (attrName.startsWith("@"))
      {
        objectClassList.add(attribute);
        foundOC = true;
        break;
      }
    }
    // Iterate through list of object classes and replace with attributes.
    for (String objectClass : objectClassList)
    if (foundOC)
    {
      // find object class and get list of attributes.
      ObjectClass objClass = DirectoryServer.getObjectClass(
          objectClass.substring(1, objectClass.length()));
      // remove the object class from the attribute list.
      attributes.remove(objectClass);
      if(objClass == null)
      LinkedHashSet<String> newAttrs = new LinkedHashSet<String>();
      for (String attrName : attributes)
      {
        // object class not found.
        assert debugMessage(DebugLogCategory.PLUGIN, DebugLogSeverity.WARNING,
                        CLASS_NAME, "doPreSearch",
                        "Invalid object class: " + objectClass);
      } else
      {
        Set<AttributeType> requiredAttributes =
            objClass.getRequiredAttributeChain();
        Set<AttributeType> optionalAttributes =
            objClass.getOptionalAttributeChain();
        // remove attribute and replace with expanded list.
        assert debugMessage(DebugLogCategory.PLUGIN, DebugLogSeverity.INFO,
                            CLASS_NAME, "doPreParse",
                            "Replacing object class " +
                                 String.valueOf(objClass));
        for(AttributeType req : requiredAttributes)
        if (attrName.startsWith("@"))
        {
          attributes.add(req.getNameOrOID());
          String lowerName = toLowerCase(attrName.substring(1));
          ObjectClass oc = DirectoryServer.getObjectClass(lowerName);
          if (oc == null)
          {
            debugMessage(DebugLogCategory.PLUGIN, DebugLogSeverity.WARNING,
                         CLASS_NAME, "doPreParse",
                         "Cannot replace unknown objectclass " + lowerName);
          }
          else
          {
            debugMessage(DebugLogCategory.PLUGIN, DebugLogSeverity.INFO,
                         CLASS_NAME, "doPreParse",
                         "Replacing objectclass " + lowerName);
            for (AttributeType at : oc.getRequiredAttributeChain())
            {
              newAttrs.add(at.getNameOrOID());
            }
            for (AttributeType at : oc.getOptionalAttributeChain())
            {
              newAttrs.add(at.getNameOrOID());
            }
          }
        }
        for(AttributeType opt : optionalAttributes)
        else
        {
          attributes.add(opt.getNameOrOID());
          newAttrs.add(attrName);
        }
      }
      searchOperation.setAttributes(newAttrs);
    }
    return new PreParsePluginResult();
  }
}
opends/src/server/org/opends/server/plugins/LastModPlugin.java
@@ -30,8 +30,6 @@
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.opends.server.api.plugin.DirectoryServerPlugin;
@@ -39,19 +37,18 @@
import org.opends.server.api.plugin.PreOperationPluginResult;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
import org.opends.server.types.operation.PreOperationAddOperation;
import org.opends.server.types.operation.PreOperationModifyOperation;
import org.opends.server.types.operation.PreOperationModifyDNOperation;
import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.loggers.Debug.*;
@@ -67,7 +64,7 @@
 * to the server, and will add the modifiersName and modifyTimestamp attributes
 * whenever the entry is modified or renamed.
 */
public class LastModPlugin
public final class LastModPlugin
       extends DirectoryServerPlugin
{
  /**
@@ -79,16 +76,16 @@
  // The attribute type for the "createTimestamp" attribute.
  private AttributeType createTimestampType;
  private final AttributeType createTimestampType;
  // The attribute type for the "creatorsName" attribute.
  private AttributeType creatorsNameType;
  private final AttributeType creatorsNameType;
  // The attribute type for the "modifiersName" attribute.
  private AttributeType modifiersNameType;
  private final AttributeType modifiersNameType;
  // The attribute type for the "modifyTimestamp" attribute.
  private AttributeType modifyTimestampType;
  private final AttributeType modifyTimestampType;
@@ -103,33 +100,31 @@
    super();
    assert debugConstructor(CLASS_NAME);
    // Get the attribute types for the attributes that we will use.  This needs
    // to be done in the constructor in order to make the associated variables
    // "final".
    createTimestampType =
         DirectoryServer.getAttributeType(OP_ATTR_CREATE_TIMESTAMP_LC, true);
    creatorsNameType =
         DirectoryServer.getAttributeType(OP_ATTR_CREATORS_NAME_LC, true);
    modifiersNameType =
         DirectoryServer.getAttributeType(OP_ATTR_MODIFIERS_NAME_LC, true);
    modifyTimestampType =
      DirectoryServer.getAttributeType(OP_ATTR_MODIFY_TIMESTAMP_LC, true);
  }
  /**
   * Performs any initialization necessary for this plugin.  This will be called
   * as soon as the plugin has been loaded and before it is registered with the
   * server.
   *
   * @param  directoryServer  The reference to the Directory Server instance in
   *                          which the plugin will be running.
   * @param  pluginTypes      The set of plugin types that indicate the ways in
   *                          which this plugin will be invoked.
   * @param  configEntry      The entry containing the configuration information
   *                          for this plugin.
   *
   * @throws  ConfigException  If the provided entry does not contain a valid
   *                           configuration for this plugin.
   *
   * @throws  InitializationException  If a problem occurs while initializing
   *                                   the plugin that is not related to the
   *                                   server configuration.
   * {@inheritDoc}
   */
  public void initializePlugin(DirectoryServer directoryServer,
                               Set<PluginType> pluginTypes,
                               ConfigEntry configEntry)
         throws ConfigException, InitializationException
  @Override()
  public final void initializePlugin(DirectoryServer directoryServer,
                                     Set<PluginType> pluginTypes,
                                     ConfigEntry configEntry)
         throws ConfigException
  {
    assert debugEnter(CLASS_NAME, "initializePlugin",
                      String.valueOf(directoryServer),
@@ -155,63 +150,21 @@
          throw new ConfigException(msgID, message);
      }
    }
    // Get the attribute types for the attributes that we will use.
    createTimestampType =
         DirectoryServer.getAttributeType(OP_ATTR_CREATE_TIMESTAMP_LC);
    if (createTimestampType == null)
    {
      createTimestampType =
           DirectoryServer.getDefaultAttributeType(OP_ATTR_CREATE_TIMESTAMP);
    }
    creatorsNameType =
         DirectoryServer.getAttributeType(OP_ATTR_CREATORS_NAME_LC);
    if (creatorsNameType == null)
    {
      creatorsNameType =
           DirectoryServer.getDefaultAttributeType(OP_ATTR_CREATORS_NAME);
    }
    modifiersNameType =
         DirectoryServer.getAttributeType(OP_ATTR_MODIFIERS_NAME_LC);
    if (modifiersNameType == null)
    {
      modifiersNameType =
           DirectoryServer.getDefaultAttributeType(OP_ATTR_MODIFIERS_NAME);
    }
    modifyTimestampType =
         DirectoryServer.getAttributeType(OP_ATTR_MODIFY_TIMESTAMP_LC);
    if (modifyTimestampType == null)
    {
      modifyTimestampType =
           DirectoryServer.getDefaultAttributeType(OP_ATTR_MODIFY_TIMESTAMP);
    }
  }
  /**
   * Performs any necessary processing that should be done just before the
   * Directory Server performs the core processing for an add operation.
   *
   * @param  addOperation  The add operation to be processed.
   *
   * @return  Information about the result of the plugin processing.
   * {@inheritDoc}
   */
  public PreOperationPluginResult doPreOperation(AddOperation addOperation)
  @Override()
  public final PreOperationPluginResult
       doPreOperation(PreOperationAddOperation addOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(addOperation));
    // Get the set of operational attributes for the add operation.
    Map<AttributeType,List<Attribute>> operationalAttrs =
         addOperation.getOperationalAttributes();
    // Create the attribute list for the creatorsName attribute, if appropriate.
    DN creatorDN = addOperation.getAuthorizationDN();
    LinkedHashSet<AttributeValue> nameValues =
@@ -232,7 +185,7 @@
                                       nameValues);
    ArrayList<Attribute> nameList = new ArrayList<Attribute>(1);
    nameList.add(nameAttr);
    operationalAttrs.put(creatorsNameType, nameList);
    addOperation.setAttribute(creatorsNameType, nameList);
    //  Create the attribute list for the createTimestamp attribute.
@@ -245,7 +198,7 @@
                                       OP_ATTR_CREATE_TIMESTAMP, timeValues);
    ArrayList<Attribute> timeList = new ArrayList<Attribute>(1);
    timeList.add(timeAttr);
    operationalAttrs.put(createTimestampType, timeList);
    addOperation.setAttribute(createTimestampType, timeList);
    // We shouldn't ever need to return a non-success result.
@@ -255,26 +208,16 @@
  /**
   * Performs any necessary processing that should be done just before the
   * Directory Server performs the core processing for a modify operation.
   *
   * @param  modifyOperation  The modify operation to be processed.
   *
   * @return  Information about the result of the plugin processing.
   * {@inheritDoc}
   */
  public PreOperationPluginResult doPreOperation(ModifyOperation
                                                      modifyOperation)
  @Override()
  public final PreOperationPluginResult
       doPreOperation(PreOperationModifyOperation modifyOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(modifyOperation));
    // Get the set of modifications for this operation.  Also get the modified
    // entry.  We need to make sure that both get updated appropriately.
    List<Modification> mods = modifyOperation.getModifications();
    Entry modifiedEntry = modifyOperation.getModifiedEntry();
    // Create the modifiersName attribute.
    DN modifierDN = modifyOperation.getAuthorizationDN();
    LinkedHashSet<AttributeValue> nameValues =
@@ -293,11 +236,20 @@
    }
    Attribute nameAttr = new Attribute(modifiersNameType,
                                       OP_ATTR_MODIFIERS_NAME, nameValues);
    mods.add(new Modification(ModificationType.REPLACE, nameAttr));
    try
    {
      modifyOperation.addModification(new Modification(ModificationType.REPLACE,
                                                       nameAttr));
    }
    catch (DirectoryException de)
    {
      assert debugException(CLASS_NAME, "doPreOperation", de);
    ArrayList<Attribute> nameList = new ArrayList<Attribute>(1);
    nameList.add(nameAttr);
    modifiedEntry.putAttribute(modifiersNameType, nameList);
      // This should never happen.
      modifyOperation.setResultCode(DirectoryServer.getServerErrorResultCode());
      modifyOperation.appendErrorMessage(de.getErrorMessage());
      return new PreOperationPluginResult(false, false, true);
    }
    //  Create the modifyTimestamp attribute.
@@ -308,11 +260,20 @@
    Attribute timeAttr = new Attribute(modifyTimestampType,
                                       OP_ATTR_MODIFY_TIMESTAMP, timeValues);
    mods.add(new Modification(ModificationType.REPLACE, timeAttr));
    try
    {
      modifyOperation.addModification(new Modification(ModificationType.REPLACE,
                                                       timeAttr));
    }
    catch (DirectoryException de)
    {
      assert debugException(CLASS_NAME, "doPreOperation", de);
    ArrayList<Attribute> timeList = new ArrayList<Attribute>(1);
    timeList.add(timeAttr);
    modifiedEntry.putAttribute(modifyTimestampType, timeList);
      // This should never happen.
      modifyOperation.setResultCode(DirectoryServer.getServerErrorResultCode());
      modifyOperation.appendErrorMessage(de.getErrorMessage());
      return new PreOperationPluginResult(false, false, true);
    }
    // We shouldn't ever need to return a non-success result.
@@ -322,24 +283,16 @@
  /**
   * Performs any necessary processing that should be done just before the
   * Directory Server performs the core processing for a modify DN operation.
   *
   * @param  modifyDNOperation  The modify DN operation to be processed.
   *
   * @return  Information about the result of the plugin processing.
   * {@inheritDoc}
   */
  public PreOperationPluginResult doPreOperation(ModifyDNOperation
                                                      modifyDNOperation)
  @Override()
  public final PreOperationPluginResult
       doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
  {
    assert debugEnter(CLASS_NAME, "doPreOperation",
                      String.valueOf(modifyDNOperation));
    // Get the set of modifications for this operation.
    List<Modification> mods = modifyDNOperation.getModifications();
    // Create the modifiersName attribute.
    DN modifierDN = modifyDNOperation.getAuthorizationDN();
    LinkedHashSet<AttributeValue> nameValues =
@@ -358,7 +311,8 @@
    }
    Attribute nameAttr = new Attribute(modifiersNameType,
                                       OP_ATTR_MODIFIERS_NAME, nameValues);
    mods.add(new Modification(ModificationType.REPLACE, nameAttr));
    modifyDNOperation.addModification(new Modification(ModificationType.REPLACE,
                                                       nameAttr));
    //  Create the modifyTimestamp attribute.
@@ -369,7 +323,8 @@
    Attribute timeAttr = new Attribute(modifyTimestampType,
                                       OP_ATTR_MODIFY_TIMESTAMP, timeValues);
    mods.add(new Modification(ModificationType.REPLACE, timeAttr));
    modifyDNOperation.addModification(new Modification(ModificationType.REPLACE,
                                                       timeAttr));
    // We shouldn't ever need to return a non-success result.
opends/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java
@@ -43,7 +43,6 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.PasswordPolicy;
import org.opends.server.schema.AuthPasswordSyntax;
import org.opends.server.schema.UserPasswordSyntax;
@@ -69,7 +68,7 @@
 * password policy processing during an LDIF import.  In particular, it ensures
 * that all of the password values are properly encoded before they are stored.
 */
public class PasswordPolicyImportPlugin
public final class PasswordPolicyImportPlugin
       extends DirectoryServerPlugin
{
  /**
@@ -81,10 +80,12 @@
  // The sets of password storage schemes for the auth password attributes.
  private HashMap<AttributeType,PasswordStorageScheme[]> authPasswordSchemes;
  private final HashMap<AttributeType,PasswordStorageScheme[]>
                     authPasswordSchemes;
  // The sets of password storage schemes for the user password attributes.
  private HashMap<AttributeType,PasswordStorageScheme[]> userPasswordSchemes;
  private final HashMap<AttributeType,PasswordStorageScheme[]>
                     userPasswordSchemes;
@@ -99,59 +100,11 @@
    super();
    assert debugConstructor(CLASS_NAME);
  }
  /**
   * Performs any initialization necessary for this plugin.  This will be called
   * as soon as the plugin has been loaded and before it is registered with the
   * server.
   *
   * @param  directoryServer  The reference to the Directory Server instance in
   *                          which the plugin will be running.
   * @param  pluginTypes      The set of plugin types that indicate the ways in
   *                          which this plugin will be invoked.
   * @param  configEntry      The entry containing the configuration information
   *                          for this plugin.
   *
   * @throws  ConfigException  If the provided entry does not contain a valid
   *                           configuration for this plugin.
   *
   * @throws  InitializationException  If a problem occurs while initializing
   *                                   the plugin that is not related to the
   *                                   server configuration.
   */
  public void initializePlugin(DirectoryServer directoryServer,
                               Set<PluginType> pluginTypes,
                               ConfigEntry configEntry)
         throws ConfigException, InitializationException
  {
    assert debugEnter(CLASS_NAME, "initializePlugin",
                      String.valueOf(directoryServer),
                      String.valueOf(pluginTypes),
                      String.valueOf(configEntry));
    // Make sure that the plugin has been enabled for the appropriate types.
    for (PluginType t : pluginTypes)
    {
      switch (t)
      {
        case LDIF_IMPORT:
          // This is the only acceptable type.
          break;
        default:
          int msgID = MSGID_PLUGIN_PWPIMPORT_INVALID_PLUGIN_TYPE;
          String message = getMessage(msgID, t.toString());
          throw new ConfigException(msgID, message);
      }
    }
    // Get the password policies from the Directory Server configuration.
    // Get the password policies from the Directory Server configuration.  This
    // is done in the constructor to allow the instance variables to be declared
    // "final".
    authPasswordSchemes = new HashMap<AttributeType,PasswordStorageScheme[]>();
    userPasswordSchemes = new HashMap<AttributeType,PasswordStorageScheme[]>();
    for (PasswordPolicy p : DirectoryServer.getPasswordPolicies().values())
@@ -223,17 +176,46 @@
  /**
   * Performs any necessary processing that should be done during an LDIF import
   * operation immediately after reading an entry and confirming that it should
   * be imported based on the provided configuration.
   *
   * @param  importConfig  The configuration used for the LDIF import.
   * @param  entry         The entry that has been read to the LDIF file.
   *
   * @return  The result of the plugin processing.
   * {@inheritDoc}
   */
  public LDIFPluginResult doLDIFImport(LDIFImportConfig importConfig,
                                       Entry entry)
  @Override()
  public final void initializePlugin(DirectoryServer directoryServer,
                               Set<PluginType> pluginTypes,
                               ConfigEntry configEntry)
         throws ConfigException
  {
    assert debugEnter(CLASS_NAME, "initializePlugin",
                      String.valueOf(directoryServer),
                      String.valueOf(pluginTypes),
                      String.valueOf(configEntry));
    // Make sure that the plugin has been enabled for the appropriate types.
    for (PluginType t : pluginTypes)
    {
      switch (t)
      {
        case LDIF_IMPORT:
          // This is the only acceptable type.
          break;
        default:
          int msgID = MSGID_PLUGIN_PWPIMPORT_INVALID_PLUGIN_TYPE;
          String message = getMessage(msgID, t.toString());
          throw new ConfigException(msgID, message);
      }
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public final LDIFPluginResult doLDIFImport(LDIFImportConfig importConfig,
                                             Entry entry)
  {
    assert debugEnter(CLASS_NAME, "doLDIFImport",
                      String.valueOf(importConfig), String.valueOf(entry));
opends/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java
@@ -49,7 +49,6 @@
import org.opends.server.config.ReadOnlyConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
@@ -76,7 +75,7 @@
 * can be analyzed to see where the server is spending all of its processing
 * time.
 */
public class ProfilerPlugin
public final class ProfilerPlugin
       extends DirectoryServerPlugin
       implements ConfigurableComponent
{
@@ -176,28 +175,13 @@
  /**
   * Performs any initialization necessary for this plugin.  This will be called
   * as soon as the plugin has been loaded and before it is registered with the
   * server.
   *
   * @param  directoryServer  The reference to the Directory Server instance in
   *                          which the plugin will be running.
   * @param  pluginTypes      The set of plugin types that indicate the ways in
   *                          which this plugin will be invoked.
   * @param  configEntry      The entry containing the configuration information
   *                          for this plugin.
   *
   * @throws  ConfigException  If the provided entry does not contain a valid
   *                           configuration for this plugin.
   *
   * @throws  InitializationException  If a problem occurs while initializing
   *                                   the plugin that is not related to the
   *                                   server configuration.
   * {@inheritDoc}
   */
  public void initializePlugin(DirectoryServer directoryServer,
  @Override()
  public final void initializePlugin(DirectoryServer directoryServer,
                               Set<PluginType> pluginTypes,
                               ConfigEntry configEntry)
         throws ConfigException, InitializationException
         throws ConfigException
  {
    assert debugEnter(CLASS_NAME, "initializePlugin",
                      String.valueOf(directoryServer),
@@ -342,11 +326,10 @@
  /**
   * Performs any necessary finalization for this plugin.  This will be called
   * just after the plugin has been deregistered with the server but before it
   * has been unloaded.
   * {@inheritDoc}
   */
  public void finalizePlugin()
  @Override()
  public final void finalizePlugin()
  {
    assert debugEnter(CLASS_NAME, "finalizePlugin");
@@ -386,14 +369,10 @@
  /**
   * Performs any processing that should be done when the Directory Server is in
   * the process of starting.  This method will be called after virtually all
   * initialization has been performed but before other plugins have before the
   * connection handlers are started.
   *
   * @return  The result of the startup plugin processing.
   * {@inheritDoc}
   */
  public StartupPluginResult doStartup()
  @Override()
  public final StartupPluginResult doStartup()
  {
    assert debugEnter(CLASS_NAME, "doStartup");
@@ -410,13 +389,9 @@
  /**
   * Retrieves the DN of the configuration entry with which this component is
   * associated.
   *
   * @return  The DN of the configuration entry with which this component is
   *          associated.
   * {@inheritDoc}
   */
  public DN getConfigurableComponentEntryDN()
  public final DN getConfigurableComponentEntryDN()
  {
    assert debugEnter(CLASS_NAME, "getConfigurableComponentEntryDN");
@@ -426,13 +401,9 @@
  /**
   * Retrieves the set of configuration attributes that are associated with this
   * configurable component.
   *
   * @return  The set of configuration attributes that are associated with this
   *          configurable component.
   * {@inheritDoc}
   */
  public List<ConfigAttribute> getConfigurationAttributes()
  public final List<ConfigAttribute> getConfigurationAttributes()
  {
    assert debugEnter(CLASS_NAME, "getConfigurationAttributes");
@@ -484,21 +455,10 @@
  /**
   * Indicates whether the provided configuration entry has an acceptable
   * configuration for this component.  If it does not, then detailed
   * information about the problem(s) should be added to the provided list.
   *
   * @param  configEntry          The configuration entry for which to make the
   *                              determination.
   * @param  unacceptableReasons  A list that can be used to hold messages about
   *                              why the provided entry does not have an
   *                              acceptable configuration.
   *
   * @return  <CODE>true</CODE> if the provided entry has an acceptable
   *          configuration for this component, or <CODE>false</CODE> if not.
   * {@inheritDoc}
   */
  public boolean hasAcceptableConfiguration(ConfigEntry configEntry,
                                            List<String> unacceptableReasons)
  public final boolean hasAcceptableConfiguration(ConfigEntry configEntry,
                            List<String> unacceptableReasons)
  {
    assert debugEnter(CLASS_NAME, "hasAcceptableConfiguration",
                      String.valueOf(configEntry), "java.lang.List<String>");
@@ -614,23 +574,10 @@
  /**
   * Makes a best-effort attempt to apply the configuration contained in the
   * provided entry.  Information about the result of this processing should be
   * added to the provided message list.  Information should always be added to
   * this list if a configuration change could not be applied.  If detailed
   * results are requested, then information about the changes applied
   * successfully (and optionally about parameters that were not changed) should
   * also be included.
   *
   * @param  configEntry      The entry containing the new configuration to
   *                          apply for this component.
   * @param  detailedResults  Indicates whether detailed information about the
   *                          processing should be added to the list.
   *
   * @return  Information about the result of the configuration update.
   * {@inheritDoc}
   */
  public ConfigChangeResult applyNewConfiguration(ConfigEntry configEntry,
                                                  boolean detailedResults)
  public final ConfigChangeResult applyNewConfiguration(ConfigEntry configEntry,
                                                        boolean detailedResults)
  {
    assert debugEnter(CLASS_NAME, "applyNewConfiguration",
                      String.valueOf(configEntry),
opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
@@ -44,11 +44,8 @@
import org.opends.server.api.ConnectionSecurityProvider;
import org.opends.server.core.AddOperation;
import org.opends.server.core.BindOperation;
import org.opends.server.core.CancelRequest;
import org.opends.server.core.CancelResult;
import org.opends.server.core.CompareOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
@@ -64,11 +61,14 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.ByteString;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.IntermediateResponse;
import org.opends.server.types.Modification;
opends/src/server/org/opends/server/protocols/internal/InternalConnectionHandler.java
@@ -33,9 +33,9 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.api.ConnectionHandler;
import org.opends.server.core.InitializationException;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
@@ -57,11 +57,11 @@
import org.opends.server.config.IntegerConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
/**
opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
@@ -45,11 +45,8 @@
import org.opends.server.core.AbandonOperation;
import org.opends.server.core.AddOperation;
import org.opends.server.core.BindOperation;
import org.opends.server.core.CancelRequest;
import org.opends.server.core.CancelResult;
import org.opends.server.core.CompareOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.core.ModifyOperation;
@@ -65,7 +62,10 @@
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Sequence;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
@@ -52,7 +52,6 @@
import org.opends.server.api.ConnectionSecurityProvider;
import org.opends.server.api.plugin.PostConnectPluginResult;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.PluginConfigManager;
import org.opends.server.config.BooleanConfigAttribute;
import org.opends.server.config.ConfigAttribute;
@@ -70,6 +69,7 @@
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SSLClientAuthPolicy;
opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
@@ -41,7 +41,7 @@
import org.opends.server.api.DirectoryThread;
import org.opends.server.api.ServerShutdownListener;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.loggers.Error.*;
opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java
@@ -41,10 +41,10 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.AbsoluteSubtreeSpecification;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java
@@ -40,15 +40,15 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.Schema;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeUsage;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.loggers.Error.*;
opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
@@ -34,13 +34,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConditionResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.loggers.Error.*;
opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java
@@ -35,9 +35,9 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java
@@ -33,11 +33,11 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/BitStringSyntax.java
@@ -35,11 +35,11 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/BooleanSyntax.java
@@ -36,11 +36,11 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java
@@ -31,10 +31,10 @@
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.MessageHandler.*;
opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java
@@ -31,10 +31,10 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java
@@ -31,10 +31,10 @@
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.MessageHandler.*;
opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java
@@ -40,17 +40,17 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.Schema;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DITContentRule;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.ObjectClassType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.loggers.Error.*;
opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java
@@ -40,15 +40,15 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.Schema;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DITStructureRule;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.NameForm;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.loggers.Error.*;
opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java
@@ -31,11 +31,11 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.MessageHandler.*;
opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
@@ -43,11 +43,11 @@
import org.opends.server.config.ConfigAttribute;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AcceptRejectWarn;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java
@@ -36,10 +36,10 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.ApproximateMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java
@@ -38,14 +38,14 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AcceptRejectWarn;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java
@@ -37,14 +37,14 @@
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AcceptRejectWarn;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java
@@ -40,11 +40,11 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java
@@ -31,11 +31,11 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
@@ -31,13 +31,13 @@
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/IntegerSyntax.java
@@ -36,10 +36,10 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
@@ -35,9 +35,9 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java
@@ -38,9 +38,9 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
@@ -39,15 +39,15 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.Schema;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.MatchingRuleUse;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.loggers.Error.*;
opends/src/server/org/opends/server/schema/NameFormSyntax.java
@@ -40,17 +40,17 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.Schema;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.NameForm;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.ObjectClassType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.loggers.Error.*;
opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java
@@ -31,13 +31,13 @@
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/ObjectClassSyntax.java
@@ -42,16 +42,16 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.Schema;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.ObjectClassType;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.loggers.Error.*;
opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java
@@ -34,14 +34,14 @@
import org.opends.server.api.MatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types. AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.NameForm;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.MatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.NameForm;
import org.opends.server.types.ObjectClass;
opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java
@@ -31,10 +31,10 @@
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.MessageHandler.*;
opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java
@@ -40,11 +40,11 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.RFC3672SubtreeSpecification;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java
@@ -40,11 +40,11 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.RelativeSubtreeSpecification;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/UTCTimeSyntax.java
@@ -40,11 +40,11 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java
@@ -33,13 +33,13 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java
@@ -31,13 +31,13 @@
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
@@ -33,14 +33,14 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
@@ -34,13 +34,13 @@
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConditionResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
@@ -33,10 +33,10 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/schema/UserPasswordSyntax.java
@@ -35,9 +35,9 @@
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java
@@ -31,11 +31,11 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.InitializationException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.schema.SchemaConstants.*;
opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java
@@ -30,8 +30,8 @@
import java.io.UnsupportedEncodingException;
import java.util.zip.DataFormatException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.core.DirectoryException;
/**
 * Message sent by a changelog server to another changelog server at Startup.
opends/src/server/org/opends/server/synchronization/MultimasterSynchronization.java
@@ -39,7 +39,7 @@
import org.opends.server.core.AddOperation;
import org.opends.server.types.DN;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.types.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Entry;
import org.opends.server.core.ModifyDNOperation;
opends/src/server/org/opends/server/synchronization/ServerStartMessage.java
@@ -32,8 +32,8 @@
import java.net.UnknownHostException;
import java.util.zip.DataFormatException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.core.DirectoryException;
/**
 * This message is used by LDAP server when they first connect.
opends/src/server/org/opends/server/synchronization/ServerState.java
@@ -46,7 +46,6 @@
import org.opends.server.core.AddOperation;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyOperation;
import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -60,6 +59,7 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ModificationType;
opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java
@@ -53,7 +53,6 @@
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.ModifyOperation;
@@ -64,6 +63,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.ldap.LDAPException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.Entry;
opends/src/server/org/opends/server/tasks/BackupTask.java
@@ -39,7 +39,6 @@
import org.opends.server.backends.task.Task;
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.api.Backend;
@@ -49,6 +48,7 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/tasks/ExportTask.java
@@ -35,13 +35,13 @@
import static org.opends.server.loggers.Error.logError;
import org.opends.server.backends.task.Task;
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.api.Backend;
import org.opends.server.config.ConfigEntry;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
opends/src/server/org/opends/server/tasks/ImportTask.java
@@ -36,13 +36,13 @@
import org.opends.server.backends.task.Task;
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.api.Backend;
import org.opends.server.config.ConfigEntry;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
opends/src/server/org/opends/server/tasks/RestoreTask.java
@@ -37,7 +37,6 @@
import org.opends.server.backends.task.Task;
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.api.Backend;
@@ -47,6 +46,7 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ErrorLogCategory;
opends/src/server/org/opends/server/tasks/ShutdownTask.java
@@ -33,11 +33,11 @@
import org.opends.server.backends.task.Task;
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/tasks/TaskUtils.java
@@ -39,7 +39,6 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.ModifyOperation;
import org.opends.server.loggers.Error;
import org.opends.server.messages.TaskMessages;
@@ -49,6 +48,7 @@
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
opends/src/server/org/opends/server/tools/BackUpDB.java
@@ -44,16 +44,16 @@
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockFileManager;
import org.opends.server.loggers.StartupErrorLogger;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.args.ArgumentParser;
import org.opends.server.util.args.BooleanArgument;
opends/src/server/org/opends/server/tools/ConfigureDS.java
@@ -36,11 +36,11 @@
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.IntegerConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.extensions.SaltedSHA512PasswordStorageScheme;
import org.opends.server.protocols.ldap.LDAPResultCode;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.args.ArgumentParser;
opends/src/server/org/opends/server/tools/EncodePassword.java
@@ -36,13 +36,13 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.ConfigFileHandler;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.PasswordStorageSchemeConfigManager;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.schema.AuthPasswordSyntax;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.args.ArgumentParser;
import org.opends.server.util.args.BooleanArgument;
opends/src/server/org/opends/server/tools/ExportLDIF.java
@@ -40,16 +40,16 @@
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockFileManager;
import org.opends.server.loggers.StartupErrorLogger;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.SearchFilter;
import org.opends.server.util.args.ArgumentException;
opends/src/server/org/opends/server/tools/ImportLDIF.java
@@ -42,17 +42,17 @@
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockFileManager;
import org.opends.server.loggers.StartupErrorLogger;
import org.opends.server.tools.makeldif.TemplateFile;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.SearchFilter;
import org.opends.server.util.args.ArgumentException;
opends/src/server/org/opends/server/tools/LDIFModify.java
@@ -37,7 +37,6 @@
import java.util.Map;
import org.opends.server.config.ConfigFileHandler;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.ldap.LDAPException;
import org.opends.server.protocols.ldap.LDAPModification;
@@ -45,6 +44,7 @@
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ExistingFileBehavior;
opends/src/server/org/opends/server/tools/RestoreDB.java
@@ -42,16 +42,16 @@
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockFileManager;
import org.opends.server.loggers.StartupErrorLogger;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.types.RestoreConfig;
import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.args.ArgumentParser;
opends/src/server/org/opends/server/tools/VerifyIndex.java
@@ -37,14 +37,14 @@
import org.opends.server.config.DNConfigAttribute;
import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.core.LockFileManager;
import org.opends.server.loggers.StartupErrorLogger;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.InitializationException;
import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.args.ArgumentParser;
import org.opends.server.util.args.BooleanArgument;
opends/src/server/org/opends/server/tools/makeldif/AttributeValueTag.java
@@ -31,8 +31,8 @@
import java.util.List;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.AttributeType;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/DNTag.java
@@ -30,8 +30,8 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.RDN;
import static org.opends.server.messages.MessageHandler.*;
opends/src/server/org/opends/server/tools/makeldif/FileTag.java
@@ -33,7 +33,7 @@
import java.util.List;
import java.util.Random;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/FirstNameTag.java
@@ -30,7 +30,7 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/GUIDTag.java
@@ -31,7 +31,7 @@
import java.util.List;
import java.util.UUID;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/IfAbsentTag.java
@@ -31,8 +31,8 @@
import java.util.List;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.AttributeType;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/IfPresentTag.java
@@ -31,8 +31,8 @@
import java.util.List;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.AttributeType;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/LastNameTag.java
@@ -30,7 +30,7 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/ParentDNTag.java
@@ -30,8 +30,8 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/PresenceTag.java
@@ -31,7 +31,7 @@
import java.util.List;
import java.util.Random;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/RDNTag.java
@@ -30,8 +30,8 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/RandomTag.java
@@ -32,7 +32,7 @@
import java.util.List;
import java.util.Random;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/SequentialTag.java
@@ -30,7 +30,7 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/StaticTextTag.java
@@ -30,7 +30,7 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/Tag.java
@@ -30,7 +30,7 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.InitializationException;
opends/src/server/org/opends/server/tools/makeldif/TemplateFile.java
@@ -43,9 +43,9 @@
import java.util.StringTokenizer;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.InitializationException;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.ToolMessages.*;
opends/src/server/org/opends/server/tools/makeldif/UnderscoreDNTag.java
@@ -30,8 +30,8 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.RDN;
import static org.opends.server.messages.MessageHandler.*;
opends/src/server/org/opends/server/tools/makeldif/UnderscoreParentDNTag.java
@@ -30,8 +30,8 @@
import java.util.List;
import org.opends.server.core.InitializationException;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
import org.opends.server.types.RDN;
import static org.opends.server.messages.MessageHandler.*;
opends/src/server/org/opends/server/types/AttributeType.java
@@ -36,7 +36,6 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/types/AttributeValue.java
@@ -29,7 +29,6 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/types/BackupDirectory.java
@@ -38,7 +38,6 @@
import java.util.LinkedList;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.CoreMessages.*;
opends/src/server/org/opends/server/types/CancelRequest.java
New file
@@ -0,0 +1,184 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types;
import static org.opends.server.loggers.Debug.*;
/**
 * This class defines a data structure that can be used to hold
 * information about a request to cancel or abandon an operation in
 * progress.
 */
public class CancelRequest
{
  /**
   * The fully-qualified name of this class for debugging purposes.
   */
  private static final String CLASS_NAME =
       "org.opends.server.types.CancelRequest";
  // Indicates whether to send a response to the original request if
  // the operation is canceled.
  private final boolean notifyOriginalRequestor;
  // A message that explains the purpose for this cancellation (may be
  // included in the response to the original requestor).
  private final String cancelReason;
  // A buffer to hold a human-readable response that the server
  // provided for the result of the cancellation.
  private StringBuilder responseMessage;
  /**
   * Creates a new cancel request with the provided information.
   *
   * @param  notifyOriginalRequestor  Indicates whether the original
   *                                  requestor should receive a
   *                                  response if the operation is
   *                                  canceled.
   * @param  cancelReason             A message that explains the
   *                                  purpose for this cancellation.
   */
  public CancelRequest(boolean notifyOriginalRequestor,
                       String cancelReason)
  {
    assert debugConstructor(CLASS_NAME,
                            String.valueOf(notifyOriginalRequestor),
                            String.valueOf(cancelReason));
    this.notifyOriginalRequestor = notifyOriginalRequestor;
    this.cancelReason            = cancelReason;
    this.responseMessage         = new StringBuilder();
  }
  /**
   * Creates a new cancel request with the provided information.
   *
   * @param  notifyOriginalRequestor  Indicates whether the original
   *                                  requestor should receive a
   *                                  response if the operation is
   *                                  canceled.
   * @param  cancelReason             A message that explains the
   *                                  purpose for this cancellation.
   * @param  responseMessage          A buffer to hold a
   *                                  human-readable response that the
   *                                  server provided for the result
   *                                  of the cancellation.
   */
  public CancelRequest(boolean notifyOriginalRequestor,
                       String cancelReason,
                       StringBuilder responseMessage)
  {
    assert debugConstructor(CLASS_NAME,
                            String.valueOf(notifyOriginalRequestor),
                            String.valueOf(cancelReason),
                            "java.lang.StringBuilder");
    this.notifyOriginalRequestor = notifyOriginalRequestor;
    this.cancelReason            = cancelReason;
    this.responseMessage         = responseMessage;
  }
  /**
   * Indicates whether the original requestor should receive a
   * response to the request if the operation is canceled.
   *
   * @return  <CODE>true</CODE> if the original requestor should
   *          receive a response if the operation is canceled, or
   *          <CODE>false</CODE> if not.
   */
  public final boolean notifyOriginalRequestor()
  {
    assert debugEnter(CLASS_NAME, "notifyOriginalRequestor");
    return notifyOriginalRequestor;
  }
  /**
   * Retrieves a message that explains the purpose for this
   * cancellation.
   *
   * @return  A message that explains the purpose for this
   *          cancellation.
   */
  public final String getCancelReason()
  {
    assert debugEnter(CLASS_NAME, "getCancelReason");
    return cancelReason;
  }
  /**
   * Retrieves the buffer that is used to hold a human-readable
   * response that the server provided for the result of the
   * cancellation.  The caller may alter the contents of this buffer.
   *
   * @return  The buffer that is used to hold a human-readable
   *          response that the server provided for the result of this
   *          cancellation.
   */
  public final StringBuilder getResponseMessage()
  {
    assert debugEnter(CLASS_NAME, "getResponseMessage");
    return responseMessage;
  }
  /**
   * Appends the provided message to the buffer used to hold
   * information about the result of the cancellation.
   *
   * @param  message  The message to append to the response message
   *                  buffer.
   */
  public final void addResponseMessage(String message)
  {
    assert debugEnter(CLASS_NAME, "addResponseMessage",
                      String.valueOf(message));
    responseMessage.append(message);
  }
}
opends/src/server/org/opends/server/types/CancelResult.java
File was renamed from opends/src/server/org/opends/server/core/CancelResult.java
@@ -24,67 +24,64 @@
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.core;
import org.opends.server.types.ResultCode;
package org.opends.server.types;
/**
 * This enumeration defines the set of possible outcomes that can result from
 * processing a cancel request.  This is based on the specification contained in
 * RFC 3909.
 * This enumeration defines the set of possible outcomes that can
 * result from processing a cancel request.  This is based on the
 * specification contained in RFC 3909.
 */
public enum CancelResult
{
  /**
   * The cancel result that indicates that the target operation was canceled
   * successfully and in a manner that should have no permanent effects on the
   * server or the data it contains.
   * The cancel result that indicates that the target operation was
   * canceled successfully and in a manner that should have no
   * permanent effects on the server or the data it contains.
   */
  CANCELED(ResultCode.CANCELED),
  /**
   * The cancel result that indicates that the target operation could not be
   * found, which may mean that it either does not exist or has already
   * completed.
   * The cancel result that indicates that the target operation could
   * not be found, which may mean that it either does not exist or has
   * already completed.
   */
  NO_SUCH_OPERATION(ResultCode.NO_SUCH_OPERATION),
  /**
   * The cancel result that indicates that processing on the target operation
   * had already progressed to a point in which it was too late to be able to
   * cancel.
   * The cancel result that indicates that processing on the target
   * operation had already progressed to a point in which it was too
   * late to be able to cancel.
   */
  TOO_LATE(ResultCode.TOO_LATE),
  /**
   * The cancel result that indicates that the operation exists but cannot be
   * canceled for some reason (e.g., it is an abandon, bind, cancel, or unbind
   * operation, or if it is one that would impact the security of the underlying
   * connection).
   * The cancel result that indicates that the operation exists but
   * cannot be canceled for some reason (e.g., it is an abandon, bind,
   * cancel, or unbind operation, or if it is one that would impact
   * the security of the underlying connection).
   */
  CANNOT_CANCEL(ResultCode.CANNOT_CANCEL);
  // The result code associated with this cancel result.
  private ResultCode resultCode;
  private final ResultCode resultCode;
  /**
   * Creates a new cancel result with the provided result code.
   *
   * @param  resultCode  The result code associated with this cancel result.
   * @param  resultCode  The result code associated with this cancel
   *                     result.
   */
  private CancelResult(ResultCode resultCode)
  {
@@ -98,7 +95,7 @@
   *
   * @return  The result code associated with this cancel result.
   */
  public ResultCode getResultCode()
  public final ResultCode getResultCode()
  {
    return resultCode;
  }
@@ -110,7 +107,7 @@
   *
   * @return  A string representation of this cancel result.
   */
  public String toString()
  public final String toString()
  {
    return String.valueOf(resultCode);
  }
opends/src/server/org/opends/server/types/CancelledOperationException.java
File was renamed from opends/src/server/org/opends/server/core/CancelledOperationException.java
@@ -24,7 +24,7 @@
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.core;
package org.opends.server.types;
@@ -33,9 +33,9 @@
/**
 * This class defines an exception that may be thrown if the operation being
 * processed is cancelled for some reason (e.g., an abandon or cancel request
 * from the client).
 * This class defines an exception that may be thrown if the operation
 * being processed is cancelled for some reason (e.g., an abandon or
 * cancel request from the client).
 */
public class CancelledOperationException
       extends Exception
@@ -44,33 +44,33 @@
   * The fully-qualified name of this class for debugging purposes.
   */
  private static final String CLASS_NAME =
       "org.opends.server.core.CancelledOperationException";
       "org.opends.server.types.CancelledOperationException";
  /**
   * The serial version identifier required to satisfy the compiler because this
   * class extends <CODE>java.lang.Exception</CODE>, which implements the
   * <CODE>java.io.Serializable</CODE> interface.  This value was generated
   * using the <CODE>serialver</CODE> command-line utility included with the
   * Java SDK.
   * The serial version identifier required to satisfy the compiler
   * because this class extends <CODE>java.lang.Exception</CODE>,
   * which implements the <CODE>java.io.Serializable</CODE> interface.
   * This value was generated using the <CODE>serialver</CODE>
   * command-line utility included with the Java SDK.
   */
  private static final long serialVersionUID = -1936491673256446966L;
  // The cancel result that provides information about the status of the
  // cancellation.
  private CancelResult cancelResult;
  // The cancel result that provides information about the status of
  // the cancellation.
  private final CancelResult cancelResult;
  // The message ID for the cancel message.
  private int messageID;
  private final int messageID;
  /**
   * Creates a new cancelled operation exception with the provided result and
   * no additional message.
   * Creates a new cancelled operation exception with the provided
   * result and no additional message.
   *
   * @param  cancelResult  The result of the cancel processing.
   */
@@ -87,22 +87,25 @@
  /**
   * Creates a new cancelled operation exception with the provided information.
   * Creates a new cancelled operation exception with the provided
   * information.
   *
   * @param  cancelResult  The result of the cancel processing.
   * @param  message       The message providing additional information about
   *                       the cancel processing, or <CODE>null</CODE> if there
   *                       is no message.
   * @param  messageID     The message ID that uniquely identifies the cancel
   *                       message, or -1 if there is no message.
   * @param  message       The message providing additional
   *                       information about the cancel processing, or
   *                       <CODE>null</CODE> if there is no message.
   * @param  messageID     The message ID that uniquely identifies the
   *                       cancel message, or -1 if there is no
   *                       message.
   */
  public CancelledOperationException(CancelResult cancelResult, String message,
                                     int messageID)
  public CancelledOperationException(CancelResult cancelResult,
                                     String message, int messageID)
  {
    super(message);
    assert debugConstructor(CLASS_NAME, String.valueOf(cancelResult),
                            String.valueOf(message), String.valueOf(messageID));
                            String.valueOf(message),
                            String.valueOf(messageID));
    this.cancelResult = cancelResult;
    this.messageID    = messageID;
@@ -111,11 +114,13 @@
  /**
   * Retrieves the cancel result for this cancelled operation exception.
   * Retrieves the cancel result for this cancelled operation
   * exception.
   *
   * @return  The cancel result for this cancelled operation exception.
   * @return  The cancel result for this cancelled operation
   *          exception.
   */
  public CancelResult getCancelResult()
  public final CancelResult getCancelResult()
  {
    assert debugEnter(CLASS_NAME, "getCancelResult");
@@ -125,14 +130,14 @@
  /**
   * Retrieves the unique message ID for the message associated with this
   * cancelled operation exception.
   * Retrieves the unique message ID for the message associated with
   * this cancelled operation exception.
   *
   * @return  The unique message ID for the message associated with this
   *          cancelled operation exception, or <CODE>-1</CODE> if there is no
   *          message.
   * @return  The unique message ID for the message associated with
   *          this cancelled operation exception, or <CODE>-1</CODE>
   *          if there is no message.
   */
  public int getMessageID()
  public final int getMessageID()
  {
    assert debugEnter(CLASS_NAME, "getMessageID");
opends/src/server/org/opends/server/types/CryptoManager.java
File was renamed from opends/src/server/org/opends/server/core/CryptoManager.java
@@ -24,7 +24,7 @@
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.core;
package org.opends.server.types;
@@ -54,12 +54,13 @@
/**
 * This class provides the interface to the Directory Server cryptographic
 * framework, which may be used for hashing, encryption, and other kinds of
 * cryptographic operations.  Note that it also contains methods for compressing
 * and uncompressing data.  Although these are not strictly cryptographic
 * operations, there are a lot of similarities and it may be conceivable at
 * some point that accelerated compression may be available just as it is for
 * This class provides the interface to the Directory Server
 * cryptographic framework, which may be used for hashing, encryption,
 * and other kinds of cryptographic operations.  Note that it also
 * contains methods for compressing and uncompressing data.  Although
 * these are not strictly cryptographic operations, there are a lot of
 * similarities and it may be conceivable at some point that
 * accelerated compression may be available just as it is for
 * cryptographic operations.
 */
public class CryptoManager
@@ -68,11 +69,12 @@
   * The fully-qualified name of this class for debugging purposes.
   */
  private static final String CLASS_NAME =
       "org.opends.server.core.CryptoManager";
       "org.opends.server.types.CryptoManager";
  // The default secret key that we will use for encryption and decryption.
  // The default secret key that we will use for encryption and
  // decryption.
  private SecretKey secretKey;
  // The preferred cipher for the Directory Server.
@@ -89,32 +91,34 @@
  /**
   * Creates a new instance of this crypto manager object.
   *
   * @throws  ConfigException  If a problem occurs while creating this crypto
   *                           manager that is a result of a problem in the
   *                           configuration.
   * @throws  ConfigException  If a problem occurs while creating this
   *                           crypto manager that is a result of a
   *                           problem in the configuration.
   *
   * @throws  InitializationException  If a problem occurs while creating this
   *                                   crypto manager that is not the result of
   *                                   a problem in the configuration.
   * @throws  InitializationException  If a problem occurs while
   *                                   creating this crypto manager
   *                                   that is not the result of a
   *                                   problem in the configuration.
   */
  public CryptoManager()
         throws ConfigException, InitializationException
  {
    assert debugConstructor(CLASS_NAME);
    // FIXME -- Get the defaults from the configuration rather than hard-coding
    // them.
    // FIXME -- Get the defaults from the configuration rather than
    // hard-coding them.
    preferredDigestAlgorithm = "SHA-1";
    preferredMACAlgorithm    = "HmacSHA1";
    preferredCipher          = "AES/CBC/PKCS5Padding";
    // FIXME -- Use a much more secure way of constructing the secret key.
    // FIXME -- Use a much more secure way of constructing the secret
    // key.
    secretKey = new SecretKeySpec(new byte[16], "AES");
    // Make sure that we can create instances of the preferred digest, MAC, and
    // cipher algorithms.
    // Make sure that we can create instances of the preferred digest,
    // MAC, and cipher algorithms.
    try
    {
      MessageDigest.getInstance(preferredDigestAlgorithm);
@@ -124,8 +128,9 @@
      assert debugException(CLASS_NAME, "<init>", e);
      // FIXME -- Number this.
      throw new InitializationException(-1, "Can't get preferred digest:  " +
                                        stackTraceToSingleLineString(e), e);
      throw new InitializationException(-1,
                     "Can't get preferred digest:  " +
                     stackTraceToSingleLineString(e), e);
    }
    try
@@ -138,9 +143,9 @@
      assert debugException(CLASS_NAME, "<init>", e);
      // FIXME -- Number this.
      throw new InitializationException(-1, "Can't get preferred MAC " +
                                        "provider:  " +
                                        stackTraceToSingleLineString(e), e);
      throw new InitializationException(-1,
                     "Can't get preferred MAC provider:  " +
                     stackTraceToSingleLineString(e), e);
    }
    try
@@ -153,8 +158,9 @@
      assert debugException(CLASS_NAME, "<init>", e);
      // FIXME -- Number this.
      throw new InitializationException(-1, "Can't get preferred cipher:  " +
                                        stackTraceToSingleLineString(e), e);
      throw new InitializationException(-1,
                     "Can't get preferred cipher:  " +
                     stackTraceToSingleLineString(e), e);
    }
  }
@@ -169,8 +175,8 @@
  {
    assert debugEnter(CLASS_NAME, "getSecureRandom");
    // FIXME -- Is this threadsafe?  Can we share a single instance among all
    // threads?
    // FIXME -- Is this threadsafe?  Can we share a single instance
    // among all threads?
    return new SecureRandom();
  }
@@ -183,7 +189,8 @@
   */
  public String getPreferredMessageDigestAlgorithm()
  {
    assert debugEnter(CLASS_NAME, "getPreferredMessageDigestAlgorithm");
    assert debugEnter(CLASS_NAME,
                      "getPreferredMessageDigestAlgorithm");
    return preferredDigestAlgorithm;
  }
@@ -191,14 +198,15 @@
  /**
   * Retrieves a <CODE>MessageDigest</CODE> object that may be used to generate
   * digests using the preferred digest algorithm.
   * Retrieves a <CODE>MessageDigest</CODE> object that may be used to
   * generate digests using the preferred digest algorithm.
   *
   * @return  A <CODE>MessageDigest</CODE> object that may be used to generate
   *          digests using the preferred digest algorithm.
   * @return  A <CODE>MessageDigest</CODE> object that may be used to
   *          generate digests using the preferred digest algorithm.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public MessageDigest getPreferredMessageDigest()
         throws NoSuchAlgorithmException
@@ -211,17 +219,18 @@
  /**
   * Retrieves a <CODE>MessageDigest</CODE> object that may be used to generate
   * digests using the specified algorithm.
   * Retrieves a <CODE>MessageDigest</CODE> object that may be used to
   * generate digests using the specified algorithm.
   *
   * @param  digestAlgorithm  The algorithm to use to generate the message
   *                          digest.
   * @param  digestAlgorithm  The algorithm to use to generate the
   *                          message digest.
   *
   * @return  A <CODE>MessageDigest</CODE> object that may be used to generate
   *          digests using the specified algorithm.
   * @return  A <CODE>MessageDigest</CODE> object that may be used to
   *          generate digests using the specified algorithm.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public MessageDigest getMessageDigest(String digestAlgorithm)
         throws NoSuchAlgorithmException
@@ -235,43 +244,48 @@
  /**
   * Retrieves a byte array containing a message digest based on the provided
   * data, using the preferred digest algorithm.
   * Retrieves a byte array containing a message digest based on the
   * provided data, using the preferred digest algorithm.
   *
   * @param  data  The data to be digested.
   *
   * @return  A byte array containing the generated message digest.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public byte[] digest(byte[] data)
         throws NoSuchAlgorithmException
  {
    assert debugEnter(CLASS_NAME, "digest", "byte[" + data.length + "]");
    assert debugEnter(CLASS_NAME, "digest",
                      "byte[" + data.length + "]");
    return MessageDigest.getInstance(preferredDigestAlgorithm).digest(data);
    return MessageDigest.getInstance(preferredDigestAlgorithm).
                digest(data);
  }
  /**
   * Retrieves a byte array containing a message digest based on the provided
   * data, using the requested digest algorithm.
   * Retrieves a byte array containing a message digest based on the
   * provided data, using the requested digest algorithm.
   *
   * @param  digestAlgorithm  The algorithm to use to generate the message
   *                          digest.
   * @param  digestAlgorithm  The algorithm to use to generate the
   *                          message digest.
   * @param  data             The data to be digested.
   *
   * @return  A byte array containing the generated message digest.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public byte[] digest(String digestAlgorithm, byte[] data)
         throws NoSuchAlgorithmException
  {
    assert debugEnter(CLASS_NAME, "digest", String.valueOf(digestAlgorithm),
    assert debugEnter(CLASS_NAME, "digest",
                      String.valueOf(digestAlgorithm),
                      "byte[" + data.length + "]");
    return MessageDigest.getInstance(digestAlgorithm).digest(data);
@@ -280,26 +294,30 @@
  /**
   * Retrieves a byte array containing a message digest based on the data read
   * from the provided input stream, using the preferred digest algorithm.  Data
   * will be read until the end of the stream is reached.
   * Retrieves a byte array containing a message digest based on the
   * data read from the provided input stream, using the preferred
   * digest algorithm.  Data will be read until the end of the stream
   * is reached.
   *
   * @param  inputStream  The input stream from which the data is to be read.
   * @param  inputStream  The input stream from which the data is to
   *                      be read.
   *
   * @return  A byte array containing the generated message digest.
   *
   * @throws  IOException  If a problem occurs while reading data from the
   *                       provided stream.
   * @throws  IOException  If a problem occurs while reading data from
   *                       the provided stream.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public byte[] digest(InputStream inputStream)
         throws IOException, NoSuchAlgorithmException
  {
    assert debugEnter(CLASS_NAME, "digest", "java.io.InputStream");
    MessageDigest digest = MessageDigest.getInstance(preferredDigestAlgorithm);
    MessageDigest digest =
         MessageDigest.getInstance(preferredDigestAlgorithm);
    byte[] buffer = new byte[8192];
    while (true)
@@ -319,24 +337,27 @@
  /**
   * Retrieves a byte array containing a message digest based on the data read
   * from the provided input stream, using the requested digest algorithm.  Data
   * will be read until the end of the stream is reached.
   * Retrieves a byte array containing a message digest based on the
   * data read from the provided input stream, using the requested
   * digest algorithm.  Data will be read until the end of the stream
   * is reached.
   *
   * @param  digestAlgorithm  The algorithm to use to generate the message
   *                          digest.
   * @param  inputStream      The input stream from which the data is to be
   *                          read.
   * @param  digestAlgorithm  The algorithm to use to generate the
   *                          message digest.
   * @param  inputStream      The input stream from which the data is
   *                          to be read.
   *
   * @return  A byte array containing the generated message digest.
   *
   * @throws  IOException  If a problem occurs while reading data from the
   *                       provided stream.
   * @throws  IOException  If a problem occurs while reading data from
   *                       the provided stream.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public byte[] digest(String digestAlgorithm, InputStream inputStream)
  public byte[] digest(String digestAlgorithm,
                       InputStream inputStream)
         throws IOException, NoSuchAlgorithmException
  {
    assert debugEnter(CLASS_NAME, "digest", "java.io.InputStream");
@@ -367,7 +388,8 @@
   */
  public String getPreferredMACAlgorithm()
  {
    assert debugEnter(CLASS_NAME, "getPreferredMessageDigestAlgorithm");
    assert debugEnter(CLASS_NAME,
                      "getPreferredMessageDigestAlgorithm");
    return preferredMACAlgorithm;
  }
@@ -379,11 +401,13 @@
   *
   * @return  A MAC provider using the preferred algorithm.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   *
   * @throws  InvalidKeyException  If the provided key is not appropriate for
   *                               use with the requested MAC algorithm.
   * @throws  InvalidKeyException  If the provided key is not
   *                               appropriate for use with the
   *                               requested MAC algorithm.
   */
  public Mac getPreferredMACProvider()
         throws NoSuchAlgorithmException, InvalidKeyException
@@ -405,11 +429,13 @@
   *
   * @return  A MAC provider using the specified algorithm.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   *
   * @throws  InvalidKeyException  If the provided key is not appropriate for
   *                               use with the requested MAC algorithm.
   * @throws  InvalidKeyException  If the provided key is not
   *                               appropriate for use with the
   *                               requested MAC algorithm.
   */
  public Mac getMACProvider(String macAlgorithm)
         throws NoSuchAlgorithmException, InvalidKeyException
@@ -426,15 +452,16 @@
  /**
   * Retrieves a byte array containing a MAC based on the provided data, using
   * the preferred MAC algorithm.
   * Retrieves a byte array containing a MAC based on the provided
   * data, using the preferred MAC algorithm.
   *
   * @param  data  The data for which to generate the MAC.
   *
   * @return  A byte array containing the generated MAC.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public byte[] mac(byte[] data)
         throws NoSuchAlgorithmException
@@ -447,16 +474,17 @@
  /**
   * Retrieves a byte array containing a MAC based on the provided data, using
   * the requested MAC algorithm.
   * Retrieves a byte array containing a MAC based on the provided
   * data, using the requested MAC algorithm.
   *
   * @param  macAlgorithm  The algorithm to use for the MAC.
   * @param  data          The data for which to generate the MAC.
   *
   * @return  A byte array containing the generated MAC.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public byte[] mac(String macAlgorithm, byte[] data)
         throws NoSuchAlgorithmException
@@ -470,19 +498,22 @@
  /**
   * Retrieves a byte array containing a MAC based on the data read from the
   * provided input stream, using the preferred MAC algorithm.  Data will be
   * read until the end of the stream is reached.
   * Retrieves a byte array containing a MAC based on the data read
   * from the provided input stream, using the preferred MAC
   * algorithm.  Data will be read until the end of the stream is
   * reached.
   *
   * @param  inputStream  The input stream from which the data is to be read.
   * @param  inputStream  The input stream from which the data is to
   *                      be read.
   *
   * @return  A byte array containing the generated MAC.
   *
   * @throws  IOException  If a problem occurs while reading data from the
   *                       provided stream.
   * @throws  IOException  If a problem occurs while reading data from
   *                       the provided stream.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public byte[] mac(InputStream inputStream)
         throws IOException, NoSuchAlgorithmException
@@ -509,25 +540,29 @@
  /**
   * Retrieves a byte array containing a MAC based on the data read from the
   * provided input stream, using the preferred MAC algorithm.  Data will be
   * read until the end of the stream is reached.
   * Retrieves a byte array containing a MAC based on the data read
   * from the provided input stream, using the preferred MAC
   * algorithm.  Data will be read until the end of the stream is
   * reached.
   *
   * @param  macAlgorithm  The algorithm to use for the MAC.
   * @param  inputStream   The input stream from which the data is to be read.
   * @param  inputStream   The input stream from which the data is to
   *                       be read.
   *
   * @return  A byte array containing the generated MAC.
   *
   * @throws  IOException  If a problem occurs while reading data from the
   *                       provided stream.
   * @throws  IOException  If a problem occurs while reading data from
   *                       the provided stream.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   */
  public byte[] mac(String macAlgorithm, InputStream inputStream)
         throws IOException, NoSuchAlgorithmException
  {
    assert debugEnter(CLASS_NAME, "digest", String.valueOf(macAlgorithm),
    assert debugEnter(CLASS_NAME, "digest",
                      String.valueOf(macAlgorithm),
                      "java.io.InputStream");
    Mac mac = Mac.getInstance(macAlgorithm);
@@ -564,31 +599,35 @@
  /**
   * Retrieves a cipher using the preferred algorithm and the specified cipher
   * mode.
   * Retrieves a cipher using the preferred algorithm and the
   * specified cipher mode.
   *
   * @param  cipherMode  The cipher mode that indicates how the cipher will be
   *                     used (e.g., encryption, decryption, wrapping,
   *                     unwrapping).
   * @param  cipherMode  The cipher mode that indicates how the cipher
   *                     will be used (e.g., encryption, decryption,
   *                     wrapping, unwrapping).
   *
   * @return  A cipher using the preferred algorithm.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   *
   * @throws  NoSuchPaddingException  If the requested padding mechanism is not
   *                                  supported or is unavailable.
   * @throws  NoSuchPaddingException  If the requested padding
   *                                  mechanism is not supported or is
   *                                  unavailable.
   *
   * @throws  InvalidKeyException  If the provided key is not appropriate for
   *                               use with the requested cipher algorithm.
   * @throws  InvalidKeyException  If the provided key is not
   *                               appropriate for use with the
   *                               requested cipher algorithm.
   *
   * @throws  InvalidAlgorithmParameterException  If an internal problem occurs
   *                                              as a result of the
   *                                              initialization vector used.
   * @throws  InvalidAlgorithmParameterException
   *               If an internal problem occurs as a result of the
   *               initialization vector used.
   */
  public Cipher getPreferredCipher(int cipherMode)
         throws NoSuchAlgorithmException, NoSuchPaddingException,
                InvalidKeyException, InvalidAlgorithmParameterException
                InvalidKeyException,
                InvalidAlgorithmParameterException
  {
    assert debugEnter(CLASS_NAME, "getPreferredCipher",
                      String.valueOf(cipherMode));
@@ -606,32 +645,36 @@
  /**
   * Retrieves a cipher using the preferred algorithm and the specified cipher
   * mode.
   * Retrieves a cipher using the preferred algorithm and the
   * specified cipher mode.
   *
   * @param  cipherAlgorithm  The algorithm to use for the cipher.
   * @param  cipherMode       The cipher mode that indicates how the cipher will
   *                          be used (e.g., encryption, decryption, wrapping,
   *                          unwrapping).
   * @param  cipherMode       The cipher mode that indicates how the
   *                          cipher will be used (e.g., encryption,
   *                          decryption, wrapping, unwrapping).
   *
   * @return  A cipher using the preferred algorithm.
   *
   * @throws  NoSuchAlgorithmException  If the requested algorithm is not
   *                                    supported or is unavailable.
   * @throws  NoSuchAlgorithmException  If the requested algorithm is
   *                                    not supported or is
   *                                    unavailable.
   *
   * @throws  NoSuchPaddingException  If the requested padding mechanism is not
   *                                  supported or is unavailable.
   * @throws  NoSuchPaddingException  If the requested padding
   *                                  mechanism is not supported or is
   *                                  unavailable.
   *
   * @throws  InvalidKeyException  If the provided key is not appropriate for
   *                               use with the requested cipher algorithm.
   * @throws  InvalidKeyException  If the provided key is not
   *                               appropriate for use with the
   *                               requested cipher algorithm.
   *
   * @throws  InvalidAlgorithmParameterException  If an internal problem occurs
   *                                              as a result of the
   *                                              initialization vector used.
   * @throws  InvalidAlgorithmParameterException
   *               If an internal problem occurs as a result of the
   *               initialization vector used.
   */
  public Cipher getCipher(String cipherAlgorithm, int cipherMode)
         throws NoSuchAlgorithmException, NoSuchPaddingException,
                InvalidKeyException, InvalidAlgorithmParameterException
                InvalidKeyException,
                InvalidAlgorithmParameterException
  {
    assert debugEnter(CLASS_NAME, "getCipher",
                      String.valueOf(cipherAlgorithm),
@@ -650,20 +693,23 @@
  /**
   * Encrypts the data in the provided byte array using the preferred cipher.
   * Encrypts the data in the provided byte array using the preferred
   * cipher.
   *
   * @param  data  The data to be encrypted.
   *
   * @return  A byte array containing the encrypted representation of the
   *          provided data.
   * @return  A byte array containing the encrypted representation of
   *          the provided data.
   *
   * @throws  GeneralSecurityException  If a problem occurs while attempting to
   *                                    encrypt the data.
   * @throws  GeneralSecurityException  If a problem occurs while
   *                                    attempting to encrypt the
   *                                    data.
   */
  public byte[] encrypt(byte[] data)
         throws GeneralSecurityException
  {
    assert debugEnter(CLASS_NAME, "encrypt", "byte[" + data.length + "]");
    assert debugEnter(CLASS_NAME, "encrypt",
                      "byte[" + data.length + "]");
    Cipher cipher = Cipher.getInstance(preferredCipher);
@@ -677,20 +723,23 @@
  /**
   * Decrypts the data in the provided byte array using the preferred cipher.
   * Decrypts the data in the provided byte array using the preferred
   * cipher.
   *
   * @param  data  The data to be decrypted.
   *
   * @return  A byte array containing the cleartext representation of the
   *          provided data.
   * @return  A byte array containing the cleartext representation of
   *          the provided data.
   *
   * @throws  GeneralSecurityException  If a problem occurs while attempting to
   *                                    decrypt the data.
   * @throws  GeneralSecurityException  If a problem occurs while
   *                                    attempting to decrypt the
   *                                    data.
   */
  public byte[] decrypt(byte[] data)
         throws GeneralSecurityException
  {
    assert debugEnter(CLASS_NAME, "decrypt", "byte[" + data.length + "]");
    assert debugEnter(CLASS_NAME, "decrypt",
                      "byte[" + data.length + "]");
    Cipher cipher = Cipher.getInstance(preferredCipher);
@@ -704,21 +753,25 @@
  /**
   * Encrypts the data in the provided byte array using the preferred cipher.
   * Encrypts the data in the provided byte array using the preferred
   * cipher.
   *
   * @param  cipherAlgorithm  The algorithm to use to encrypt the data.
   * @param  cipherAlgorithm  The algorithm to use to encrypt the
   *                          data.
   * @param  data             The data to be encrypted.
   *
   * @return  A byte array containing the encrypted representation of the
   *          provided data.
   * @return  A byte array containing the encrypted representation of
   *          the provided data.
   *
   * @throws  GeneralSecurityException  If a problem occurs while attempting to
   *                                    encrypt the data.
   * @throws  GeneralSecurityException  If a problem occurs while
   *                                    attempting to encrypt the
   *                                    data.
   */
  public byte[] encrypt(String cipherAlgorithm, byte[] data)
         throws GeneralSecurityException
  {
    assert debugEnter(CLASS_NAME, "encrypt", "byte[" + data.length + "]");
    assert debugEnter(CLASS_NAME, "encrypt",
                      "byte[" + data.length + "]");
    Cipher cipher = Cipher.getInstance(cipherAlgorithm);
@@ -732,21 +785,25 @@
  /**
   * Decrypts the data in the provided byte array using the requested cipher.
   * Decrypts the data in the provided byte array using the requested
   * cipher.
   *
   * @param  cipherAlgorithm  The algorithm to use to decrypt the data.
   * @param  cipherAlgorithm  The algorithm to use to decrypt the
   *                          data.
   * @param  data             The data to be decrypted.
   *
   * @return  A byte array containing the cleartext representation of the
   *          provided data.
   * @return  A byte array containing the cleartext representation of
   *          the provided data.
   *
   * @throws  GeneralSecurityException  If a problem occurs while attempting to
   *                                    decrypt the data.
   * @throws  GeneralSecurityException  If a problem occurs while
   *                                    attempting to decrypt the
   *                                    data.
   */
  public byte[] decrypt(String cipherAlgorithm, byte[] data)
         throws GeneralSecurityException
  {
    assert debugEnter(CLASS_NAME, "decrypt", "byte[" + data.length + "]");
    assert debugEnter(CLASS_NAME, "decrypt",
                      "byte[" + data.length + "]");
    Cipher cipher = Cipher.getInstance(cipherAlgorithm);
@@ -760,18 +817,20 @@
  /**
   * Attempts to compress the data in the provided source array into the given
   * destination array.  If the compressed data will fit into the destination
   * array, then this method will return the number of bytes of compressed data
   * in the array.  Otherwise, it will return -1 to indicate that the
   * compression was not successful.  Note that if -1 is returned, then the data
   * in the destination array should be considered invalid.
   * Attempts to compress the data in the provided source array into
   * the given destination array.  If the compressed data will fit
   * into the destination array, then this method will return the
   * number of bytes of compressed data in the array.  Otherwise, it
   * will return -1 to indicate that the compression was not
   * successful.  Note that if -1 is returned, then the data in the
   * destination array should be considered invalid.
   *
   * @param  src  The array containing the raw data to compress.
   * @param  dst  The array into which the compressed data should be written.
   * @param  dst  The array into which the compressed data should be
   *              written.
   *
   * @return  The number of bytes of compressed data, or -1 if it was not
   *          possible to actually compress the data.
   * @return  The number of bytes of compressed data, or -1 if it was
   *          not possible to actually compress the data.
   */
  public int compress(byte[] src, byte[] dst)
  {
@@ -800,26 +859,29 @@
  /**
   * Attempts to uncompress the data in the provided source array into the given
   * destination array.  If the uncompressed data will fit into the given
   * destination array, then this method will return the number of bytes of
   * uncompressed data written into the destination buffer.  Otherwise, it will
   * return a negative value to indicate that the destination buffer was not
   * large enough.  The absolute value of that negative return value will
   * indicate the buffer size required to fully decompress the data.  Note that
   * if a negative value is returned, then the data in the destination array
   * should be considered invalid.
   * Attempts to uncompress the data in the provided source array into
   * the given destination array.  If the uncompressed data will fit
   * into the given destination array, then this method will return
   * the number of bytes of uncompressed data written into the
   * destination buffer.  Otherwise, it will return a negative value
   * to indicate that the destination buffer was not large enough.
   * The absolute value of that negative return value will indicate
   * the buffer size required to fully decompress the data.  Note that
   * if a negative value is returned, then the data in the destination
   * array should be considered invalid.
   *
   * @param  src  The array containing the compressed data.
   * @param  dst  The array into which the uncompressed data should be written.
   * @param  dst  The array into which the uncompressed data should be
   *              written.
   *
   * @return  A positive value containing the number of bytes of uncompressed
   *          data written into the destination buffer, or a negative value
   *          whose absolute value is the size of the destination buffer
   *          required to fully decompress the provided data.
   * @return  A positive value containing the number of bytes of
   *          uncompressed data written into the destination buffer,
   *          or a negative value whose absolute value is the size of
   *          the destination buffer required to fully decompress the
   *          provided data.
   *
   * @throws  DataFormatException  If a problem occurs while attempting to
   *                               uncompress the data.
   * @throws  DataFormatException  If a problem occurs while
   *                               attempting to uncompress the data.
   */
  public int uncompress(byte[] src, byte[] dst)
         throws DataFormatException
opends/src/server/org/opends/server/types/DN.java
@@ -31,7 +31,6 @@
import java.io.Serializable;
import java.util.ArrayList;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
opends/src/server/org/opends/server/types/DirectoryException.java
File was renamed from opends/src/server/org/opends/server/core/DirectoryException.java
@@ -24,22 +24,19 @@
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.core;
package org.opends.server.types;
import java.util.List;
import org.opends.server.types.DN;
import org.opends.server.types.ResultCode;
import static org.opends.server.loggers.Debug.*;
/**
 * This class defines an exception that may be thrown if a problem occurs in the
 * Directory Server.
 * This class defines an exception that may be thrown if a problem
 * occurs in the Directory Server.
 */
public class DirectoryException
       extends Exception
@@ -48,47 +45,49 @@
   * The fully-qualified name of this class for debugging purposes.
   */
  private static final String CLASS_NAME =
       "org.opends.server.core.DirectoryException";
       "org.opends.server.types.DirectoryException";
  /**
   * The serial version identifier required to satisfy the compiler because this
   * class extends <CODE>java.lang.Exception</CODE>, which implements the
   * <CODE>java.io.Serializable</CODE> interface.  This value was generated
   * using the <CODE>serialver</CODE> command-line utility included with the
   * Java SDK.
   * The serial version identifier required to satisfy the compiler
   * because this class extends <CODE>java.lang.Exception</CODE>,
   * which implements the <CODE>java.io.Serializable</CODE> interface.
   * This value was generated using the <CODE>serialver</CODE>
   * command-line utility included with the Java SDK.
   */
  private static final long serialVersionUID = 2615453139798417203L;
  // The matched DN for this directory exception.
  private DN matchedDN;
  private final DN matchedDN;
  // The message ID for the error message.
  private int errorMessageID;
  private final int errorMessageID;
  // The set of referral URLs for this directory exception.
  private List<String> referralURLs;
  private final List<String> referralURLs;
  // The result code for this directory exception.
  private ResultCode resultCode;
  private final ResultCode resultCode;
  // The error message for this directory exception.
  private String errorMessage;
  private final String errorMessage;
  /**
   * Creates a new directory exception with the provided information.
   *
   * @param  resultCode      The result code for this directory exception.
   * @param  errorMessage    The error message for this directory exception.
   * @param  resultCode      The result code for this directory
   *                         exception.
   * @param  errorMessage    The error message for this directory
   *                         exception.
   * @param  errorMessageID  The unique ID for the error message.
   */
  public DirectoryException(ResultCode resultCode, String errorMessage,
                            int errorMessageID)
  public DirectoryException(ResultCode resultCode,
                            String errorMessage, int errorMessageID)
  {
    super(errorMessage);
@@ -108,14 +107,17 @@
  /**
   * Creates a new directory exception with the provided information.
   *
   * @param  resultCode      The result code for this directory exception.
   * @param  errorMessage    The error message for this directory exception.
   * @param  resultCode      The result code for this directory
   *                         exception.
   * @param  errorMessage    The error message for this directory
   *                         exception.
   * @param  errorMessageID  The unique ID for the error message.
   * @param  cause           The exception that was caught to trigger this
   *                         directory exception.
   * @param  cause           The exception that was caught to trigger
   *                         this directory exception.
   */
  public DirectoryException(ResultCode resultCode, String errorMessage,
                            int errorMessageID, Throwable cause)
  public DirectoryException(ResultCode resultCode,
                            String errorMessage, int errorMessageID,
                            Throwable cause)
  {
    super(errorMessage, cause);
@@ -136,22 +138,27 @@
  /**
   * Creates a new directory exception with the provided information.
   *
   * @param  resultCode      The result code for this directory exception.
   * @param  errorMessage    The error message for this directory exception.
   * @param  resultCode      The result code for this directory
   *                         exception.
   * @param  errorMessage    The error message for this directory
   *                         exception.
   * @param  errorMessageID  The unique ID for the error message.
   * @param  matchedDN       The matched DN for this directory exception.
   * @param  cause           The exception that was caught to trigger this
   *                         directory exception.
   * @param  matchedDN       The matched DN for this directory
   *                         exception.
   * @param  cause           The exception that was caught to trigger
   *                         this directory exception.
   */
  public DirectoryException(ResultCode resultCode, String errorMessage,
                            int errorMessageID, DN matchedDN, Throwable cause)
  public DirectoryException(ResultCode resultCode,
                            String errorMessage, int errorMessageID,
                            DN matchedDN, Throwable cause)
  {
    super(errorMessage, cause);
    assert debugConstructor(CLASS_NAME, String.valueOf(resultCode),
                            String.valueOf(errorMessage),
                            String.valueOf(errorMessageID),
                            String.valueOf(matchedDN), String.valueOf(cause));
                            String.valueOf(matchedDN),
                            String.valueOf(cause));
    this.resultCode     = resultCode;
    this.errorMessage   = errorMessage;
@@ -165,18 +172,22 @@
  /**
   * Creates a new directory exception with the provided information.
   *
   * @param  resultCode      The result code for this directory exception.
   * @param  errorMessage    The error message for this directory exception.
   * @param  errorMessageID  The unique ID for the error message.
   * @param  matchedDN       The matched DN for this directory exception.
   * @param  referralURLs    The set of referral URLs for this directory
   * @param  resultCode      The result code for this directory
   *                         exception.
   * @param  cause           The exception that was caught to trigger this
   * @param  errorMessage    The error message for this directory
   *                         exception.
   * @param  errorMessageID  The unique ID for the error message.
   * @param  matchedDN       The matched DN for this directory
   *                         exception.
   * @param  referralURLs    The set of referral URLs for this
   *                         directory exception.
   * @param  cause           The exception that was caught to trigger
   *                         this directory exception.
   */
  public DirectoryException(ResultCode resultCode, String errorMessage,
                            int errorMessageID, DN matchedDN,
                            List<String> referralURLs, Throwable cause)
  public DirectoryException(ResultCode resultCode,
                            String errorMessage, int errorMessageID,
                            DN matchedDN, List<String> referralURLs,
                            Throwable cause)
  {
    super(errorMessage, cause);
@@ -205,7 +216,7 @@
   *
   * @return  The result code for this directory exception.
   */
  public ResultCode getResultCode()
  public final ResultCode getResultCode()
  {
    assert debugEnter(CLASS_NAME, "getResultCode");
@@ -219,7 +230,7 @@
   *
   * @return  The error message for this directory exception.
   */
  public String getErrorMessage()
  public final String getErrorMessage()
  {
    assert debugEnter(CLASS_NAME, "getErrorMessage");
@@ -229,13 +240,13 @@
  /**
   * Retrieves the unique ID for the error message associated with this
   * directory exception.
   * Retrieves the unique ID for the error message associated with
   * this directory exception.
   *
   * @return  The unique ID for the error message associated with this directory
   *          exception.
   * @return  The unique ID for the error message associated with this
   *          directory exception.
   */
  public int getErrorMessageID()
  public final int getErrorMessageID()
  {
    assert debugEnter(CLASS_NAME, "getErrorMessageID");
@@ -247,10 +258,10 @@
  /**
   * Retrieves the matched DN for this directory exception.
   *
   * @return  The matched DN for this directory exception, or <CODE>null</CODE>
   *          if there is none.
   * @return  The matched DN for this directory exception, or
   *          <CODE>null</CODE> if there is none.
   */
  public DN getMatchedDN()
  public final DN getMatchedDN()
  {
    assert debugEnter(CLASS_NAME, "getMatchedDN");
@@ -262,10 +273,10 @@
  /**
   * Retrieves the set of referral URLs for this directory exception.
   *
   * @return  The set of referral URLs for this directory exception, or
   *          <CODE>null</CODE> if there are none.
   * @return  The set of referral URLs for this directory exception,
   *          or <CODE>null</CODE> if there are none.
   */
  public List<String> getReferralURLs()
  public final List<String> getReferralURLs()
  {
    assert debugEnter(CLASS_NAME, "getReferralURLs");
opends/src/server/org/opends/server/types/Entry.java
@@ -46,9 +46,7 @@
import org.opends.server.api.AttributeValueDecoder;
import org.opends.server.api.ProtocolElement;
import org.opends.server.api.plugin.LDIFPluginResult;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockManager;
import org.opends.server.core.PluginConfigManager;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.util.LDIFException;
opends/src/server/org/opends/server/types/FilePermission.java
@@ -33,7 +33,6 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import static org.opends.server.config.ConfigConstants.*;
opends/src/server/org/opends/server/types/InitializationException.java
File was renamed from opends/src/server/org/opends/server/core/InitializationException.java
@@ -24,7 +24,7 @@
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.core;
package org.opends.server.types;
@@ -33,8 +33,8 @@
/**
 * This class defines an exception that may be thrown if a problem occurs while
 * trying to initialize a Directory Server component.
 * This class defines an exception that may be thrown if a problem
 * occurs while trying to initialize a Directory Server component.
 */
public class InitializationException
       extends Exception
@@ -43,32 +43,34 @@
   * The fully-qualified name of this class for debugging purposes.
   */
  private static final String CLASS_NAME =
       "org.opends.server.core.InitializationException";
       "org.opends.server.types.InitializationException";
  /**
   * The serial version identifier required to satisfy the compiler because this
   * class extends <CODE>java.lang.Exception</CODE>, which implements the
   * <CODE>java.io.Serializable</CODE> interface.  This value was generated
   * using the <CODE>serialver</CODE> command-line utility included with the
   * Java SDK.
   * The serial version identifier required to satisfy the compiler
   * because this class extends <CODE>java.lang.Exception</CODE>,
   * which implements the <CODE>java.io.Serializable</CODE> interface.
   * This value was generated using the <CODE>serialver</CODE>
   * command-line utility included with the Java SDK.
   */
  private static final long serialVersionUID = -6121147544833914730L;
  // The message ID for the message associated with this initialization
  // exception.
  private int messageID;
  // The message ID for the message associated with this
  // initialization exception.
  private final int messageID;
  /**
   * Creates a new initialization exception with the provided message.
   *
   * @param  messageID  The unique identifier for the associated message.
   * @param  message    The message that explains the problem that occurred.
   * @param  messageID  The unique identifier for the associated
   *                    message.
   * @param  message    The message that explains the problem that
   *                    occurred.
   */
  public InitializationException(int messageID, String message)
  {
@@ -82,14 +84,18 @@
  /**
   * Creates a new initialization exception with the provided message and root
   * cause.
   * Creates a new initialization exception with the provided message
   * and root cause.
   *
   * @param  messageID  The unique identifier for the associated message.
   * @param  message    The message that explains the problem that occurred.
   * @param  cause      The exception that was caught to trigger this exception.
   * @param  messageID  The unique identifier for the associated
   *                    message.
   * @param  message    The message that explains the problem that
   *                    occurred.
   * @param  cause      The exception that was caught to trigger this
   *                    exception.
   */
  public InitializationException(int messageID, String message, Throwable cause)
  public InitializationException(int messageID, String message,
                                 Throwable cause)
  {
    super(message, cause);
@@ -106,7 +112,7 @@
   *
   * @return  The unique identifier for the associated message.
   */
  public int getMessageID()
  public final int getMessageID()
  {
    assert debugEnter(CLASS_NAME, "getMessageID");
opends/src/server/org/opends/server/types/InvokableMethod.java
@@ -35,7 +35,6 @@
import org.opends.server.api.InvokableComponent;
import org.opends.server.config.ConfigAttribute;
import org.opends.server.core.DirectoryException;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/types/LDAPURL.java
@@ -33,7 +33,6 @@
import java.util.LinkedList;
import java.util.StringTokenizer;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import static org.opends.server.loggers.Debug.*;
opends/src/server/org/opends/server/types/LDIFExportConfig.java
@@ -40,8 +40,6 @@
import java.util.Set;
import java.util.zip.GZIPOutputStream;
import org.opends.server.core.DirectoryException;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.UtilityMessages.*;
opends/src/server/org/opends/server/types/LDIFImportConfig.java
@@ -46,7 +46,6 @@
import java.util.Set;
import java.util.zip.GZIPInputStream;
import org.opends.server.core.DirectoryException;
import org.opends.server.tools.makeldif.MakeLDIFInputStream;
import org.opends.server.tools.makeldif.TemplateFile;
opends/src/server/org/opends/server/types/LockManager.java
New file
@@ -0,0 +1,836 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.util.StaticUtils.*;
/**
 * This class defines a Directory Server component that can keep track
 * of all locks needed throughout the Directory Server.  It is
 * intended primarily for entry locking but support for other types of
 * objects might be added in the future.
 */
public class LockManager
{
  /**
   * The fully-qualified name of this class for debugging purposes.
   */
  private static final String CLASS_NAME =
       "org.opends.server.types.LockManager";
  /**
   * The number of buckets into which the set of global DN locks will
   * be broken.
   */
  public static final int NUM_GLOBAL_DN_LOCKS =
       (10 * Runtime.getRuntime().availableProcessors());
  /**
   * The initial capacity to use for the DN lock hashtable.
   */
  public static final int DN_TABLE_INITIAL_SIZE = 50;
  /**
   * The load factor to use for the DN lock hashtable.
   */
  public static final float DN_TABLE_LOAD_FACTOR = 0.75F;
  /**
   * The default length of time in milliseconds to wait while
   * attempting to acquire a read or write lock.
   */
  public static final long DEFAULT_TIMEOUT = 3000;
  // The set of global DN locks that we need to ensure thread safety
  // for all of the other operations.
  private static ReentrantLock[] globalDNLocks;
  // The set of entry locks that the server knows about.
  private static ConcurrentHashMap<DN,ReentrantReadWriteLock>
                      entryLocks;
  // Initialize all of the lock variables.
  static
  {
    // Create the set of global DN locks.
    globalDNLocks = new ReentrantLock[NUM_GLOBAL_DN_LOCKS];
    for (int i=0; i < NUM_GLOBAL_DN_LOCKS; i++)
    {
      globalDNLocks[i] = new ReentrantLock();
    }
    // Create an empty table for holding the entry locks.
    entryLocks = new ConcurrentHashMap<DN,ReentrantReadWriteLock>(
         DN_TABLE_INITIAL_SIZE, DN_TABLE_LOAD_FACTOR,
         NUM_GLOBAL_DN_LOCKS);
  }
  /**
   * Attempts to acquire a read lock on the specified entry.  It will
   * succeed only if the lock is not already held.  If any blocking is
   * required, then this call will fail rather than block.
   *
   * @param  entryDN  The DN of the entry for which to obtain the read
   *                  lock.
   *
   * @return  The read lock that was acquired, or <CODE>null</CODE> if
   *          it was not possible to obtain a read lock for some
   *          reason.
   */
  public static final Lock tryLockRead(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "tryLockRead",
                      String.valueOf(entryDN));
    int hashCode = (entryDN.hashCode() & 0x7FFFFFFF);
    // Get the hash code for the provided entry DN and determine which
    // global lock to acquire.  This will ensure that no two threads
    // will be allowed to lock or unlock the same entry at any given
    // time, but should allow other entries with different hash codes
    // to be processed.
    ReentrantLock globalLock;
    try
    {
      globalLock = globalDNLocks[hashCode % NUM_GLOBAL_DN_LOCKS];
      if (! globalLock.tryLock())
      {
        return null;
      }
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "lockRead", e);
      // This is not fine.  Some unexpected error occurred.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME,  "lockRead",
                  "Unexpected exception while trying to obtain the " +
                  "global lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return null;
    }
    // At this point we have the global lock for this bucket.  We must
    // use a try/catch/finally block to ensure that the global lock is
    // always released no matter what.
    try
    {
      // Now check to see if the entry is already in the lock table.
      ReentrantReadWriteLock entryLock = entryLocks.get(entryDN);
      if (entryLock == null)
      {
        // No lock exists for the entry.  Create one and put it in the
        // table.
        entryLock = new ReentrantReadWriteLock();
        if (entryLock.readLock().tryLock())
        {
          entryLocks.put(entryDN, entryLock);
          return entryLock.readLock();
        }
        else
        {
          // This should never happen since we just created the lock.
          assert debugMessage(DebugLogCategory.CORE_SERVER,
                      DebugLogSeverity.ERROR, CLASS_NAME, "lockRead",
                      "Unable to acquire read lock on " +
                      "newly-created lock for entry " +
                      entryDN.toString());
          return null;
        }
      }
      else
      {
        // There is already a lock for the entry.  Try to get its read
        // lock.
        if (entryLock.readLock().tryLock())
        {
          // We got the read lock.  We don't need to do anything else.
          return entryLock.readLock();
        }
        else
        {
          // We couldn't get the read lock.  Write a debug message.
          assert debugMessage(DebugLogCategory.CORE_SERVER,
                      DebugLogSeverity.WARNING, CLASS_NAME,
                      "lockRead",
                      "Unable to acquire a read lock for entry " +
                      entryDN.toString() + " that was already " +
                      "present in the lock table.");
          return null;
        }
      }
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "lockRead", e);
      // This is not fine.  Some unexpected error occurred.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "lockRead",
                  "Unexpected exception while trying to obtain a " +
                  "read lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return null;
    }
    finally
    {
      // This will always be called even after a return.
      globalLock.unlock();
    }
  }
  /**
   * Attempts to acquire a read lock for the specified entry.
   * Multiple threads can hold the read lock concurrently for an entry
   * as long as the write lock is held.  If the write lock is held,
   * then no other read or write locks will be allowed for that entry
   * until the write lock is released.  A default timeout will be used
   * for the lock.
   *
   * @param  entryDN  The DN of the entry for which to obtain the read
   *                  lock.
   *
   * @return  The read lock that was acquired, or <CODE>null</CODE> if
   *          it was not possible to obtain a read lock for some
   *          reason.
   */
  public static final Lock lockRead(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "lockRead",
                      String.valueOf(entryDN));
    return lockRead(entryDN, DEFAULT_TIMEOUT);
  }
  /**
   * Attempts to acquire a read lock for the specified entry.
   * Multiple threads can hold the read lock concurrently for an entry
   * as long as the write lock is held.  If the write lock is held,
   * then no other read or write locks will be allowed for that entry
   * until the write lock is released.
   *
   * @param  entryDN  The DN of the entry for which to obtain the read
   *                  lock.
   * @param  timeout  The maximum length of time in milliseconds to
   *                  wait for the lock before timing out.
   *
   * @return  The read lock that was acquired, or <CODE>null</CODE> if
   *          it was not possible to obtain a read lock for some
   *          reason.
   */
  public static final Lock lockRead(DN entryDN, long timeout)
  {
    assert debugEnter(CLASS_NAME, "lockRead", String.valueOf(entryDN),
                      String.valueOf(timeout));
    int hashCode = (entryDN.hashCode() & 0x7FFFFFFF);
    // Get the hash code for the provided entry DN and determine which
    // global lock to acquire.  This will ensure that no two threads
    // will be allowed to lock or unlock the same entry at any given
    // time, but should allow other entries with different hash codes
    // to be processed.
    ReentrantLock globalLock;
    try
    {
      globalLock = globalDNLocks[hashCode % NUM_GLOBAL_DN_LOCKS];
      if (! globalLock.tryLock(timeout, TimeUnit.MILLISECONDS))
      {
        return null;
      }
    }
    catch (InterruptedException ie)
    {
      assert debugException(CLASS_NAME, "lockRead", ie);
      // This is fine.  The thread trying to acquire the lock was
      // interrupted.
      return null;
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "lockRead", e);
      // This is not fine.  Some unexpected error occurred.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "lockRead",
                  "Unexpected exception while trying to obtain the " +
                  "global lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return null;
    }
    // At this point we have the global lock for this bucket.  We must
    // use a try/catch/finally block to ensure that the global lock is
    // always released no matter what.
    try
    {
      // Now check to see if the entry is already in the lock table.
      ReentrantReadWriteLock entryLock = entryLocks.get(entryDN);
      if (entryLock == null)
      {
        // No lock exists for the entry.  Create one and put it in the
        // table.
        entryLock = new ReentrantReadWriteLock();
        if (entryLock.readLock().tryLock(timeout,
                                         TimeUnit.MILLISECONDS))
        {
          entryLocks.put(entryDN, entryLock);
          return entryLock.readLock();
        }
        else
        {
          // This should never happen since we just created the lock.
          assert debugMessage(DebugLogCategory.CORE_SERVER,
                      DebugLogSeverity.ERROR, CLASS_NAME, "lockRead",
                      "Unable to acquire read lock on " +
                      "newly-created lock for entry " +
                      entryDN.toString());
          return null;
        }
      }
      else
      {
        // There is already a lock for the entry.  Try to get its read
        // lock.
        if (entryLock.readLock().tryLock(timeout,
                                         TimeUnit.MILLISECONDS))
        {
          // We got the read lock.  We don't need to do anything else.
          return entryLock.readLock();
        }
        else
        {
          // We couldn't get the read lock.  Write a debug message.
          assert debugMessage(DebugLogCategory.CORE_SERVER,
                      DebugLogSeverity.WARNING, CLASS_NAME,
                      "lockRead",
                      "Unable to acquire a read lock for entry " +
                      entryDN.toString() + " that was already " +
                      "present in the lock table.");
          return null;
        }
      }
    }
    catch (InterruptedException ie)
    {
      assert debugException(CLASS_NAME, "lockRead", ie);
      // This is fine.  The thread trying to acquire the lock was
      // interrupted.
      return null;
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "lockRead", e);
      // This is not fine.  Some unexpected error occurred.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "lockRead",
                  "Unexpected exception while trying to obtain a " +
                  "read lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return null;
    }
    finally
    {
      // This will always be called even after a return.
      globalLock.unlock();
    }
  }
  /**
   * Attempts to acquire a write lock on the specified entry.  It will
   * succeed only if the lock is not already held.  If any blocking is
   * required, then this call will fail rather than block.
   *
   * @param  entryDN  The DN of the entry for which to obtain the
   *                  write lock.
   *
   * @return  The write lock that was acquired, or <CODE>null</CODE>
   *          if it was not possible to obtain a write lock for some
   *          reason.
   */
  public static final Lock tryLockWrite(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "lockWrite",
                      String.valueOf(entryDN));
    int hashCode = (entryDN.hashCode() & 0x7FFFFFFF);
    // Get the hash code for the provided entry DN and determine which
    // global lock to acquire.  This will ensure that no two threads
    // will be allowed to lock or unlock the same entry at any given
    // time, but should allow other entries with different hash codes
    // to be processed.
    ReentrantLock globalLock;
    try
    {
      globalLock = globalDNLocks[hashCode % NUM_GLOBAL_DN_LOCKS];
      if (! globalLock.tryLock())
      {
        return null;
      }
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "lockWrite", e);
      // This is not fine.  Some unexpected error occurred.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "lockWrite",
                  "Unexpected exception while trying to obtain the " +
                  "global lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return null;
    }
    // At this point we have the global lock for this bucket.  We must
    // use a try/catch/finally block to ensure that the global lock is
    // always released no matter what.
    try
    {
      // Now check to see if the entry is already in the lock table.
      ReentrantReadWriteLock entryLock = entryLocks.get(entryDN);
      if (entryLock == null)
      {
        // No lock exists for the entry.  Create one and put it in the
        // table.
        entryLock = new ReentrantReadWriteLock();
        if (entryLock.writeLock().tryLock())
        {
          entryLocks.put(entryDN, entryLock);
          return entryLock.writeLock();
        }
        else
        {
          // This should never happen since we just created the lock.
          assert debugMessage(DebugLogCategory.CORE_SERVER,
                      DebugLogSeverity.ERROR, CLASS_NAME, "lockWrite",
                      "Unable to acquire write lock on " +
                      "newly-created lock for entry " +
                      entryDN.toString());
          return null;
        }
      }
      else
      {
        // There is already a lock for the entry.  Try to get its
        // write lock.
        if (entryLock.writeLock().tryLock())
        {
          // We got the write lock.  We don't need to do anything
          // else.
          return entryLock.writeLock();
        }
        else
        {
          // We couldn't get the write lock.  Write a debug message.
          assert debugMessage(DebugLogCategory.CORE_SERVER,
                      DebugLogSeverity.WARNING, CLASS_NAME,
                      "lockWrite",
                      "Unable to acquire the write lock for entry " +
                      entryDN.toString() + " that was already " +
                      "present in the lock table.");
          return null;
        }
      }
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "lockWrite", e);
      // This is not fine.  Some unexpected error occurred.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "lockWrite",
                  "Unexpected exception while trying to obtain the " +
                  "write lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return null;
    }
    finally
    {
      // This will always be called even after a return.
      globalLock.unlock();
    }
  }
  /**
   * Attempts to acquire the write lock for the specified entry.  Only
   * a single thread may hold the write lock for an entry at any given
   * time, and during that time no read locks may be held for it.  A
   * default timeout will be used for the lock.
   *
   * @param  entryDN  The DN of the entry for which to obtain the
   *                  write lock.
   *
   * @return  The write lock that was acquired, or <CODE>null</CODE>
   *          if it was not possible to obtain a read lock for some
   *          reason.
   */
  public static final Lock lockWrite(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "lockRead",
                      String.valueOf(entryDN));
    return lockWrite(entryDN, DEFAULT_TIMEOUT);
  }
  /**
   * Attempts to acquire the write lock for the specified entry.  Only
   * a single thread may hold the write lock for an entry at any given
   * time, and during that time no read locks may be held for it.
   *
   * @param  entryDN  The DN of the entry for which to obtain the
   *                  write lock.
   * @param  timeout  The maximum length of time in milliseconds to
   *                  wait for the lock before timing out.
   *
   * @return  The write lock that was acquired, or <CODE>null</CODE>
   *          if it was not possible to obtain a read lock for some
   *          reason.
   */
  public static final Lock lockWrite(DN entryDN, long timeout)
  {
    assert debugEnter(CLASS_NAME, "lockWrite",
                      String.valueOf(entryDN),
                      String.valueOf(timeout));
    int hashCode = (entryDN.hashCode() & 0x7FFFFFFF);
    // Get the hash code for the provided entry DN and determine which
    // global lock to acquire.  This will ensure that no two threads
    // will be allowed to lock or unlock the same entry at any given
    // time, but should allow other entries with different hash codes
    // to be processed.
    ReentrantLock globalLock;
    try
    {
      globalLock = globalDNLocks[hashCode % NUM_GLOBAL_DN_LOCKS];
      if (! globalLock.tryLock(timeout, TimeUnit.MILLISECONDS))
      {
        return null;
      }
    }
    catch (InterruptedException ie)
    {
      assert debugException(CLASS_NAME, "lockWrite", ie);
      // This is fine.  The thread trying to acquire the lock was
      // interrupted.
      return null;
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "lockWrite", e);
      // This is not fine.  Some unexpected error occurred.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "lockWrite",
                  "Unexpected exception while trying to obtain the " +
                  "global lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return null;
    }
    // At this point we have the global lock for this bucket.  We must
    // use a try/catch/finally block to ensure that the global lock is
    // always released no matter what.
    try
    {
      // Now check to see if the entry is already in the lock table.
      ReentrantReadWriteLock entryLock = entryLocks.get(entryDN);
      if (entryLock == null)
      {
        // No lock exists for the entry.  Create one and put it in the
        // table.
        entryLock = new ReentrantReadWriteLock();
        if (entryLock.writeLock().tryLock(timeout,
                                          TimeUnit.MILLISECONDS))
        {
          entryLocks.put(entryDN, entryLock);
          return entryLock.writeLock();
        }
        else
        {
          // This should never happen since we just created the lock.
          assert debugMessage(DebugLogCategory.CORE_SERVER,
                      DebugLogSeverity.ERROR, CLASS_NAME, "lockWrite",
                      "Unable to acquire write lock on " +
                      "newly-created lock for entry " +
                      entryDN.toString());
          return null;
        }
      }
      else
      {
        // There is already a lock for the entry.  Try to get its
        // write lock.
        if (entryLock.writeLock().tryLock(timeout,
                                          TimeUnit.MILLISECONDS))
        {
          // We got the write lock.  We don't need to do anything
          // else.
          return entryLock.writeLock();
        }
        else
        {
          // We couldn't get the write lock.  Write a debug message.
          assert debugMessage(DebugLogCategory.CORE_SERVER,
                      DebugLogSeverity.WARNING, CLASS_NAME,
                      "lockWrite",
                      "Unable to acquire the write lock for entry " +
                      entryDN.toString() + " that was already " +
                      "present in the lock table.");
          return null;
        }
      }
    }
    catch (InterruptedException ie)
    {
      assert debugException(CLASS_NAME, "lockWrite", ie);
      // This is fine.  The thread trying to acquire the lock was
      // interrupted.
      return null;
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "lockWrite", e);
      // This is not fine.  Some unexpected error occurred.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "lockWrite",
                  "Unexpected exception while trying to obtain the " +
                  "write lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return null;
    }
    finally
    {
      // This will always be called even after a return.
      globalLock.unlock();
    }
  }
  /**
   * Releases a read or write lock held on the specified entry.
   *
   * @param  entryDN  The DN of the entry for which to release the
   *                  lock.
   * @param  lock     The read or write lock held for the entry.
   */
  public static final void unlock(DN entryDN, Lock lock)
  {
    assert debugEnter(CLASS_NAME, "unlock", String.valueOf(entryDN));
    // Unlock the entry without grabbing any additional locks.
    try
    {
      lock.unlock();
    }
    catch (Exception e)
    {
      // This should never happen.  However, if it does, then just
      // capture the exception and continue because it may still be
      // necessary to remove the lock for the entry from the table.
      assert debugException(CLASS_NAME, "unlock", e);
    }
    int hashCode = (entryDN.hashCode() & 0x7FFFFFFF);
    // Now grab the global lock for the entry and check to see if we
    // can remove it from the table.
    ReentrantLock globalLock;
    try
    {
      globalLock = globalDNLocks[hashCode % NUM_GLOBAL_DN_LOCKS];
      // This will block until it acquires the lock or until it is
      // interrupted.
      globalLock.lockInterruptibly();
    }
    catch (InterruptedException ie)
    {
      assert debugException(CLASS_NAME, "unlock", ie);
      // The lock trying to acquire the lock was interrupted.  In this
      // case, we'll just return.  The worst that could happen here is
      // that a lock that isn't held by anything is still in the table
      // which will just consume a little memory.
      return;
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "unlock", e);
      // This is not fine.  Some unexpected error occurred.  But
      // again, the worst that could happen is that we may not clean
      // up an unheld lock, which isn't really that big a deal unless
      // it happens too often.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "unlock",
                  "Unexpected exception while trying to obtain the " +
                  "global lock for entry " + entryDN.toString() +
                  ":  " + stackTraceToSingleLineString(e));
      return;
    }
    // At this point we have the global lock for this bucket.  We must
    // use a try/catch/finally block to ensure that the global lock is
    // always released no matter what.
    try
    {
      ReentrantReadWriteLock entryLock = entryLocks.get(entryDN);
      if ((entryLock != null) &&
          (entryLock.getReadLockCount() == 0) &&
          (! entryLock.isWriteLocked()))
      {
        // This lock isn't held so we can remove it from the table.
        entryLocks.remove(entryDN);
      }
      return;
    }
    catch (Exception e)
    {
      assert debugException(CLASS_NAME, "unlock", e);
      // This should never happen.
      assert debugMessage(DebugLogCategory.CORE_SERVER,
                  DebugLogSeverity.ERROR, CLASS_NAME, "unlock",
                  "Unexpected exception while trying to determine " +
                  "whether the lock for entry " + entryDN.toString() +
                  " can be removed:  " +
                  stackTraceToSingleLineString(e));
      return;
    }
    finally
    {
      globalLock.unlock();
    }
  }
  /**
   * Removes any reference to the specified entry from the lock table.
   * This may be helpful if there is a case where a lock has been
   * orphaned somehow and must be removed before other threads may
   * acquire it.
   *
   * @param  entryDN  The DN of the entry for which to remove the lock
   *                  from the table.
   *
   * @return  The read write lock that was removed from the table, or
   *          <CODE>null</CODE> if nothing was in the table for the
   *          specified entry.  If a lock object is returned, it may
   *          be possible to get information about who was holding it.
   */
  public static final ReentrantReadWriteLock destroyLock(DN entryDN)
  {
    assert debugEnter(CLASS_NAME, "destroyLock",
                      String.valueOf(entryDN));
    return entryLocks.remove(entryDN);
  }
  /**
   * Retrieves the number of entries currently held in the lock table.
   * Note that this may be an expensive operation.
   *
   * @return  The number of entries currently held in the lock table.
   */
  public static final int lockTableSize()
  {
    assert debugEnter(CLASS_NAME, "lockTableSize");
    return entryLocks.size();
  }
}
opends/src/server/org/opends/server/types/OperationType.java
File was renamed from opends/src/server/org/opends/server/core/OperationType.java
@@ -24,13 +24,13 @@
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.core;
package org.opends.server.types;
/**
 * This enumeration defines the set of possible operation types that may be
 * processed by the Directory Server.
 * This enumeration defines the set of possible operation types that
 * may be processed by the Directory Server.
 */
public enum OperationType
{
@@ -105,14 +105,15 @@
  // The string representation of this operation type.
  private String operationName;
  private final String operationName;
  /**
   * Creates a new operation type with the provided operation name.
   *
   * @param  operationName  The operation name for this operation type.
   * @param  operationName  The operation name for this operation
   *                        type.
   */
  private OperationType(String operationName)
  {
@@ -126,7 +127,7 @@
   *
   * @return  The human-readable name for this operation type.
   */
  public String getOperationName()
  public final String getOperationName()
  {
    return operationName;
  }
@@ -138,7 +139,7 @@
   *
   * @return  A string representation of this operation type.
   */
  public String toString()
  public final String toString()
  {
    return operationName;
  }
opends/src/server/org/opends/server/types/RDN.java
@@ -33,9 +33,8 @@
import java.util.List;
import java.util.TreeSet;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.CoreMessages.*;
opends/src/server/org/opends/server/types/Schema.java
New file
@@ -0,0 +1,2381 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types;
import java.util.LinkedHashSet;
import java.util.concurrent.ConcurrentHashMap;
import org.opends.server.api.ApproximateMatchingRule;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.api.MatchingRule;
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.api.SubstringMatchingRule;
import org.opends.server.protocols.asn1.ASN1OctetString;
import static org.opends.server.loggers.Debug.*;
import static org.opends.server.messages.CoreMessages.*;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.util.StaticUtils.*;
/**
 * This class defines a data structure that holds information about
 * the components of the Directory Server schema.  It includes the
 * following kinds of elements:
 *
 * <UL>
 *   <LI>Attribute type definitions</LI>
 *   <LI>Objectclass definitions</LI>
 *   <LI>Attribute syntax definitions</LI>
 *   <LI>Matching rule definitions</LI>
 *   <LI>Matching rule use definitions</LI>
 *   <LI>DIT content rule definitions</LI>
 *   <LI>DIT structure rule definitions</LI>
 *   <LI>Name form definitions</LI>
 * </UL>
 */
public class Schema
{
  /**
   * The fully-qualified name of this class for debugging purposes.
   */
  private static final String CLASS_NAME =
       "org.opends.server.types.Schema";
  // The set of attribute type definitions for this schema, mapped
  // between the lowercase names and OID for the definition and the
  // attribute type itself.
  private ConcurrentHashMap<String,AttributeType> attributeTypes;
  // The set of objectclass definitions for this schema, mapped
  // between the lowercase names and OID for the definition and the
  // objectclass itself.
  private ConcurrentHashMap<String,ObjectClass> objectClasses;
  // The set of attribute syntaxes for this schema, mapped between the
  // OID for the syntax and the syntax itself.
  private ConcurrentHashMap<String,AttributeSyntax> syntaxes;
  // The entire set of matching rules for this schema, mapped between
  // the lowercase names and OID for the definition and the matching
  // rule itself.
  private ConcurrentHashMap<String,MatchingRule> matchingRules;
  // The set of approximate matching rules for this schema, mapped
  // between the lowercase names and OID for the definition and the
  // matching rule itself.
  private ConcurrentHashMap<String,ApproximateMatchingRule>
               approximateMatchingRules;
  // The set of equality matching rules for this schema, mapped
  // between the lowercase names and OID for the definition and the
  // matching rule itself.
  private ConcurrentHashMap<String,EqualityMatchingRule>
               equalityMatchingRules;
  // The set of ordering matching rules for this schema, mapped
  // between the lowercase names and OID for the definition and the
  // matching rule itself.
  private ConcurrentHashMap<String,OrderingMatchingRule>
               orderingMatchingRules;
  // The set of substring matching rules for this schema, mapped
  // between the lowercase names and OID for the definition and the
  // matching rule itself.
  private ConcurrentHashMap<String,SubstringMatchingRule>
               substringMatchingRules;
  // The set of matching rule uses for this schema, mapped between the
  // matching rule for the definition and the matching rule use
  // itself.
  private ConcurrentHashMap<MatchingRule,MatchingRuleUse>
               matchingRuleUses;
  // The set of DIT content rules for this schema, mapped between the
  // structural objectclass for the definition and the DIT content
  // rule itself.
  private ConcurrentHashMap<ObjectClass,DITContentRule>
               ditContentRules;
  // The set of DIT structure rules for this schema, mapped between
  // the name form for the definition and the DIT structure rule
  // itself.
  private ConcurrentHashMap<Integer,DITStructureRule>
               ditStructureRulesByID;
  // The set of DIT structure rules for this schema, mapped between
  // the name form for the definition and the DIT structure rule
  // itself.
  private ConcurrentHashMap<NameForm,DITStructureRule>
               ditStructureRulesByNameForm;
  // The set of name forms for this schema, mapped between the
  // structural objectclass for the definition and the name form
  // itself.
  private ConcurrentHashMap<ObjectClass,NameForm> nameFormsByOC;
  // The set of name forms for this schema, mapped between the
  // names/OID and the name form itself.
  private ConcurrentHashMap<String,NameForm> nameFormsByName;
  // The set of pre-encoded attribute syntax representations.
  private LinkedHashSet<AttributeValue> syntaxSet;
  // The set of pre-encoded attribute type representations.
  private LinkedHashSet<AttributeValue> attributeTypeSet;
  // The set of pre-encoded DIT content rule representations.
  private LinkedHashSet<AttributeValue> ditContentRuleSet;
  // The set of pre-encoded DIT structure rule representations.
  private LinkedHashSet<AttributeValue> ditStructureRuleSet;
  // The set of pre-encoded matching rule representations.
  private LinkedHashSet<AttributeValue> matchingRuleSet;
  // The set of pre-encoded matching rule use representations.
  private LinkedHashSet<AttributeValue> matchingRuleUseSet;
  // The set of pre-encoded name form representations.
  private LinkedHashSet<AttributeValue> nameFormSet;
  // The set of pre-encoded objectclass representations.
  private LinkedHashSet<AttributeValue> objectClassSet;
  /**
   * Creates a new schema structure with all elements initialized but
   * empty.
   */
  public Schema()
  {
    assert debugConstructor(CLASS_NAME);
    attributeTypes = new ConcurrentHashMap<String,AttributeType>();
    objectClasses = new ConcurrentHashMap<String,ObjectClass>();
    syntaxes = new ConcurrentHashMap<String,AttributeSyntax>();
    matchingRules = new ConcurrentHashMap<String,MatchingRule>();
    approximateMatchingRules =
         new ConcurrentHashMap<String,ApproximateMatchingRule>();
    equalityMatchingRules =
         new ConcurrentHashMap<String,EqualityMatchingRule>();
    orderingMatchingRules =
         new ConcurrentHashMap<String,OrderingMatchingRule>();
    substringMatchingRules =
         new ConcurrentHashMap<String,SubstringMatchingRule>();
    matchingRuleUses =
         new ConcurrentHashMap<MatchingRule,MatchingRuleUse>();
    ditContentRules =
         new ConcurrentHashMap<ObjectClass,DITContentRule>();
    ditStructureRulesByID =
         new ConcurrentHashMap<Integer,DITStructureRule>();
    ditStructureRulesByNameForm =
         new ConcurrentHashMap<NameForm,DITStructureRule>();
    nameFormsByOC = new ConcurrentHashMap<ObjectClass,NameForm>();
    nameFormsByName = new ConcurrentHashMap<String,NameForm>();
    syntaxSet           = new LinkedHashSet<AttributeValue>();
    attributeTypeSet    = new LinkedHashSet<AttributeValue>();
    ditContentRuleSet   = new LinkedHashSet<AttributeValue>();
    ditStructureRuleSet = new LinkedHashSet<AttributeValue>();
    matchingRuleSet     = new LinkedHashSet<AttributeValue>();
    matchingRuleUseSet  = new LinkedHashSet<AttributeValue>();
    nameFormSet         = new LinkedHashSet<AttributeValue>();
    objectClassSet      = new LinkedHashSet<AttributeValue>();
  }
  /**
   * Retrieves the attribute type definitions for this schema, as a
   * mapping between the lowercase names and OIDs for the attribute
   * type and the attribute type itself.  Each attribute type may be
   * associated with multiple keys (once for the OID and again for
   * each name).  The contents of the returned mapping must not be
   * altered.
   *
   * @return  The attribute type definitions for this schema.
   */
  public final ConcurrentHashMap<String,AttributeType>
                    getAttributeTypes()
  {
    assert debugEnter(CLASS_NAME, "getAttributeTypes");
    return attributeTypes;
  }
  /**
   * Retrieves the set of defined attribute types for this schema.
   *
   * @return  The set of defined attribute types for this schema.
   */
  public final LinkedHashSet<AttributeValue> getAttributeTypeSet()
  {
    assert debugEnter(CLASS_NAME, "getAttributeTypeSet");
    return attributeTypeSet;
  }
  /**
   * Retrieves the attribute type definition with the specified name
   * or OID.
   *
   * @param  lowerName  The name or OID of the attribute type to
   *                    retrieve, formatted in all lowercase
   *                    characters.
   *
   * @return  The requested attribute type, or <CODE>null</CODE> if no
   *          type is registered with the provided name or OID.
   */
  public final AttributeType getAttributeType(String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getAttributeType",
                      String.valueOf(lowerName));
    return attributeTypes.get(lowerName);
  }
  /**
   * Registers the provided attribute type definition with this
   * schema.
   *
   * @param  attributeType      The attribute type to register with
   *                            this schema.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another attribute
   *                            type with the same OID or name).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerAttributeType(AttributeType attributeType,
                                          boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerAttributeType",
                      String.valueOf(attributeType),
                      String.valueOf(overwriteExisting));
    synchronized (attributeTypes)
    {
      if (! overwriteExisting)
      {
        String oid = toLowerCase(attributeType.getOID());
        if (attributeTypes.containsKey(oid))
        {
          AttributeType conflictingType = attributeTypes.get(oid);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_ATTRIBUTE_OID;
          String message =
               getMessage(msgID, attributeType.getNameOrOID(), oid,
                          conflictingType.getNameOrOID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
        for (String name : attributeType.getNormalizedNames())
        {
          if (attributeTypes.containsKey(name))
          {
            AttributeType conflictingType = attributeTypes.get(name);
            int    msgID   = MSGID_SCHEMA_CONFLICTING_ATTRIBUTE_NAME;
            String message =
                 getMessage(msgID, attributeType.getNameOrOID(), name,
                            conflictingType.getNameOrOID());
            throw new DirectoryException(
                           ResultCode.CONSTRAINT_VIOLATION, message,
                           msgID);
          }
        }
      }
      attributeTypes.put(toLowerCase(attributeType.getOID()),
                         attributeType);
      for (String name : attributeType.getNormalizedNames())
      {
        attributeTypes.put(name, attributeType);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = attributeType.toString();
      ASN1OctetString rawValue = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      attributeTypeSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided attribute type definition with this
   * schema.
   *
   * @param  attributeType  The attribute type to deregister with this
   *                        schema.
   */
  public final void deregisterAttributeType(
                         AttributeType attributeType)
  {
    assert debugEnter(CLASS_NAME, "deregisterAttributeType",
                      String.valueOf(attributeType));
    synchronized (attributeTypes)
    {
      attributeTypes.remove(toLowerCase(attributeType.getOID()),
                            attributeType);
      for (String name : attributeType.getNormalizedNames())
      {
        attributeTypes.remove(name, attributeType);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = attributeType.toString();
      ASN1OctetString rawValue = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      attributeTypeSet.remove(new AttributeValue(rawValue,
                                                 normValue));
    }
  }
  /**
   * Retrieves the objectclass definitions for this schema, as a
   * mapping between the lowercase names and OIDs for the objectclass
   * and the objectclass itself.  Each objectclass may be associated
   * with multiple keys (once for the OID and again for each name).
   * The contents of the returned mapping must not be altered.
   *
   * @return  The objectclass definitions for this schema.
   */
  public final ConcurrentHashMap<String,ObjectClass>
                    getObjectClasses()
  {
    assert debugEnter(CLASS_NAME, "getObjectClasses");
    return objectClasses;
  }
  /**
   * Retrieves the set of defined objectclasses for this schema.
   *
   * @return  The set of defined objectclasses for this schema.
   */
  public final LinkedHashSet<AttributeValue> getObjectClassSet()
  {
    assert debugEnter(CLASS_NAME, "getObjectClassSet");
    return objectClassSet;
  }
  /**
   * Retrieves the objectclass definition with the specified name or
   * OID.
   *
   * @param  lowerName  The name or OID of the objectclass to
   *                    retrieve, formatted in all lowercase
   *                    characters.
   *
   * @return  The requested objectclass, or <CODE>null</CODE> if no
   *          class is registered with the provided name or OID.
   */
  public final ObjectClass getObjectClass(String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getObjectClass",
                      String.valueOf(lowerName));
    return objectClasses.get(lowerName);
  }
  /**
   * Registers the provided objectclass definition with this schema.
   *
   * @param  objectClass        The objectclass to register with this
   *                            schema.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another objectclass
   *                            with the same OID or name).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>.
   */
  public final void registerObjectClass(ObjectClass objectClass,
                                        boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerObjectClass",
                      String.valueOf(objectClass),
                      String.valueOf(overwriteExisting));
    synchronized (objectClasses)
    {
      if (! overwriteExisting)
      {
        String oid = toLowerCase(objectClass.getOID());
        if (objectClasses.containsKey(oid))
        {
          ObjectClass conflictingClass = objectClasses.get(oid);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_OBJECTCLASS_OID;
          String message =
               getMessage(msgID, objectClass.getNameOrOID(),
                          oid, conflictingClass.getNameOrOID());
          throw new DirectoryException(
                       ResultCode.CONSTRAINT_VIOLATION, message,
                       msgID);
        }
        for (String name : objectClass.getNormalizedNames())
        {
          if (objectClasses.containsKey(name))
          {
            ObjectClass conflictingClass = objectClasses.get(name);
            int msgID = MSGID_SCHEMA_CONFLICTING_OBJECTCLASS_NAME;
            String message =
                 getMessage(msgID, objectClass.getNameOrOID(), name,
                            conflictingClass.getNameOrOID());
            throw new DirectoryException(
                           ResultCode.CONSTRAINT_VIOLATION, message,
                           msgID);
          }
        }
      }
      objectClasses.put(toLowerCase(objectClass.getOID()),
                        objectClass);
      for (String name : objectClass.getNormalizedNames())
      {
        objectClasses.put(name, objectClass);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = objectClass.toString();
      ASN1OctetString rawValue = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      objectClassSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided objectclass definition with this schema.
   *
   * @param  objectClass  The objectclass to deregister with this
   *                      schema.
   */
  public final void deregisterObjectClass(ObjectClass objectClass)
  {
    assert debugEnter(CLASS_NAME, "deregisterObjectClass",
                      String.valueOf(objectClass));
    synchronized (objectClasses)
    {
      objectClasses.remove(toLowerCase(objectClass.getOID()),
                           objectClass);
      for (String name : objectClass.getNormalizedNames())
      {
        objectClasses.remove(name, objectClass);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = objectClass.toString();
      ASN1OctetString rawValue = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      objectClassSet.remove(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Retrieves the attribute syntax definitions for this schema, as a
   * mapping between the OID for the syntax and the syntax itself.
   * Each syntax should only be present once, since its only key is
   * its OID.  The contents of the returned mapping must not be
   * altered.
   *
   * @return  The attribute syntax definitions for this schema.
   */
  public final ConcurrentHashMap<String,AttributeSyntax> getSyntaxes()
  {
    assert debugEnter(CLASS_NAME, "getSyntaxes");
    return syntaxes;
  }
  /**
   * Retrieves the set of defined attribute syntaxes for this schema.
   *
   * @return  The set of defined attribute syntaxes for this schema.
   */
  public final LinkedHashSet<AttributeValue> getSyntaxSet()
  {
    assert debugEnter(CLASS_NAME, "getSyntaxSet");
    return syntaxSet;
  }
  /**
   * Retrieves the attribute syntax definition with the OID.
   *
   * @param  lowerName  The OID of the attribute syntax to retrieve,
   *                    formatted in all lowercase characters.
   *
   * @return  The requested attribute syntax, or <CODE>null</CODE> if
   *          no syntax is registered with the provided OID.
   */
  public final AttributeSyntax getSyntax(String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getSyntax",
                      String.valueOf(lowerName));
    return syntaxes.get(lowerName);
  }
  /**
   * Registers the provided attribute syntax definition with this
   * schema.
   *
   * @param  syntax             The attribute syntax to register with
   *                            this schema.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another attribute
   *                            syntax with the same OID).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerSyntax(AttributeSyntax syntax,
                                   boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerSyntax",
                      String.valueOf(syntax),
                      String.valueOf(overwriteExisting));
    synchronized (syntaxes)
    {
      if (! overwriteExisting)
      {
        String oid = toLowerCase(syntax.getOID());
        if (syntaxes.containsKey(oid))
        {
          AttributeSyntax conflictingSyntax = syntaxes.get(oid);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_SYNTAX_OID;
          String message =
               getMessage(msgID, syntax.getSyntaxName(),
                          oid, conflictingSyntax.getSyntaxName());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
      }
      syntaxes.put(toLowerCase(syntax.getOID()), syntax);
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = syntax.toString();
      ASN1OctetString rawValue = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      syntaxSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided attribute syntax definition with this
   * schema.
   *
   * @param  syntax  The attribute syntax to deregister with this
   *                 schema.
   */
  public final void deregisterSyntax(AttributeSyntax syntax)
  {
    assert debugEnter(CLASS_NAME, "deregisterSyntax",
                      String.valueOf(syntax));
    synchronized (syntaxes)
    {
      syntaxes.remove(toLowerCase(syntax.getOID()), syntax);
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = syntax.toString();
      ASN1OctetString rawValue = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      syntaxSet.remove(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Retrieves the entire set of matching rule definitions for this
   * schema, as a mapping between the lowercase names and OIDs for the
   * matching rule and the matching rule itself.  Each matching rule
   * may be associated with multiple keys (once for the OID and again
   * for each name).  This should be a superset of the sets of
   * approximate, equality, ordering, and substring matching rules.
   * The contents of the returned mapping must not be altered.
   *
   * @return  The matching rule definitions for this schema.
   */
  public final ConcurrentHashMap<String,MatchingRule>
                    getMatchingRules()
  {
    assert debugEnter(CLASS_NAME, "getMatchingRules");
    return matchingRules;
  }
  /**
   * Retrieves the set of defined matching rules for this schema.
   *
   * @return  The set of defined matching rules for this schema.
   */
  public final LinkedHashSet<AttributeValue> getMatchingRuleSet()
  {
    assert debugEnter(CLASS_NAME, "getMatchingRuleSet");
    return matchingRuleSet;
  }
  /**
   * Retrieves the matching rule definition with the specified name or
   * OID.
   *
   * @param  lowerName  The name or OID of the matching rule to
   *                    retrieve, formatted in all lowercase
   *                    characters.
   *
   * @return  The requested matching rule, or <CODE>null</CODE> if no
   *          rule is registered with the provided name or OID.
   */
  public final MatchingRule getMatchingRule(String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getMatchingRule",
                      String.valueOf(lowerName));
    return matchingRules.get(lowerName);
  }
  /**
   * Registers the provided matching rule definition with this schema.
   *
   * @param  matchingRule       The matching rule to register with
   *                            this schema.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e.,
   *                            another matching rule with the same
   *                            OID or name).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerMatchingRule(MatchingRule matchingRule,
                                         boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerMatchingRule",
                      String.valueOf(matchingRule),
                      String.valueOf(overwriteExisting));
    if (matchingRule instanceof ApproximateMatchingRule)
    {
      registerApproximateMatchingRule(
           (ApproximateMatchingRule) matchingRule, overwriteExisting);
    }
    else if (matchingRule instanceof EqualityMatchingRule)
    {
      registerEqualityMatchingRule(
           (EqualityMatchingRule) matchingRule, overwriteExisting);
    }
    else if (matchingRule instanceof OrderingMatchingRule)
    {
      registerOrderingMatchingRule(
           (OrderingMatchingRule) matchingRule, overwriteExisting);
    }
    else if (matchingRule instanceof SubstringMatchingRule)
    {
      registerSubstringMatchingRule(
           (SubstringMatchingRule) matchingRule, overwriteExisting);
    }
    else
    {
      synchronized (matchingRules)
      {
        if (! overwriteExisting)
        {
          String oid = toLowerCase(matchingRule.getOID());
          if (matchingRules.containsKey(oid))
          {
            MatchingRule conflictingRule = matchingRules.get(oid);
            int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_OID;
            String message =
                 getMessage(msgID, matchingRule.getNameOrOID(), oid,
                            conflictingRule.getNameOrOID());
            throw new DirectoryException(
                           ResultCode.CONSTRAINT_VIOLATION, message,
                           msgID);
          }
          String name = matchingRule.getName();
          if (name != null)
          {
            name = toLowerCase(name);
            if (matchingRules.containsKey(name))
            {
              MatchingRule conflictingRule = matchingRules.get(name);
              int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_NAME;
              String message =
                   getMessage(msgID, matchingRule.getOID(), name,
                              conflictingRule.getOID());
              throw new DirectoryException(
                             ResultCode.CONSTRAINT_VIOLATION, message,
                             msgID);
            }
          }
        }
        matchingRules.put(toLowerCase(matchingRule.getOID()),
                          matchingRule);
        String name = matchingRule.getName();
        if (name != null)
        {
          matchingRules.put(toLowerCase(name), matchingRule);
        }
        // We'll use an attribute value including the normalized value
        // rather than the attribute type because otherwise it would
        // use a very expensive matching rule (OID first component
        // match) that would kill performance.
        String valueString = matchingRule.toString();
        ASN1OctetString rawValue  = new ASN1OctetString(valueString);
        ASN1OctetString normValue =
             new ASN1OctetString(toLowerCase(valueString));
        matchingRuleSet.add(new AttributeValue(rawValue, normValue));
      }
    }
  }
  /**
   * Deregisters the provided matching rule definition with this
   * schema.
   *
   * @param  matchingRule  The matching rule to deregister with this
   *                       schema.
   */
  public final void deregisterMatchingRule(MatchingRule matchingRule)
  {
    assert debugEnter(CLASS_NAME, "deregisterMatchingRule",
                      String.valueOf(matchingRule));
    if (matchingRule instanceof ApproximateMatchingRule)
    {
      deregisterApproximateMatchingRule(
           (ApproximateMatchingRule) matchingRule);
    }
    else if (matchingRule instanceof EqualityMatchingRule)
    {
      deregisterEqualityMatchingRule(
           (EqualityMatchingRule) matchingRule);
    }
    else if (matchingRule instanceof OrderingMatchingRule)
    {
      deregisterOrderingMatchingRule(
           (OrderingMatchingRule) matchingRule);
    }
    else if (matchingRule instanceof SubstringMatchingRule)
    {
      deregisterSubstringMatchingRule(
           (SubstringMatchingRule) matchingRule);
    }
    else
    {
      synchronized (matchingRules)
      {
        matchingRules.remove(toLowerCase(matchingRule.getOID()),
                             matchingRule);
        String name = matchingRule.getName();
        if (name != null)
        {
          matchingRules.remove(toLowerCase(name), matchingRule);
        }
        // We'll use an attribute value including the normalized value
        // rather than the attribute type because otherwise it would
        // use a very expensive matching rule (OID first component
        // match) that would kill performance.
        String valueString = matchingRule.toString();
        ASN1OctetString rawValue  = new ASN1OctetString(valueString);
        ASN1OctetString normValue =
             new ASN1OctetString(toLowerCase(valueString));
        matchingRuleSet.remove(new AttributeValue(rawValue,
                                                  normValue));
      }
    }
  }
  /**
   * Retrieves the approximate matching rule definitions for this
   * schema, as a mapping between the lowercase names and OIDs for the
   * matching rule and the matching rule itself.  Each matching rule
   * may be associated with multiple keys (once for the OID and again
   * for each name).  The contents of the returned mapping must not be
   * altered.
   *
   * @return  The approximate matching rule definitions for this
   *          schema.
   */
  public final ConcurrentHashMap<String,ApproximateMatchingRule>
                    getApproximateMatchingRules()
  {
    assert debugEnter(CLASS_NAME, "getApproximateMatchingRules");
    return approximateMatchingRules;
  }
  /**
   * Retrieves the approximate matching rule definition with the
   * specified name or OID.
   *
   * @param  lowerName  The name or OID of the matching rule to
   *                    retrieve, formatted in all lowercase
   *                    characters.
   *
   * @return  The requested matching rule, or <CODE>null</CODE> if no
   *          approximate matching rule is registered with the
   *          provided name or OID.
   */
  public final ApproximateMatchingRule
                    getApproximateMatchingRule(String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getApproximateMatchingRule",
                      String.valueOf(lowerName));
    return approximateMatchingRules.get(lowerName);
  }
  /**
   * Registers the provided approximate matching rule with this
   * schema.
   *
   * @param  matchingRule       The approximate matching rule to
   *                            register.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another matching rule
   *                            with the same OID or name).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerApproximateMatchingRule(
                         ApproximateMatchingRule matchingRule,
                         boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerApproximateMatchingRule",
                      String.valueOf(matchingRule),
                      String.valueOf(overwriteExisting));
    synchronized (matchingRules)
    {
      if (! overwriteExisting)
      {
        String oid = toLowerCase(matchingRule.getOID());
        if (matchingRules.containsKey(oid))
        {
          MatchingRule conflictingRule = matchingRules.get(oid);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_OID;
          String message =
               getMessage(msgID, matchingRule.getNameOrOID(), oid,
                          conflictingRule.getNameOrOID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
        String name = matchingRule.getName();
        if (name != null)
        {
          name = toLowerCase(name);
          if (matchingRules.containsKey(name))
          {
            MatchingRule conflictingRule = matchingRules.get(name);
            int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_NAME;
            String message =
                 getMessage(msgID, matchingRule.getOID(), name,
                            conflictingRule.getOID());
            throw new DirectoryException(
                           ResultCode.CONSTRAINT_VIOLATION, message,
                           msgID);
          }
        }
      }
      String oid = toLowerCase(matchingRule.getOID());
      approximateMatchingRules.put(oid, matchingRule);
      matchingRules.put(oid, matchingRule);
      String name = matchingRule.getName();
      if (name != null)
      {
        name = toLowerCase(name);
        approximateMatchingRules.put(name, matchingRule);
        matchingRules.put(name, matchingRule);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided approximate matching rule definition
   * with this schema.
   *
   * @param  matchingRule  The approximate matching rule to deregister
   *                       with this schema.
   */
  public final void deregisterApproximateMatchingRule(
                         ApproximateMatchingRule matchingRule)
  {
    assert debugEnter(CLASS_NAME, "deregisterApproximateMatchingRule",
                      String.valueOf(matchingRule));
    synchronized (matchingRules)
    {
      String oid = matchingRule.getOID();
      approximateMatchingRules.remove(oid, matchingRule);
      matchingRules.remove(oid, matchingRule);
      String name = matchingRule.getName();
      if (name != null)
      {
        name = toLowerCase(name);
        approximateMatchingRules.remove(name, matchingRule);
        matchingRules.remove(name, matchingRule);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleSet.remove(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Retrieves the equality matching rule definitions for this schema,
   * as a mapping between the lowercase names and OIDs for the
   * matching rule and the matching rule itself.  Each matching rule
   * may be associated with multiple keys (once for the OID and again
   * for each name).  The contents of the returned mapping must not be
   * altered.
   *
   * @return  The equality matching rule definitions for this schema.
   */
  public final ConcurrentHashMap<String,EqualityMatchingRule>
                    getEqualityMatchingRules()
  {
    assert debugEnter(CLASS_NAME, "getEqualityMatchingRules");
    return equalityMatchingRules;
  }
  /**
   * Retrieves the equality matching rule definition with the
   * specified name or OID.
   *
   * @param  lowerName  The name or OID of the matching rule to
   *                    retrieve, formatted in all lowercase
   *                    characters.
   *
   * @return  The requested matching rule, or <CODE>null</CODE> if no
   *          equality matching rule is registered with the provided
   *          name or OID.
   */
  public final EqualityMatchingRule getEqualityMatchingRule(
                                         String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getEqualityMatchingRule",
                      String.valueOf(lowerName));
    return equalityMatchingRules.get(lowerName);
  }
  /**
   * Registers the provided equality matching rule with this schema.
   *
   * @param  matchingRule       The equality matching rule to
   *                            register.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another matching rule
   *                            with the same OID or name).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerEqualityMatchingRule(
                         EqualityMatchingRule matchingRule,
                         boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerEqualityMatchingRule",
                      String.valueOf(matchingRule),
                      String.valueOf(overwriteExisting));
    synchronized (matchingRules)
    {
      if (! overwriteExisting)
      {
        String oid = toLowerCase(matchingRule.getOID());
        if (matchingRules.containsKey(oid))
        {
          MatchingRule conflictingRule = matchingRules.get(oid);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_OID;
          String message =
               getMessage(msgID, matchingRule.getNameOrOID(), oid,
                          conflictingRule.getNameOrOID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
        String name = matchingRule.getName();
        if (name != null)
        {
          name = toLowerCase(name);
          if (matchingRules.containsKey(name))
          {
            MatchingRule conflictingRule = matchingRules.get(name);
            int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_NAME;
            String message =
                 getMessage(msgID, matchingRule.getOID(), name,
                            conflictingRule.getOID());
            throw new DirectoryException(
                           ResultCode.CONSTRAINT_VIOLATION, message,
                           msgID);
          }
        }
      }
      String oid = toLowerCase(matchingRule.getOID());
      equalityMatchingRules.put(oid, matchingRule);
      matchingRules.put(oid, matchingRule);
      String name = matchingRule.getName();
      if (name != null)
      {
        name = toLowerCase(name);
        equalityMatchingRules.put(name, matchingRule);
        matchingRules.put(name, matchingRule);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided equality matching rule definition with
   * this schema.
   *
   * @param  matchingRule  The equality matching rule to deregister
   *                       with this schema.
   */
  public final void deregisterEqualityMatchingRule(
                         EqualityMatchingRule matchingRule)
  {
    assert debugEnter(CLASS_NAME, "deregisterEqualityMatchingRule",
                      String.valueOf(matchingRule));
    synchronized (matchingRules)
    {
      String oid = matchingRule.getOID();
      equalityMatchingRules.remove(oid, matchingRule);
      matchingRules.remove(oid, matchingRule);
      String name = matchingRule.getName();
      if (name != null)
      {
        name = toLowerCase(name);
        equalityMatchingRules.remove(name, matchingRule);
        matchingRules.remove(name, matchingRule);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleSet.remove(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Retrieves the ordering matching rule definitions for this schema,
   * as a mapping between the lowercase names and OIDs for the
   * matching rule and the matching rule itself.  Each matching rule
   * may be associated with multiple keys (once for the OID and again
   * for each name).  The contents of the returned mapping must not be
   * altered.
   *
   * @return  The ordering matching rule definitions for this schema.
   */
  public final ConcurrentHashMap<String,OrderingMatchingRule>
                    getOrderingMatchingRules()
  {
    assert debugEnter(CLASS_NAME, "getOrderingMatchingRules");
    return orderingMatchingRules;
  }
  /**
   * Retrieves the ordering matching rule definition with the
   * specified name or OID.
   *
   * @param  lowerName  The name or OID of the matching rule to
   *                    retrieve, formatted in all lowercase
   *                    characters.
   *
   * @return  The requested matching rule, or <CODE>null</CODE> if no
   *          ordering matching rule is registered with the provided
   *          name or OID.
   */
  public final OrderingMatchingRule getOrderingMatchingRule(
                                         String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getOrderingMatchingRule",
                      String.valueOf(lowerName));
    return orderingMatchingRules.get(lowerName);
  }
  /**
   * Registers the provided ordering matching rule with this schema.
   *
   * @param  matchingRule       The ordering matching rule to
   *                            register.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another matching rule
   *                            with the same OID or name).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerOrderingMatchingRule(
                         OrderingMatchingRule matchingRule,
                         boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerOrderingMatchingRule",
                      String.valueOf(matchingRule),
                      String.valueOf(overwriteExisting));
    synchronized (matchingRules)
    {
      if (! overwriteExisting)
      {
        String oid = toLowerCase(matchingRule.getOID());
        if (matchingRules.containsKey(oid))
        {
          MatchingRule conflictingRule = matchingRules.get(oid);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_OID;
          String message =
               getMessage(msgID, matchingRule.getNameOrOID(), oid,
                          conflictingRule.getNameOrOID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
        String name = matchingRule.getName();
        if (name != null)
        {
          name = toLowerCase(name);
          if (matchingRules.containsKey(name))
          {
            MatchingRule conflictingRule = matchingRules.get(name);
            int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_NAME;
            String message =
                 getMessage(msgID, matchingRule.getOID(), name,
                            conflictingRule.getOID());
            throw new DirectoryException(
                           ResultCode.CONSTRAINT_VIOLATION, message,
                           msgID);
          }
        }
      }
      String oid = toLowerCase(matchingRule.getOID());
      orderingMatchingRules.put(oid, matchingRule);
      matchingRules.put(oid, matchingRule);
      String name = matchingRule.getName();
      if (name != null)
      {
        name = toLowerCase(name);
        orderingMatchingRules.put(name, matchingRule);
        matchingRules.put(name, matchingRule);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided ordering matching rule definition with
   * this schema.
   *
   * @param  matchingRule  The ordering matching rule to deregister
   *                       with this schema.
   */
  public final void deregisterOrderingMatchingRule(
                         OrderingMatchingRule matchingRule)
  {
    assert debugEnter(CLASS_NAME, "deregisterOrderingMatchingRule",
                      String.valueOf(matchingRule));
    synchronized (matchingRules)
    {
      String oid = matchingRule.getOID();
      orderingMatchingRules.remove(oid, matchingRule);
      matchingRules.remove(oid, matchingRule);
      String name = matchingRule.getName();
      if (name != null)
      {
        name = toLowerCase(name);
        orderingMatchingRules.remove(name, matchingRule);
        matchingRules.remove(name, matchingRule);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleSet.remove(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Retrieves the substring matching rule definitions for this
   * schema, as a mapping between the lowercase names and OIDs for the
   * matching rule and the matching rule itself.  Each matching rule
   * may be associated with multiple keys (once for the OID and again
   * for each name).  The contents of the returned mapping must not be
   * altered.
   *
   * @return  The substring matching rule definitions for this schema.
   */
  public final ConcurrentHashMap<String,SubstringMatchingRule>
                    getSubstringMatchingRules()
  {
    assert debugEnter(CLASS_NAME, "getSubstringMatchingRules");
    return substringMatchingRules;
  }
  /**
   * Retrieves the substring matching rule definition with the
   * specified name or OID.
   *
   * @param  lowerName  The name or OID of the matching rule to
   *                    retrieve, formatted in all lowercase
   *                    characters.
   *
   * @return  The requested matching rule, or <CODE>null</CODE> if no
   *          substring matching rule is registered with the provided
   *          name or OID.
   */
  public final SubstringMatchingRule getSubstringMatchingRule(
                                          String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getSubstringMatchingRule",
                      String.valueOf(lowerName));
    return substringMatchingRules.get(lowerName);
  }
  /**
   * Registers the provided substring matching rule with this schema.
   *
   * @param  matchingRule       The substring matching rule to
   *                            register.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another matching rule
   *                            with the same OID or name).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerSubstringMatchingRule(
                         SubstringMatchingRule matchingRule,
                         boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerSubstringMatchingRule",
                      String.valueOf(matchingRule),
                      String.valueOf(overwriteExisting));
    synchronized (matchingRules)
    {
      if (! overwriteExisting)
      {
        String oid = toLowerCase(matchingRule.getOID());
        if (matchingRules.containsKey(oid))
        {
          MatchingRule conflictingRule = matchingRules.get(oid);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_OID;
          String message =
               getMessage(msgID, matchingRule.getNameOrOID(), oid,
                          conflictingRule.getNameOrOID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
        String name = matchingRule.getName();
        if (name != null)
        {
          name = toLowerCase(name);
          if (matchingRules.containsKey(name))
          {
            MatchingRule conflictingRule = matchingRules.get(name);
            int    msgID   = MSGID_SCHEMA_CONFLICTING_MR_NAME;
            String message =
                 getMessage(msgID, matchingRule.getOID(), name,
                            conflictingRule.getOID());
            throw new DirectoryException(
                           ResultCode.CONSTRAINT_VIOLATION, message,
                           msgID);
          }
        }
      }
      String oid = toLowerCase(matchingRule.getOID());
      substringMatchingRules.put(oid, matchingRule);
      matchingRules.put(oid, matchingRule);
      String name = matchingRule.getName();
      if (name != null)
      {
        name = toLowerCase(name);
        substringMatchingRules.put(name, matchingRule);
        matchingRules.put(name, matchingRule);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided substring matching rule definition with
   * this schema.
   *
   * @param  matchingRule  The substring matching rule to deregister
   *                       with this schema.
   */
  public final void deregisterSubstringMatchingRule(
                         SubstringMatchingRule matchingRule)
  {
    assert debugEnter(CLASS_NAME, "deregisterSubstringMatchingRule",
                      String.valueOf(matchingRule));
    synchronized (matchingRules)
    {
      String oid = matchingRule.getOID();
      substringMatchingRules.remove(oid, matchingRule);
      matchingRules.remove(oid, matchingRule);
      String name = matchingRule.getName();
      if (name != null)
      {
        name = toLowerCase(name);
        substringMatchingRules.remove(name, matchingRule);
        matchingRules.remove(name, matchingRule);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleSet.remove(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Retrieves the matching rule use definitions for this schema, as a
   * mapping between the matching rule for the matching rule use
   * definition and the matching rule use itself.  Each matching rule
   * use should only be present once, since its only key is its
   * matching rule.  The contents of the returned mapping must not be
   * altered.
   *
   * @return  The matching rule use definitions for this schema.
   */
  public final ConcurrentHashMap<MatchingRule,MatchingRuleUse>
                    getMatchingRuleUses()
  {
    assert debugEnter(CLASS_NAME, "getMatchingRuleUses");
    return matchingRuleUses;
  }
  /**
   * Retrieves the set of defined matching rule uses for this schema.
   *
   * @return  The set of defined matching rule uses for this schema.
   */
  public final LinkedHashSet<AttributeValue> getMatchingRuleUseSet()
  {
    assert debugEnter(CLASS_NAME, "getMatchingRuleUseSet");
    return matchingRuleUseSet;
  }
  /**
   * Retrieves the matching rule use definition for the specified
   * matching rule.
   *
   * @param  matchingRule  The matching rule for which to retrieve the
   *                       matching rule use definition.
   *
   * @return  The matching rule use definition, or <CODE>null</CODE>
   *          if none exists for the specified matching rule.
   */
  public final MatchingRuleUse getMatchingRuleUse(
                                    MatchingRule matchingRule)
  {
    assert debugEnter(CLASS_NAME, "getMatchingRuleUse",
                      String.valueOf(matchingRule));
    return matchingRuleUses.get(matchingRule);
  }
  /**
   * Registers the provided matching rule use definition with this
   * schema.
   *
   * @param  matchingRuleUse    The matching rule use definition to
   *                            register.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another matching rule
   *                            use with the same matching rule).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerMatchingRuleUse(
                         MatchingRuleUse matchingRuleUse,
                         boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerMatchingRuleUse",
                      String.valueOf(matchingRuleUse),
                      String.valueOf(overwriteExisting));
    synchronized (matchingRuleUses)
    {
      MatchingRule matchingRule = matchingRuleUse.getMatchingRule();
      if (! overwriteExisting)
      {
        if (matchingRuleUses.containsKey(matchingRule))
        {
          MatchingRuleUse conflictingUse =
                               matchingRuleUses.get(matchingRule);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_MATCHING_RULE_USE;
          String message =
               getMessage(msgID, matchingRuleUse.getName(),
                          matchingRule.getNameOrOID(),
                          conflictingUse.getName());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
      }
      matchingRuleUses.put(matchingRule, matchingRuleUse);
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRuleUse.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleUseSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided matching rule use definition with this
   * schema.
   *
   * @param  matchingRuleUse  The matching rule use to deregister with
   *                          this schema.
   */
  public final void deregisterMatchingRuleUse(
                         MatchingRuleUse matchingRuleUse)
  {
    assert debugEnter(CLASS_NAME, "deregisterMatchingRuleUse",
                      String.valueOf(matchingRuleUse));
    synchronized (matchingRuleUses)
    {
      matchingRuleUses.remove(matchingRuleUse.getMatchingRule(),
                              matchingRuleUse);
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = matchingRuleUse.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      matchingRuleUseSet.remove(new AttributeValue(rawValue,
                                                   normValue));
    }
  }
  /**
   * Retrieves the DIT content rule definitions for this schema, as a
   * mapping between the objectclass for the rule and the DIT content
   * rule itself.  Each DIT content rule should only be present once,
   * since its only key is its objectclass.  The contents of the
   * returned mapping must not be altered.
   *
   * @return  The DIT content rule definitions for this schema.
   */
  public final ConcurrentHashMap<ObjectClass,DITContentRule>
                    getDITContentRules()
  {
    assert debugEnter(CLASS_NAME, "getDITContentRules");
    return ditContentRules;
  }
  /**
   * Retrieves the set of defined DIT content rules for this schema.
   *
   * @return  The set of defined DIT content rules for this schema.
   */
  public final LinkedHashSet<AttributeValue> getDITContentRuleSet()
  {
    assert debugEnter(CLASS_NAME, "getDITContentRuleSet");
    return ditContentRuleSet;
  }
  /**
   * Retrieves the DIT content rule definition for the specified
   * objectclass.
   *
   * @param  objectClass  The objectclass for the DIT content rule to
   *                      retrieve.
   *
   * @return  The requested DIT content rule, or <CODE>null</CODE> if
   *          no DIT content rule is registered with the provided
   *          objectclass.
   */
  public final DITContentRule getDITContentRule(
                                   ObjectClass objectClass)
  {
    assert debugEnter(CLASS_NAME, "getDITContentRule",
                      String.valueOf(objectClass));
    return ditContentRules.get(objectClass);
  }
  /**
   * Registers the provided DIT content rule definition with this
   * schema.
   *
   * @param  ditContentRule     The DIT content rule to register.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another DIT content
   *                            rule with the same objectclass).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerDITContentRule(
                          DITContentRule ditContentRule,
                          boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerDITContentRule",
                      String.valueOf(ditContentRule),
                      String.valueOf(overwriteExisting));
    synchronized (ditContentRules)
    {
      ObjectClass objectClass = ditContentRule.getStructuralClass();
      if (! overwriteExisting)
      {
        if (ditContentRules.containsKey(objectClass))
        {
          DITContentRule conflictingRule =
                              ditContentRules.get(objectClass);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_DIT_CONTENT_RULE;
          String message = getMessage(msgID, ditContentRule.getName(),
                                      objectClass.getNameOrOID(),
                                      conflictingRule.getName());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
      }
      ditContentRules.put(objectClass, ditContentRule);
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = ditContentRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      ditContentRuleSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided DIT content rule definition with this
   * schema.
   *
   * @param  ditContentRule  The DIT content rule to deregister with
   *                         this schema.
   */
  public final void deregisterDITContentRule(
                         DITContentRule ditContentRule)
  {
    assert debugEnter(CLASS_NAME, "deregisterDITContentRule",
                      String.valueOf(ditContentRule));
    synchronized (ditContentRules)
    {
      ditContentRules.remove(ditContentRule.getStructuralClass(),
                             ditContentRule);
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = ditContentRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      ditContentRuleSet.remove(new AttributeValue(rawValue,
                                                  normValue));
    }
  }
  /**
   * Retrieves the set of defined DIT structure rules for this schema.
   *
   * @return  The set of defined DIT structure rules for this schema.
   */
  public final LinkedHashSet<AttributeValue> getDITStructureRuleSet()
  {
    assert debugEnter(CLASS_NAME, "getDITStructureRuleSet");
    return ditStructureRuleSet;
  }
  /**
   * Retrieves the DIT structure rule definitions for this schema, as
   * a mapping between the rule ID for the rule and the DIT structure
   * rule itself.  Each DIT structure rule should only be present
   * once, since its only key is its rule ID.  The contents of the
   * returned mapping must not be altered.
   *
   * @return  The DIT structure rule definitions for this schema.
   */
  public final ConcurrentHashMap<Integer,DITStructureRule>
                    getDITStructureRulesByID()
  {
    assert debugEnter(CLASS_NAME, "getDITStructureRulesByID");
    return ditStructureRulesByID;
  }
  /**
   * Retrieves the DIT structure rule definitions for this schema, as
   * a mapping between the name form for the rule and the DIT
   * structure rule itself.  Each DIT structure rule should only be
   * present once, since its only key is its name form.  The contents
   * of the returned mapping must not be altered.
   *
   * @return  The DIT structure rule definitions for this schema.
   */
  public final ConcurrentHashMap<NameForm,DITStructureRule>
                    getDITStructureRulesByNameForm()
  {
    assert debugEnter(CLASS_NAME, "getDITStructureRulesByNameForm");
    return ditStructureRulesByNameForm;
  }
  /**
   * Retrieves the DIT structure rule definition with the provided
   * rule ID.
   *
   * @param  ruleID  The rule ID for the DIT structure rule to
   *                 retrieve.
   *
   * @return  The requested DIT structure rule, or <CODE>null</CODE>
   *          if no DIT structure rule is registered with the provided
   *          rule ID.
   */
  public final DITStructureRule getDITStructureRule(int ruleID)
  {
    assert debugEnter(CLASS_NAME, "getDITStructureRule",
                      String.valueOf(ruleID));
    return ditStructureRulesByID.get(ruleID);
  }
  /**
   * Retrieves the DIT structure rule definition for the provided name
   * form.
   *
   * @param  nameForm  The name form for the DIT structure rule to
   *                   retrieve.
   *
   * @return  The requested DIT structure rule, or <CODE>null</CODE>
   *          if no DIT structure rule is registered with the provided
   *          name form.
   */
  public final DITStructureRule getDITStructureRule(NameForm nameForm)
  {
    assert debugEnter(CLASS_NAME, "getDITStructureRule",
                      String.valueOf(nameForm));
    return ditStructureRulesByNameForm.get(nameForm);
  }
  /**
   * Registers the provided DIT structure rule definition with this
   * schema.
   *
   * @param  ditStructureRule   The DIT structure rule to register.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another DIT structure
   *                            rule with the same name form).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerDITStructureRule(
                         DITStructureRule ditStructureRule,
                         boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "ditStructureRule",
                      String.valueOf(ditStructureRule),
                      String.valueOf(overwriteExisting));
    synchronized (ditStructureRulesByNameForm)
    {
      NameForm nameForm = ditStructureRule.getNameForm();
      int      ruleID   = ditStructureRule.getRuleID();
      if (! overwriteExisting)
      {
        if (ditStructureRulesByNameForm.containsKey(nameForm))
        {
          DITStructureRule conflictingRule =
               ditStructureRulesByNameForm.get(nameForm);
          int msgID =
               MSGID_SCHEMA_CONFLICTING_DIT_STRUCTURE_RULE_NAME_FORM;
          String message =
               getMessage(msgID, ditStructureRule.getNameOrRuleID(),
                          nameForm.getNameOrOID(),
                          conflictingRule.getNameOrRuleID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
        if (ditStructureRulesByID.containsKey(ruleID))
        {
          DITStructureRule conflictingRule =
               ditStructureRulesByID.get(ruleID);
          int msgID = MSGID_SCHEMA_CONFLICTING_DIT_STRUCTURE_RULE_ID;
          String message =
               getMessage(msgID, ditStructureRule.getNameOrRuleID(),
                          ruleID, conflictingRule.getNameOrRuleID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
      }
      ditStructureRulesByNameForm.put(nameForm, ditStructureRule);
      ditStructureRulesByID.put(ruleID, ditStructureRule);
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = ditStructureRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      ditStructureRuleSet.add(new AttributeValue(rawValue,
                                                 normValue));
    }
  }
  /**
   * Deregisters the provided DIT structure rule definition with this
   * schema.
   *
   * @param  ditStructureRule  The DIT structure rule to deregister
   *                           with this schema.
   */
  public final void deregisterDITStructureRule(
                         DITStructureRule ditStructureRule)
  {
    assert debugEnter(CLASS_NAME, "deregisterDITStructureRule",
                      String.valueOf(ditStructureRule));
    synchronized (ditStructureRulesByNameForm)
    {
      ditStructureRulesByNameForm.remove(
           ditStructureRule.getNameForm(), ditStructureRule);
      ditStructureRulesByID.remove(ditStructureRule.getRuleID(),
                                   ditStructureRule);
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = ditStructureRule.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      ditStructureRuleSet.remove(new AttributeValue(rawValue,
                                                    normValue));
    }
  }
  /**
   * Retrieves the set of defined name forms for this schema.
   *
   * @return  The set of defined name forms for this schema.
   */
  public final LinkedHashSet<AttributeValue> getNameFormSet()
  {
    assert debugEnter(CLASS_NAME, "getNameFormSet");
    return nameFormSet;
  }
  /**
   * Retrieves the name form definitions for this schema, as a mapping
   * between the objectclass for the name form and the name form
   * itself.  Each name form should only be present once, since its
   * only key is its objectclass.  The contents of the returned
   * mapping must not be altered.
   *
   * @return  The name form definitions for this schema.
   */
  public final ConcurrentHashMap<ObjectClass,NameForm>
                    getNameFormsByObjectClass()
  {
    assert debugEnter(CLASS_NAME, "getNameForms");
    return nameFormsByOC;
  }
  /**
   * Retrieves the name form definitions for this schema, as a mapping
   * between the names/OID for the name form and the name form itself.
   * Each name form may be present multiple times with different names
   * and its OID.  The contents of the returned mapping must not be
   * altered.
   *
   * @return  The name form definitions for this schema.
   */
  public final ConcurrentHashMap<String,NameForm>
                    getNameFormsByNameOrOID()
  {
    assert debugEnter(CLASS_NAME, "getNameForms");
    return nameFormsByName;
  }
  /**
   * Retrieves the name form definition for the specified objectclass.
   *
   * @param  objectClass  The objectclass for the name form to
   *                      retrieve.
   *
   * @return  The requested name form, or <CODE>null</CODE> if no name
   *          form is registered with the provided objectClass.
   */
  public final NameForm getNameForm(ObjectClass objectClass)
  {
    assert debugEnter(CLASS_NAME, "getNameForm",
                      String.valueOf(objectClass));
    return nameFormsByOC.get(objectClass);
  }
  /**
   * Retrieves the name form definition with the provided name or OID.
   *
   * @param  lowerName  The name or OID of the name form to retrieve,
   *                    formatted in all lowercase characters.
   *
   * @return  The requested name form, or <CODE>null</CODE> if no name
   *          form is registered with the provided name or OID.
   */
  public final NameForm getNameForm(String lowerName)
  {
    assert debugEnter(CLASS_NAME, "getNameForm",
                      String.valueOf(lowerName));
    return nameFormsByName.get(lowerName);
  }
  /**
   * Registers the provided name form definition with this schema.
   *
   * @param  nameForm           The name form definition to register.
   * @param  overwriteExisting  Indicates whether to overwrite an
   *                            existing mapping if there are any
   *                            conflicts (i.e., another name form
   *                            with the same objectclass).
   *
   * @throws  DirectoryException  If a conflict is encountered and the
   *                              <CODE>overwriteExisting</CODE> flag
   *                              is set to <CODE>false</CODE>
   */
  public final void registerNameForm(NameForm nameForm,
                                     boolean overwriteExisting)
         throws DirectoryException
  {
    assert debugEnter(CLASS_NAME, "registerNameForm",
                      String.valueOf(nameForm),
                      String.valueOf(overwriteExisting));
    synchronized (nameFormsByOC)
    {
      ObjectClass objectClass = nameForm.getStructuralClass();
      if (! overwriteExisting)
      {
        if (nameFormsByOC.containsKey(objectClass))
        {
          NameForm conflictingNameForm =
               nameFormsByOC.get(objectClass);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_NAME_FORM_OC;
          String message =
               getMessage(msgID, nameForm.getNameOrOID(),
                          objectClass.getNameOrOID(),
                          conflictingNameForm.getNameOrOID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
        String oid = toLowerCase(nameForm.getOID());
        if (nameFormsByName.containsKey(oid))
        {
          NameForm conflictingNameForm = nameFormsByName.get(oid);
          int    msgID   = MSGID_SCHEMA_CONFLICTING_NAME_FORM_OID;
          String message =
               getMessage(msgID, nameForm.getNameOrOID(), oid,
                          conflictingNameForm.getNameOrOID());
          throw new DirectoryException(
                         ResultCode.CONSTRAINT_VIOLATION, message,
                         msgID);
        }
        for (String name : nameForm.getNames().keySet())
        {
          if (nameFormsByName.containsKey(name))
          {
            NameForm conflictingNameForm = nameFormsByName.get(name);
            int    msgID   = MSGID_SCHEMA_CONFLICTING_NAME_FORM_NAME;
            String message =
                 getMessage(msgID, nameForm.getNameOrOID(), oid,
                            conflictingNameForm.getNameOrOID());
            throw new DirectoryException(
                           ResultCode.CONSTRAINT_VIOLATION, message,
                           msgID);
          }
        }
      }
      nameFormsByOC.put(objectClass, nameForm);
      nameFormsByName.put(toLowerCase(nameForm.getOID()), nameForm);
      for (String name : nameForm.getNames().keySet())
      {
        nameFormsByName.put(name, nameForm);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = nameForm.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      nameFormSet.add(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Deregisters the provided name form definition with this schema.
   *
   * @param  nameForm  The name form definition to deregister.
   */
  public final void deregisterNameForm(NameForm nameForm)
  {
    assert debugEnter(CLASS_NAME, "deregisterNameForm",
                      String.valueOf(nameForm));
    synchronized (nameFormsByOC)
    {
      nameFormsByOC.remove(nameForm.getStructuralClass(), nameForm);
      nameFormsByName.remove(toLowerCase(nameForm.getOID()),
                             nameForm);
      for (String name : nameForm.getNames().keySet())
      {
        nameFormsByName.remove(name, nameForm);
      }
      // We'll use an attribute value including the normalized value
      // rather than the attribute type because otherwise it would use
      // a very expensive matching rule (OID first component match)
      // that would kill performance.
      String valueString = nameForm.toString();
      ASN1OctetString rawValue  = new ASN1OctetString(valueString);
      ASN1OctetString normValue =
           new ASN1OctetString(toLowerCase(valueString));
      nameFormSet.remove(new AttributeValue(rawValue, normValue));
    }
  }
  /**
   * Creates a new <CODE>Schema</CODE> object that is a duplicate of
   * this one.  It elements may be added and removed from the
   * duplicate without impacting this version.
   *
   * @return  A new <CODE>Schema</CODE> object that is a duplicate of
   *          this one.
   */
  public final Schema duplicate()
  {
    assert debugEnter(CLASS_NAME, "duplicate");
    Schema dupSchema = new Schema();
    dupSchema.attributeTypes.putAll(attributeTypes);
    dupSchema.objectClasses.putAll(objectClasses);
    dupSchema.syntaxes.putAll(syntaxes);
    dupSchema.matchingRules.putAll(matchingRules);
    dupSchema.approximateMatchingRules.putAll(
         approximateMatchingRules);
    dupSchema.equalityMatchingRules.putAll(equalityMatchingRules);
    dupSchema.orderingMatchingRules.putAll(orderingMatchingRules);
    dupSchema.substringMatchingRules.putAll(substringMatchingRules);
    dupSchema.matchingRuleUses.putAll(matchingRuleUses);
    dupSchema.ditContentRules.putAll(ditContentRules);
    dupSchema.ditStructureRulesByID.putAll(ditStructureRulesByID);
    dupSchema.ditStructureRulesByNameForm.putAll(
         ditStructureRulesByNameForm);
    dupSchema.nameFormsByOC.putAll(nameFormsByOC);
    dupSchema.nameFormsByName.putAll(nameFormsByName);
    dupSchema.syntaxSet.addAll(syntaxSet);
    dupSchema.attributeTypeSet.addAll(attributeTypeSet);
    dupSchema.ditContentRuleSet.addAll(ditContentRuleSet);
    dupSchema.ditStructureRuleSet.addAll(ditStructureRuleSet);
    dupSchema.matchingRuleSet.addAll(matchingRuleSet);
    dupSchema.matchingRuleUseSet.addAll(matchingRuleUseSet);
    dupSchema.nameFormSet.addAll(nameFormSet);
    dupSchema.objectClassSet.addAll(objectClassSet);
    return dupSchema;
  }
}
opends/src/server/org/opends/server/types/SearchFilter.java
@@ -36,7 +36,6 @@
import java.util.Set;
import org.opends.server.api.MatchingRule;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
opends/src/server/org/opends/server/types/operation/InProgressOperation.java
New file
@@ -0,0 +1,417 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import java.util.Map;
import org.opends.server.api.ClientConnection;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
/**
 * This class defines a set of methods that are available for use by
 * plugins for operations that are currently in the middle of their
 * "core" processing (e.g., for examining search result entries or
 * references before they are sent to the client).  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface InProgressOperation
{
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   */
  public OperationType getOperationType();
  /**
   * Retrieves the client connection with which this operation is
   * associated.
   *
   * @return  The client connection with which this operation is
   *          associated.
   */
  public ClientConnection getClientConnection();
  /**
   * Retrieves the unique identifier that is assigned to the client
   * connection that submitted this operation.
   *
   * @return  The unique identifier that is assigned to the client
   *          connection that submitted this operation.
   */
  public long getConnectionID();
  /**
   * Retrieves the operation ID for this operation.
   *
   * @return  The operation ID for this operation.
   */
  public long getOperationID();
  /**
   * Retrieves the message ID assigned to this operation.
   *
   * @return  The message ID assigned to this operation.
   */
  public int getMessageID();
  /**
   * Retrieves the set of controls included in the request from the
   * client.  The contents of this list must not be altered.
   *
   * @return  The set of controls included in the request from the
   *          client.
   */
  public List<Control> getRequestControls();
  /**
   * Retrieves the set of controls to include in the response to the
   * client.  The contents of this list must not be altered.
   *
   * @return  The set of controls to include in the response to the
   *          client.
   */
  public List<Control> getResponseControls();
  /**
   * Adds the provided control to the set of controls to include in
   * the response to the client.
   *
   * @param  control  The control to add to the set of controls to
   *                  include in the response to the client.
   */
  public void addResponseControl(Control control);
  /**
   * Removes the provided control from the set of controls to include
   * in the response to the client.
   *
   * @param  control  The control to remove from the set of controls
   *                  to include in the response to the client.
   */
  public void removeResponseControl(Control control);
  /**
   * Retrieves the result code for this operation.
   *
   * @return  The result code associated for this operation, or
   *          <CODE>UNDEFINED</CODE> if the operation has not yet
   *          completed.
   */
  public ResultCode getResultCode();
  /**
   * Specifies the result code for this operation.
   *
   * @param  resultCode  The result code for this operation.
   */
  public void setResultCode(ResultCode resultCode);
  /**
   * Retrieves the error message for this operation.  Its contents may
   * be altered by the caller.
   *
   * @return  The error message for this operation.
   */
  public StringBuilder getErrorMessage();
  /**
   * Specifies the error message for this operation.
   *
   * @param  errorMessage  The error message for this operation.
   */
  public void setErrorMessage(StringBuilder errorMessage);
  /**
   * Appends the provided message to the error message buffer.  If the
   * buffer has not yet been created, then this will create it first
   * and then add the provided message.
   *
   * @param  message  The message to append to the error message
   *                  buffer.
   */
  public void appendErrorMessage(String message);
  /**
   * Retrieves the additional log message for this operation, which
   * should be written to the log but not included in the response to
   * the client.  The contents of this buffer may be altered by the
   * caller.
   *
   * @return  The additional log message for this operation.
   */
  public StringBuilder getAdditionalLogMessage();
  /**
   * Specifies the additional log message for this operation, which
   * should be written to the log but not included in the response to
   * the client.
   *
   * @param  additionalLogMessage  The additional log message for this
   *                               operation.
   */
  public void setAdditionalLogMessage(
                   StringBuilder additionalLogMessage);
  /**
   * Appends the provided message to the additional log information
   * for this operation.
   *
   * @param  message  The message that should be appended to the
   *                  additional log information for this operation.
   */
  public void appendAdditionalLogMessage(String message);
  /**
   * Retrieves the matched DN for this operation.
   *
   * @return  The matched DN for this operation, or <CODE>null</CODE>
   *          if the operation has not yet completed or does not have
   *          a matched DN.
   */
  public DN getMatchedDN();
  /**
   * Specifies the matched DN for this operation.
   *
   * @param  matchedDN  The matched DN for this operation.
   */
  public void setMatchedDN(DN matchedDN);
  /**
   * Retrieves the set of referral URLs for this operation.  Its
   * contents must not be altered by the caller.
   *
   * @return  The set of referral URLs for this operation, or
   *          <CODE>null</CODE> if the operation is not yet complete
   *          or does not have a set of referral URLs.
   */
  public List<String> getReferralURLs();
  /**
   * Specifies the set of referral URLs for this operation.
   *
   * @param  referralURLs  The set of referral URLs for this
   *                       operation.
   */
  public void setReferralURLs(List<String> referralURLs);
  /**
   * Sets the response elements for this operation based on the
   * information contained in the provided
   * <CODE>DirectoryException</CODE> object.
   *
   * @param  directoryException  The exception containing the
   *                             information to use for the response
   *                             elements.
   */
  public void setResponseData(DirectoryException directoryException);
  /**
   * Indicates whether this is an internal operation rather than one
   * that was requested by an external client.
   *
   * @return  <CODE>true</CODE> if this is an internal operation, or
   *          <CODE>false</CODE> if it is not.
   */
  public boolean isInternalOperation();
  /**
   * Indicates whether this is a synchronization operation rather than
   * one that was requested by an external client.
   *
   * @return  <CODE>true</CODE> if this is a data synchronization
   *          operation, or <CODE>false</CODE> if it is not.
   */
  public boolean isSynchronizationOperation();
  /**
   * Retrieves the authorization DN for this operation.  In many
   * cases, it will be the same as the DN of the authenticated user
   * for the underlying connection, or the null DN if no
   * authentication has been performed on that connection.  However,
   * it may be some other value if special processing has been
   * requested (e.g., the operation included a proxied authorization
   * control).
   *
   * @return  The authorization DN for this operation.
   */
  public DN getAuthorizationDN();
  /**
   * Retrieves the set of attachments defined for this operation, as a
   * mapping between the attachment name and the associated object.
   *
   * @return  The set of attachments defined for this operation.
   */
  public Map<String,Object> getAttachments();
  /**
   * Retrieves the attachment with the specified name.
   *
   * @param  name  The name for the attachment to retrieve.  It will
   *               be treated in a case-sensitive manner.
   *
   * @return  The requested attachment object, or <CODE>null</CODE> if
   *          it does not exist.
   */
  public Object getAttachment(String name);
  /**
   * Removes the attachment with the specified name.
   *
   * @param  name  The name for the attachment to remove.  It will be
   *               treated in a case-sensitive manner.
   *
   * @return  The attachment that was removed, or <CODE>null</CODE> if
   *          it does not exist.
   */
  public Object removeAttachment(String name);
  /**
   * Sets the value of the specified attachment.  If an attachment
   * already exists with the same name, it will be replaced.
   * Otherwise, a new attachment will be added.
   *
   * @param  name   The name to use for the attachment.
   * @param  value  The value to use for the attachment.
   *
   * @return  The former value held by the attachment with the given
   *          name, or <CODE>null</CODE> if there was previously no
   *          such attachment.
   */
  public Object setAttachment(String name, Object value);
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   */
  public long getProcessingStartTime();
  /**
   * Retrieves the cancel request that has been issued for this
   * operation, if there is one.
   *
   * @return  The cancel request that has been issued for this
   *          operation, or <CODE>null</CODE> if there has not been
   *          any request to cancel.
   */
  public CancelRequest getCancelRequest();
  /**
   * Retrieves a string representation of this operation.
   *
   * @return  A string representation of this operation.
   */
  public String toString();
  /**
   * Appends a string representation of this operation to the provided
   * buffer.
   *
   * @param  buffer  The buffer into which a string representation of
   *                 this operation should be appended.
   */
  public void toString(StringBuilder buffer);
}
opends/src/server/org/opends/server/types/operation/PostOperationAbandonOperation.java
New file
@@ -0,0 +1,49 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for abandon operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationAbandonOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the message ID of the operation that should be
   * abandoned.
   *
   * @return  The message ID of the operation that should be
   *          abandoned.
   */
  public int getIDToAbandon();
}
opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java
New file
@@ -0,0 +1,131 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import java.util.Map;
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for add operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationAddOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the DN of the entry to add in a raw, unparsed form as
   * it was included in the request.  This may or may not actually
   * contain a valid DN, since no validation will have been performed
   * on it.
   *
   * @return  The DN of the entry in a raw, unparsed form.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the set of attributes in their raw, unparsed form as
   * read from the client request.  Some of these attributes may be
   * invalid as no validation will have been performed on them.  The
   * returned list must not be altered by the caller.
   *
   * @return  The set of attributes in their raw, unparsed form as
   *          read from the client request.
   */
  public List<LDAPAttribute> getRawAttributes();
  /**
   * Retrieves the DN of the entry to add.
   *
   * @return  The DN of the entry to add.
   */
  public DN getEntryDN();
  /**
   * Retrieves the set of processed objectclasses for the entry to
   * add.  The contents of the returned map must not be altered by the
   * caller.
   *
   * @return  The set of processed objectclasses for the entry to add.
   */
  public Map<ObjectClass,String> getObjectClasses();
  /**
   * Retrieves the set of processed user attributes for the entry to
   * add.  The contents of the returned map must not be altered by the
   * caller.
   *
   * @return  The set of processed user attributes for the entry to
   *          add.
   */
  public Map<AttributeType,List<Attribute>> getUserAttributes();
  /**
   * Retrieves the set of processed operational attributes for the
   * entry to add.  The contents of the returned map must not be
   * altered by the caller.
   *
   * @return  The set of processed operational attributes for the
   *          entry to add.
   */
  public Map<AttributeType,List<Attribute>>
              getOperationalAttributes();
  /**
   * Retrieves the entry to be added to the server.  The contents of
   * the returned entry must not be altered by the caller.
   *
   * @return  The entry to be added to the server.
   */
  public Entry getEntryToAdd();
}
opends/src/server/org/opends/server/types/operation/PostOperationBindOperation.java
New file
@@ -0,0 +1,197 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AuthenticationType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for bind operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationBindOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the authentication type for this bind operation.
   *
   * @return  The authentication type for this bind operation.
   */
  public AuthenticationType getAuthenticationType();
  /**
   * Retrieves the raw, unprocessed bind DN for this bind operation as
   * contained in the client request.  The value may not actually
   * contain a valid DN, as no validation will have been performed.
   *
   * @return  The raw, unprocessed bind DN for this bind operation as
   *          contained in the client request.
   */
  public ByteString getRawBindDN();
  /**
   * Retrieves the bind DN for this bind operation.
   *
   * @return  The bind DN for this bind operation.
   */
  public DN getBindDN();
  /**
   * Retrieves the simple authentication password for this bind
   * operation.
   *
   * @return  The simple authentication password for this bind
   *          operation.
   */
  public ByteString getSimplePassword();
  /**
   * Retrieves the SASL mechanism for this bind operation.
   *
   * @return  The SASL mechanism for this bind operation, or
   *          <CODE>null</CODE> if the bind does not use SASL
   *          authentication.
   */
  public String getSASLMechanism();
  /**
   * Retrieves the SASL credentials for this bind operation.
   *
   * @return  The SASL credentials for this bind operation, or
   *          <CODE>null</CODE> if there are none or if the bind does
   *          not use SASL authentication.
   */
  public ASN1OctetString getSASLCredentials();
  /**
   * Retrieves the set of server SASL credentials to include in the
   * bind response.
   *
   * @return  The set of server SASL credentials to include in the
   *          bind response, or <CODE>null</CODE> if there are none.
   */
  public ASN1OctetString getServerSASLCredentials();
  /**
   * Specifies the set of server SASL credentials to include in the
   * bind response.
   *
   * @param  serverSASLCredentials  The set of server SASL credentials
   *                                to include in the bind response.
   */
  public void setServerSASLCredentials(ASN1OctetString
                                            serverSASLCredentials);
  /**
   * Retrieves the user entry associated with the SASL authentication
   * attempt.  This should be set by any SASL mechanism in which the
   * processing was able to get far enough to make this determination,
   * regardless of whether the authentication was ultimately
   * successful.
   *
   * @return  The user entry associated with the SASL authentication
   *          attempt, or <CODE>null</CODE> if it was not a SASL
   *          authentication or the SASL processing was not able to
   *          map the request to a user.
   */
  public Entry getSASLAuthUserEntry();
  /**
   * Retrieves a human-readable message providing the reason that the
   * authentication failed, if available.
   *
   * @return  A human-readable message providing the reason that the
   *          authentication failed, or <CODE>null</CODE> if none is
   *          available.
   */
  public String getAuthFailureReason();
  /**
   * Retrieves the unique identifier for the authentication failure
   * reason, if available.
   *
   * @return  The unique identifier for the authentication failure
   *          reason, or zero if none is available.
   */
  public int getAuthFailureID();
  /**
   * Specifies the reason that the authentication failed.
   *
   * @param  id      The unique identifier for the authentication
   *                 failure reason.
   * @param  reason  A human-readable message providing the reason
   *                 that the authentication failed.
   */
  public void setAuthFailureReason(int id, String reason);
  /**
   * Retrieves the user entry DN for this bind operation.  It will
   * only be available if the bind processing has proceeded far enough
   * to identify the user attempting to authenticate.
   *
   * @return  The user entry DN for this bind operation, or
   *          <CODE>null</CODE> if the bind processing has not
   *          progressed far enough to identify the user or if the
   *          user DN could not be determined.
   */
  public DN getUserEntryDN();
}
opends/src/server/org/opends/server/types/operation/PostOperationCompareOperation.java
New file
@@ -0,0 +1,101 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for compare operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationCompareOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to compare.
   *
   * @return  The DN of the entry to compare.
   */
  public DN getEntryDN();
  /**
   * Retrieves the raw attribute type for this compare operation.
   *
   * @return  The raw attribute type for this compare operation.
   */
  public String getRawAttributeType();
  /**
   * Retrieves the attribute type for this compare operation.
   *
   * @return  The attribute type for this compare operation.
   */
  public AttributeType getAttributeType();
  /**
   * Retrieves the assertion value for this compare operation.
   *
   * @return  The assertion value for this compare operation.
   */
  public ByteString getAssertionValue();
  /**
   * Retrieves the entry to target with the compare operation.
   *
   * @return  The entry to target with the compare operation.
   */
  public Entry getEntryToCompare();
}
opends/src/server/org/opends/server/types/operation/PostOperationDeleteOperation.java
New file
@@ -0,0 +1,73 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for delete operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationDeleteOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to delete.
   *
   * @return  The DN of the entry to delete.
   */
  public DN getEntryDN();
  /**
   * Retrieves the entry to be deleted.
   *
   * @return  The entry to be deleted.
   */
  public Entry getEntryToDelete();
}
opends/src/server/org/opends/server/types/operation/PostOperationExtendedOperation.java
New file
@@ -0,0 +1,102 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.protocols.asn1.ASN1OctetString;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for extended operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationExtendedOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the OID for the request associated with this extended
   * operation.
   *
   * @return  The OID for the request associated with this extended
   *          operation.
   */
  public String getRequestOID();
  /**
   * Retrieves the value for the request associated with this extended
   * operation.
   *
   * @return  The value for the request associated with this extended
   *          operation.
   */
  public ASN1OctetString getRequestValue();
  /**
   * Retrieves the OID to include in the response to the client.
   *
   * @return  The OID to include in the response to the client.
   */
  public String getResponseOID();
  /**
   * Specifies the OID to include in the response to the client.
   *
   * @param  responseOID  The OID to include in the response to the
   *                      client.
   */
  public void setResponseOID(String responseOID);
  /**
   * Retrieves the value to include in the response to the client.
   *
   * @return  The value to include in the response to the client.
   */
  public ASN1OctetString getResponseValue();
  /**
   * Specifies the value to include in the response to the client.
   *
   * @param  responseValue  The value to include in the response to
   *                        the client.
   */
  public void setResponseValue(ASN1OctetString responseValue);
}
opends/src/server/org/opends/server/types/operation/PostOperationModifyDNOperation.java
New file
@@ -0,0 +1,184 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
import org.opends.server.types.RDN;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for modify DN operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationModifyDNOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.  The DN that is returned may or may not be a valid DN,
   * since no validation will have been performed upon it.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to rename.  This should not be
   * called by pre-parse plugins because the processed DN will not be
   * available yet.  Instead, they should call the
   * <CODE>getRawEntryDN</CODE> method.
   *
   * @return  The DN of the entry to rename, or <CODE>null</CODE> if
   *          the raw entry DN has not yet been processed.
   */
  public DN getEntryDN();
  /**
   * Retrieves the raw, unprocessed newRDN as included in the request
   * from the client.  This may or may not contain a valid RDN, as no
   * validation will have been performed on it.
   *
   * @return  The raw, unprocessed newRDN as included in the request
   *          from the client.
   */
  public ByteString getRawNewRDN();
  /**
   * Retrieves the new RDN to use for the entry.  This should not be
   * called by pre-parse plugins, because the processed newRDN will
   * not yet be available.  Pre-parse plugins should instead use the
   * <CODE>getRawNewRDN</CODE> method.
   *
   * @return  The new RDN to use for the entry, or <CODE>null</CODE>
   *          if the raw newRDN has not yet been processed.
   */
  public RDN getNewRDN();
  /**
   * Indicates whether the current RDN value should be removed from
   * the entry.
   *
   * @return  <CODE>true</CODE> if the current RDN value should be
   *          removed from the entry, or <CODE>false</CODE> if not.
   */
  public boolean deleteOldRDN();
  /**
   * Retrieves the raw, unprocessed newSuperior from the client
   * request.  This may or may not contain a valid DN, as no
   * validation will have been performed on it.
   *
   * @return  The raw, unprocessed newSuperior from the client
   *          request, or <CODE>null</CODE> if there is none.
   */
  public ByteString getRawNewSuperior();
  /**
   * Retrieves the newSuperior DN for the entry.  This should not be
   * called by pre-parse plugins, because the processed DN will not
   * yet be available at that time.  Instead, they should use the
   * <CODE>getRawNewSuperior</CODE> method.
   *
   * @return  The newSuperior DN for the entry, or <CODE>null</CODE>
   *          if there is no newSuperior DN for this request or if the
   *          raw newSuperior has not yet been processed.
   */
  public DN getNewSuperior();
  /**
   * Retrieves the set of modifications applied to attributes of the
   * target entry in the course of processing this modify DN
   * operation.  This will include attribute-level changes from the
   * modify DN itself (e.g., removing old RDN values if deleteOldRDN
   * is set, or adding new RDN values that don't already exist), but
   * it may also be used by pre-operation plugins to cause additional
   * changes in the entry.  In this case, those plugins may add
   * modifications to this list through the
   * <CODE>addModification</CODE> method (the list returned from this
   * method should not be modified directly) if any changes should be
   * processed in addition to the core modify DN processing.  Backends
   * may read this list to identify which attribute-level changes were
   * applied in order to more easily apply updates to attribute
   * indexes.
   *
   * @return  The set of modifications applied to attributes during
   *          the course of the modify DN processing, or
   *          <CODE>null</CODE> if that information is not yet
   *          available (e.g., during pre-parse plugins).
   */
  public List<Modification> getModifications();
  /**
   * Retrieves the current entry, before it is renamed.  This will not
   * be available to pre-parse plugins or during the conflict
   * resolution portion of the synchronization processing.
   *
   * @return  The current entry, or <CODE>null</CODE> if it is not yet
   *           available.
   */
  public Entry getOriginalEntry();
  /**
   * Retrieves the new entry, as it will appear after it is renamed.
   * This will not be  available to pre-parse plugins or during the
   * conflict resolution portion of the synchronization processing.
   *
   * @return  The updated entry, or <CODE>null</CODE> if it is not yet
   *           available.
   */
  public Entry getUpdatedEntry();
}
opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java
New file
@@ -0,0 +1,143 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import org.opends.server.protocols.ldap.LDAPModification;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for modify operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationModifyOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.  The DN that is returned may or may not be a valid DN,
   * since no validation will have been performed upon it.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to modify.
   *
   * @return  The DN of the entry to modify.
   */
  public DN getEntryDN();
  /**
   * Retrieves the set of raw, unprocessed modifications as included
   * in the client request.  Note that this may contain one or more
   * invalid modifications, as no validation will have been performed
   * on this information.  The list returned must not be altered by
   * the caller.
   *
   * @return  The set of raw, unprocessed modifications as included
   *          in the client request.
   */
  public List<LDAPModification> getRawModifications();
  /**
   * Retrieves the set of modifications for this modify operation.
   Its contents should not be altered.
   *
   * @return  The set of modifications for this modify operation.
   */
  public List<Modification> getModifications();
  /**
   * Retrieves the current entry before any modifications are applied.
   * It should not be modified by the caller.
   *
   * @return  The current entry before any modifications are applied.
   */
  public Entry getCurrentEntry();
  /**
   * Retrieves the modified entry that is to be written to the
   * backend.  It should not be modified by the caller.
   *
   * @return  The modified entry that is to be written to the backend.
   */
  public Entry getModifiedEntry();
  /**
   * Retrieves the set of clear-text current passwords for the user,
   * if available.  This will only be available if the modify
   * operation contains one or more delete elements that target the
   * password attribute and provide the values to delete in the clear.
   * This list should not be altered by the caller.
   *
   * @return  The set of clear-text current password values as
   *          provided in the modify request, or <CODE>null</CODE> if
   *          there were none.
   */
  public List<AttributeValue> getCurrentPasswords();
  /**
   * Retrieves the set of clear-text new passwords for the user, if
   * available.  This will only be available if the modify operation
   * contains one or more add or replace elements that target the
   * password attribute and provide the values in the clear.  This
   * list should not be altered by the caller.
   *
   * @return  The set of clear-text new passwords as provided in the
   *          modify request, or <CODE>null</CODE> if there were none.
   */
  public List<AttributeValue> getNewPasswords();
}
opends/src/server/org/opends/server/types/operation/PostOperationOperation.java
New file
@@ -0,0 +1,402 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import java.util.Map;
import org.opends.server.api.ClientConnection;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for all types of operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationOperation
{
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   */
  public OperationType getOperationType();
  /**
   * Retrieves the client connection with which this operation is
   * associated.
   *
   * @return  The client connection with which this operation is
   *          associated.
   */
  public ClientConnection getClientConnection();
  /**
   * Retrieves the unique identifier that is assigned to the client
   * connection that submitted this operation.
   *
   * @return  The unique identifier that is assigned to the client
   *          connection that submitted this operation.
   */
  public long getConnectionID();
  /**
   * Retrieves the operation ID for this operation.
   *
   * @return  The operation ID for this operation.
   */
  public long getOperationID();
  /**
   * Retrieves the message ID assigned to this operation.
   *
   * @return  The message ID assigned to this operation.
   */
  public int getMessageID();
  /**
   * Retrieves the set of controls included in the request from the
   * client.  The contents of this list must not be altered.
   *
   * @return  The set of controls included in the request from the
   *          client.
   */
  public List<Control> getRequestControls();
  /**
   * Retrieves the set of controls to include in the response to the
   * client.  The contents of this list must not be altered.
   *
   * @return  The set of controls to include in the response to the
   *          client.
   */
  public List<Control> getResponseControls();
  /**
   * Adds the provided control to the set of controls to include in
   * the response to the client.
   *
   * @param  control  The control to add to the set of controls to
   *                  include in the response to the client.
   */
  public void addResponseControl(Control control);
  /**
   * Removes the provided control from the set of controls to include
   * in the response to the client.
   *
   * @param  control  The control to remove from the set of controls
   *                  to include in the response to the client.
   */
  public void removeResponseControl(Control control);
  /**
   * Retrieves the result code for this operation.
   *
   * @return  The result code associated for this operation, or
   *          <CODE>UNDEFINED</CODE> if the operation has not yet
   *          completed.
   */
  public ResultCode getResultCode();
  /**
   * Specifies the result code for this operation.
   *
   * @param  resultCode  The result code for this operation.
   */
  public void setResultCode(ResultCode resultCode);
  /**
   * Retrieves the error message for this operation.  Its contents may
   * be altered by the caller.
   *
   * @return  The error message for this operation.
   */
  public StringBuilder getErrorMessage();
  /**
   * Specifies the error message for this operation.
   *
   * @param  errorMessage  The error message for this operation.
   */
  public void setErrorMessage(StringBuilder errorMessage);
  /**
   * Appends the provided message to the error message buffer.  If the
   * buffer has not yet been created, then this will create it first
   * and then add the provided message.
   *
   * @param  message  The message to append to the error message
   *                  buffer.
   */
  public void appendErrorMessage(String message);
  /**
   * Retrieves the additional log message for this operation, which
   * should be written to the log but not included in the response to
   * the client.  The contents of this buffer may be altered by the
   * caller.
   *
   * @return  The additional log message for this operation.
   */
  public StringBuilder getAdditionalLogMessage();
  /**
   * Specifies the additional log message for this operation, which
   * should be written to the log but not included in the response to
   * the client.
   *
   * @param  additionalLogMessage  The additional log message for this
   *                               operation.
   */
  public void setAdditionalLogMessage(
                   StringBuilder additionalLogMessage);
  /**
   * Appends the provided message to the additional log information
   * for this operation.
   *
   * @param  message  The message that should be appended to the
   *                  additional log information for this operation.
   */
  public void appendAdditionalLogMessage(String message);
  /**
   * Retrieves the matched DN for this operation.
   *
   * @return  The matched DN for this operation, or <CODE>null</CODE>
   *          if the operation has not yet completed or does not have
   *          a matched DN.
   */
  public DN getMatchedDN();
  /**
   * Specifies the matched DN for this operation.
   *
   * @param  matchedDN  The matched DN for this operation.
   */
  public void setMatchedDN(DN matchedDN);
  /**
   * Retrieves the set of referral URLs for this operation.  Its
   * contents must not be altered by the caller.
   *
   * @return  The set of referral URLs for this operation, or
   *          <CODE>null</CODE> if the operation is not yet complete
   *          or does not have a set of referral URLs.
   */
  public List<String> getReferralURLs();
  /**
   * Specifies the set of referral URLs for this operation.
   *
   * @param  referralURLs  The set of referral URLs for this
   *                       operation.
   */
  public void setReferralURLs(List<String> referralURLs);
  /**
   * Sets the response elements for this operation based on the
   * information contained in the provided
   * <CODE>DirectoryException</CODE> object.
   *
   * @param  directoryException  The exception containing the
   *                             information to use for the response
   *                             elements.
   */
  public void setResponseData(DirectoryException directoryException);
  /**
   * Indicates whether this is an internal operation rather than one
   * that was requested by an external client.
   *
   * @return  <CODE>true</CODE> if this is an internal operation, or
   *          <CODE>false</CODE> if it is not.
   */
  public boolean isInternalOperation();
  /**
   * Indicates whether this is a synchronization operation rather than
   * one that was requested by an external client.
   *
   * @return  <CODE>true</CODE> if this is a data synchronization
   *          operation, or <CODE>false</CODE> if it is not.
   */
  public boolean isSynchronizationOperation();
  /**
   * Retrieves the authorization DN for this operation.  In many
   * cases, it will be the same as the DN of the authenticated user
   * for the underlying connection, or the null DN if no
   * authentication has been performed on that connection.  However,
   * it may be some other value if special processing has been
   * requested (e.g., the operation included a proxied authorization
   * control).
   *
   * @return  The authorization DN for this operation.
   */
  public DN getAuthorizationDN();
  /**
   * Retrieves the set of attachments defined for this operation, as a
   * mapping between the attachment name and the associated object.
   *
   * @return  The set of attachments defined for this operation.
   */
  public Map<String,Object> getAttachments();
  /**
   * Retrieves the attachment with the specified name.
   *
   * @param  name  The name for the attachment to retrieve.  It will
   *               be treated in a case-sensitive manner.
   *
   * @return  The requested attachment object, or <CODE>null</CODE> if
   *          it does not exist.
   */
  public Object getAttachment(String name);
  /**
   * Removes the attachment with the specified name.
   *
   * @param  name  The name for the attachment to remove.  It will be
   *               treated in a case-sensitive manner.
   *
   * @return  The attachment that was removed, or <CODE>null</CODE> if
   *          it does not exist.
   */
  public Object removeAttachment(String name);
  /**
   * Sets the value of the specified attachment.  If an attachment
   * already exists with the same name, it will be replaced.
   * Otherwise, a new attachment will be added.
   *
   * @param  name   The name to use for the attachment.
   * @param  value  The value to use for the attachment.
   *
   * @return  The former value held by the attachment with the given
   *          name, or <CODE>null</CODE> if there was previously no
   *          such attachment.
   */
  public Object setAttachment(String name, Object value);
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   */
  public long getProcessingStartTime();
  /**
   * Retrieves a string representation of this operation.
   *
   * @return  A string representation of this operation.
   */
  public String toString();
  /**
   * Appends a string representation of this operation to the provided
   * buffer.
   *
   * @param  buffer  The buffer into which a string representation of
   *                 this operation should be appended.
   */
  public void toString(StringBuilder buffer);
}
opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java
New file
@@ -0,0 +1,173 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.LinkedHashSet;
import org.opends.server.protocols.ldap.LDAPFilter;
import org.opends.server.types.ByteString;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.DN;
import org.opends.server.types.SearchScope;
import org.opends.server.types.SearchFilter;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for search operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationSearchOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the raw, unprocessed base DN as included in the request
   * from the client.  This may or may not contain a valid DN, as no
   * validation will have been performed.
   *
   * @return  The raw, unprocessed base DN as included in the request
   *          from the client.
   */
  public ByteString getRawBaseDN();
  /**
   * Retrieves the base DN for this search operation.
   *
   * @return  The base DN for this search operation.
   */
  public DN getBaseDN();
  /**
   * Retrieves the scope for this search operation.
   *
   * @return  The scope for this search operation.
   */
  public SearchScope getScope();
  /**
   * Retrieves the alias dereferencing policy for this search
   * operation.
   *
   * @return  The alias dereferencing policy for this search
   *          operation.
   */
  public DereferencePolicy getDerefPolicy();
  /**
   * Retrieves the size limit for this search operation.
   *
   * @return  The size limit for this search operation.
   */
  public int getSizeLimit();
  /**
   * Retrieves the time limit for this search operation.
   *
   * @return  The time limit for this search operation.
   */
  public int getTimeLimit();
  /**
   * Retrieves the typesOnly flag for this search operation.
   *
   * @return  The typesOnly flag for this search operation.
   */
  public boolean getTypesOnly();
  /**
   * Retrieves the raw, unprocessed search filter as included in the
   * request from the client.  It may or may not contain a valid
   * filter (e.g., unsupported attribute types or values with an
   * invalid syntax) because no validation will have been performed on
   * it.
   *
   * @return  The raw, unprocessed search filter as included in the
   *          request from the client.
   */
  public LDAPFilter getRawFilter();
  /**
   * Retrieves the filter for this search operation.
   *
   * @return  The filter for this search operation.
   */
  public SearchFilter getFilter();
  /**
   * Retrieves the set of requested attributes for this search
   * operation.  Its contents should not be be altered.
   *
   * @return  The set of requested attributes for this search
   *          operation.
   */
  public LinkedHashSet<String> getAttributes();
  /**
   * Retrieves the number of entries sent to the client for this
   * search operation.
   *
   * @return  The number of entries sent to the client for this search
   *          operation.
   */
  public int getEntriesSent();
  /**
   * Retrieves the number of search references sent to the client for
   * this search operation.
   *
   * @return  The number of search references sent to the client for
   *          this search operation.
   */
  public int getReferencesSent();
}
opends/src/server/org/opends/server/types/operation/PostOperationUnbindOperation.java
New file
@@ -0,0 +1,41 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
/**
 * This class defines a set of methods that are available for use by
 * post-operation plugins for unbind operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostOperationUnbindOperation
       extends PostOperationOperation
{
}
opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java
New file
@@ -0,0 +1,131 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import java.util.Map;
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for add operations.  Note that this interface
 * is intended only to define an API for use by plugins and is not
 * intended to be implemented by any custom classes.
 */
public interface PostResponseAddOperation
       extends PostResponseOperation
{
  /**
   * Retrieves the DN of the entry to add in a raw, unparsed form as
   * it was included in the request.  This may or may not actually
   * contain a valid DN, since no validation will have been performed
   * on it.
   *
   * @return  The DN of the entry in a raw, unparsed form.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the set of attributes in their raw, unparsed form as
   * read from the client request.  Some of these attributes may be
   * invalid as no validation will have been performed on them.  The
   * returned list must not be altered by the caller.
   *
   * @return  The set of attributes in their raw, unparsed form as
   *          read from the client request.
   */
  public List<LDAPAttribute> getRawAttributes();
  /**
   * Retrieves the DN of the entry to add.
   *
   * @return  The DN of the entry to add.
   */
  public DN getEntryDN();
  /**
   * Retrieves the set of processed objectclasses for the entry to
   * add.  The contents of the returned map must not be altered by the
   * caller.
   *
   * @return  The set of processed objectclasses for the entry to add.
   */
  public Map<ObjectClass,String> getObjectClasses();
  /**
   * Retrieves the set of processed user attributes for the entry to
   * add.  The contents of the returned map must not be altered by the
   * caller.
   *
   * @return  The set of processed user attributes for the entry to
   *          add.
   */
  public Map<AttributeType,List<Attribute>> getUserAttributes();
  /**
   * Retrieves the set of processed operational attributes for the
   * entry to add.  The contents of the returned map must not be
   * altered by the caller.
   *
   * @return  The set of processed operational attributes for the
   *          entry to add.
   */
  public Map<AttributeType,List<Attribute>>
              getOperationalAttributes();
  /**
   * Retrieves the entry to be added to the server.  The contents of
   * the returned entry must not be altered by the caller.
   *
   * @return  The entry to be added to the server.
   */
  public Entry getEntryToAdd();
}
opends/src/server/org/opends/server/types/operation/PostResponseBindOperation.java
New file
@@ -0,0 +1,173 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AuthenticationType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for bind operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostResponseBindOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the authentication type for this bind operation.
   *
   * @return  The authentication type for this bind operation.
   */
  public AuthenticationType getAuthenticationType();
  /**
   * Retrieves the raw, unprocessed bind DN for this bind operation as
   * contained in the client request.  The value may not actually
   * contain a valid DN, as no validation will have been performed.
   *
   * @return  The raw, unprocessed bind DN for this bind operation as
   *          contained in the client request.
   */
  public ByteString getRawBindDN();
  /**
   * Retrieves the bind DN for this bind operation.
   *
   * @return  The bind DN for this bind operation.
   */
  public DN getBindDN();
  /**
   * Retrieves the simple authentication password for this bind
   * operation.
   *
   * @return  The simple authentication password for this bind
   *          operation.
   */
  public ByteString getSimplePassword();
  /**
   * Retrieves the SASL mechanism for this bind operation.
   *
   * @return  The SASL mechanism for this bind operation, or
   *          <CODE>null</CODE> if the bind does not use SASL
   *          authentication.
   */
  public String getSASLMechanism();
  /**
   * Retrieves the SASL credentials for this bind operation.
   *
   * @return  The SASL credentials for this bind operation, or
   *          <CODE>null</CODE> if there are none or if the bind does
   *          not use SASL authentication.
   */
  public ASN1OctetString getSASLCredentials();
  /**
   * Retrieves the set of server SASL credentials to include in the
   * bind response.
   *
   * @return  The set of server SASL credentials to include in the
   *          bind response, or <CODE>null</CODE> if there are none.
   */
  public ASN1OctetString getServerSASLCredentials();
  /**
   * Retrieves the user entry associated with the SASL authentication
   * attempt.  This should be set by any SASL mechanism in which the
   * processing was able to get far enough to make this determination,
   * regardless of whether the authentication was ultimately
   * successful.
   *
   * @return  The user entry associated with the SASL authentication
   *          attempt, or <CODE>null</CODE> if it was not a SASL
   *          authentication or the SASL processing was not able to
   *          map the request to a user.
   */
  public Entry getSASLAuthUserEntry();
  /**
   * Retrieves a human-readable message providing the reason that the
   * authentication failed, if available.
   *
   * @return  A human-readable message providing the reason that the
   *          authentication failed, or <CODE>null</CODE> if none is
   *          available.
   */
  public String getAuthFailureReason();
  /**
   * Retrieves the unique identifier for the authentication failure
   * reason, if available.
   *
   * @return  The unique identifier for the authentication failure
   *          reason, or zero if none is available.
   */
  public int getAuthFailureID();
  /**
   * Retrieves the user entry DN for this bind operation.  It will
   * only be available if the bind processing has proceeded far enough
   * to identify the user attempting to authenticate.
   *
   * @return  The user entry DN for this bind operation, or
   *          <CODE>null</CODE> if the bind processing has not
   *          progressed far enough to identify the user or if the
   *          user DN could not be determined.
   */
  public DN getUserEntryDN();
}
opends/src/server/org/opends/server/types/operation/PostResponseCompareOperation.java
New file
@@ -0,0 +1,101 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for compare operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostResponseCompareOperation
       extends PostResponseOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to compare.
   *
   * @return  The DN of the entry to compare.
   */
  public DN getEntryDN();
  /**
   * Retrieves the raw attribute type for this compare operation.
   *
   * @return  The raw attribute type for this compare operation.
   */
  public String getRawAttributeType();
  /**
   * Retrieves the attribute type for this compare operation.
   *
   * @return  The attribute type for this compare operation.
   */
  public AttributeType getAttributeType();
  /**
   * Retrieves the assertion value for this compare operation.
   *
   * @return  The assertion value for this compare operation.
   */
  public ByteString getAssertionValue();
  /**
   * Retrieves the entry to target with the compare operation.
   *
   * @return  The entry to target with the compare operation.
   */
  public Entry getEntryToCompare();
}
opends/src/server/org/opends/server/types/operation/PostResponseDeleteOperation.java
New file
@@ -0,0 +1,73 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for delete operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostResponseDeleteOperation
       extends PostResponseOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to delete.
   *
   * @return  The DN of the entry to delete.
   */
  public DN getEntryDN();
  /**
   * Retrieves the entry to be deleted.
   *
   * @return  The entry to be deleted.
   */
  public Entry getEntryToDelete();
}
opends/src/server/org/opends/server/types/operation/PostResponseExtendedOperation.java
New file
@@ -0,0 +1,82 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.protocols.asn1.ASN1OctetString;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for extended operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostResponseExtendedOperation
       extends PostOperationOperation
{
  /**
   * Retrieves the OID for the request associated with this extended
   * operation.
   *
   * @return  The OID for the request associated with this extended
   *          operation.
   */
  public String getRequestOID();
  /**
   * Retrieves the value for the request associated with this extended
   * operation.
   *
   * @return  The value for the request associated with this extended
   *          operation.
   */
  public ASN1OctetString getRequestValue();
  /**
   * Retrieves the OID to include in the response to the client.
   *
   * @return  The OID to include in the response to the client.
   */
  public String getResponseOID();
  /**
   * Retrieves the value to include in the response to the client.
   *
   * @return  The value to include in the response to the client.
   */
  public ASN1OctetString getResponseValue();
}
opends/src/server/org/opends/server/types/operation/PostResponseModifyDNOperation.java
New file
@@ -0,0 +1,184 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
import org.opends.server.types.RDN;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for modify DN operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostResponseModifyDNOperation
       extends PostResponseOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.  The DN that is returned may or may not be a valid DN,
   * since no validation will have been performed upon it.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to rename.  This should not be
   * called by pre-parse plugins because the processed DN will not be
   * available yet.  Instead, they should call the
   * <CODE>getRawEntryDN</CODE> method.
   *
   * @return  The DN of the entry to rename, or <CODE>null</CODE> if
   *          the raw entry DN has not yet been processed.
   */
  public DN getEntryDN();
  /**
   * Retrieves the raw, unprocessed newRDN as included in the request
   * from the client.  This may or may not contain a valid RDN, as no
   * validation will have been performed on it.
   *
   * @return  The raw, unprocessed newRDN as included in the request
   *          from the client.
   */
  public ByteString getRawNewRDN();
  /**
   * Retrieves the new RDN to use for the entry.  This should not be
   * called by pre-parse plugins, because the processed newRDN will
   * not yet be available.  Pre-parse plugins should instead use the
   * <CODE>getRawNewRDN</CODE> method.
   *
   * @return  The new RDN to use for the entry, or <CODE>null</CODE>
   *          if the raw newRDN has not yet been processed.
   */
  public RDN getNewRDN();
  /**
   * Indicates whether the current RDN value should be removed from
   * the entry.
   *
   * @return  <CODE>true</CODE> if the current RDN value should be
   *          removed from the entry, or <CODE>false</CODE> if not.
   */
  public boolean deleteOldRDN();
  /**
   * Retrieves the raw, unprocessed newSuperior from the client
   * request.  This may or may not contain a valid DN, as no
   * validation will have been performed on it.
   *
   * @return  The raw, unprocessed newSuperior from the client
   *          request, or <CODE>null</CODE> if there is none.
   */
  public ByteString getRawNewSuperior();
  /**
   * Retrieves the newSuperior DN for the entry.  This should not be
   * called by pre-parse plugins, because the processed DN will not
   * yet be available at that time.  Instead, they should use the
   * <CODE>getRawNewSuperior</CODE> method.
   *
   * @return  The newSuperior DN for the entry, or <CODE>null</CODE>
   *          if there is no newSuperior DN for this request or if the
   *          raw newSuperior has not yet been processed.
   */
  public DN getNewSuperior();
  /**
   * Retrieves the set of modifications applied to attributes of the
   * target entry in the course of processing this modify DN
   * operation.  This will include attribute-level changes from the
   * modify DN itself (e.g., removing old RDN values if deleteOldRDN
   * is set, or adding new RDN values that don't already exist), but
   * it may also be used by pre-operation plugins to cause additional
   * changes in the entry.  In this case, those plugins may add
   * modifications to this list through the
   * <CODE>addModification</CODE> method (the list returned from this
   * method should not be modified directly) if any changes should be
   * processed in addition to the core modify DN processing.  Backends
   * may read this list to identify which attribute-level changes were
   * applied in order to more easily apply updates to attribute
   * indexes.
   *
   * @return  The set of modifications applied to attributes during
   *          the course of the modify DN processing, or
   *          <CODE>null</CODE> if that information is not yet
   *          available (e.g., during pre-parse plugins).
   */
  public List<Modification> getModifications();
  /**
   * Retrieves the current entry, before it is renamed.  This will not
   * be available to pre-parse plugins or during the conflict
   * resolution portion of the synchronization processing.
   *
   * @return  The current entry, or <CODE>null</CODE> if it is not yet
   *           available.
   */
  public Entry getOriginalEntry();
  /**
   * Retrieves the new entry, as it will appear after it is renamed.
   * This will not be  available to pre-parse plugins or during the
   * conflict resolution portion of the synchronization processing.
   *
   * @return  The updated entry, or <CODE>null</CODE> if it is not yet
   *           available.
   */
  public Entry getUpdatedEntry();
}
opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java
New file
@@ -0,0 +1,143 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import org.opends.server.protocols.ldap.LDAPModification;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for modify operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostResponseModifyOperation
       extends PostResponseOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.  The DN that is returned may or may not be a valid DN,
   * since no validation will have been performed upon it.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to modify.
   *
   * @return  The DN of the entry to modify.
   */
  public DN getEntryDN();
  /**
   * Retrieves the set of raw, unprocessed modifications as included
   * in the client request.  Note that this may contain one or more
   * invalid modifications, as no validation will have been performed
   * on this information.  The list returned must not be altered by
   * the caller.
   *
   * @return  The set of raw, unprocessed modifications as included
   *          in the client request.
   */
  public List<LDAPModification> getRawModifications();
  /**
   * Retrieves the set of modifications for this modify operation.
   Its contents should not be altered.
   *
   * @return  The set of modifications for this modify operation.
   */
  public List<Modification> getModifications();
  /**
   * Retrieves the current entry before any modifications are applied.
   * It should not be modified by the caller.
   *
   * @return  The current entry before any modifications are applied.
   */
  public Entry getCurrentEntry();
  /**
   * Retrieves the modified entry that is to be written to the
   * backend.  It should not be modified by the caller.
   *
   * @return  The modified entry that is to be written to the backend.
   */
  public Entry getModifiedEntry();
  /**
   * Retrieves the set of clear-text current passwords for the user,
   * if available.  This will only be available if the modify
   * operation contains one or more delete elements that target the
   * password attribute and provide the values to delete in the clear.
   * This list should not be altered by the caller.
   *
   * @return  The set of clear-text current password values as
   *          provided in the modify request, or <CODE>null</CODE> if
   *          there were none.
   */
  public List<AttributeValue> getCurrentPasswords();
  /**
   * Retrieves the set of clear-text new passwords for the user, if
   * available.  This will only be available if the modify operation
   * contains one or more add or replace elements that target the
   * password attribute and provide the values in the clear.  This
   * list should not be altered by the caller.
   *
   * @return  The set of clear-text new passwords as provided in the
   *          modify request, or <CODE>null</CODE> if there were none.
   */
  public List<AttributeValue> getNewPasswords();
}
opends/src/server/org/opends/server/types/operation/PostResponseOperation.java
New file
@@ -0,0 +1,315 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import java.util.Map;
import org.opends.server.api.ClientConnection;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for all types of operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostResponseOperation
{
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   */
  public OperationType getOperationType();
  /**
   * Retrieves the client connection with which this operation is
   * associated.
   *
   * @return  The client connection with which this operation is
   *          associated.
   */
  public ClientConnection getClientConnection();
  /**
   * Retrieves the unique identifier that is assigned to the client
   * connection that submitted this operation.
   *
   * @return  The unique identifier that is assigned to the client
   *          connection that submitted this operation.
   */
  public long getConnectionID();
  /**
   * Retrieves the operation ID for this operation.
   *
   * @return  The operation ID for this operation.
   */
  public long getOperationID();
  /**
   * Retrieves the message ID assigned to this operation.
   *
   * @return  The message ID assigned to this operation.
   */
  public int getMessageID();
  /**
   * Retrieves the set of controls included in the request from the
   * client.  The contents of this list must not be altered.
   *
   * @return  The set of controls included in the request from the
   *          client.
   */
  public List<Control> getRequestControls();
  /**
   * Retrieves the set of controls to include in the response to the
   * client.  The contents of this list must not be altered.
   *
   * @return  The set of controls to include in the response to the
   *          client.
   */
  public List<Control> getResponseControls();
  /**
   * Retrieves the result code for this operation.
   *
   * @return  The result code associated for this operation, or
   *          <CODE>UNDEFINED</CODE> if the operation has not yet
   *          completed.
   */
  public ResultCode getResultCode();
  /**
   * Retrieves the error message for this operation.  Its contents may
   * be altered by the caller.
   *
   * @return  The error message for this operation.
   */
  public StringBuilder getErrorMessage();
  /**
   * Retrieves the additional log message for this operation, which
   * should be written to the log but not included in the response to
   * the client.  The contents of this buffer may be altered by the
   * caller.
   *
   * @return  The additional log message for this operation.
   */
  public StringBuilder getAdditionalLogMessage();
  /**
   * Retrieves the matched DN for this operation.
   *
   * @return  The matched DN for this operation, or <CODE>null</CODE>
   *          if the operation has not yet completed or does not have
   *          a matched DN.
   */
  public DN getMatchedDN();
  /**
   * Retrieves the set of referral URLs for this operation.  Its
   * contents must not be altered by the caller.
   *
   * @return  The set of referral URLs for this operation, or
   *          <CODE>null</CODE> if the operation is not yet complete
   *          or does not have a set of referral URLs.
   */
  public List<String> getReferralURLs();
  /**
   * Indicates whether this is an internal operation rather than one
   * that was requested by an external client.
   *
   * @return  <CODE>true</CODE> if this is an internal operation, or
   *          <CODE>false</CODE> if it is not.
   */
  public boolean isInternalOperation();
  /**
   * Indicates whether this is a synchronization operation rather than
   * one that was requested by an external client.
   *
   * @return  <CODE>true</CODE> if this is a data synchronization
   *          operation, or <CODE>false</CODE> if it is not.
   */
  public boolean isSynchronizationOperation();
  /**
   * Retrieves the authorization DN for this operation.  In many
   * cases, it will be the same as the DN of the authenticated user
   * for the underlying connection, or the null DN if no
   * authentication has been performed on that connection.  However,
   * it may be some other value if special processing has been
   * requested (e.g., the operation included a proxied authorization
   * control).
   *
   * @return  The authorization DN for this operation.
   */
  public DN getAuthorizationDN();
  /**
   * Retrieves the set of attachments defined for this operation, as a
   * mapping between the attachment name and the associated object.
   *
   * @return  The set of attachments defined for this operation.
   */
  public Map<String,Object> getAttachments();
  /**
   * Retrieves the attachment with the specified name.
   *
   * @param  name  The name for the attachment to retrieve.  It will
   *               be treated in a case-sensitive manner.
   *
   * @return  The requested attachment object, or <CODE>null</CODE> if
   *          it does not exist.
   */
  public Object getAttachment(String name);
  /**
   * Removes the attachment with the specified name.
   *
   * @param  name  The name for the attachment to remove.  It will be
   *               treated in a case-sensitive manner.
   *
   * @return  The attachment that was removed, or <CODE>null</CODE> if
   *          it does not exist.
   */
  public Object removeAttachment(String name);
  /**
   * Sets the value of the specified attachment.  If an attachment
   * already exists with the same name, it will be replaced.
   * Otherwise, a new attachment will be added.
   *
   * @param  name   The name to use for the attachment.
   * @param  value  The value to use for the attachment.
   *
   * @return  The former value held by the attachment with the given
   *          name, or <CODE>null</CODE> if there was previously no
   *          such attachment.
   */
  public Object setAttachment(String name, Object value);
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   */
  public long getProcessingStartTime();
  /**
   * Retrieves the time that processing stopped for this operation.
   * This will actually hold a time immediately before the response
   * was sent to the client.
   *
   * @return  The time that processing stopped for this operation.
   */
  public long getProcessingStopTime();
  /**
   * Retrieves the length of time in milliseconds that the server
   * spent processing this operation.
   *
   * @return  The length of time in milliseconds that the server spent
   *          processing this operation.
   */
  public long getProcessingTime();
  /**
   * Retrieves a string representation of this operation.
   *
   * @return  A string representation of this operation.
   */
  public String toString();
  /**
   * Appends a string representation of this operation to the provided
   * buffer.
   *
   * @param  buffer  The buffer into which a string representation of
   *                 this operation should be appended.
   */
  public void toString(StringBuilder buffer);
}
opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java
New file
@@ -0,0 +1,173 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.LinkedHashSet;
import org.opends.server.protocols.ldap.LDAPFilter;
import org.opends.server.types.ByteString;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.DN;
import org.opends.server.types.SearchScope;
import org.opends.server.types.SearchFilter;
/**
 * This class defines a set of methods that are available for use by
 * post-response plugins for search operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PostResponseSearchOperation
       extends PostResponseOperation
{
  /**
   * Retrieves the raw, unprocessed base DN as included in the request
   * from the client.  This may or may not contain a valid DN, as no
   * validation will have been performed.
   *
   * @return  The raw, unprocessed base DN as included in the request
   *          from the client.
   */
  public ByteString getRawBaseDN();
  /**
   * Retrieves the base DN for this search operation.
   *
   * @return  The base DN for this search operation.
   */
  public DN getBaseDN();
  /**
   * Retrieves the scope for this search operation.
   *
   * @return  The scope for this search operation.
   */
  public SearchScope getScope();
  /**
   * Retrieves the alias dereferencing policy for this search
   * operation.
   *
   * @return  The alias dereferencing policy for this search
   *          operation.
   */
  public DereferencePolicy getDerefPolicy();
  /**
   * Retrieves the size limit for this search operation.
   *
   * @return  The size limit for this search operation.
   */
  public int getSizeLimit();
  /**
   * Retrieves the time limit for this search operation.
   *
   * @return  The time limit for this search operation.
   */
  public int getTimeLimit();
  /**
   * Retrieves the typesOnly flag for this search operation.
   *
   * @return  The typesOnly flag for this search operation.
   */
  public boolean getTypesOnly();
  /**
   * Retrieves the raw, unprocessed search filter as included in the
   * request from the client.  It may or may not contain a valid
   * filter (e.g., unsupported attribute types or values with an
   * invalid syntax) because no validation will have been performed on
   * it.
   *
   * @return  The raw, unprocessed search filter as included in the
   *          request from the client.
   */
  public LDAPFilter getRawFilter();
  /**
   * Retrieves the filter for this search operation.
   *
   * @return  The filter for this search operation.
   */
  public SearchFilter getFilter();
  /**
   * Retrieves the set of requested attributes for this search
   * operation.  Its contents should not be be altered.
   *
   * @return  The set of requested attributes for this search
   *          operation.
   */
  public LinkedHashSet<String> getAttributes();
  /**
   * Retrieves the number of entries sent to the client for this
   * search operation.
   *
   * @return  The number of entries sent to the client for this search
   *          operation.
   */
  public int getEntriesSent();
  /**
   * Retrieves the number of search references sent to the client for
   * this search operation.
   *
   * @return  The number of search references sent to the client for
   *          this search operation.
   */
  public int getReferencesSent();
}
opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java
New file
@@ -0,0 +1,189 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import java.util.Map;
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for add operations.  Note that this interface
 * is intended only to define an API for use by plugins and is not
 * intended to be implemented by any custom classes.
 */
public interface PreOperationAddOperation
       extends PreOperationOperation
{
  /**
   * Retrieves the DN of the entry to add in a raw, unparsed form as
   * it was included in the request.  This may or may not actually
   * contain a valid DN, since no validation will have been performed
   * on it.
   *
   * @return  The DN of the entry in a raw, unparsed form.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the set of attributes in their raw, unparsed form as
   * read from the client request.  Some of these attributes may be
   * invalid as no validation will have been performed on them.  The
   * returned list must not be altered by the caller.
   *
   * @return  The set of attributes in their raw, unparsed form as
   *          read from the client request.
   */
  public List<LDAPAttribute> getRawAttributes();
  /**
   * Retrieves the DN of the entry to add.
   *
   * @return  The DN of the entry to add.
   */
  public DN getEntryDN();
  /**
   * Retrieves the set of processed objectclasses for the entry to
   * add.  The contents of the returned map must not be altered by the
   * caller.
   *
   * @return  The set of processed objectclasses for the entry to add.
   */
  public Map<ObjectClass,String> getObjectClasses();
  /**
   * Adds the provided objectclass to the entry to add.  Note that
   * pre-operation plugin processing is invoked after access control
   * and schema validation, so plugins should be careful to only make
   * changes that will not violate either schema or access control
   * rules.
   *
   * @param  objectClass  The objectclass to add to the entry.
   * @param  name         The name to use for the objectclass.
   */
  public void addObjectClass(ObjectClass objectClass, String name);
  /**
   * Removes the provided objectclass from the entry to add.  Note
   * that pre-operation plugin processing is invoked after access
   * control and schema validation, so plugins should be careful to
   * only make changes that will not violate either schema or access
   * control rules.
   *
   * @param  objectClass  The objectclass to remove from the entry.
   */
  public void removeObjectClass(ObjectClass objectClass);
  /**
   * Retrieves the set of processed user attributes for the entry to
   * add.  The contents of the returned map must not be altered by the
   * caller.
   *
   * @return  The set of processed user attributes for the entry to
   *          add.
   */
  public Map<AttributeType,List<Attribute>> getUserAttributes();
  /**
   * Retrieves the set of processed operational attributes for the
   * entry to add.  The contents of the returned map must not be
   * altered by the caller.
   *
   * @return  The set of processed operational attributes for the
   *          entry to add.
   */
  public Map<AttributeType,List<Attribute>>
              getOperationalAttributes();
  /**
   * Sets the specified attribute in the entry to add, overwriting any
   * existing attribute of the specified type if necessary.  Note that
   * pre-operation plugin processing is invoked after access control
   * and schema validation, so plugins should be careful to only make
   * changes that will not violate either schema or access control
   * rules.
   *
   * @param  attributeType  The attribute type for the attribute.
   * @param  attributeList  The attribute list for the provided
   *                        attribute type.
   */
  public void setAttribute(AttributeType attributeType,
                           List<Attribute> attributeList);
  /**
   * Removes the specified attribute from the entry to add.  Note that
   * pre-operation processing is invoked after access control and
   * schema validation, so plugins should be careful to only make
   * changes that will not violate either schema or access control
   * rules.
   *
   * @param  attributeType  The attribute tyep for the attribute to
   *                        remove.
   */
  public void removeAttribute(AttributeType attributeType);
  /**
   * Retrieves the entry to be added to the server.  The contents of
   * the returned entry must not be altered by the caller.
   *
   * @return  The entry to be added to the server.
   */
  public Entry getEntryToAdd();
}
opends/src/server/org/opends/server/types/operation/PreOperationBindOperation.java
New file
@@ -0,0 +1,146 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AuthenticationType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for bind operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PreOperationBindOperation
       extends PreOperationOperation
{
  /**
   * Retrieves the authentication type for this bind operation.
   *
   * @return  The authentication type for this bind operation.
   */
  public AuthenticationType getAuthenticationType();
  /**
   * Retrieves the raw, unprocessed bind DN for this bind operation as
   * contained in the client request.  The value may not actually
   * contain a valid DN, as no validation will have been performed.
   *
   * @return  The raw, unprocessed bind DN for this bind operation as
   *          contained in the client request.
   */
  public ByteString getRawBindDN();
  /**
   * Retrieves the bind DN for this bind operation.
   *
   * @return  The bind DN for this bind operation.
   */
  public DN getBindDN();
  /**
   * Retrieves the simple authentication password for this bind
   * operation.
   *
   * @return  The simple authentication password for this bind
   *          operation.
   */
  public ByteString getSimplePassword();
  /**
   * Retrieves the SASL mechanism for this bind operation.
   *
   * @return  The SASL mechanism for this bind operation, or
   *          <CODE>null</CODE> if the bind does not use SASL
   *          authentication.
   */
  public String getSASLMechanism();
  /**
   * Retrieves the SASL credentials for this bind operation.
   *
   * @return  The SASL credentials for this bind operation, or
   *          <CODE>null</CODE> if there are none or if the bind does
   *          not use SASL authentication.
   */
  public ASN1OctetString getSASLCredentials();
  /**
   * Specifies the set of server SASL credentials to include in the
   * bind response.
   *
   * @param  serverSASLCredentials  The set of server SASL credentials
   *                                to include in the bind response.
   */
  public void setServerSASLCredentials(ASN1OctetString
                                            serverSASLCredentials);
  /**
   * Specifies the reason that the authentication failed.
   *
   * @param  id      The unique identifier for the authentication
   *                 failure reason.
   * @param  reason  A human-readable message providing the reason
   *                 that the authentication failed.
   */
  public void setAuthFailureReason(int id, String reason);
  /**
   * Retrieves the user entry DN for this bind operation.  It will
   * only be available for simple bind operations (and may be
   * different than the bind DN from the client request).
   *
   * @return  The user entry DN for this bind operation, or
   *          <CODE>null</CODE> if the bind processing has not
   *          progressed far enough to identify the user or if the
   *          user DN could not be determined.
   */
  public DN getUserEntryDN();
}
opends/src/server/org/opends/server/types/operation/PreOperationCompareOperation.java
New file
@@ -0,0 +1,111 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for compare operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PreOperationCompareOperation
       extends PreOperationOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to compare.
   *
   * @return  The DN of the entry to compare.
   */
  public DN getEntryDN();
  /**
   * Retrieves the raw attribute type for this compare operation.
   *
   * @return  The raw attribute type for this compare operation.
   */
  public String getRawAttributeType();
  /**
   * Retrieves the attribute type for this compare operation.
   *
   * @return  The attribute type for this compare operation.
   */
  public AttributeType getAttributeType();
  /**
   * Retrieves the assertion value for this compare operation.
   *
   * @return  The assertion value for this compare operation.
   */
  public ByteString getAssertionValue();
  /**
   * Specifies the assertion value for this compare operation.
   *
   * @param  assertionValue  The assertion value for this compare
   *                         operation.
   */
  public void setAssertionValue(ByteString assertionValue);
  /**
   * Retrieves the entry to target with the compare operation.
   *
   * @return  The entry to target with the compare operation.
   */
  public Entry getEntryToCompare();
}
opends/src/server/org/opends/server/types/operation/PreOperationDeleteOperation.java
New file
@@ -0,0 +1,73 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for delete operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PreOperationDeleteOperation
       extends PreOperationOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to delete.
   *
   * @return  The DN of the entry to delete.
   */
  public DN getEntryDN();
  /**
   * Retrieves the entry to be deleted.
   *
   * @return  The entry to be deleted.
   */
  public Entry getEntryToDelete();
}
opends/src/server/org/opends/server/types/operation/PreOperationExtendedOperation.java
New file
@@ -0,0 +1,84 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import org.opends.server.protocols.asn1.ASN1OctetString;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for extended operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PreOperationExtendedOperation
       extends PreOperationOperation
{
  /**
   * Retrieves the OID for the request associated with this extended
   * operation.
   *
   * @return  The OID for the request associated with this extended
   *          operation.
   */
  public String getRequestOID();
  /**
   * Retrieves the value for the request associated with this extended
   * operation.
   *
   * @return  The value for the request associated with this extended
   *          operation.
   */
  public ASN1OctetString getRequestValue();
  /**
   * Specifies the OID to include in the response to the client.
   *
   * @param  responseOID  The OID to include in the response to the
   *                      client.
   */
  public void setResponseOID(String responseOID);
  /**
   * Specifies the value to include in the response to the client.
   *
   * @param  responseValue  The value to include in the response to
   *                        the client.
   */
  public void setResponseValue(ASN1OctetString responseValue);
}
opends/src/server/org/opends/server/types/operation/PreOperationModifyDNOperation.java
New file
@@ -0,0 +1,196 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
import org.opends.server.types.RDN;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for modify DN operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PreOperationModifyDNOperation
       extends PreOperationOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.  The DN that is returned may or may not be a valid DN,
   * since no validation will have been performed upon it.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to rename.  This should not be
   * called by pre-parse plugins because the processed DN will not be
   * available yet.  Instead, they should call the
   * <CODE>getRawEntryDN</CODE> method.
   *
   * @return  The DN of the entry to rename, or <CODE>null</CODE> if
   *          the raw entry DN has not yet been processed.
   */
  public DN getEntryDN();
  /**
   * Retrieves the raw, unprocessed newRDN as included in the request
   * from the client.  This may or may not contain a valid RDN, as no
   * validation will have been performed on it.
   *
   * @return  The raw, unprocessed newRDN as included in the request
   *          from the client.
   */
  public ByteString getRawNewRDN();
  /**
   * Retrieves the new RDN to use for the entry.  This should not be
   * called by pre-parse plugins, because the processed newRDN will
   * not yet be available.  Pre-parse plugins should instead use the
   * <CODE>getRawNewRDN</CODE> method.
   *
   * @return  The new RDN to use for the entry, or <CODE>null</CODE>
   *          if the raw newRDN has not yet been processed.
   */
  public RDN getNewRDN();
  /**
   * Indicates whether the current RDN value should be removed from
   * the entry.
   *
   * @return  <CODE>true</CODE> if the current RDN value should be
   *          removed from the entry, or <CODE>false</CODE> if not.
   */
  public boolean deleteOldRDN();
  /**
   * Retrieves the raw, unprocessed newSuperior from the client
   * request.  This may or may not contain a valid DN, as no
   * validation will have been performed on it.
   *
   * @return  The raw, unprocessed newSuperior from the client
   *          request, or <CODE>null</CODE> if there is none.
   */
  public ByteString getRawNewSuperior();
  /**
   * Retrieves the newSuperior DN for the entry.  This should not be
   * called by pre-parse plugins, because the processed DN will not
   * yet be available at that time.  Instead, they should use the
   * <CODE>getRawNewSuperior</CODE> method.
   *
   * @return  The newSuperior DN for the entry, or <CODE>null</CODE>
   *          if there is no newSuperior DN for this request or if the
   *          raw newSuperior has not yet been processed.
   */
  public DN getNewSuperior();
  /**
   * Retrieves the set of modifications applied to attributes of the
   * target entry in the course of processing this modify DN
   * operation.  This will include attribute-level changes from the
   * modify DN itself (e.g., removing old RDN values if deleteOldRDN
   * is set, or adding new RDN values that don't already exist), but
   * it may also be used by pre-operation plugins to cause additional
   * changes in the entry.  In this case, those plugins may add
   * modifications to this list through the
   * <CODE>addModification</CODE> method (the list returned from this
   * method should not be modified directly) if any changes should be
   * processed in addition to the core modify DN processing.  Backends
   * may read this list to identify which attribute-level changes were
   * applied in order to more easily apply updates to attribute
   * indexes.
   *
   * @return  The set of modifications applied to attributes during
   *          the course of the modify DN processing, or
   *          <CODE>null</CODE> if that information is not yet
   *          available (e.g., during pre-parse plugins).
   */
  public List<Modification> getModifications();
  /**
   * Adds the provided modification to the set of modifications to be
   * applied as part of the update.  This should only be called by
   * pre-operation plugins.
   *
   * @param  modification  The modification to add to the set of
   *                       modifications to apply to the entry.
   */
  public void addModification(Modification modification);
  /**
   * Retrieves the current entry, before it is renamed.  This will not
   * be available to pre-parse plugins or during the conflict
   * resolution portion of the synchronization processing.
   *
   * @return  The current entry, or <CODE>null</CODE> if it is not yet
   *           available.
   */
  public Entry getOriginalEntry();
  /**
   * Retrieves the new entry, as it will appear after it is renamed.
   * This will not be  available to pre-parse plugins or during the
   * conflict resolution portion of the synchronization processing.
   *
   * @return  The updated entry, or <CODE>null</CODE> if it is not yet
   *           available.
   */
  public Entry getUpdatedEntry();
}
opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java
New file
@@ -0,0 +1,164 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import org.opends.server.protocols.ldap.LDAPModification;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for modify operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PreOperationModifyOperation
       extends PreOperationOperation
{
  /**
   * Retrieves the raw, unprocessed entry DN as included in the client
   * request.  The DN that is returned may or may not be a valid DN,
   * since no validation will have been performed upon it.
   *
   * @return  The raw, unprocessed entry DN as included in the client
   *          request.
   */
  public ByteString getRawEntryDN();
  /**
   * Retrieves the DN of the entry to modify.
   *
   * @return  The DN of the entry to modify.
   */
  public DN getEntryDN();
  /**
   * Retrieves the set of raw, unprocessed modifications as included
   * in the client request.  Note that this may contain one or more
   * invalid modifications, as no validation will have been performed
   * on this information.  The list returned must not be altered by
   * the caller.
   *
   * @return  The set of raw, unprocessed modifications as included
   *          in the client request.
   */
  public List<LDAPModification> getRawModifications();
  /**
   * Retrieves the set of modifications for this modify operation.
   Its contents should not be altered.
   *
   * @return  The set of modifications for this modify operation.
   */
  public List<Modification> getModifications();
  /**
   * Adds the provided modification to the set of modifications to
   * this modify operation.  Note that this will be called after the
   * schema and access control processing, so the caller must be
   * careful to avoid making any changes that will violate schema or
   * access control constraints.
   *
   * @param  modification  The modification to add to the set of
   *                       changes for this modify operation.
   *
   * @throws  DirectoryException  If an unexpected problem occurs
   *                              while applying the modification to
   *                              the entry.
   */
  public void addModification(Modification modification)
         throws DirectoryException;
  /**
   * Retrieves the current entry before any modifications are applied.
   * It should not be modified by the caller.
   *
   * @return  The current entry before any modifications are applied.
   */
  public Entry getCurrentEntry();
  /**
   * Retrieves the modified entry that is to be written to the
   * backend.  This entry should not be modified directly, but should
   * only be altered through the <CODE>addModification</CODE> method.
   *
   * @return  The modified entry that is to be written to the backend.
   */
  public Entry getModifiedEntry();
  /**
   * Retrieves the set of clear-text current passwords for the user,
   * if available.  This will only be available if the modify
   * operation contains one or more delete elements that target the
   * password attribute and provide the values to delete in the clear.
   * This list should not be altered by the caller.
   *
   * @return  The set of clear-text current password values as
   *          provided in the modify request, or <CODE>null</CODE> if
   *          there were none.
   */
  public List<AttributeValue> getCurrentPasswords();
  /**
   * Retrieves the set of clear-text new passwords for the user, if
   * available.  This will only be available if the modify operation
   * contains one or more add or replace elements that target the
   * password attribute and provide the values in the clear.  This
   * list should not be altered by the caller.
   *
   * @return  The set of clear-text new passwords as provided in the
   *          modify request, or <CODE>null</CODE> if there were none.
   */
  public List<AttributeValue> getNewPasswords();
}
opends/src/server/org/opends/server/types/operation/PreOperationOperation.java
New file
@@ -0,0 +1,415 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.List;
import java.util.Map;
import org.opends.server.api.ClientConnection;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.Control;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for all types of operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PreOperationOperation
{
  /**
   * Retrieves the operation type for this operation.
   *
   * @return  The operation type for this operation.
   */
  public OperationType getOperationType();
  /**
   * Retrieves the client connection with which this operation is
   * associated.
   *
   * @return  The client connection with which this operation is
   *          associated.
   */
  public ClientConnection getClientConnection();
  /**
   * Retrieves the unique identifier that is assigned to the client
   * connection that submitted this operation.
   *
   * @return  The unique identifier that is assigned to the client
   *          connection that submitted this operation.
   */
  public long getConnectionID();
  /**
   * Retrieves the operation ID for this operation.
   *
   * @return  The operation ID for this operation.
   */
  public long getOperationID();
  /**
   * Retrieves the message ID assigned to this operation.
   *
   * @return  The message ID assigned to this operation.
   */
  public int getMessageID();
  /**
   * Retrieves the set of controls included in the request from the
   * client.  The contents of this list must not be altered.
   *
   * @return  The set of controls included in the request from the
   *          client.
   */
  public List<Control> getRequestControls();
  /**
   * Retrieves the set of controls to include in the response to the
   * client.  The contents of this list must not be altered.
   *
   * @return  The set of controls to include in the response to the
   *          client.
   */
  public List<Control> getResponseControls();
  /**
   * Adds the provided control to the set of controls to include in
   * the response to the client.
   *
   * @param  control  The control to add to the set of controls to
   *                  include in the response to the client.
   */
  public void addResponseControl(Control control);
  /**
   * Removes the provided control from the set of controls to include
   * in the response to the client.
   *
   * @param  control  The control to remove from the set of controls
   *                  to include in the response to the client.
   */
  public void removeResponseControl(Control control);
  /**
   * Retrieves the result code for this operation.
   *
   * @return  The result code associated for this operation, or
   *          <CODE>UNDEFINED</CODE> if the operation has not yet
   *          completed.
   */
  public ResultCode getResultCode();
  /**
   * Specifies the result code for this operation.
   *
   * @param  resultCode  The result code for this operation.
   */
  public void setResultCode(ResultCode resultCode);
  /**
   * Retrieves the error message for this operation.  Its contents may
   * be altered by the caller.
   *
   * @return  The error message for this operation.
   */
  public StringBuilder getErrorMessage();
  /**
   * Specifies the error message for this operation.
   *
   * @param  errorMessage  The error message for this operation.
   */
  public void setErrorMessage(StringBuilder errorMessage);
  /**
   * Appends the provided message to the error message buffer.  If the
   * buffer has not yet been created, then this will create it first
   * and then add the provided message.
   *
   * @param  message  The message to append to the error message
   *                  buffer.
   */
  public void appendErrorMessage(String message);
  /**
   * Retrieves the additional log message for this operation, which
   * should be written to the log but not included in the response to
   * the client.  The contents of this buffer may be altered by the
   * caller.
   *
   * @return  The additional log message for this operation.
   */
  public StringBuilder getAdditionalLogMessage();
  /**
   * Specifies the additional log message for this operation, which
   * should be written to the log but not included in the response to
   * the client.
   *
   * @param  additionalLogMessage  The additional log message for this
   *                               operation.
   */
  public void setAdditionalLogMessage(
                   StringBuilder additionalLogMessage);
  /**
   * Appends the provided message to the additional log information
   * for this operation.
   *
   * @param  message  The message that should be appended to the
   *                  additional log information for this operation.
   */
  public void appendAdditionalLogMessage(String message);
  /**
   * Retrieves the matched DN for this operation.
   *
   * @return  The matched DN for this operation, or <CODE>null</CODE>
   *          if the operation has not yet completed or does not have
   *          a matched DN.
   */
  public DN getMatchedDN();
  /**
   * Specifies the matched DN for this operation.
   *
   * @param  matchedDN  The matched DN for this operation.
   */
  public void setMatchedDN(DN matchedDN);
  /**
   * Retrieves the set of referral URLs for this operation.  Its
   * contents must not be altered by the caller.
   *
   * @return  The set of referral URLs for this operation, or
   *          <CODE>null</CODE> if the operation is not yet complete
   *          or does not have a set of referral URLs.
   */
  public List<String> getReferralURLs();
  /**
   * Specifies the set of referral URLs for this operation.
   *
   * @param  referralURLs  The set of referral URLs for this
   *                       operation.
   */
  public void setReferralURLs(List<String> referralURLs);
  /**
   * Sets the response elements for this operation based on the
   * information contained in the provided
   * <CODE>DirectoryException</CODE> object.
   *
   * @param  directoryException  The exception containing the
   *                             information to use for the response
   *                             elements.
   */
  public void setResponseData(DirectoryException directoryException);
  /**
   * Indicates whether this is an internal operation rather than one
   * that was requested by an external client.
   *
   * @return  <CODE>true</CODE> if this is an internal operation, or
   *          <CODE>false</CODE> if it is not.
   */
  public boolean isInternalOperation();
  /**
   * Indicates whether this is a synchronization operation rather than
   * one that was requested by an external client.
   *
   * @return  <CODE>true</CODE> if this is a data synchronization
   *          operation, or <CODE>false</CODE> if it is not.
   */
  public boolean isSynchronizationOperation();
  /**
   * Retrieves the authorization DN for this operation.  In many
   * cases, it will be the same as the DN of the authenticated user
   * for the underlying connection, or the null DN if no
   * authentication has been performed on that connection.  However,
   * it may be some other value if special processing has been
   * requested (e.g., the operation included a proxied authorization
   * control).
   *
   * @return  The authorization DN for this operation.
   */
  public DN getAuthorizationDN();
  /**
   * Retrieves the set of attachments defined for this operation, as a
   * mapping between the attachment name and the associated object.
   *
   * @return  The set of attachments defined for this operation.
   */
  public Map<String,Object> getAttachments();
  /**
   * Retrieves the attachment with the specified name.
   *
   * @param  name  The name for the attachment to retrieve.  It will
   *               be treated in a case-sensitive manner.
   *
   * @return  The requested attachment object, or <CODE>null</CODE> if
   *          it does not exist.
   */
  public Object getAttachment(String name);
  /**
   * Removes the attachment with the specified name.
   *
   * @param  name  The name for the attachment to remove.  It will be
   *               treated in a case-sensitive manner.
   *
   * @return  The attachment that was removed, or <CODE>null</CODE> if
   *          it does not exist.
   */
  public Object removeAttachment(String name);
  /**
   * Sets the value of the specified attachment.  If an attachment
   * already exists with the same name, it will be replaced.
   * Otherwise, a new attachment will be added.
   *
   * @param  name   The name to use for the attachment.
   * @param  value  The value to use for the attachment.
   *
   * @return  The former value held by the attachment with the given
   *          name, or <CODE>null</CODE> if there was previously no
   *          such attachment.
   */
  public Object setAttachment(String name, Object value);
  /**
   * Retrieves the time that processing started for this operation.
   *
   * @return  The time that processing started for this operation.
   */
  public long getProcessingStartTime();
  /**
   * Retrieves the cancel request that has been issued for this
   * operation, if there is one.
   *
   * @return  The cancel request that has been issued for this
   *          operation, or <CODE>null</CODE> if there has not been
   *          any request to cancel.
   */
  public CancelRequest getCancelRequest();
  /**
   * Retrieves a string representation of this operation.
   *
   * @return  A string representation of this operation.
   */
  public String toString();
  /**
   * Appends a string representation of this operation to the provided
   * buffer.
   *
   * @param  buffer  The buffer into which a string representation of
   *                 this operation should be appended.
   */
  public void toString(StringBuilder buffer);
}
opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java
New file
@@ -0,0 +1,151 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
import java.util.LinkedHashSet;
import org.opends.server.protocols.ldap.LDAPFilter;
import org.opends.server.types.ByteString;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.DN;
import org.opends.server.types.SearchScope;
import org.opends.server.types.SearchFilter;
/**
 * This class defines a set of methods that are available for use by
 * pre-operation plugins for search operations.  Note that this
 * interface is intended only to define an API for use by plugins and
 * is not intended to be implemented by any custom classes.
 */
public interface PreOperationSearchOperation
       extends PreOperationOperation
{
  /**
   * Retrieves the raw, unprocessed base DN as included in the request
   * from the client.  This may or may not contain a valid DN, as no
   * validation will have been performed.
   *
   * @return  The raw, unprocessed base DN as included in the request
   *          from the client.
   */
  public ByteString getRawBaseDN();
  /**
   * Retrieves the base DN for this search operation.
   *
   * @return  The base DN for this search operation.
   */
  public DN getBaseDN();
  /**
   * Retrieves the scope for this search operation.
   *
   * @return  The scope for this search operation.
   */
  public SearchScope getScope();
  /**
   * Retrieves the alias dereferencing policy for this search
   * operation.
   *
   * @return  The alias dereferencing policy for this search
   *          operation.
   */
  public DereferencePolicy getDerefPolicy();
  /**
   * Retrieves the size limit for this search operation.
   *
   * @return  The size limit for this search operation.
   */
  public int getSizeLimit();
  /**
   * Retrieves the time limit for this search operation.
   *
   * @return  The time limit for this search operation.
   */
  public int getTimeLimit();
  /**
   * Retrieves the typesOnly flag for this search operation.
   *
   * @return  The typesOnly flag for this search operation.
   */
  public boolean getTypesOnly();
  /**
   * Retrieves the raw, unprocessed search filter as included in the
   * request from the client.  It may or may not contain a valid
   * filter (e.g., unsupported attribute types or values with an
   * invalid syntax) because no validation will have been performed on
   * it.
   *
   * @return  The raw, unprocessed search filter as included in the
   *          request from the client.
   */
  public LDAPFilter getRawFilter();
  /**
   * Retrieves the filter for this search operation.
   *
   * @return  The filter for this search operation.
   */
  public SearchFilter getFilter();
  /**
   * Retrieves the set of requested attributes for this search
   * operation.  Its contents should not be be altered.
   *
   * @return  The set of requested attributes for this search
   *          operation.
   */
  public LinkedHashSet<String> getAttributes();
}
opends/src/server/org/opends/server/types/operation/PreParseAbandonOperation.java
New file
@@ -0,0 +1,49 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.types.operation;
/**
 * This class defines a set of methods that are available for use by
 * pre-parse plugins for abandon operations.  Note that this interface
 * is intended only to define an API for use by plugins and is not
 * intended to be implemented by any custom classes.
 */
public interface PreParseAbandonOperation
       extends PreParseOperation
{
  /**
   * Retrieves the message ID of the operation that should be
   * abandoned.
   *
   * @return  The message ID of the operation that should be
   *          abandoned.
   */
  public int getIDToAbandon();
}
Diff truncated after the above file
opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java opends/src/server/org/opends/server/types/operation/PreParseBindOperation.java opends/src/server/org/opends/server/types/operation/PreParseCompareOperation.java opends/src/server/org/opends/server/types/operation/PreParseDeleteOperation.java opends/src/server/org/opends/server/types/operation/PreParseExtendedOperation.java opends/src/server/org/opends/server/types/operation/PreParseModifyDNOperation.java opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java opends/src/server/org/opends/server/types/operation/PreParseOperation.java opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java opends/src/server/org/opends/server/types/operation/PreParseUnbindOperation.java opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java opends/src/server/org/opends/server/types/operation/package-info.java opends/src/server/org/opends/server/util/LDIFReader.java opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java opends/tests/unit-tests-testng/src/server/org/opends/server/changelog/UpdateComparatorTest.java opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/core/PasswordPolicyTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestAbsoluteSubtreeSpecification.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandlerTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandlerTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandlerTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExternalSASLMechanismHandlerTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedKeyManagerProviderTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedTrustManagerProviderTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/LengthBasedPasswordValidatorTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordStorageSchemeTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/RandomPasswordGeneratorTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/InvocationCounterPlugin.java opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ServerStateTest.java opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationMsgTest.java opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/LdifFileWriter.java opends/tests/unit-tests-testng/src/server/org/opends/server/types/DirectoryExceptionTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/types/InitializationExceptionTestCase.java opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestDN.java opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestEntry.java