From ec1e5e28c7897d2387841b17bcd8659c100d97b6 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Mon, 02 Oct 2006 16:32:07 +0000
Subject: [PATCH] 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.
---
opendj-sdk/opends/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationBindOperation.java | 146
opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java | 6
opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/BackendConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/api/TrustManagerProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/EntryCacheConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/BackupBackend.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java | 1
opendj-sdk/opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java | 6
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationOperation.java | 415 +
opendj-sdk/opends/src/server/org/opends/server/types/LockManager.java | 836 ++
opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/CertificateMapperConfigManager.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/SASLConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/BackupDirectory.java | 1
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestAbsoluteSubtreeSpecification.java | 1
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/IfAbsentTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/FIFOEntryCache.java | 4
opendj-sdk/opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java | 20
opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java | 30
opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseDeleteOperation.java | 73
opendj-sdk/opends/src/server/org/opends/server/types/RDN.java | 3
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java | 101
opendj-sdk/opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java | 6
opendj-sdk/opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/Tag.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationCompareOperation.java | 111
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java | 10
opendj-sdk/opends/src/server/org/opends/server/types/Schema.java | 2381 +++++++
opendj-sdk/opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/BackUpDB.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskBackend.java | 6
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedKeyManagerProviderTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/PasswordGenerator.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/CancelledOperationException.java | 73
opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseModifyDNOperation.java | 184
opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/MonitorBackend.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/plugins/LDAPADListPlugin.java | 125
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseBindOperation.java | 173
opendj-sdk/opends/src/server/org/opends/server/api/AlertHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java | 4
opendj-sdk/opends/src/server/org/opends/server/api/SubstringMatchingRule.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/backends/MemoryBackend.java | 2
opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskScheduler.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java | 34
opendj-sdk/opends/src/server/org/opends/server/tools/VerifyIndex.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicy.java | 1
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ServerStateTest.java | 24
opendj-sdk/opends/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java | 4
opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedTrustManagerProviderTestCase.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/LdifFileWriter.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java | 182
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationUnbindOperation.java | 41
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java | 173
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/DirectoryExceptionTestCase.java | 6
opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/monitors/TraditionalWorkQueueMonitor.java | 2
opendj-sdk/opends/src/server/org/opends/server/synchronization/ServerStartMessage.java | 2
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/CryptoManager.java | 448
opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java | 131
opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java | 163
opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java | 6
opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperationConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/core/RelativeSubtreeSpecification.java | 1
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordStorageSchemeTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java | 105
opendj-sdk/opends/src/server/org/opends/server/types/operation/package-info.java | 43
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/RandomPasswordGeneratorTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JebFormat.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/api/EntryCache.java | 2
opendj-sdk/opends/src/server/org/opends/server/authorization/BasicAccessControlProvider.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseOperation.java | 422 +
opendj-sdk/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/Entry.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/RootDNConfigManager.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperation.java | 161
opendj-sdk/opends/src/server/org/opends/server/extensions/TLSCapableConnection.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/PasswordValidatorConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/api/AttributeValueDecoder.java | 2
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/FirstNameTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java | 143
opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/DefaultEntryCache.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExternalSASLMechanismHandlerTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationOperation.java | 402 +
opendj-sdk/opends/src/server/org/opends/server/messages/PluginMessages.java | 16
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseDeleteOperation.java | 64
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java | 173
opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogDB.java | 2
opendj-sdk/opends/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java | 112
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/RandomTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java | 4
opendj-sdk/opends/src/server/org/opends/server/api/ConnectionHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/RootDSEBackend.java | 10
opendj-sdk/opends/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java | 6
opendj-sdk/opends/src/server/org/opends/server/synchronization/MultimasterSynchronization.java | 2
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ImportJob.java | 2
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/IfPresentTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/LastNameTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/InternalConnectionSecurityProvider.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java | 1
opendj-sdk/opends/src/server/org/opends/server/changelog/DbHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/monitors/StackTraceMonitorProvider.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/extensions/WhoAmIExtendedOperation.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseCompareOperation.java | 101
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java | 151
opendj-sdk/opends/src/server/org/opends/server/core/IdentityMapperConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java | 41
opendj-sdk/opends/src/server/org/opends/server/api/MatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/api/IdentityMapper.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/AbsoluteSubtreeSpecification.java | 1
opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/AnonymousSASLMechanismHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationBindOperation.java | 197
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java | 2
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/SubstringIndexer.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestDN.java | 1
opendj-sdk/opends/src/server/org/opends/server/tasks/ShutdownTask.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java | 294
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java | 14
opendj-sdk/opends/src/server/org/opends/server/core/AccessControlConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/types/InvokableMethod.java | 1
opendj-sdk/opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationCompareOperation.java | 101
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java | 132
opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/JMXAlertHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/tools/RestoreDB.java | 4
opendj-sdk/opends/src/server/org/opends/server/api/KeyManagerProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java | 143
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseUnbindOperation.java | 41
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/FileTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationAbandonOperation.java | 49
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/tasks/ImportTask.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseModifyDNOperation.java | 135
opendj-sdk/opends/src/server/org/opends/server/api/SynchronizationProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/AttributeValueTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/PresenceTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java | 164
opendj-sdk/opends/src/server/org/opends/server/extensions/NullTrustManagerProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/LDIFExportConfig.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/PasswordValidator.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/VirtualAttribute.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationMsgTest.java | 64
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/SequentialTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationExtendedOperation.java | 102
opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java | 243
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/SimpleSubtreeSpecification.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/DirectoryException.java | 125
opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/Operation.java | 221
opendj-sdk/opends/src/server/org/opends/server/core/RFC3672SubtreeSpecification.java | 1
opendj-sdk/opends/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperation.java | 176
opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/plugins/LastModPlugin.java | 189
opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java | 1
opendj-sdk/opends/src/server/org/opends/server/extensions/NullKeyManagerProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/tasks/BackupTask.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandlerTestCase.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java | 275
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationModifyDNOperation.java | 184
opendj-sdk/opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java | 2
opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/ErrorLogger.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/LDIFImportConfig.java | 1
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackupManager.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/PersistentSearch.java | 1
opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/synchronization/ServerState.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/CancelRequest.java | 184
opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java | 151
opendj-sdk/opends/src/server/org/opends/server/core/LoggerConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/core/AbandonOperation.java | 141
opendj-sdk/opends/src/server/org/opends/server/core/BindOperation.java | 192
opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java | 208
opendj-sdk/opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/EncodePassword.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/LengthBasedPasswordValidatorTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/RDNTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicyConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/ClearPasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/ImportLDIF.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/ParentDNTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/PasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/api/ClientConnection.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/Base64PasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/TemplateFile.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationDeleteOperation.java | 73
opendj-sdk/opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/ExportLDIF.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Config.java | 2
opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java | 2
opendj-sdk/opends/src/server/org/opends/server/tasks/TaskUtils.java | 2
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/StaticTextTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/InvokableComponent.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/AttributeType.java | 1
opendj-sdk/opends/src/server/org/opends/server/api/DebugLogger.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/AccessLogger.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandlerTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/OrderingIndexer.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java | 427
opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandlerTestCase.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/BlindTrustManagerProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/AttributeValue.java | 1
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/DNTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseAbandonOperation.java | 49
opendj-sdk/opends/src/server/org/opends/server/api/ConfigHandler.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseOperation.java | 315 +
opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/Backend.java | 8
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationModifyDNOperation.java | 196
opendj-sdk/opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/UnderscoreDNTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/CancelResult.java | 47
opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/InvocationCounterPlugin.java | 150
opendj-sdk/opends/src/server/org/opends/server/api/SASLMechanismHandler.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/changelog/UpdateComparatorTest.java | 6
opendj-sdk/opends/src/server/org/opends/server/types/DN.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java | 58
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseCompareOperation.java | 101
opendj-sdk/opends/src/server/org/opends/server/loggers/DirectoryFileHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicyState.java | 1
opendj-sdk/opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java | 151
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestEntry.java | 1
opendj-sdk/opends/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java | 95
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EqualityIndexer.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/core/CoreConfigManager.java | 1
opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/InProgressOperation.java | 417 +
opendj-sdk/opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java | 6
opendj-sdk/opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/InitializationException.java | 48
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationExtendedOperation.java | 84
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java | 131
opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java | 3
opendj-sdk/opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/api/ConnectionSecurityProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseExtendedOperation.java | 106
opendj-sdk/opends/src/server/org/opends/server/config/JMXMBean.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java | 2
opendj-sdk/opends/src/server/org/opends/server/config/ConfigFileHandler.java | 6
opendj-sdk/opends/src/server/org/opends/server/tasks/ExportTask.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/UnderscoreParentDNTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java | 6
opendj-sdk/opends/src/server/org/opends/server/api/CertificateMapper.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java | 6
opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalConnectionHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java | 4
opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/GUIDTag.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java | 4
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/PasswordPolicyTestCase.java | 1
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java | 189
opendj-sdk/opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationDeleteOperation.java | 73
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java | 209
opendj-sdk/opends/src/server/org/opends/server/api/AccessControlProvider.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java | 43
opendj-sdk/opends/src/server/org/opends/server/tools/LDIFModify.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java | 2
opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java | 4
opendj-sdk/opends/src/server/org/opends/server/monitors/SystemInfoMonitorProvider.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java | 6
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/InitializationExceptionTestCase.java | 4
opendj-sdk/opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java | 2
opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseBindOperation.java | 157
opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java | 4
opendj-sdk/opends/src/server/org/opends/server/plugins/EntryUUIDPlugin.java | 100
/dev/null | 2178 -------
opendj-sdk/opends/src/server/org/opends/server/types/LDAPURL.java | 1
opendj-sdk/opends/src/server/org/opends/server/types/OperationType.java | 15
opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseExtendedOperation.java | 82
opendj-sdk/opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java | 2
opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java | 6
opendj-sdk/opends/src/server/org/opends/server/api/ExtendedOperationHandler.java | 2
opendj-sdk/opends/src/server/org/opends/server/api/WorkQueue.java | 4
opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java | 265
361 files changed, 13,186 insertions(+), 4,902 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AccessControlProvider.java b/opendj-sdk/opends/src/server/org/opends/server/api/AccessControlProvider.java
index ea36c45..fbb4c4a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AccessControlProvider.java
+++ b/opendj-sdk/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
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogger.java b/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogger.java
index 5be6cb9..06a05d7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogger.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java b/opendj-sdk/opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java
index c221c07..3149ab2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AlertHandler.java b/opendj-sdk/opends/src/server/org/opends/server/api/AlertHandler.java
index 1902d38..6908182 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AlertHandler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java
index 032842c..c98668f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AttributeSyntax.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AttributeValueDecoder.java b/opendj-sdk/opends/src/server/org/opends/server/api/AttributeValueDecoder.java
index cb995a7..1a5bc9b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AttributeValueDecoder.java
+++ b/opendj-sdk/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.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/Backend.java b/opendj-sdk/opends/src/server/org/opends/server/api/Backend.java
index 6d34b8f..a97914c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/Backend.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/CertificateMapper.java b/opendj-sdk/opends/src/server/org/opends/server/api/CertificateMapper.java
index 1cec5b7..c77cdeb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/CertificateMapper.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/ClientConnection.java b/opendj-sdk/opends/src/server/org/opends/server/api/ClientConnection.java
index a200851..7fec595 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/ClientConnection.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/ConfigHandler.java b/opendj-sdk/opends/src/server/org/opends/server/api/ConfigHandler.java
index 29cf789..c456c03 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/ConfigHandler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/ConnectionHandler.java b/opendj-sdk/opends/src/server/org/opends/server/api/ConnectionHandler.java
index 8ea6119..74a03e3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/ConnectionHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/ConnectionSecurityProvider.java b/opendj-sdk/opends/src/server/org/opends/server/api/ConnectionSecurityProvider.java
index 19f5318..7b053b8 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/ConnectionSecurityProvider.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/DebugLogger.java b/opendj-sdk/opends/src/server/org/opends/server/api/DebugLogger.java
index 4fafae0..fcf1dd0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/DebugLogger.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/EntryCache.java b/opendj-sdk/opends/src/server/org/opends/server/api/EntryCache.java
index c06d4f9..8cea1da 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/EntryCache.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/ErrorLogger.java b/opendj-sdk/opends/src/server/org/opends/server/api/ErrorLogger.java
index 564c963..1d236a0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/ErrorLogger.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/ExtendedOperationHandler.java b/opendj-sdk/opends/src/server/org/opends/server/api/ExtendedOperationHandler.java
index 3f91e4b..b9e2197 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/ExtendedOperationHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/IdentityMapper.java b/opendj-sdk/opends/src/server/org/opends/server/api/IdentityMapper.java
index c52c257..b20e0cb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/IdentityMapper.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/InvokableComponent.java b/opendj-sdk/opends/src/server/org/opends/server/api/InvokableComponent.java
index 0aaca2a..2476652 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/InvokableComponent.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/KeyManagerProvider.java b/opendj-sdk/opends/src/server/org/opends/server/api/KeyManagerProvider.java
index 5e7422d..cc9881f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/KeyManagerProvider.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/MatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/api/MatchingRule.java
index 116e997..8fbdea3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/MatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java b/opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java
index 15739a8..bc80452 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/PasswordGenerator.java b/opendj-sdk/opends/src/server/org/opends/server/api/PasswordGenerator.java
index f838eae..0eda61b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/PasswordGenerator.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/api/PasswordStorageScheme.java
index a4ab549..d1aab74 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/PasswordStorageScheme.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/PasswordValidator.java b/opendj-sdk/opends/src/server/org/opends/server/api/PasswordValidator.java
index 86ecdb1..d9cdfbf 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/PasswordValidator.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/SASLMechanismHandler.java b/opendj-sdk/opends/src/server/org/opends/server/api/SASLMechanismHandler.java
index 263a5a1..371fc0e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/SASLMechanismHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/SubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/api/SubstringMatchingRule.java
index 644c4de..024515e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/SubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/SynchronizationProvider.java b/opendj-sdk/opends/src/server/org/opends/server/api/SynchronizationProvider.java
index dc15885..b2570f7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/SynchronizationProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/TrustManagerProvider.java b/opendj-sdk/opends/src/server/org/opends/server/api/TrustManagerProvider.java
index 61ec486..c827417 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/TrustManagerProvider.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/VirtualAttribute.java b/opendj-sdk/opends/src/server/org/opends/server/api/VirtualAttribute.java
index 2720dee..36412c7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/VirtualAttribute.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/WorkQueue.java b/opendj-sdk/opends/src/server/org/opends/server/api/WorkQueue.java
index b7abafa..901057a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/WorkQueue.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java b/opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java
index 5e32e45..6dc6a66 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java
+++ b/opendj-sdk/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);
}
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/authorization/BasicAccessControlProvider.java b/opendj-sdk/opends/src/server/org/opends/server/authorization/BasicAccessControlProvider.java
index 0aeac1a..e811a4e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/authorization/BasicAccessControlProvider.java
+++ b/opendj-sdk/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
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/BackupBackend.java b/opendj-sdk/opends/src/server/org/opends/server/backends/BackupBackend.java
index 45b18eb..46b7195 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/BackupBackend.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/MemoryBackend.java b/opendj-sdk/opends/src/server/org/opends/server/backends/MemoryBackend.java
index 8b7d080..25707d4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/MemoryBackend.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/MonitorBackend.java b/opendj-sdk/opends/src/server/org/opends/server/backends/MonitorBackend.java
index 83fc08b..7e99db6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/MonitorBackend.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/RootDSEBackend.java b/opendj-sdk/opends/src/server/org/opends/server/backends/RootDSEBackend.java
index 36fb224..ee96da1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/RootDSEBackend.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java b/opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java
index d3a6dd7..f70eda6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
index 9087e42..1de8247 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
index a0b575e..f838746 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opendj-sdk/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,
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackupManager.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackupManager.java
index f49d7a9..1eaf9e7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackupManager.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Config.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Config.java
index 1d3a209..d6d3a96 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Config.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java
index bbec3e0..8f3c3c1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
index 6563d81..050782e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
+++ b/opendj-sdk/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.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EqualityIndexer.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EqualityIndexer.java
index 5af7e7b..e01051b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EqualityIndexer.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ImportJob.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ImportJob.java
index 3abaabe..3c4074b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ImportJob.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
index 38be22d..e32e99f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JebFormat.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JebFormat.java
index bc4507e..2e7f420 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JebFormat.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/OrderingIndexer.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/OrderingIndexer.java
index 6b73dbd..9209534 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/OrderingIndexer.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/SubstringIndexer.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/SubstringIndexer.java
index 249cfc2..ed494c1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/SubstringIndexer.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java
index 2514217..bd62750 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java b/opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java
index a539527..703c7d4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/task/RecurringTask.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java b/opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java
index e764a35..42c7b90 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskBackend.java b/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskBackend.java
index 6596c97..79e4181 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskBackend.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskScheduler.java b/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
index d141cc6..edd9a3a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogDB.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogDB.java
index e03e7b6..45c6544 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogDB.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/DbHandler.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/DbHandler.java
index a27e614..45468b2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/DbHandler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java
index 8df756c..fc482a8 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/config/ConfigFileHandler.java b/opendj-sdk/opends/src/server/org/opends/server/config/ConfigFileHandler.java
index c23021b..a2dca3f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/config/ConfigFileHandler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/config/JMXMBean.java b/opendj-sdk/opends/src/server/org/opends/server/config/JMXMBean.java
index 396c08a..8a649c3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/config/JMXMBean.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java b/opendj-sdk/opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java
index a3a0947..27cfb52 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java b/opendj-sdk/opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java
index 05def8a..34d8f06 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/AbandonOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/AbandonOperation.java
index f090985..068fb60 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/AbandonOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/AbsoluteSubtreeSpecification.java b/opendj-sdk/opends/src/server/org/opends/server/core/AbsoluteSubtreeSpecification.java
index f2daaa8..53d8abd 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/AbsoluteSubtreeSpecification.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/AccessControlConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/AccessControlConfigManager.java
index 4e0a415..a449933 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/AccessControlConfigManager.java
+++ b/opendj-sdk/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;
/**
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java
index d61c62d..c0b66e1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java
index f9cd074..26510ee 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java
+++ b/opendj-sdk/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(")");
}
-
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/BackendConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/BackendConfigManager.java
index 2ebed75..f5cb012 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/BackendConfigManager.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/BindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/BindOperation.java
index 60d5847..d8ca5b7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/BindOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CancelRequest.java b/opendj-sdk/opends/src/server/org/opends/server/core/CancelRequest.java
deleted file mode 100644
index 3fd1b77..0000000
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CancelRequest.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * 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.core;
-
-
-
-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.core.CancelRequest";
-
-
-
- // Indicates whether to send a response to the original request if the
- // operation is canceled.
- private boolean notifyOriginalRequestor;
-
- // A message that explains the purpose for this cancellation (may be included
- // in the response to the original requestor).
- private 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 boolean notifyOriginalRequestor()
- {
- assert debugEnter(CLASS_NAME, "notifyOriginalRequestor");
-
- return notifyOriginalRequestor;
- }
-
-
-
- /**
- * Specifies whether the original requestor should receive a response to the
- * request if the operation is canceled.
- *
- * @param notifyOriginalRequestor Specifies whether the original requestor
- * should receive a response to the request
- * if the operation is canceled.
- */
- public void setNotifyOriginalRequestor(boolean notifyOriginalRequestor)
- {
- assert debugEnter(CLASS_NAME, "notifyOriginalRequestor");
-
- this.notifyOriginalRequestor = notifyOriginalRequestor;
- }
-
-
-
- /**
- * Retrieves a message that explains the purpose for this cancellation.
- *
- * @return A message that explains the purpose for this cancellation.
- */
- public String getCancelReason()
- {
- assert debugEnter(CLASS_NAME, "getCancelReason");
-
- return cancelReason;
- }
-
-
-
- /**
- * Specifies a message that explains the purpose for this cancellation.
- *
- * @param cancelReason A message that explains the purpose for this
- * cancellation.
- */
- public void setCancelReason(String cancelReason)
- {
- assert debugEnter(CLASS_NAME, "setCancelReason",
- String.valueOf(cancelReason));
-
- this.cancelReason = 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 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 void addResponseMessage(String message)
- {
- assert debugEnter(CLASS_NAME, "addResponseMessage",
- String.valueOf(message));
-
- responseMessage.append(message);
- }
-}
-
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CertificateMapperConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/CertificateMapperConfigManager.java
index f00c93d..1ffe6f6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CertificateMapperConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java
index df6a53d..a7827ed 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
index e51f2a7..65ecb12 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CoreConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/CoreConfigManager.java
index a19ffef..7d8765b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CoreConfigManager.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java b/opendj-sdk/opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java
index d0c6f64..8d73c6a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java
index 9ee9afc..22147df 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java b/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
index de68210..1472dc5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opendj-sdk/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)
{
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/EntryCacheConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/EntryCacheConfigManager.java
index 4422f1a..fb85891 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/EntryCacheConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperation.java
index 9084c17..b641e8e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperationConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperationConfigManager.java
index 568e683..acfb58f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperationConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/IdentityMapperConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/IdentityMapperConfigManager.java
index 433f56b..23f548b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/IdentityMapperConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java
index 4b48666..f36c5ce 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/LockManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/LockManager.java
deleted file mode 100644
index 422786b..0000000
--- a/opendj-sdk/opends/src/server/org/opends/server/core/LockManager.java
+++ /dev/null
@@ -1,783 +0,0 @@
-/*
- * 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.core;
-
-
-
-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 org.opends.server.types.DebugLogCategory;
-import org.opends.server.types.DebugLogSeverity;
-import org.opends.server.types.DN;
-
-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.core.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 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 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 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 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 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 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 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 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 int lockTableSize()
- {
- assert debugEnter(CLASS_NAME, "lockTableSize");
-
- return entryLocks.size();
- }
-}
-
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/LoggerConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/LoggerConfigManager.java
index c01bd76..c234738 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/LoggerConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java
index 5f1d6a5..37c105b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java
index e2ff8a8..79f8743 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java
index e9ade0f..8816476 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/Operation.java b/opendj-sdk/opends/src/server/org/opends/server/core/Operation.java
index 1f5c35d..443c48d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/Operation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java
index 2c7d47f..ce7cc3e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicy.java b/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicy.java
index f043a2c..b7ed7e4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicy.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicyConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicyConfigManager.java
index f78317d..f890bf0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicyConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicyState.java b/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicyState.java
index 59d414b..4307311 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordPolicyState.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java
index 17c753f..a067549 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordValidatorConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/PasswordValidatorConfigManager.java
index 9f67cf4..16fcfe3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PasswordValidatorConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PersistentSearch.java b/opendj-sdk/opends/src/server/org/opends/server/core/PersistentSearch.java
index 9833dde..63c343a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PersistentSearch.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java
index b556613..023c748 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/RFC3672SubtreeSpecification.java b/opendj-sdk/opends/src/server/org/opends/server/core/RFC3672SubtreeSpecification.java
index d3957f7..a964219 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/RFC3672SubtreeSpecification.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/RelativeSubtreeSpecification.java b/opendj-sdk/opends/src/server/org/opends/server/core/RelativeSubtreeSpecification.java
index 7363610..5f58344 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/RelativeSubtreeSpecification.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/RootDNConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/RootDNConfigManager.java
index 9d9ae0d..d4c9d95 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/RootDNConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SASLConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/SASLConfigManager.java
index c9135a2..ea63ada 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SASLConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/Schema.java b/opendj-sdk/opends/src/server/org/opends/server/core/Schema.java
deleted file mode 100644
index 106366b..0000000
--- a/opendj-sdk/opends/src/server/org/opends/server/core/Schema.java
+++ /dev/null
@@ -1,2178 +0,0 @@
-/*
- * 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.core;
-
-
-
-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 org.opends.server.types.AttributeType;
-import org.opends.server.types.AttributeValue;
-import org.opends.server.types.DITContentRule;
-import org.opends.server.types.DITStructureRule;
-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 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.core.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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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;
- }
-}
-
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java
index 6bf0144..6aed6a0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SchemaConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java
index 5e8657f..fbc7ff1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SimpleSubtreeSpecification.java b/opendj-sdk/opends/src/server/org/opends/server/core/SimpleSubtreeSpecification.java
index 03ac650..cfb7673 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SimpleSubtreeSpecification.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java
index 76ff68f..a5c60b7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java
index 0562db7..50fa8d3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperation.java
index e55bc4a..60c8693 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/UnbindOperation.java
+++ b/opendj-sdk/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/AnonymousSASLMechanismHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/AnonymousSASLMechanismHandler.java
index 5e63caa..f6333dd 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/AnonymousSASLMechanismHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/Base64PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/Base64PasswordStorageScheme.java
index 4fabf5b..49230ba 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/Base64PasswordStorageScheme.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/BlindTrustManagerProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/BlindTrustManagerProvider.java
index 51a5724..723517d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/BlindTrustManagerProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
index a7ffba7..5d1e990 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java
index 0e5e3b8..7517a25 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/ClearPasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/ClearPasswordStorageScheme.java
index 0483547..69e5f28 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/ClearPasswordStorageScheme.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/DefaultEntryCache.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/DefaultEntryCache.java
index 3a696ce..06cacca 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/DefaultEntryCache.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
index 121d6e9..db68ea0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
index 9286f4f..4239bd7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java
index 3630c2a..666523d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
index 440ce3e..226993d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/FIFOEntryCache.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/FIFOEntryCache.java
index f1f97eb..cfd7249 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/FIFOEntryCache.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
index 35edb1e..2f0921f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
index e5477f9..63e71ff 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
index 5e0bb02..1db579c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java
index a92c71c..2234c3e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/InternalConnectionSecurityProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/InternalConnectionSecurityProvider.java
index f82ac8e..735fc4c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/InternalConnectionSecurityProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/JMXAlertHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/JMXAlertHandler.java
index 9c9889e..f386a88 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/JMXAlertHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
index c552856..15c76b5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
index d63876d..d84285e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java
index 7e336a3..74e1ab4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/NullKeyManagerProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/NullKeyManagerProvider.java
index 887981a..4088e82 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/NullKeyManagerProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/NullTrustManagerProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/NullTrustManagerProvider.java
index 9de6aff..4d2d429 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/NullTrustManagerProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
index 40c025b..a36e8e5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
index fe2278a..664c67c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
index 33e865d..5d3b2de 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
index 499fa1d..4cb0242 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
index f83a28c..f37b4a7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java
index d0f40dd..873b592 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java
index db90ac2..bec66eb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java
index f0dc5eb..492da2c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java
index 06051ae..dfd5fb5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java
index b5aec83..9412ea5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
index 22f6632..5d475e3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java
index bfddb37..6430b65 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java
index a757f35..956ac7e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSCapableConnection.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSCapableConnection.java
index ea06a60..2094d70 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSCapableConnection.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java
index acd6918..eb1727b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
index 9e41925..e1f3124 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java
index 1915a6f..6969fe4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/WhoAmIExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/WhoAmIExtendedOperation.java
index e8ea8d0..4008e88 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/WhoAmIExtendedOperation.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/DirectoryFileHandler.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/DirectoryFileHandler.java
index 4b57c04..d3865d9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/DirectoryFileHandler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/messages/PluginMessages.java b/opendj-sdk/opends/src/server/org/opends/server/messages/PluginMessages.java
index 50773a6..07f38b6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/messages/PluginMessages.java
+++ b/opendj-sdk/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.");
}
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java b/opendj-sdk/opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java
index 96942d3..635d63e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java
+++ b/opendj-sdk/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.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/monitors/StackTraceMonitorProvider.java b/opendj-sdk/opends/src/server/org/opends/server/monitors/StackTraceMonitorProvider.java
index a9b3901..86f6c64 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/monitors/StackTraceMonitorProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/monitors/SystemInfoMonitorProvider.java b/opendj-sdk/opends/src/server/org/opends/server/monitors/SystemInfoMonitorProvider.java
index 1dc1787..83ad765 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/monitors/SystemInfoMonitorProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/monitors/TraditionalWorkQueueMonitor.java b/opendj-sdk/opends/src/server/org/opends/server/monitors/TraditionalWorkQueueMonitor.java
index a68bf81..89fa8ab 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/monitors/TraditionalWorkQueueMonitor.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java b/opendj-sdk/opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java
index b628c60..c19a45c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/plugins/EntryUUIDPlugin.java b/opendj-sdk/opends/src/server/org/opends/server/plugins/EntryUUIDPlugin.java
index 9c35138..33e3435 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/plugins/EntryUUIDPlugin.java
+++ b/opendj-sdk/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();
}
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/plugins/LDAPADListPlugin.java b/opendj-sdk/opends/src/server/org/opends/server/plugins/LDAPADListPlugin.java
index 2e6f1ff..ef8ad9c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/plugins/LDAPADListPlugin.java
+++ b/opendj-sdk/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();
}
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/plugins/LastModPlugin.java b/opendj-sdk/opends/src/server/org/opends/server/plugins/LastModPlugin.java
index 6b190b6..885eb87 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/plugins/LastModPlugin.java
+++ b/opendj-sdk/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.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java b/opendj-sdk/opends/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java
index 904346e..834ea50 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java
+++ b/opendj-sdk/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));
diff --git a/opendj-sdk/opends/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java b/opendj-sdk/opends/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java
index d683652..e69a963 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java
+++ b/opendj-sdk/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),
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
index df6d71b..9d4942e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalConnectionHandler.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalConnectionHandler.java
index 034b6df..83578ab 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalConnectionHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
index 7968ab3..3fd9e68 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
+++ b/opendj-sdk/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;
/**
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
index 0283af7..105d52b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
index dd1d543..e078e82 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
index a749494..76d3c54 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java
index d3044d5..bcf6315 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AbsoluteSubtreeSpecificationSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java
index 663c1fa..8d6fa5c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
index eb12fc9..cc803d1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java
index 2bd6e41..0a3b5ab 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordExactEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java
index 4d12b88..f0a59f7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/AuthPasswordSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java
index 3a65d1f..6827d52 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java
index f2db706..94ef768 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/BitStringSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java
index 7522ee8..ff3d765 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java
index 8e72d92..7f739b7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/BooleanSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java
index 4b95f60..bed38fb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java
index d0fe6dd..ffedb96 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java
index d04d833..566a7dc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactIA5SubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java
index e48a4e6..87ffe18 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactOrderingMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java
index a6319e9..323ac6d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseExactSubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java
index 6c0db55..30d6d2c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java
index 2adbacf..49cb7e7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java
index 9607dfc..e7de3fa 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreIA5SubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java
index 5590a03..8078358 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreListEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java
index 60a0a95..bfbb119 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreListSubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java
index c35340a..e3ce01f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreOrderingMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java
index bce8389..34d996d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/CaseIgnoreSubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java
index 5929e10..2fdf746 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DITContentRuleSyntax.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java
index e82ad55..de26f8e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DITStructureRuleSyntax.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java
index 200bb54..0a64ba4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
index cb05ac0..3e2b864 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java
index 2d10d68..e4c7bb0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java
index 7043396..c20daae 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DistinguishedNameSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java
index 79e368c..c64a07a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/DoubleMetaphoneApproximateMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java
index 9ae313d..7aa767c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java
index 6bb2e64..73fd57a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeOrderingMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java
index f1815bb..d9e20cd 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/GeneralizedTimeSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java
index b52673f..caea98d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java
index c330c2d..6f33fcb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerFirstComponentEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
index 99a0f7d..1d34278 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java
index 7c6fe1c..4d63004 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/IntegerSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
index c381c69..290db5f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java
index 2cf385b..add4988 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
index 6519c40..f1bcc1a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java
index 7198f65..1624a4e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/NameFormSyntax.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java
index 17bb00b..687cb1b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java
index df5becd..69e4a6c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringOrderingMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java
index b316d1f..eb95d60 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/NumericStringSubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java
index 46b7717..1af9544 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectClassSyntax.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java
index fce358f..0a941a2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectIdentifierEqualityMatchingRule.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java
index b59f38d..ac93f6d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/ObjectIdentifierFirstComponentEqualityMatchingRule.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java
index 52cc722..797b4d6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java
index e85eb62..29ca439 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringOrderingMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java
index 7954d02..f583f73 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/OctetStringSubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java
index b977dc4..78792a6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java
index 073e795..4489242 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java
index 9fd8764..73d5480 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/RFC3672SubtreeSpecificationSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java
index 530f030..b92910a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/RelativeSubtreeSpecificationSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java
index f5d4eaf..6d9e2d4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
index 04773d3..f483f30 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/TelephoneNumberSubstringMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java
index 42c2010..3a96055 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UTCTimeSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java
index 49ff432..283f19d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java
index 1ee0655..234d932 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UUIDOrderingMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
index f702b60..5ff34f1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
index bcd0d3e..1907130 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
index c15183a..b1b5422 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordExactEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java
index eb8baa5..c63c75e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/UserPasswordSyntax.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java b/opendj-sdk/opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java
index 5b937c5..b564813 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/WordEqualityMatchingRule.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java b/opendj-sdk/opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java
index d0c05ea..5cd6738 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java
+++ b/opendj-sdk/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.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/synchronization/MultimasterSynchronization.java b/opendj-sdk/opends/src/server/org/opends/server/synchronization/MultimasterSynchronization.java
index bbb7fb1..bd7f70e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/synchronization/MultimasterSynchronization.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/synchronization/ServerStartMessage.java b/opendj-sdk/opends/src/server/org/opends/server/synchronization/ServerStartMessage.java
index 77d150e..c9fa051 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/synchronization/ServerStartMessage.java
+++ b/opendj-sdk/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.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/synchronization/ServerState.java b/opendj-sdk/opends/src/server/org/opends/server/synchronization/ServerState.java
index 3dd71f2..336afb0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/synchronization/ServerState.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java b/opendj-sdk/opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java
index 65b5185..7e71f2e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tasks/BackupTask.java b/opendj-sdk/opends/src/server/org/opends/server/tasks/BackupTask.java
index 3d0507d..0aa7639 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tasks/BackupTask.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tasks/ExportTask.java b/opendj-sdk/opends/src/server/org/opends/server/tasks/ExportTask.java
index 1ab3fc2..d57dcff 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tasks/ExportTask.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tasks/ImportTask.java b/opendj-sdk/opends/src/server/org/opends/server/tasks/ImportTask.java
index 269b406..d3bfbe5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tasks/ImportTask.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java b/opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java
index 89511b9..563b154 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tasks/ShutdownTask.java b/opendj-sdk/opends/src/server/org/opends/server/tasks/ShutdownTask.java
index 8913671..827b883 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tasks/ShutdownTask.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tasks/TaskUtils.java b/opendj-sdk/opends/src/server/org/opends/server/tasks/TaskUtils.java
index 70e8fc6..6c13527 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tasks/TaskUtils.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/BackUpDB.java b/opendj-sdk/opends/src/server/org/opends/server/tools/BackUpDB.java
index 6eac5c6..1839f1c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/BackUpDB.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java b/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java
index 6d781df..9e95008 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/ConfigureDS.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/EncodePassword.java b/opendj-sdk/opends/src/server/org/opends/server/tools/EncodePassword.java
index 877e5d5..a29a2e6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/EncodePassword.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/ExportLDIF.java b/opendj-sdk/opends/src/server/org/opends/server/tools/ExportLDIF.java
index 9c9b2e4..5e4ec3e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/ExportLDIF.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/ImportLDIF.java b/opendj-sdk/opends/src/server/org/opends/server/tools/ImportLDIF.java
index e3eafad..c4a44c2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/ImportLDIF.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/LDIFModify.java b/opendj-sdk/opends/src/server/org/opends/server/tools/LDIFModify.java
index 6c582be..732d01f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/LDIFModify.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/RestoreDB.java b/opendj-sdk/opends/src/server/org/opends/server/tools/RestoreDB.java
index 4165490..84c0672 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/RestoreDB.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/VerifyIndex.java b/opendj-sdk/opends/src/server/org/opends/server/tools/VerifyIndex.java
index 0a241e8..e04f1a0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/VerifyIndex.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/AttributeValueTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/AttributeValueTag.java
index 9f5c739..5135417 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/AttributeValueTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/DNTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/DNTag.java
index c901542..be051e7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/DNTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/FileTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/FileTag.java
index 72f4a74..6e9d115 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/FileTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/FirstNameTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/FirstNameTag.java
index f37c4df..5c14b3e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/FirstNameTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/GUIDTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/GUIDTag.java
index 4730f21..5c048eb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/GUIDTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/IfAbsentTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/IfAbsentTag.java
index 3c82d33..98fd2dc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/IfAbsentTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/IfPresentTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/IfPresentTag.java
index bb8bb55..ea6b1c5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/IfPresentTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/LastNameTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/LastNameTag.java
index f4ad87e..95d7a7d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/LastNameTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/ParentDNTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/ParentDNTag.java
index 6db0cd2..3dcfe20 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/ParentDNTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/PresenceTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/PresenceTag.java
index e124d39..29b8d9c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/PresenceTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/RDNTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/RDNTag.java
index 03fe525..7951f05 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/RDNTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/RandomTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/RandomTag.java
index cb57a1a..d5dc7f1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/RandomTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/SequentialTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/SequentialTag.java
index 7501444..8242167 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/SequentialTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/StaticTextTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/StaticTextTag.java
index ba98e5c..208c646 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/StaticTextTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/Tag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/Tag.java
index 92ef549..0601fba 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/Tag.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/TemplateFile.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/TemplateFile.java
index 8d76937..05bd12b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/TemplateFile.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/UnderscoreDNTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/UnderscoreDNTag.java
index 1bf252c..631c379 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/UnderscoreDNTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/UnderscoreParentDNTag.java b/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/UnderscoreParentDNTag.java
index 6635480..8ac2344 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/makeldif/UnderscoreParentDNTag.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/AttributeType.java b/opendj-sdk/opends/src/server/org/opends/server/types/AttributeType.java
index 0d56cab..f35f8aa 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/AttributeType.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/AttributeValue.java b/opendj-sdk/opends/src/server/org/opends/server/types/AttributeValue.java
index 36932c6..a9d992e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/AttributeValue.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/BackupDirectory.java b/opendj-sdk/opends/src/server/org/opends/server/types/BackupDirectory.java
index 40b3e5e..bf62ce6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/BackupDirectory.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/CancelRequest.java b/opendj-sdk/opends/src/server/org/opends/server/types/CancelRequest.java
new file mode 100644
index 0000000..88c6c84
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/CancelRequest.java
@@ -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);
+ }
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CancelResult.java b/opendj-sdk/opends/src/server/org/opends/server/types/CancelResult.java
similarity index 72%
rename from opendj-sdk/opends/src/server/org/opends/server/core/CancelResult.java
rename to opendj-sdk/opends/src/server/org/opends/server/types/CancelResult.java
index 2940c70..527eed8 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CancelResult.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/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);
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CancelledOperationException.java b/opendj-sdk/opends/src/server/org/opends/server/types/CancelledOperationException.java
similarity index 62%
rename from opendj-sdk/opends/src/server/org/opends/server/core/CancelledOperationException.java
rename to opendj-sdk/opends/src/server/org/opends/server/types/CancelledOperationException.java
index 3f05b89..4872036 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CancelledOperationException.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CryptoManager.java b/opendj-sdk/opends/src/server/org/opends/server/types/CryptoManager.java
similarity index 63%
rename from opendj-sdk/opends/src/server/org/opends/server/core/CryptoManager.java
rename to opendj-sdk/opends/src/server/org/opends/server/types/CryptoManager.java
index 0a70926..a3d04a1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CryptoManager.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/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
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/DN.java b/opendj-sdk/opends/src/server/org/opends/server/types/DN.java
index 4e90978..857c8f2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/DN.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryException.java b/opendj-sdk/opends/src/server/org/opends/server/types/DirectoryException.java
similarity index 68%
rename from opendj-sdk/opends/src/server/org/opends/server/core/DirectoryException.java
rename to opendj-sdk/opends/src/server/org/opends/server/types/DirectoryException.java
index 009d942..8122556 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryException.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/Entry.java b/opendj-sdk/opends/src/server/org/opends/server/types/Entry.java
index fa2ccd2..9239ae6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/Entry.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java b/opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java
index a48f3c4..69c165c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/FilePermission.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/InitializationException.java b/opendj-sdk/opends/src/server/org/opends/server/types/InitializationException.java
similarity index 73%
rename from opendj-sdk/opends/src/server/org/opends/server/core/InitializationException.java
rename to opendj-sdk/opends/src/server/org/opends/server/types/InitializationException.java
index cf684a4..c0423dc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/InitializationException.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/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");
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/InvokableMethod.java b/opendj-sdk/opends/src/server/org/opends/server/types/InvokableMethod.java
index 85da4ff..4ae30d8 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/InvokableMethod.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/LDAPURL.java b/opendj-sdk/opends/src/server/org/opends/server/types/LDAPURL.java
index f9ed46f..38aa628 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/LDAPURL.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/LDIFExportConfig.java b/opendj-sdk/opends/src/server/org/opends/server/types/LDIFExportConfig.java
index c9013ab..5dd29ec 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/LDIFExportConfig.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/LDIFImportConfig.java b/opendj-sdk/opends/src/server/org/opends/server/types/LDIFImportConfig.java
index 0f00eab..c4cbff2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/LDIFImportConfig.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/LockManager.java b/opendj-sdk/opends/src/server/org/opends/server/types/LockManager.java
new file mode 100644
index 0000000..18a480f
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/LockManager.java
@@ -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();
+ }
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/OperationType.java b/opendj-sdk/opends/src/server/org/opends/server/types/OperationType.java
similarity index 91%
rename from opendj-sdk/opends/src/server/org/opends/server/core/OperationType.java
rename to opendj-sdk/opends/src/server/org/opends/server/types/OperationType.java
index a496d18..7d6a2f9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/OperationType.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/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;
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/RDN.java b/opendj-sdk/opends/src/server/org/opends/server/types/RDN.java
index 4256c8e..9fc3a9b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/RDN.java
+++ b/opendj-sdk/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.*;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/Schema.java b/opendj-sdk/opends/src/server/org/opends/server/types/Schema.java
new file mode 100644
index 0000000..0c28e66
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/Schema.java
@@ -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;
+ }
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java b/opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java
index 4542e88..7dbd3ca 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/SearchFilter.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/InProgressOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/InProgressOperation.java
new file mode 100644
index 0000000..2f703c7
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/InProgressOperation.java
@@ -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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationAbandonOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationAbandonOperation.java
new file mode 100644
index 0000000..13510b6
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationAbandonOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java
new file mode 100644
index 0000000..8c6dbdb
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationBindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationBindOperation.java
new file mode 100644
index 0000000..851fa86
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationBindOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationCompareOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationCompareOperation.java
new file mode 100644
index 0000000..993a8d4
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationCompareOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationDeleteOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationDeleteOperation.java
new file mode 100644
index 0000000..7ecd551
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationDeleteOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationExtendedOperation.java
new file mode 100644
index 0000000..6b5fe60
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationExtendedOperation.java
@@ -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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationModifyDNOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationModifyDNOperation.java
new file mode 100644
index 0000000..6ea1fc6
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationModifyDNOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java
new file mode 100644
index 0000000..79601b0
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationOperation.java
new file mode 100644
index 0000000..07b937b
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationOperation.java
@@ -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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java
new file mode 100644
index 0000000..7c5ae56
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationUnbindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationUnbindOperation.java
new file mode 100644
index 0000000..b7d5196
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostOperationUnbindOperation.java
@@ -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
+{
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java
new file mode 100644
index 0000000..f2e09ee
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseBindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseBindOperation.java
new file mode 100644
index 0000000..d5b2518
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseBindOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseCompareOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseCompareOperation.java
new file mode 100644
index 0000000..33cce57
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseCompareOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseDeleteOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseDeleteOperation.java
new file mode 100644
index 0000000..f5c7ed7
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseDeleteOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseExtendedOperation.java
new file mode 100644
index 0000000..21b148f
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseExtendedOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseModifyDNOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseModifyDNOperation.java
new file mode 100644
index 0000000..580374f
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseModifyDNOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java
new file mode 100644
index 0000000..be3cd6d
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseOperation.java
new file mode 100644
index 0000000..4209815
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseOperation.java
@@ -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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java
new file mode 100644
index 0000000..ac2636a
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java
new file mode 100644
index 0000000..21d9f51
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationBindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationBindOperation.java
new file mode 100644
index 0000000..e487acb
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationBindOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationCompareOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationCompareOperation.java
new file mode 100644
index 0000000..4e536d0
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationCompareOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationDeleteOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationDeleteOperation.java
new file mode 100644
index 0000000..1edbb14
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationDeleteOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationExtendedOperation.java
new file mode 100644
index 0000000..48eee95
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationExtendedOperation.java
@@ -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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationModifyDNOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationModifyDNOperation.java
new file mode 100644
index 0000000..657f7fc
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationModifyDNOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java
new file mode 100644
index 0000000..aab8f19
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationOperation.java
new file mode 100644
index 0000000..90030d7
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationOperation.java
@@ -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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java
new file mode 100644
index 0000000..172a0fe
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java
@@ -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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseAbandonOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseAbandonOperation.java
new file mode 100644
index 0000000..1093576
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseAbandonOperation.java
@@ -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 --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java
new file mode 100644
index 0000000..4fa7bbd
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java
@@ -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 java.util.List;
+
+import org.opends.server.protocols.ldap.LDAPAttribute;
+import org.opends.server.types.ByteString;
+
+
+
+
+/**
+ * This class defines a set of methods that are available for use by
+ * pre-parse 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 PreParseAddOperation
+ extends PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the raw entry DN for the entry to add.
+ *
+ * @param rawEntryDN The raw entry DN for the entry to add.
+ */
+ public void setRawEntryDN(ByteString rawEntryDN);
+
+
+
+ /**
+ * 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();
+
+
+
+ /**
+ * Adds the provided attribute to the set of raw attributes for this
+ * add operation.
+ *
+ * @param rawAttribute The attribute to add to the set of raw
+ * attributes for this add operation.
+ */
+ public void addRawAttribute(LDAPAttribute rawAttribute);
+
+
+
+ /**
+ * Replaces the set of raw attributes for this add operation.
+ *
+ * @param rawAttributes The set of raw attributes for this add
+ * operation.
+ */
+ public void setRawAttributes(List<LDAPAttribute> rawAttributes);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseBindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseBindOperation.java
new file mode 100644
index 0000000..c7358a7
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseBindOperation.java
@@ -0,0 +1,157 @@
+/*
+ * 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;
+
+
+
+/**
+ * This class defines a set of methods that are available for use by
+ * pre-parse 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 PreParseBindOperation
+ extends PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the raw, unprocessed bind DN for this bind operation.
+ *
+ * @param rawBindDN The raw, unprocessed bind DN for this bind
+ * operation.
+ */
+ public void setRawBindDN(ByteString rawBindDN);
+
+
+
+ /**
+ * Retrieves the simple authentication password for this bind
+ * operation.
+ *
+ * @return The simple authentication password for this bind
+ * operation.
+ */
+ public ByteString getSimplePassword();
+
+
+
+ /**
+ * Specifies the simple authentication password for this bind
+ * operation.
+ *
+ * @param simplePassword The simple authentication password for
+ * this bind operation.
+ */
+ public void setSimplePassword(ByteString simplePassword);
+
+
+
+ /**
+ * 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 SASL credentials for this bind operation.
+ *
+ * @param saslMechanism The SASL mechanism for this bind
+ * operation.
+ * @param saslCredentials The SASL credentials for this bind
+ * operation, or <CODE>null</CODE> if there
+ * are none.
+ */
+ public void setSASLCredentials(String saslMechanism,
+ ASN1OctetString saslCredentials);
+
+
+
+ /**
+ * 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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseCompareOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseCompareOperation.java
new file mode 100644
index 0000000..ae446b3
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseCompareOperation.java
@@ -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.ByteString;
+
+
+
+/**
+ * This class defines a set of methods that are available for use by
+ * pre-parse 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 PreParseCompareOperation
+ extends PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the raw, unprocessed entry DN as included in the client
+ * request.
+ *
+ * @param rawEntryDN The raw entry DN for this compare operation.
+ */
+ public void setRawEntryDN(ByteString rawEntryDN);
+
+
+
+ /**
+ * Retrieves the raw attribute type for this compare operation.
+ *
+ * @return The raw attribute type for this compare operation.
+ */
+ public String getRawAttributeType();
+
+
+
+ /**
+ * Specifies the raw attribute type for this compare operation.
+ *
+ * @param rawAttributeType The raw attribute type for this compare
+ * operation.
+ */
+ public void setRawAttributeType(String rawAttributeType);
+
+
+
+ /**
+ * 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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseDeleteOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseDeleteOperation.java
new file mode 100644
index 0000000..45d5fff
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseDeleteOperation.java
@@ -0,0 +1,64 @@
+/*
+ * 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;
+
+
+
+/**
+ * This class defines a set of methods that are available for use by
+ * pre-parse 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 PreParseDeleteOperation
+ extends PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the raw, unprocessed entry DN for this delete
+ * operation.
+ *
+ * @param rawEntryDN The raw, unprocessed entry DN for this delete
+ * operation.
+ */
+ public void setRawEntryDN(ByteString rawEntryDN);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseExtendedOperation.java
new file mode 100644
index 0000000..aaa76e6
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseExtendedOperation.java
@@ -0,0 +1,106 @@
+/*
+ * 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-parse 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 PreParseExtendedOperation
+ extends PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the OID for the request associated with this extended
+ * operation.
+ *
+ * @param requestOID The OID for the request associated with this
+ * extended operation.
+ */
+ public void setRequestOID(String requestOID);
+
+
+
+ /**
+ * 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 value for the request associated with this extended
+ * operation.
+ *
+ * @param requestValue The value for the request associated with
+ * this extended operation.
+ */
+ public void setRequestValue(ASN1OctetString requestValue);
+
+
+
+ /**
+ * 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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseModifyDNOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseModifyDNOperation.java
new file mode 100644
index 0000000..bc5ec6f
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseModifyDNOperation.java
@@ -0,0 +1,135 @@
+/*
+ * 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;
+
+
+
+/**
+ * This class defines a set of methods that are available for use by
+ * pre-parse 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 PreParseModifyDNOperation
+ extends PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the raw, unprocessed entry DN as included in the client
+ * request. 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);
+
+
+
+ /**
+ * 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();
+
+
+
+ /**
+ * 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.
+ *
+ * @param rawNewRDN The raw, unprocessed newRDN as included in the
+ * request from the client.
+ */
+ public void setRawNewRDN(ByteString rawNewRDN);
+
+
+
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies whether the current RDN value should be removed from
+ * the entry.
+ *
+ * @param deleteOldRDN Specifies whether the current RDN value
+ * should be removed from the entry.
+ */
+ public void setDeleteOldRDN(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();
+
+
+
+ /**
+ * 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.
+ *
+ * @param rawNewSuperior The raw, unprocessed newSuperior as
+ * provided in the request from the client.
+ */
+ public void setRawNewSuperior(ByteString rawNewSuperior);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java
new file mode 100644
index 0000000..c994d73
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java
@@ -0,0 +1,105 @@
+/*
+ * 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.ByteString;
+
+
+
+/**
+ * This class defines a set of methods that are available for use by
+ * pre-parse 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 PreParseModifyOperation
+ extends PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the raw, unprocessed entry DN as included in the client
+ * request.
+ *
+ * @param rawEntryDN The raw, unprocessed entry DN as included in
+ * the client request.
+ */
+ public void setRawEntryDN(ByteString rawEntryDN);
+
+
+
+ /**
+ * 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();
+
+
+
+ /**
+ * Adds the provided modification to the set of raw modifications
+ * for this modify operation.
+ *
+ * @param rawModification The modification to add to the set of
+ * raw modifications for this modify
+ * operation.
+ */
+ public void addRawModification(LDAPModification rawModification);
+
+
+
+ /**
+ * Specifies the set of raw modifications for this modify operation.
+ *
+ * @param rawModifications The raw modifications for this modify
+ * operation.
+ */
+ public void setRawModifications(
+ List<LDAPModification> rawModifications);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseOperation.java
new file mode 100644
index 0000000..1ca15e3
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseOperation.java
@@ -0,0 +1,422 @@
+/*
+ * 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-parse 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 PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Adds the provided control to the set of request controls for this
+ * operation.
+ *
+ * @param control The control to add to the set of request
+ * controls for this operation.
+ */
+ public void addRequestControl(Control control);
+
+
+
+ /**
+ * Removes the provided control from the set of request controls for
+ * this operation.
+ *
+ * @param control The control to remove from the set of request
+ * controls for this operation.
+ */
+ public void removeRequestControl(Control control);
+
+
+
+ /**
+ * 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 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);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java
new file mode 100644
index 0000000..c1ae12f
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java
@@ -0,0 +1,209 @@
+/*
+ * 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.SearchScope;
+
+
+
+/**
+ * This class defines a set of methods that are available for use by
+ * pre-parse 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 PreParseSearchOperation
+ extends PreParseOperation
+{
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the raw, unprocessed base DN for this search operation.
+ *
+ * @param rawBaseDN The raw, unprocessed base DN for this search
+ operation.
+ */
+ public void setRawBaseDN(ByteString rawBaseDN);
+
+
+
+ /**
+ * Retrieves the scope for this search operation.
+ *
+ * @return The scope for this search operation.
+ */
+ public SearchScope getScope();
+
+
+
+ /**
+ * Specifies the scope for this search operation.
+ *
+ * @param scope The scope for this search operation.
+ */
+ public void setScope(SearchScope scope);
+
+
+
+ /**
+ * Retrieves the alias dereferencing policy for this search
+ * operation.
+ *
+ * @return The alias dereferencing policy for this search
+ * operation.
+ */
+ public DereferencePolicy getDerefPolicy();
+
+
+
+ /**
+ * Specifies the alias dereferencing policy for this search
+ * operation.
+ *
+ * @param derefPolicy The alias dereferencing policy for this
+ * search operation.
+ */
+ public void setDerefPolicy(DereferencePolicy derefPolicy);
+
+
+
+ /**
+ * Retrieves the size limit for this search operation.
+ *
+ * @return The size limit for this search operation.
+ */
+ public int getSizeLimit();
+
+
+
+ /**
+ * Specifies the size limit for this search operation.
+ *
+ * @param sizeLimit The size limit for this search operation.
+ */
+ public void setSizeLimit(int sizeLimit);
+
+
+
+ /**
+ * Retrieves the time limit for this search operation.
+ *
+ * @return The time limit for this search operation.
+ */
+ public int getTimeLimit();
+
+
+
+ /**
+ * Specifies the time limit for this search operation.
+ *
+ * @param timeLimit The time limit for this search operation.
+ */
+ public void setTimeLimit(int timeLimit);
+
+
+
+ /**
+ * Retrieves the typesOnly flag for this search operation.
+ *
+ * @return The typesOnly flag for this search operation.
+ */
+ public boolean getTypesOnly();
+
+
+
+ /**
+ * Specifies the typesOnly flag for this search operation.
+ *
+ * @param typesOnly The typesOnly flag for this search operation.
+ */
+ public void setTypesOnly(boolean typesOnly);
+
+
+
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the raw, unprocessed search filter as included in the
+ * request from the client.
+ *
+ * @param rawFilter The raw, unprocessed search filter.
+ */
+ public void setRawFilter(LDAPFilter rawFilter);
+
+
+
+ /**
+ * 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();
+
+
+
+ /**
+ * Specifies the set of requested attributes for this search
+ * operation.
+ *
+ * @param attributes The set of requested attributes for this
+ * search operation.
+ */
+ public void setAttributes(LinkedHashSet<String> attributes);
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseUnbindOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseUnbindOperation.java
new file mode 100644
index 0000000..a483090
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseUnbindOperation.java
@@ -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
+ * pre-parse 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 PreParseUnbindOperation
+ extends PreParseOperation
+{
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java
new file mode 100644
index 0000000..6744d26
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java
@@ -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
+ * search result entry plugins. 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 SearchEntrySearchOperation
+ extends InProgressOperation
+{
+ /**
+ * 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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java
new file mode 100644
index 0000000..b2c75a4
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java
@@ -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
+ * search result reference plugins. 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 SearchReferenceSearchOperation
+ extends InProgressOperation
+{
+ /**
+ * 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();
+}
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/operation/package-info.java b/opendj-sdk/opends/src/server/org/opends/server/types/operation/package-info.java
new file mode 100644
index 0000000..4772704
--- /dev/null
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/operation/package-info.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+
+
+/**
+ * Contains a number of interfaces that are implemented by the various
+ * types of Directory Server operations. These interfaces are used to
+ * define the methods that should be available for use at various
+ * times during the operation processing (e.g., what methods are
+ * available for pre-parse versus pre-operation versus post-operation
+ * versus post-response plugins).
+ * <BR><BR>
+ * Note that none of the interfaces defined in this package are
+ * intended to be implemented by any custom code. They should be
+ * implemented only by the core Directory Server operation types.
+ */
+package org.opends.server.types.operation;
+
diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java b/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
index ed42f27..8b0574e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
@@ -47,7 +47,6 @@
import java.util.List;
import org.opends.server.api.plugin.LDIFPluginResult;
-import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.PluginConfigManager;
import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -56,6 +55,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.DebugLogCategory;
import org.opends.server.types.DebugLogSeverity;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
index 5d9e7bf..082aa90 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
@@ -40,12 +40,12 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.ConfigFileHandler;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.InitializationException;
import org.opends.server.loggers.Error;
import org.opends.server.loggers.Debug;
import org.opends.server.plugins.InvocationCounterPlugin;
import org.opends.server.types.DN;
import org.opends.server.types.FilePermission;
+import org.opends.server.types.InitializationException;
import org.opends.server.types.OperatingSystem;
import static org.testng.Assert.*;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
index 938f53f..0624757 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
@@ -32,7 +32,7 @@
import org.opends.server.TestCaseUtils;
import org.opends.server.api.Backend;
import org.opends.server.config.ConfigEntry;
-import org.opends.server.core.DirectoryException;
+import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LDIFImportConfig;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/changelog/UpdateComparatorTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/changelog/UpdateComparatorTest.java
index 106b630..12f0a47 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/changelog/UpdateComparatorTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/changelog/UpdateComparatorTest.java
@@ -34,12 +34,12 @@
import org.opends.server.core.DeleteOperation;
-import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.synchronization.ChangeNumber;
import org.opends.server.synchronization.DeleteContext;
import org.opends.server.synchronization.DeleteMsg;
import org.opends.server.synchronization.UpdateMessage;
+import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.util.TimeThread;
@@ -60,7 +60,7 @@
ChangeNumber cn1 = new ChangeNumber(1, (short) 0, (short) 1);
ChangeNumber cn2 = new ChangeNumber(TimeThread.getTime(),
(short) 123, (short) 45);
-
+
//
// Create the update messgae
InternalClientConnection connection = new InternalClientConnection();
@@ -80,7 +80,7 @@
op.setAttachment(SYNCHROCONTEXT, new DeleteContext(cn2, "uniqueid 2"));
DeleteMsg msg2 = new DeleteMsg(op);
-
+
return new Object[][] {
{msg1, msg1, 0},
{msg1, msg2, -1},
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java
index a81c501..5bbb1c6 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java
@@ -67,6 +67,8 @@
import org.opends.server.protocols.ldap.ModifyDNResponseProtocolOp;
import org.opends.server.protocols.ldap.SearchRequestProtocolOp;
import org.opends.server.protocols.ldap.SearchResultDoneProtocolOp;
+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.Entry;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
index 38c01d7..6714e0b 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
@@ -61,6 +61,7 @@
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
+import org.opends.server.types.OperationType;
import org.opends.server.types.ResultCode;
import static org.testng.Assert.*;
@@ -353,32 +354,18 @@
/**
- * Tests the <CODE>getBindDN</CODE> and <CODE>setBindDN</CODE> methods on bind
- * operations using simple authentication.
+ * Tests the <CODE>getBindDN</CODE> method on bind operations using simple
+ * authentication.
*
* @param o The bind operation to be tested.
*
* @throws Exception If an unexpected problem occurs.
*/
@Test(dataProvider = "simpleBinds")
- public void testGetAndSetBindDNSimple(BindOperation o)
+ public void testGetBindDNSimple(BindOperation o)
throws Exception
{
- DN originalDN = o.getBindDN();
-
- o.setBindDN(null);
- assertNull(o.getBindDN());
-
- o.setBindDN(new DN());
- assertNotNull(o.getBindDN());
- assertTrue(o.getBindDN().isNullDN());
-
- o.setBindDN(DN.decode("cn=Directory Manager"));
- assertNotNull(o.getBindDN());
- assertEquals(o.getBindDN(), DN.decode("cn=Directory Manager"));
-
- o.setBindDN(originalDN);
- assertEquals(o.getBindDN(), originalDN);
+ o.getBindDN();
}
@@ -904,6 +891,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString(), 3,
@@ -943,6 +931,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString(), 3,
@@ -983,6 +972,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString(), 3,
@@ -1023,6 +1013,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString(), 3,
@@ -1062,6 +1053,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString("cn=Directory Manager"),
@@ -1101,6 +1093,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString("cn=Directory Manager"),
@@ -1141,6 +1134,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString("cn=Directory Manager"),
@@ -1181,6 +1175,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString("cn=Directory Manager"),
@@ -1220,6 +1215,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
ASN1OctetString saslCreds =
new ASN1OctetString("\u0000dn:cn=Directory Manager\u0000password");
@@ -1260,6 +1256,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
ASN1OctetString saslCreds =
new ASN1OctetString("\u0000dn:cn=Directory Manager\u0000password");
@@ -1301,6 +1298,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
ASN1OctetString saslCreds =
new ASN1OctetString("\u0000dn:cn=Directory Manager\u0000password");
@@ -1342,6 +1340,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
ASN1OctetString saslCreds =
new ASN1OctetString("\u0000dn:cn=Directory Manager\u0000password");
@@ -1384,6 +1383,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString(), 3,
@@ -1418,6 +1418,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString(), 3,
@@ -1453,6 +1454,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString("cn=Directory Manager"),
@@ -1487,6 +1489,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
BindRequestProtocolOp bindRequest =
new BindRequestProtocolOp(new ASN1OctetString("cn=Directory Manager"),
@@ -1521,6 +1524,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
ASN1OctetString saslCreds =
new ASN1OctetString("\u0000dn:cn=Directory Manager\u0000password");
@@ -1556,6 +1560,7 @@
Socket s = new Socket("127.0.0.1", (int) TestCaseUtils.getServerLdapPort());
ASN1Reader r = new ASN1Reader(s);
ASN1Writer w = new ASN1Writer(s);
+ r.setIOTimeout(6000);
ASN1OctetString saslCreds =
new ASN1OctetString("\u0000dn:cn=Directory Manager\u0000password");
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/PasswordPolicyTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/PasswordPolicyTestCase.java
index 8f0c31f..6b54dd5 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/PasswordPolicyTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/PasswordPolicyTestCase.java
@@ -48,6 +48,7 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
import org.opends.server.types.ResultCode;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestAbsoluteSubtreeSpecification.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestAbsoluteSubtreeSpecification.java
index 090d8ea..4829bba 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestAbsoluteSubtreeSpecification.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestAbsoluteSubtreeSpecification.java
@@ -29,6 +29,7 @@
import static org.testng.AssertJUnit.assertEquals;
import org.opends.server.api.SubtreeSpecification;
+import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.testng.annotations.Test;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandlerTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandlerTestCase.java
index e88550c..64054b0 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandlerTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandlerTestCase.java
@@ -41,7 +41,6 @@
import org.opends.server.core.AddOperation;
import org.opends.server.core.BindOperation;
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.tools.LDAPSearch;
@@ -49,6 +48,7 @@
import org.opends.server.types.Control;
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.testng.Assert.*;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandlerTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandlerTestCase.java
index 56f7546..436375b 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandlerTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandlerTestCase.java
@@ -42,7 +42,6 @@
import org.opends.server.core.BindOperation;
import org.opends.server.core.DeleteOperation;
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.tools.LDAPSearch;
@@ -50,6 +49,7 @@
import org.opends.server.types.Control;
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.testng.Assert.*;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandlerTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandlerTestCase.java
index 303b454..56fd41a 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandlerTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandlerTestCase.java
@@ -39,10 +39,10 @@
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.types.AccountStatusNotificationType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import static org.testng.Assert.*;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
index 77943f7..05df703 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
@@ -40,9 +40,7 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
import org.opends.server.core.AddOperation;
-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.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.ldap.LDAPAttribute;
@@ -51,8 +49,10 @@
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.InitializationException;
import org.opends.server.types.ModificationType;
import org.opends.server.types.ResultCode;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExternalSASLMechanismHandlerTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExternalSASLMechanismHandlerTestCase.java
index 9023107..87764be 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExternalSASLMechanismHandlerTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExternalSASLMechanismHandlerTestCase.java
@@ -44,7 +44,6 @@
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.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Reader;
@@ -57,6 +56,7 @@
import org.opends.server.types.Attribute;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
import org.opends.server.types.ResultCode;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedKeyManagerProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedKeyManagerProviderTestCase.java
index a13b4b9..2a6f6b8 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedKeyManagerProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedKeyManagerProviderTestCase.java
@@ -41,9 +41,9 @@
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.types.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import static org.testng.Assert.*;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedTrustManagerProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedTrustManagerProviderTestCase.java
index 3f2b4e0..c20b003 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedTrustManagerProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/FileBasedTrustManagerProviderTestCase.java
@@ -41,9 +41,9 @@
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.types.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import static org.testng.Assert.*;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/LengthBasedPasswordValidatorTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/LengthBasedPasswordValidatorTestCase.java
index c417664..3c57f29 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/LengthBasedPasswordValidatorTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/LengthBasedPasswordValidatorTestCase.java
@@ -39,7 +39,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.ModifyOperation;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.internal.InternalClientConnection;
@@ -47,6 +46,7 @@
import org.opends.server.types.Control;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java
index 17bb73b..03bbdfa 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java
@@ -42,7 +42,6 @@
import org.opends.server.core.BindOperation;
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.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -59,6 +58,7 @@
import org.opends.server.types.Control;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
import org.opends.server.types.ResultCode;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordStorageSchemeTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordStorageSchemeTestCase.java
index 9d33825..ab3ce55 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordStorageSchemeTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/PasswordStorageSchemeTestCase.java
@@ -35,12 +35,12 @@
import org.opends.server.TestCaseUtils;
import org.opends.server.api.PasswordStorageScheme;
import org.opends.server.config.ConfigEntry;
-import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.schema.AuthPasswordSyntax;
import org.opends.server.schema.UserPasswordSyntax;
import org.opends.server.types.ByteString;
+import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import static org.testng.Assert.*;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/RandomPasswordGeneratorTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/RandomPasswordGeneratorTestCase.java
index a56cc7c..598dc9a 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/RandomPasswordGeneratorTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/RandomPasswordGeneratorTestCase.java
@@ -38,9 +38,9 @@
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.types.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import static org.testng.Assert.*;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java
index 4801e4d..ff130f3 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java
@@ -37,21 +37,13 @@
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.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.ModifyOperation;
-import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
-import org.opends.server.core.SearchOperation;
import org.opends.server.protocols.asn1.ASN1Long;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Control;
import org.opends.server.types.ResultCode;
+import org.opends.server.types.operation.*;
@@ -125,7 +117,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(AddOperation addOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationAddOperation addOperation)
{
return doPreOperationInternal(addOperation);
}
@@ -136,7 +129,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(BindOperation bindOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationBindOperation bindOperation)
{
return doPreOperationInternal(bindOperation);
}
@@ -147,8 +141,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(CompareOperation
- compareOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationCompareOperation compareOperation)
{
return doPreOperationInternal(compareOperation);
}
@@ -159,8 +153,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(DeleteOperation
- deleteOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationDeleteOperation deleteOperation)
{
return doPreOperationInternal(deleteOperation);
}
@@ -171,8 +165,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ExtendedOperation
- extendedOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationExtendedOperation extendedOperation)
{
return doPreOperationInternal(extendedOperation);
}
@@ -183,8 +177,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ModifyOperation
- modifyOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationModifyOperation modifyOperation)
{
return doPreOperationInternal(modifyOperation);
}
@@ -195,8 +189,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ModifyDNOperation
- modifyDNOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
{
return doPreOperationInternal(modifyDNOperation);
}
@@ -207,8 +201,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(SearchOperation
- searchOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationSearchOperation searchOperation)
{
return doPreOperationInternal(searchOperation);
}
@@ -225,7 +219,8 @@
*
* @return The result of the plugin processing.
*/
- private PreOperationPluginResult doPreOperationInternal(Operation operation)
+ private PreOperationPluginResult
+ doPreOperationInternal(PreOperationOperation operation)
{
long delayDuration = 0L;
List<Control> requestControls = operation.getRequestControls();
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java
index bea935b..fb80627 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java
@@ -32,6 +32,7 @@
import java.util.List;
import java.util.Set;
+import org.opends.server.api.ClientConnection;
import org.opends.server.api.plugin.DirectoryServerPlugin;
import org.opends.server.api.plugin.PluginType;
import org.opends.server.api.plugin.PostOperationPluginResult;
@@ -40,22 +41,12 @@
import org.opends.server.api.plugin.PreParsePluginResult;
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.ModifyOperation;
-import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
-import org.opends.server.core.SearchOperation;
-import org.opends.server.core.UnbindOperation;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Control;
import org.opends.server.types.DisconnectReason;
+import org.opends.server.types.operation.*;
@@ -166,9 +157,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(AbandonOperation abandonOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseAbandonOperation abandonOperation)
{
- if (disconnectInternal(abandonOperation, "PreParse"))
+ if (disconnectInternal(abandonOperation.getClientConnection(),
+ abandonOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -184,9 +177,10 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(AddOperation addOperation)
+ public PreParsePluginResult doPreParse(PreParseAddOperation addOperation)
{
- if (disconnectInternal(addOperation, "PreParse"))
+ if (disconnectInternal(addOperation.getClientConnection(),
+ addOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -202,9 +196,10 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(BindOperation bindOperation)
+ public PreParsePluginResult doPreParse(PreParseBindOperation bindOperation)
{
- if (disconnectInternal(bindOperation, "PreParse"))
+ if (disconnectInternal(bindOperation.getClientConnection(),
+ bindOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -220,9 +215,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(CompareOperation compareOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseCompareOperation compareOperation)
{
- if (disconnectInternal(compareOperation, "PreParse"))
+ if (disconnectInternal(compareOperation.getClientConnection(),
+ compareOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -238,9 +235,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(DeleteOperation deleteOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseDeleteOperation deleteOperation)
{
- if (disconnectInternal(deleteOperation, "PreParse"))
+ if (disconnectInternal(deleteOperation.getClientConnection(),
+ deleteOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -256,9 +255,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ExtendedOperation extendedOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseExtendedOperation extendedOperation)
{
- if (disconnectInternal(extendedOperation, "PreParse"))
+ if (disconnectInternal(extendedOperation.getClientConnection(),
+ extendedOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -274,9 +275,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ModifyOperation modifyOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseModifyOperation modifyOperation)
{
- if (disconnectInternal(modifyOperation, "PreParse"))
+ if (disconnectInternal(modifyOperation.getClientConnection(),
+ modifyOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -292,9 +295,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ModifyDNOperation modifyDNOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseModifyDNOperation modifyDNOperation)
{
- if (disconnectInternal(modifyDNOperation, "PreParse"))
+ if (disconnectInternal(modifyDNOperation.getClientConnection(),
+ modifyDNOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -310,9 +315,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(SearchOperation searchOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseSearchOperation searchOperation)
{
- if (disconnectInternal(searchOperation, "PreParse"))
+ if (disconnectInternal(searchOperation.getClientConnection(),
+ searchOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -328,9 +335,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(UnbindOperation unbindOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseUnbindOperation unbindOperation)
{
- if (disconnectInternal(unbindOperation, "PreParse"))
+ if (disconnectInternal(unbindOperation.getClientConnection(),
+ unbindOperation.getRequestControls(), "PreParse"))
{
return new PreParsePluginResult(true, false, false);
}
@@ -346,9 +355,11 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(AddOperation addOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationAddOperation addOperation)
{
- if (disconnectInternal(addOperation, "PreOperation"))
+ if (disconnectInternal(addOperation.getClientConnection(),
+ addOperation.getRequestControls(), "PreOperation"))
{
return new PreOperationPluginResult(true, false, false);
}
@@ -364,9 +375,11 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(BindOperation bindOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationBindOperation bindOperation)
{
- if (disconnectInternal(bindOperation, "PreOperation"))
+ if (disconnectInternal(bindOperation.getClientConnection(),
+ bindOperation.getRequestControls(), "PreOperation"))
{
return new PreOperationPluginResult(true, false, false);
}
@@ -382,10 +395,12 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(CompareOperation
- compareOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationCompareOperation compareOperation)
{
- if (disconnectInternal(compareOperation, "PreOperation"))
+ if (disconnectInternal(compareOperation.getClientConnection(),
+ compareOperation.getRequestControls(),
+ "PreOperation"))
{
return new PreOperationPluginResult(true, false, false);
}
@@ -401,10 +416,12 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(DeleteOperation
- deleteOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationDeleteOperation deleteOperation)
{
- if (disconnectInternal(deleteOperation, "PreOperation"))
+ if (disconnectInternal(deleteOperation.getClientConnection(),
+ deleteOperation.getRequestControls(),
+ "PreOperation"))
{
return new PreOperationPluginResult(true, false, false);
}
@@ -420,10 +437,12 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ExtendedOperation
- extendedOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationExtendedOperation extendedOperation)
{
- if (disconnectInternal(extendedOperation, "PreOperation"))
+ if (disconnectInternal(extendedOperation.getClientConnection(),
+ extendedOperation.getRequestControls(),
+ "PreOperation"))
{
return new PreOperationPluginResult(true, false, false);
}
@@ -439,10 +458,12 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ModifyOperation
- modifyOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationModifyOperation modifyOperation)
{
- if (disconnectInternal(modifyOperation, "PreOperation"))
+ if (disconnectInternal(modifyOperation.getClientConnection(),
+ modifyOperation.getRequestControls(),
+ "PreOperation"))
{
return new PreOperationPluginResult(true, false, false);
}
@@ -458,10 +479,12 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ModifyDNOperation
- modifyDNOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
{
- if (disconnectInternal(modifyDNOperation, "PreOperation"))
+ if (disconnectInternal(modifyDNOperation.getClientConnection(),
+ modifyDNOperation.getRequestControls(),
+ "PreOperation"))
{
return new PreOperationPluginResult(true, false, false);
}
@@ -477,10 +500,12 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(SearchOperation
- searchOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationSearchOperation searchOperation)
{
- if (disconnectInternal(searchOperation, "PreOperation"))
+ if (disconnectInternal(searchOperation.getClientConnection(),
+ searchOperation.getRequestControls(),
+ "PreOperation"))
{
return new PreOperationPluginResult(true, false, false);
}
@@ -496,10 +521,12 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(AbandonOperation
- abandonOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationAbandonOperation abandonOperation)
{
- if (disconnectInternal(abandonOperation, "PreOperation"))
+ if (disconnectInternal(abandonOperation.getClientConnection(),
+ abandonOperation.getRequestControls(),
+ "PreOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -515,9 +542,11 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(AddOperation addOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationAddOperation addOperation)
{
- if (disconnectInternal(addOperation, "PostOperation"))
+ if (disconnectInternal(addOperation.getClientConnection(),
+ addOperation.getRequestControls(), "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -533,9 +562,11 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(BindOperation bindOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationBindOperation bindOperation)
{
- if (disconnectInternal(bindOperation, "PostOperation"))
+ if (disconnectInternal(bindOperation.getClientConnection(),
+ bindOperation.getRequestControls(), "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -551,10 +582,12 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(CompareOperation
- compareOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationCompareOperation compareOperation)
{
- if (disconnectInternal(compareOperation, "PostOperation"))
+ if (disconnectInternal(compareOperation.getClientConnection(),
+ compareOperation.getRequestControls(),
+ "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -570,10 +603,12 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(DeleteOperation
- deleteOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationDeleteOperation deleteOperation)
{
- if (disconnectInternal(deleteOperation, "PostOperation"))
+ if (disconnectInternal(deleteOperation.getClientConnection(),
+ deleteOperation.getRequestControls(),
+ "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -589,10 +624,12 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(ExtendedOperation
- extendedOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationExtendedOperation extendedOperation)
{
- if (disconnectInternal(extendedOperation, "PostOperation"))
+ if (disconnectInternal(extendedOperation.getClientConnection(),
+ extendedOperation.getRequestControls(),
+ "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -608,10 +645,12 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(ModifyOperation
- modifyOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationModifyOperation modifyOperation)
{
- if (disconnectInternal(modifyOperation, "PostOperation"))
+ if (disconnectInternal(modifyOperation.getClientConnection(),
+ modifyOperation.getRequestControls(),
+ "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -627,10 +666,12 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(ModifyDNOperation
- modifyDNOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationModifyDNOperation modifyDNOperation)
{
- if (disconnectInternal(modifyDNOperation, "PostOperation"))
+ if (disconnectInternal(modifyDNOperation.getClientConnection(),
+ modifyDNOperation.getRequestControls(),
+ "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -646,10 +687,12 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(SearchOperation
- searchOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationSearchOperation searchOperation)
{
- if (disconnectInternal(searchOperation, "PostOperation"))
+ if (disconnectInternal(searchOperation.getClientConnection(),
+ searchOperation.getRequestControls(),
+ "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -665,10 +708,12 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(UnbindOperation
- unbindOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationUnbindOperation unbindOperation)
{
- if (disconnectInternal(unbindOperation, "PostOperation"))
+ if (disconnectInternal(unbindOperation.getClientConnection(),
+ unbindOperation.getRequestControls(),
+ "PostOperation"))
{
return new PostOperationPluginResult(true, false);
}
@@ -684,9 +729,11 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(AddOperation addOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseAddOperation addOperation)
{
- if (disconnectInternal(addOperation, "PostResponse"))
+ if (disconnectInternal(addOperation.getClientConnection(),
+ addOperation.getRequestControls(), "PostResponse"))
{
return new PostResponsePluginResult(true, false);
}
@@ -702,9 +749,11 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(BindOperation bindOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseBindOperation bindOperation)
{
- if (disconnectInternal(bindOperation, "PostResponse"))
+ if (disconnectInternal(bindOperation.getClientConnection(),
+ bindOperation.getRequestControls(), "PostResponse"))
{
return new PostResponsePluginResult(true, false);
}
@@ -720,10 +769,12 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(CompareOperation
- compareOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseCompareOperation compareOperation)
{
- if (disconnectInternal(compareOperation, "PostResponse"))
+ if (disconnectInternal(compareOperation.getClientConnection(),
+ compareOperation.getRequestControls(),
+ "PostResponse"))
{
return new PostResponsePluginResult(true, false);
}
@@ -739,10 +790,12 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(DeleteOperation
- deleteOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseDeleteOperation deleteOperation)
{
- if (disconnectInternal(deleteOperation, "PostResponse"))
+ if (disconnectInternal(deleteOperation.getClientConnection(),
+ deleteOperation.getRequestControls(),
+ "PostResponse"))
{
return new PostResponsePluginResult(true, false);
}
@@ -758,10 +811,12 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(ExtendedOperation
- extendedOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseExtendedOperation extendedOperation)
{
- if (disconnectInternal(extendedOperation, "PostResponse"))
+ if (disconnectInternal(extendedOperation.getClientConnection(),
+ extendedOperation.getRequestControls(),
+ "PostResponse"))
{
return new PostResponsePluginResult(true, false);
}
@@ -777,10 +832,12 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(ModifyOperation
- modifyOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseModifyOperation modifyOperation)
{
- if (disconnectInternal(modifyOperation, "PostResponse"))
+ if (disconnectInternal(modifyOperation.getClientConnection(),
+ modifyOperation.getRequestControls(),
+ "PostResponse"))
{
return new PostResponsePluginResult(true, false);
}
@@ -796,10 +853,12 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(ModifyDNOperation
- modifyDNOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseModifyDNOperation modifyDNOperation)
{
- if (disconnectInternal(modifyDNOperation, "PostResponse"))
+ if (disconnectInternal(modifyDNOperation.getClientConnection(),
+ modifyDNOperation.getRequestControls(),
+ "PostResponse"))
{
return new PostResponsePluginResult(true, false);
}
@@ -815,10 +874,12 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(SearchOperation
- searchOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseSearchOperation searchOperation)
{
- if (disconnectInternal(searchOperation, "PostResponse"))
+ if (disconnectInternal(searchOperation.getClientConnection(),
+ searchOperation.getRequestControls(),
+ "PostResponse"))
{
return new PostResponsePluginResult(true, false);
}
@@ -840,9 +901,10 @@
* @return <CODE>true</CODE> if the client connection was terminated, or
* <CODE>false</CODE> if it was not.
*/
- private boolean disconnectInternal(Operation operation, String section)
+ private boolean disconnectInternal(ClientConnection clientConnection,
+ List<Control> requestControls,
+ String section)
{
- List<Control> requestControls = operation.getRequestControls();
if (requestControls != null)
{
for (Control c : requestControls)
@@ -851,8 +913,7 @@
{
if (c.getValue().stringValue().equalsIgnoreCase(section))
{
- operation.getClientConnection().disconnect(
- DisconnectReason.CLOSED_BY_PLUGIN, true,
+ clientConnection.disconnect(DisconnectReason.CLOSED_BY_PLUGIN, true,
"Closed by disconnect client plugin (section " + section + ")",
-1);
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/InvocationCounterPlugin.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/InvocationCounterPlugin.java
index 800e9e7..123b6ab 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/InvocationCounterPlugin.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/InvocationCounterPlugin.java
@@ -48,18 +48,7 @@
import org.opends.server.api.plugin.SearchReferencePluginResult;
import org.opends.server.api.plugin.StartupPluginResult;
import org.opends.server.config.ConfigEntry;
-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.ModifyOperation;
-import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
-import org.opends.server.core.SearchOperation;
-import org.opends.server.core.UnbindOperation;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.Entry;
import org.opends.server.types.IntermediateResponse;
@@ -67,6 +56,7 @@
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.types.SearchResultReference;
+import org.opends.server.types.operation.*;
@@ -143,7 +133,8 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(AbandonOperation abandonOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseAbandonOperation abandonOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -155,7 +146,7 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(AddOperation addOperation)
+ public PreParsePluginResult doPreParse(PreParseAddOperation addOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -167,7 +158,7 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(BindOperation bindOperation)
+ public PreParsePluginResult doPreParse(PreParseBindOperation bindOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -179,7 +170,8 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(CompareOperation compareOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseCompareOperation compareOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -191,7 +183,8 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(DeleteOperation deleteOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseDeleteOperation deleteOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -203,7 +196,8 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ExtendedOperation extendedOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseExtendedOperation extendedOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -215,7 +209,8 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ModifyOperation modifyOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseModifyOperation modifyOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -227,7 +222,8 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ModifyDNOperation modifyDNOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseModifyDNOperation modifyDNOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -239,7 +235,8 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(SearchOperation searchOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseSearchOperation searchOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -251,7 +248,8 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(UnbindOperation unbindOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseUnbindOperation unbindOperation)
{
preParseCounter.incrementAndGet();
return new PreParsePluginResult();
@@ -289,7 +287,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(AddOperation addOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationAddOperation addOperation)
{
preOperationCounter.incrementAndGet();
return new PreOperationPluginResult();
@@ -301,7 +300,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(BindOperation bindOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationBindOperation bindOperation)
{
preOperationCounter.incrementAndGet();
return new PreOperationPluginResult();
@@ -313,8 +313,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(CompareOperation
- compareOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationCompareOperation compareOperation)
{
preOperationCounter.incrementAndGet();
return new PreOperationPluginResult();
@@ -326,8 +326,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(DeleteOperation
- deleteOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationDeleteOperation deleteOperation)
{
preOperationCounter.incrementAndGet();
return new PreOperationPluginResult();
@@ -339,8 +339,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ExtendedOperation
- extendedOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationExtendedOperation extendedOperation)
{
preOperationCounter.incrementAndGet();
return new PreOperationPluginResult();
@@ -352,8 +352,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ModifyOperation
- modifyOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationModifyOperation modifyOperation)
{
preOperationCounter.incrementAndGet();
return new PreOperationPluginResult();
@@ -365,8 +365,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ModifyDNOperation
- modifyDNOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
{
preOperationCounter.incrementAndGet();
return new PreOperationPluginResult();
@@ -378,8 +378,8 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(SearchOperation
- searchOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationSearchOperation searchOperation)
{
preOperationCounter.incrementAndGet();
return new PreOperationPluginResult();
@@ -417,8 +417,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(AbandonOperation
- abandonOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationAbandonOperation abandonOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -430,7 +430,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(AddOperation addOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationAddOperation addOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -442,7 +443,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(BindOperation bindOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationBindOperation bindOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -454,8 +456,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(CompareOperation
- compareOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationCompareOperation compareOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -467,8 +469,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(DeleteOperation
- deleteOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationDeleteOperation deleteOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -480,8 +482,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(ExtendedOperation
- extendedOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationExtendedOperation extendedOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -493,8 +495,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(ModifyOperation
- modifyOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationModifyOperation modifyOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -506,8 +508,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(ModifyDNOperation
- modifyDNOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationModifyDNOperation modifyDNOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -519,8 +521,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(SearchOperation
- searchOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationSearchOperation searchOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -532,8 +534,8 @@
* {@inheritDoc}
*/
@Override()
- public PostOperationPluginResult doPostOperation(UnbindOperation
- unbindOperation)
+ public PostOperationPluginResult
+ doPostOperation(PostOperationUnbindOperation unbindOperation)
{
postOperationCounter.incrementAndGet();
return new PostOperationPluginResult();
@@ -571,7 +573,8 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(AddOperation addOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseAddOperation addOperation)
{
postResponseCounter.incrementAndGet();
return new PostResponsePluginResult();
@@ -583,7 +586,8 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(BindOperation bindOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseBindOperation bindOperation)
{
postResponseCounter.incrementAndGet();
return new PostResponsePluginResult();
@@ -595,8 +599,8 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(CompareOperation
- compareOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseCompareOperation compareOperation)
{
postResponseCounter.incrementAndGet();
return new PostResponsePluginResult();
@@ -608,8 +612,8 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(DeleteOperation
- deleteOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseDeleteOperation deleteOperation)
{
postResponseCounter.incrementAndGet();
return new PostResponsePluginResult();
@@ -621,8 +625,8 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(ExtendedOperation
- extendedOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseExtendedOperation extendedOperation)
{
postResponseCounter.incrementAndGet();
return new PostResponsePluginResult();
@@ -634,8 +638,8 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(ModifyOperation
- modifyOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseModifyOperation modifyOperation)
{
postResponseCounter.incrementAndGet();
return new PostResponsePluginResult();
@@ -647,8 +651,8 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(ModifyDNOperation
- modifyDNOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseModifyDNOperation modifyDNOperation)
{
postResponseCounter.incrementAndGet();
return new PostResponsePluginResult();
@@ -660,8 +664,8 @@
* {@inheritDoc}
*/
@Override()
- public PostResponsePluginResult doPostResponse(SearchOperation
- searchOperation)
+ public PostResponsePluginResult
+ doPostResponse(PostResponseSearchOperation searchOperation)
{
postResponseCounter.incrementAndGet();
return new PostResponsePluginResult();
@@ -699,9 +703,9 @@
* {@inheritDoc}
*/
@Override()
- public SearchEntryPluginResult processSearchEntry(
- SearchOperation searchOperation,
- SearchResultEntry searchEntry)
+ public SearchEntryPluginResult
+ processSearchEntry(SearchEntrySearchOperation searchOperation,
+ SearchResultEntry searchEntry)
{
searchEntryCounter.incrementAndGet();
return new SearchEntryPluginResult();
@@ -740,9 +744,9 @@
* {@inheritDoc}
*/
@Override()
- public SearchReferencePluginResult processSearchReference(
- SearchOperation searchOperation,
- SearchResultReference searchReference)
+ public SearchReferencePluginResult
+ processSearchReference(SearchReferenceSearchOperation searchOperation,
+ SearchResultReference searchReference)
{
searchReferenceCounter.incrementAndGet();
return new SearchReferencePluginResult();
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java
index 33c0bd5..bb0a654 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java
@@ -38,18 +38,7 @@
import org.opends.server.api.plugin.PreParsePluginResult;
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.ModifyOperation;
-import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
-import org.opends.server.core.SearchOperation;
-import org.opends.server.core.UnbindOperation;
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1Enumerated;
import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -57,6 +46,7 @@
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Control;
import org.opends.server.types.ResultCode;
+import org.opends.server.types.operation.*;
@@ -139,9 +129,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(AbandonOperation abandonOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseAbandonOperation abandonOperation)
{
- int resultCode = shortCircuitInternal(abandonOperation, "PreParse");
+ int resultCode = shortCircuitInternal(abandonOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
abandonOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -160,9 +152,10 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(AddOperation addOperation)
+ public PreParsePluginResult doPreParse(PreParseAddOperation addOperation)
{
- int resultCode = shortCircuitInternal(addOperation, "PreParse");
+ int resultCode = shortCircuitInternal(addOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
addOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -181,9 +174,10 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(BindOperation bindOperation)
+ public PreParsePluginResult doPreParse(PreParseBindOperation bindOperation)
{
- int resultCode = shortCircuitInternal(bindOperation, "PreParse");
+ int resultCode = shortCircuitInternal(bindOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
bindOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -202,9 +196,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(CompareOperation compareOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseCompareOperation compareOperation)
{
- int resultCode = shortCircuitInternal(compareOperation, "PreParse");
+ int resultCode = shortCircuitInternal(compareOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
compareOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -223,9 +219,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(DeleteOperation deleteOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseDeleteOperation deleteOperation)
{
- int resultCode = shortCircuitInternal(deleteOperation, "PreParse");
+ int resultCode = shortCircuitInternal(deleteOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
deleteOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -244,9 +242,12 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ExtendedOperation extendedOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseExtendedOperation extendedOperation)
{
- int resultCode = shortCircuitInternal(extendedOperation, "PreParse");
+ int resultCode =
+ shortCircuitInternal(extendedOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
extendedOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -265,9 +266,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ModifyOperation modifyOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseModifyOperation modifyOperation)
{
- int resultCode = shortCircuitInternal(modifyOperation, "PreParse");
+ int resultCode = shortCircuitInternal(modifyOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
modifyOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -286,9 +289,12 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(ModifyDNOperation modifyDNOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseModifyDNOperation modifyDNOperation)
{
- int resultCode = shortCircuitInternal(modifyDNOperation, "PreParse");
+ int resultCode =
+ shortCircuitInternal(modifyDNOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
modifyDNOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -307,9 +313,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(SearchOperation searchOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseSearchOperation searchOperation)
{
- int resultCode = shortCircuitInternal(searchOperation, "PreParse");
+ int resultCode = shortCircuitInternal(searchOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
searchOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -328,9 +336,11 @@
* {@inheritDoc}
*/
@Override()
- public PreParsePluginResult doPreParse(UnbindOperation unbindOperation)
+ public PreParsePluginResult
+ doPreParse(PreParseUnbindOperation unbindOperation)
{
- int resultCode = shortCircuitInternal(unbindOperation, "PreParse");
+ int resultCode = shortCircuitInternal(unbindOperation.getRequestControls(),
+ "PreParse");
if (resultCode >= 0)
{
unbindOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -349,9 +359,11 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(AddOperation addOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationAddOperation addOperation)
{
- int resultCode = shortCircuitInternal(addOperation, "PreOperation");
+ int resultCode = shortCircuitInternal(addOperation.getRequestControls(),
+ "PreOperation");
if (resultCode >= 0)
{
addOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -370,9 +382,11 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(BindOperation bindOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationBindOperation bindOperation)
{
- int resultCode = shortCircuitInternal(bindOperation, "PreOperation");
+ int resultCode = shortCircuitInternal(bindOperation.getRequestControls(),
+ "PreOperation");
if (resultCode >= 0)
{
bindOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -391,10 +405,11 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(CompareOperation
- compareOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationCompareOperation compareOperation)
{
- int resultCode = shortCircuitInternal(compareOperation, "PreOperation");
+ int resultCode = shortCircuitInternal(compareOperation.getRequestControls(),
+ "PreOperation");
if (resultCode >= 0)
{
compareOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -413,10 +428,11 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(DeleteOperation
- deleteOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationDeleteOperation deleteOperation)
{
- int resultCode = shortCircuitInternal(deleteOperation, "PreOperation");
+ int resultCode = shortCircuitInternal(deleteOperation.getRequestControls(),
+ "PreOperation");
if (resultCode >= 0)
{
deleteOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -435,10 +451,12 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ExtendedOperation
- extendedOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationExtendedOperation extendedOperation)
{
- int resultCode = shortCircuitInternal(extendedOperation, "PreOperation");
+ int resultCode =
+ shortCircuitInternal(extendedOperation.getRequestControls(),
+ "PreOperation");
if (resultCode >= 0)
{
extendedOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -457,10 +475,11 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ModifyOperation
- modifyOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationModifyOperation modifyOperation)
{
- int resultCode = shortCircuitInternal(modifyOperation, "PreOperation");
+ int resultCode = shortCircuitInternal(modifyOperation.getRequestControls(),
+ "PreOperation");
if (resultCode >= 0)
{
modifyOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -479,10 +498,12 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(ModifyDNOperation
- modifyDNOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
{
- int resultCode = shortCircuitInternal(modifyDNOperation, "PreOperation");
+ int resultCode =
+ shortCircuitInternal(modifyDNOperation.getRequestControls(),
+ "PreOperation");
if (resultCode >= 0)
{
modifyDNOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -501,10 +522,11 @@
* {@inheritDoc}
*/
@Override()
- public PreOperationPluginResult doPreOperation(SearchOperation
- searchOperation)
+ public PreOperationPluginResult
+ doPreOperation(PreOperationSearchOperation searchOperation)
{
- int resultCode = shortCircuitInternal(searchOperation, "PreOperation");
+ int resultCode = shortCircuitInternal(searchOperation.getRequestControls(),
+ "PreOperation");
if (resultCode >= 0)
{
searchOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -529,9 +551,9 @@
* @return The result code that should be immediately sent to the client, or
* -1 if operation processing should continue as normal.
*/
- private int shortCircuitInternal(Operation operation, String section)
+ private int shortCircuitInternal(List<Control> requestControls,
+ String section)
{
- List<Control> requestControls = operation.getRequestControls();
if (requestControls != null)
{
for (Control c : requestControls)
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java
index dfe9116..ed229f7 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java
@@ -41,8 +41,6 @@
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.DirectoryServer;
@@ -56,6 +54,8 @@
import org.opends.server.protocols.ldap.LDAPModification;
import org.opends.server.types.Attribute;
import org.opends.server.types.AuthenticationInfo;
+import org.opends.server.types.CancelRequest;
+import org.opends.server.types.CancelResult;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.DN;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java
index a939589..0abe9ee 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java
@@ -27,12 +27,12 @@
package org.opends.server.schema;
import org.opends.server.api.EqualityMatchingRule;
-import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AcceptRejectWarn;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConditionResult;
+import org.opends.server.types.DirectoryException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -62,7 +62,7 @@
/**
* Get an instance of the matching rule.
- *
+ *
* @return An instance of the matching rule to test.
*/
public abstract EqualityMatchingRule getRule();
@@ -86,7 +86,7 @@
assertEquals(result, liveResult);
}
-
+
/**
* Generate data for the EqualityMatching Rule test in warn mode.
*
@@ -97,9 +97,9 @@
{
return new Object[][] {};
}
-
+
/**
- * Test the normalization and the comparison in the warning mode
+ * Test the normalization and the comparison in the warning mode
*/
@Test(dataProvider= "warnmodeEqualityMatchingRule")
public void warnmodeEqualityMatchingRules(
@@ -108,14 +108,14 @@
{
AcceptRejectWarn accept = DirectoryServer.getSyntaxEnforcementPolicy();
DirectoryServer.setSyntaxEnforcementPolicy(AcceptRejectWarn.WARN);
- try
+ try
{
equalityMatchingRules(value1, value2, result);
}
finally
{
DirectoryServer.setSyntaxEnforcementPolicy(accept);
- }
+ }
}
/**
@@ -142,7 +142,7 @@
" should detect that value \"" + value + "\" is invalid");
}
}
-
+
/**
* Generate data for the EqualityMatching Rule test.
*
@@ -153,7 +153,7 @@
{
return new Object[][] {};
}
-
+
/**
* Test the valuesMatch method used for extensible filters.
*/
@@ -175,7 +175,7 @@
assertEquals(ConditionResult.TRUE, liveResult);
else
assertEquals(ConditionResult.FALSE, liveResult);
-
+
}
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
index 57d930e..9d3c926 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
@@ -29,11 +29,11 @@
import static org.testng.Assert.*;
import org.opends.server.api.OrderingMatchingRule;
-import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
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.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -166,33 +166,33 @@
private void dummy ()
{
-
+
Object a = new Object[][] {
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
};
-
+
}
private Object dummy_invalid()
{
return new Object[][] {
-
-
+
+
};
}
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ServerStateTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ServerStateTest.java
index 40ab358..3e303fa 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ServerStateTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ServerStateTest.java
@@ -41,7 +41,6 @@
import org.opends.server.api.ClientConnection;
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;
@@ -53,6 +52,7 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.Control;
+import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
@@ -67,7 +67,7 @@
*/
public class ServerStateTest extends SynchronizationTestCase
{
-
+
/**
* Create ChangeNumber Data
*/
@@ -89,14 +89,14 @@
// Check constructor
DN dn = DN.decode("cn=com");
ServerState serverState = new ServerState(dn) ;
-
+
// Check Load
// serverState.loadState() ;
// TODO Check result
-
+
// Check getServerStateDn()
DN returned_DN = serverState.getServerStateDn();
- // TODO Check the returned DN
+ // TODO Check the returned DN
// Check update
assertFalse(serverState.update(null));
@@ -106,29 +106,29 @@
cn1 = new ChangeNumber(cn.getTime()+1,cn.getSeqnum(),cn.getServerId());
cn2 = new ChangeNumber(cn1.getTime(),cn1.getSeqnum()+1,cn1.getServerId());
cn3 = new ChangeNumber(cn2.getTime(),cn2.getSeqnum(),(short)(cn2.getServerId()+1));
-
+
assertTrue(serverState.update(cn1)) ;
assertTrue(serverState.update(cn2)) ;
assertTrue(serverState.update(cn3)) ;
-
+
// Check toStringSet
ChangeNumber[] cns = {cn2,cn3};
Set<String> stringSet = serverState.toStringSet();
- assertEquals(cns.length, stringSet.size());
+ assertEquals(cns.length, stringSet.size());
// TODO Check the value
-
+
// Check getMaxChangeNumber
assertEquals(cn2.compareTo(serverState.getMaxChangeNumber(cn2.getServerId())),0);
assertEquals(cn3.compareTo(serverState.getMaxChangeNumber(cn3.getServerId())),0);
-
+
// Check the toString
String stringRep = serverState.toString() ;
// TODO Check the value
-
+
// Check getBytes
byte[] b = serverState.getBytes();
ServerState generatedServerState = new ServerState(b,0,b.length -1) ;
assertEquals(b, generatedServerState.getBytes()) ;
-
+
}
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationMsgTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationMsgTest.java
index 3296cdb..e3d33f1 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationMsgTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationMsgTest.java
@@ -39,7 +39,6 @@
import org.opends.server.api.ClientConnection;
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;
@@ -49,6 +48,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.Modification;
import org.opends.server.types.ModificationType;
@@ -138,7 +138,7 @@
ModifyMsg msg = new ModifyMsg(changeNumber, dn, mods, "fakeuniqueid");
ModifyMsg generatedMsg = (ModifyMsg) SynchronizationMessage
.generateMsg(msg.getBytes());
-
+
assertEquals(msg.getChangeNumber(), generatedMsg.getChangeNumber());
@@ -147,7 +147,7 @@
assertEquals(op.getClass(), ModifyOperation.class);
assertEquals(generatedOperation.getClass(), ModifyOperation.class);
-
+
ModifyOperation mod1 = (ModifyOperation) op;
ModifyOperation mod2 = (ModifyOperation) generatedOperation;
@@ -161,7 +161,7 @@
// Check pending change
testPendingChange(changeNumber,op,msg);
}
-
+
/**
* Create a Update Message from the data provided above.
* The call getBytes() to test the encoding of the Msg and
@@ -176,37 +176,37 @@
DN dn = DN.decode(rawdn);
InternalClientConnection connection = new InternalClientConnection();
ModifyMsg msg = new ModifyMsg(changeNumber, dn, mods, "fakeuniqueid");;
-
+
// Check uuid
assertEquals("fakeuniqueid", msg.getUniqueId());
-
+
// Check isAssured
assertFalse(msg.isAssured());
msg.setAssured();
assertTrue(msg.isAssured());
-
+
// Check equals
ModifyMsg generatedMsg = (ModifyMsg) SynchronizationMessage
.generateMsg(msg.getBytes());
assertFalse(msg.equals(null));
assertFalse(msg.equals(new Object()));
assertTrue(msg.equals(generatedMsg));
-
+
// Check hashCode
assertEquals(msg.hashCode(), generatedMsg.hashCode());
-
+
// Check compareTo
assertEquals(msg.compareTo(generatedMsg), 0);
-
+
// Check Get / Set DN
assertTrue(dn.equals(DN.decode(msg.getDn())));
-
+
String fakeDN = "cn=fake cn";
msg.setDn(fakeDN) ;
assertEquals(msg.getDn(), fakeDN) ;
}
-
+
/**
* Build some data for the DeleteMsg test below.
* @throws DirectoryException
@@ -238,7 +238,7 @@
DeleteMsg msg = new DeleteMsg(op);
DeleteMsg generatedMsg = (DeleteMsg) SynchronizationMessage
.generateMsg(msg.getBytes());
-
+
assertEquals(msg.toString(), generatedMsg.toString());
assertEquals(msg.getChangeNumber(), generatedMsg.getChangeNumber());
@@ -250,7 +250,7 @@
DeleteOperation mod2 = (DeleteOperation) generatedOperation;
assertEquals(op.getRawEntryDN(), mod2.getRawEntryDN());
-
+
// Create an update message from this op
DeleteMsg updateMsg = (DeleteMsg) UpdateMessage.generateMsg(op, true);
assertEquals(msg.getChangeNumber(), updateMsg.getChangeNumber());
@@ -295,7 +295,7 @@
assertEquals(op.getRawNewRDN(), mod2.getRawNewRDN());
assertEquals(op.deleteOldRDN(), mod2.deleteOldRDN());
assertEquals(op.getRawNewSuperior(), mod2.getRawNewSuperior());
-
+
// Create an update message from this op
ModifyDNMsg updateMsg = (ModifyDNMsg) UpdateMessage.generateMsg(op, true);
assertEquals(msg.getChangeNumber(), updateMsg.getChangeNumber());
@@ -320,7 +320,7 @@
Attribute objectClass =
new Attribute(DirectoryServer.getObjectClassAttributeType(),
"objectClass", ocValues);
- HashMap<ObjectClass,String> objectClassList=
+ HashMap<ObjectClass,String> objectClassList=
new HashMap<ObjectClass,String>();
objectClassList.put(DirectoryServer.getObjectClass("organization"),
"organization");
@@ -331,7 +331,7 @@
values.add(new AttributeValue(org, "com"));
Attribute attr = new Attribute(org, "o", values);
userAttributes.add(attr);
- HashMap<AttributeType,List<Attribute>> userAttList=
+ HashMap<AttributeType,List<Attribute>> userAttList=
new HashMap<AttributeType,List<Attribute>>();
userAttList.put(org,userAttributes);
@@ -342,7 +342,7 @@
values.add(new AttributeValue(org, "dc=creator"));
attr = new Attribute(org, "creatorsname", values);
operationalAttributes.add(attr);
- HashMap<AttributeType,List<Attribute>> opList=
+ HashMap<AttributeType,List<Attribute>> opList=
new HashMap<AttributeType,List<Attribute>>();
opList.put(org,operationalAttributes);
@@ -357,17 +357,17 @@
assertEquals(msg.getBytes(), generatedMsg.getBytes());
assertEquals(msg.toString(), generatedMsg.toString());
// TODO : should test that generated attributes match original attributes.
-
+
// Create an new Add Operation from the current addMsg
InternalClientConnection connection = new InternalClientConnection();
AddOperation addOp = msg.createOperation(connection, rawDN) ;
// TODO : should test that generated attributes match original attributes.
// List<LDAPAttribute> rawAtt = addOp.getRawAttributes();
-
-
+
+
assertEquals(msg.getBytes(), generatedMsg.getBytes());
assertEquals(msg.toString(), generatedMsg.toString());
-
+
//Create an Add operation and generate and Add msg from it
DN dn = DN.decode(rawDN);
@@ -376,18 +376,18 @@
OperationContext opCtx = new AddContext(cn, "thisIsaUniqueID",
"parentUniqueId");
addOp.setAttachment(SYNCHROCONTEXT, opCtx);
-
+
generatedMsg = new AddMsg(addOp);
assertEquals(msg.getBytes(), generatedMsg.getBytes());
assertEquals(msg.toString(), generatedMsg.toString());
// TODO : should test that generated attributes match original attributes.
-
-
+
+
// Create an update message from this op
AddMsg updateMsg = (AddMsg) UpdateMessage.generateMsg(addOp, true);
assertEquals(msg.getChangeNumber(), updateMsg.getChangeNumber());
-
+
}
/**
@@ -439,7 +439,7 @@
// Check that retrieved CN is OK
msg2 = (AckMessage) SynchronizationMessage.generateMsg(msg1.getBytes());
}
-
+
/**
* Test PendingChange
*/
@@ -451,23 +451,23 @@
}
UpdateMessage updateMsg = (UpdateMessage) msg;
PendingChange pendingChange = new PendingChange(cn,null,null);
-
+
pendingChange.setCommitted(false);
assertFalse(pendingChange.isCommitted()) ;
pendingChange.setCommitted(true);
assertTrue(pendingChange.isCommitted()) ;
-
+
assertTrue(cn.compareTo(pendingChange.getChangeNumber()) == 0);
-
+
assertEquals(pendingChange.getMsg(), null) ;
pendingChange.setMsg(updateMsg);
assertEquals(updateMsg.getBytes(), pendingChange.getMsg().getBytes());
-
+
assertEquals(pendingChange.getOp(), null) ;
pendingChange.setOp(op);
assertEquals(op.getClass(), op.getClass());
-
+
}
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
index a499602..34e7dff 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
@@ -47,7 +47,6 @@
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.Operation;
-import org.opends.server.core.OperationType;
import org.opends.server.protocols.internal.InternalClientConnection;
@@ -58,6 +57,7 @@
import org.opends.server.types.Entry;
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;
@@ -111,11 +111,11 @@
* schema check flag
*/
private boolean schemaCheck;
-
+
// WORKAROUND FOR BUG #639 - BEGIN -
/**
- *
+ *
*/
MultimasterSynchronization mms;
@@ -125,7 +125,7 @@
/**
* Set up the environment for performing the tests in this Class.
* synchronization
- *
+ *
* @throws Exception
* If the environment could not be set up.
*/
@@ -135,14 +135,14 @@
{
// This test suite depends on having the schema available.
TestCaseUtils.startServer();
-
+
// Disable schema check
schemaCheck = DirectoryServer.checkSchema();
DirectoryServer.setCheckSchema(false);
-
+
// Create an internal connection
connection = new InternalClientConnection();
-
+
// Create backend top level entries
String[] topEntries = new String[2];
topEntries[0] = "dn: dc=example,dc=com\n" + "objectClass: top\n"
@@ -177,7 +177,7 @@
+ "ds-cfg-synchronization-provider-enabled: true\n"
+ "ds-cfg-synchronization-provider-class: org.opends.server.synchronization.MultimasterSynchronization\n";
synchroPluginEntry = TestCaseUtils.entryFromLdifString(synchroPluginLdif);
-
+
// Change log
changeLogStringDN = "cn=Changelog Server, " + synchroPluginStringDN;
String changeLogLdif = "dn: " + changeLogStringDN + "\n"
@@ -219,7 +219,7 @@
/**
* Clean up the environment. return null;
- *
+ *
* @throws Exception
* If the environment could not be set up.
*/
@@ -229,7 +229,7 @@
DirectoryServer.setCheckSchema(schemaCheck);
DeleteOperation op;
-
+
// WORKAROUND FOR BUG #639 - BEGIN -
DirectoryServer.deregisterSynchronizationProvider(mms);
mms.finalizeSynchronizationProvider();
@@ -258,14 +258,14 @@
@Test()
public void updateOperations() throws Exception
{
- //
+ //
// Add the Multimaster synchronization plugin
DirectoryServer.getConfigHandler().addEntry(synchroPluginEntry, null);
entryList.add(synchroPluginEntry);
assertNotNull(DirectoryServer.getConfigEntry(DN
.decode(synchroPluginStringDN)),
"Unable to add the Multimaster synchronization plugin");
-
+
// WORKAROUND FOR BUG #639 - BEGIN -
DN dn = DN.decode(synchroPluginStringDN);
ConfigEntry mmsConfigEntry = DirectoryServer.getConfigEntry(dn);
@@ -302,7 +302,7 @@
ServerState ss = MultimasterSynchronization
.getServerState(synchroServerDN);
// TODO Check server state field
-
+
//
// Be Client of the Change log
// We will check that the Chanlog server send us messages
@@ -322,7 +322,7 @@
SynchronizationDomain syncDomain2 = new SynchronizationDomain(
newConfigEntry);
- //
+ //
// Create an Entry (add operation)
AddOperation addOp = new AddOperation(connection,
InternalClientConnection.nextOperationID(), InternalClientConnection
@@ -333,7 +333,7 @@
entryList.add(personEntry);
assertNotNull(DirectoryServer.getEntry(personEntry.getDN()),
"The Add Entry operation fails");
-
+
// Check if the client has receive the msg
UpdateMessage msg = syncDomain2.receive() ;
Operation receivedOp = msg.createOperation(connection);
@@ -360,7 +360,7 @@
modOp.setInternalOperation(true);
modOp.run();
// TODO Check the telephoneNumber attribute
-
+
// See if the client has receive the msg
msg = syncDomain2.receive() ;
receivedOp = msg.createOperation(connection);
@@ -383,7 +383,7 @@
assertNull(DirectoryServer.getEntry(personEntry.getDN()),
"The MOD_DN operation didn't delete the old person entry");
entryList.add(DirectoryServer.getEntry(newDN));
-
+
// See if the client has receive the msg
msg = syncDomain2.receive() ;
receivedOp = msg.createOperation(connection);
@@ -391,7 +391,7 @@
"The received synchronization message is not a MODIFY_DN msg");
assertTrue(DN.decode(msg.getDn()).compareTo(personEntry.getDN()) == 0,
"The received MODIFY_DN synchronization message is not for the excepted DN");
-
+
// Delete the entry
Entry newPersonEntry = DirectoryServer.getEntry(newDN) ;
@@ -403,7 +403,7 @@
assertNull(DirectoryServer.getEntry(newDN),
"Unable to delete the new person Entry");
entryList.remove(newPersonEntry);
-
+
// See if the client has receive the msg
msg = syncDomain2.receive() ;
receivedOp = msg.createOperation(connection);
@@ -412,15 +412,15 @@
assertTrue(DN.decode(msg.getDn()).compareTo(DN
.decode("uid= new person,ou=People,dc=example,dc=com")) == 0,
"The received DELETE synchronization message is not for the excepted DN");
-
+
// Purge the client
syncDomain2.shutdown() ;
-
+
//
// Be new Client of the Change log
// We will check that when we send message to the Chanlog server
// the synchronization domain apply those changes.
-
+
// Create a new synchronization domain
String synchroServerLdif3 = "dn: cn=example3, " + synchroPluginStringDN + "\n"
+ "objectClass: top\n"
@@ -436,8 +436,8 @@
.getConfigEntry(DN.decode(synchroPluginStringDN)));
SynchronizationDomain syncDomain3 = new SynchronizationDomain(
newConfigEntry);
-
- //
+
+ //
// Message to Create the Entry
addOp = new AddOperation(connection,
InternalClientConnection.nextOperationID(), InternalClientConnection
@@ -447,7 +447,7 @@
syncDomain3.doPreOperation(addOp);
addOp.setResultCode(ResultCode.SUCCESS) ;
syncDomain3.synchronize(addOp);
-
+
// Wait no more than 1 second (synchro operation has to be sent,
// received and replay)
Entry newEntry = null ;
@@ -462,9 +462,9 @@
assertNotNull(newEntry,
"The send ADD synchronization message was not applied");
entryList.add(newEntry);
-
+
// Message to Modify the new created entry
-
+
// Unable to test it: the doPreOperation operation use
// modifyOperation.getModifiedEntry() which cannot be set the
// the public level.
@@ -479,10 +479,10 @@
syncDomain3.synchronize(modOp);
// TODO Check the telephoneNumber attribute
*/
-
+
// Purge the message sender
syncDomain3.shutdown() ;
-
+
// Check synchronization monitoring
SynchronizationDomain syncDomain = new SynchronizationDomain(
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/LdifFileWriter.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/LdifFileWriter.java
index 9dac152..3ee67c0 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/LdifFileWriter.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/LdifFileWriter.java
@@ -31,11 +31,11 @@
import org.opends.server.tools.makeldif.MakeLDIFException;
import org.opends.server.tools.makeldif.TemplateFile;
import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.util.LDIFWriter;
import org.opends.server.util.LDIFException;
-import org.opends.server.core.InitializationException;
import java.io.IOException;
import java.util.Random;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/DirectoryExceptionTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/DirectoryExceptionTestCase.java
similarity index 98%
rename from opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/DirectoryExceptionTestCase.java
rename to opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/DirectoryExceptionTestCase.java
index 6686a62..30ba356 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/DirectoryExceptionTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/DirectoryExceptionTestCase.java
@@ -24,7 +24,7 @@
*
* Portions Copyright 2006 Sun Microsystems, Inc.
*/
-package org.opends.server.core;
+package org.opends.server.types;
@@ -35,8 +35,6 @@
import org.testng.annotations.Test;
import org.opends.server.TestCaseUtils;
-import org.opends.server.types.DN;
-import org.opends.server.types.ResultCode;
import static org.testng.Assert.*;
@@ -46,7 +44,7 @@
* A set of generic test cases for the directory exception class.
*/
public class DirectoryExceptionTestCase
- extends CoreTestCase
+ extends TypesTestCase
{
/**
* Retrieves the set of result codes that may be used by the server.
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/InitializationExceptionTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/InitializationExceptionTestCase.java
similarity index 98%
rename from opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/InitializationExceptionTestCase.java
rename to opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/InitializationExceptionTestCase.java
index 8dc4b1e..af9950d 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/InitializationExceptionTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/InitializationExceptionTestCase.java
@@ -24,7 +24,7 @@
*
* Portions Copyright 2006 Sun Microsystems, Inc.
*/
-package org.opends.server.core;
+package org.opends.server.types;
@@ -40,7 +40,7 @@
* A set of generic test cases for the initialization exception class.
*/
public class InitializationExceptionTestCase
- extends CoreTestCase
+ extends TypesTestCase
{
/**
* Tests the first constructor, which takes int and String arguments.
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestDN.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestDN.java
index 93359fc..6490cd2 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestDN.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestDN.java
@@ -29,7 +29,6 @@
import static org.testng.Assert.*;
import org.opends.server.TestCaseUtils;
-import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestEntry.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestEntry.java
index 87920f3..cca595a 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestEntry.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/TestEntry.java
@@ -35,7 +35,6 @@
import org.opends.server.TestCaseUtils;
import org.opends.server.api.SubtreeSpecificationSet;
-import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.RFC3672SubtreeSpecification;
import org.opends.server.protocols.asn1.ASN1OctetString;
--
Gitblit v1.10.0