From 8b3cd28204e15e0a98ce038b355f100cd7c44e3c Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <capponi.nicolas@gmail.com>
Date: Thu, 28 Jan 2016 08:28:20 +0000
Subject: [PATCH] OPENDJ-1632 (PR-201) Migrate AttributeType in one shot
---
opendj-server-legacy/src/main/java/org/opends/server/schema/DITContentRuleSyntax.java | 15
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java | 16
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRuleImpl.java | 20
opendj-server-legacy/src/main/java/org/opends/server/plugins/PasswordPolicyImportPlugin.java | 30
opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationBasis.java | 3
opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java | 14
opendj-server-legacy/src/test/java/org/opends/server/util/TestAddChangeRecordEntry.java | 4
opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java | 96
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java | 178
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilterList.java | 4
opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendBindOperation.java | 3
opendj-server-legacy/src/test/java/org/opends/server/core/AddOperationTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/monitors/BackendMonitor.java | 3
opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTargetTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationCompareOperation.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEMonitor.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java | 21
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewIndexPanel.java | 14
opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseAddOperation.java | 3
opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicy.java | 3
opendj-server-legacy/src/main/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java | 3
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java | 6
opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java | 4
opendj-server-legacy/src/main/java/org/opends/server/core/MatchingRuleConfigManager.java | 45
opendj-server-legacy/src/main/java/org/opends/server/core/SubentryPasswordPolicy.java | 3
opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java | 4
opendj-server-legacy/src/test/java/org/opends/server/schema/BinaryAttributeSyntaxTest.java | 12
opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java | 62
opendj-server-legacy/src/main/java/org/opends/server/plugins/EntryUUIDPlugin.java | 47
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaBrowserRightPanel.java | 4
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java | 20
opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java | 307 ++
opendj-server-legacy/src/test/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyTestCase.java | 3
opendj-server-legacy/src/main/java/org/opends/server/plugins/SambaPasswordPlugin.java | 5
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java | 10
opendj-server-legacy/src/main/java/org/opends/server/api/ClientConnection.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java | 4
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEffectiveRights.java | 10
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/ResetChangeNumberTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPFilter.java | 4
opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgClient.java | 7
opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java | 201
opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalTest.java | 5
opendj-server-legacy/src/test/java/org/opends/server/schema/TimeBasedMatchingRuleTest.java | 4
opendj-server-legacy/src/main/java/org/opends/server/replication/server/ReplicationServer.java | 2
opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/TargetAttrTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfAbsentTag.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java | 404 -
opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java | 36
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/StandardAttributeTreeNode.java | 10
opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java | 4
opendj-server-legacy/src/main/java/org/opends/server/extensions/StaticGroup.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java | 4
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserDN.java | 5
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/PersistentCompressedSchema.java | 10
opendj-server-legacy/src/test/java/org/opends/server/types/SearchFilterTests.java | 4
opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java | 49
opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java | 86
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java | 55
opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperation.java | 3
opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyConflictTest.java | 3
opendj-server-legacy/src/main/java/org/opends/server/api/Backend.java | 4
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalAttributeValue.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java | 52
opendj-server-legacy/src/test/java/org/opends/server/types/TestObjectClass.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java | 24
opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java | 8
opendj-server-legacy/src/main/java/org/opends/server/admin/PropertyValueVisitor.java | 7
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/ObjectClassSyntax.java | 16
opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/PurgeConflictsHistoricalTask.java | 3
opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java | 4
opendj-server-legacy/src/main/java/org/opends/server/admin/server/ServerManagementContext.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java | 238 -
opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java | 3
opendj-server-legacy/src/main/java/org/opends/server/types/LDIFImportConfig.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/core/SearchOperationBasis.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/MatchingRuleUse.java | 4
opendj-server-legacy/src/main/java/org/opends/server/api/AttributeSyntax.java | 46
opendj-server-legacy/src/main/java/org/opends/server/config/MultiChoiceConfigAttribute.java | 19
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java | 3
opendj-server-legacy/src/main/java/org/opends/server/admin/AttributeTypePropertyDefinition.java | 4
opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java | 11
opendj-server-legacy/src/test/java/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java | 39
opendj-server-legacy/src/test/java/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java | 3
opendj-server-legacy/src/test/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/test/java/org/opends/server/admin/AttributeTypePropertyDefinitionTest.java | 4
opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgDefn.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java | 3
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/AttributeValueTag.java | 4
opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/SubEntry.java | 4
opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyState.java | 4
opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPStatistics.java | 7
opendj-server-legacy/src/main/java/org/opends/server/types/SortKey.java | 4
opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapperTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java | 3
opendj-server-legacy/src/test/java/org/opends/server/replication/UpdateOperationTest.java | 3
opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttribute.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java | 73
opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesFilter.java | 4
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/PersistentServerState.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationCompareOperation.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/SetGenerationIdTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargets.java | 4
opendj-server-legacy/src/main/java/org/opends/server/plugins/LastModPlugin.java | 3
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilters.java | 3
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java | 3
opendj-server-legacy/src/test/java/org/opends/server/admin/client/spi/PropertySetTest.java | 2
opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestLDAPConnectionHandler.java | 4
opendj-server-legacy/src/main/java/org/opends/server/core/AddOperation.java | 3
opendj-server-legacy/src/test/java/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java | 8
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java | 12
opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java | 3
opendj-server-legacy/src/main/java/org/opends/server/extensions/FingerprintCertificateMapper.java | 3
opendj-server-legacy/src/main/java/org/opends/server/plugins/SevenBitCleanPlugin.java | 3
opendj-server-legacy/src/test/java/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java | 29
opendj-server-legacy/src/main/java/org/opends/server/schema/NameFormSyntax.java | 15
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/PatternRDN.java | 3
opendj-server-legacy/src/main/java/org/opends/server/backends/ChangelogBackend.java | 6
opendj-server-legacy/src/main/java/org/opends/server/config/IntegerConfigAttribute.java | 19
opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java | 3
opendj-server-legacy/src/main/java/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java | 4
opendj-server-legacy/src/main/java/org/opends/server/extensions/DynamicGroup.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java | 5
opendj-server-legacy/replace.rb | 2
opendj-server-legacy/src/main/java/org/opends/server/extensions/EntryDNVirtualAttributeProvider.java | 3
opendj-server-legacy/src/main/java/org/opends/server/tasks/DisconnectClientTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/AttributeBuilder.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java | 4
opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeSyntaxTest.java | 13
opendj-server-legacy/src/main/java/org/opends/server/types/SearchFilter.java | 3
opendj-server-legacy/src/test/java/org/opends/server/core/SubentryManagerTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/GroupDN.java | 3
opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java | 52
opendj-server-legacy/src/test/java/org/opends/server/types/AttributeBuilderTest.java | 11
opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java | 58
opendj-server-legacy/src/main/java/org/opends/server/extensions/RegularExpressionIdentityMapper.java | 3
opendj-server-legacy/src/test/java/org/opends/server/types/EntrySchemaCheckingTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/task/RecurringTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/plugins/LDAPADListPlugin.java | 4
opendj-server-legacy/src/test/java/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java | 3
opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java | 4
opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerImpl.java | 3
opendj-server-legacy/src/main/java/org/opends/server/util/LDIFWriter.java | 3
opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationAddOperation.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractIndexPanel.java | 4
opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyReplaySingleValuedAttributeTest.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java | 16
opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgClient.java | 7
opendj-server-legacy/src/main/java/org/opends/server/monitors/TraditionalWorkQueueMonitor.java | 4
opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java | 4
opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicy.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/Attribute.java | 4
opendj-server-legacy/src/main/java/org/opends/server/extensions/AttributeValuePasswordValidator.java | 3
opendj-server-legacy/src/main/java/org/opends/server/types/AttributeDescription.java | 3
opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java | 20
opendj-server-legacy/src/main/java/org/opends/server/extensions/UserAttributeNotificationMessageTemplateElement.java | 4
opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java | 11
opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java | 53
opendj-server-legacy/src/test/java/org/opends/server/extensions/ExtensionTestUtils.java | 8
opendj-server-legacy/src/test/java/org/opends/server/util/TestLDIFReader.java | 3
opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicyState.java | 4
opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgDefn.java | 4
opendj-server-legacy/src/test/java/org/opends/server/extensions/VirtualStaticGroupTestCase.java | 3
opendj-server-legacy/src/main/java/org/opends/server/admin/ManagedObjectPath.java | 3
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java | 2
opendj-server-legacy/src/main/java/org/opends/server/extensions/ExactMatchIdentityMapper.java | 3
opendj-server-legacy/src/test/java/org/opends/server/admin/ValidateConfigDefinitionsTest.java | 9
opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesControl.java | 3
opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/ModifyCommonMsg.java | 3
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEvalContext.java | 4
opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java | 3
opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationAddOperation.java | 4
opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java | 4
opendj-server-legacy/src/main/java/org/opends/server/util/AddChangeRecordEntry.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Branch.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java | 4
opendj-server-legacy/src/main/java/org/opends/server/protocols/internal/InternalClientConnection.java | 3
opendj-server-legacy/src/test/java/org/opends/server/replication/GenerationIdTest.java | 4
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java | 3
opendj-server-legacy/src/main/java/org/opends/server/schema/MatchingRuleUseSyntax.java | 16
opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostSynchronizationAddOperation.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java | 12
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java | 8
opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java | 4
opendj-server-legacy/src/main/java/org/opends/server/plugins/ReferentialIntegrityPlugin.java | 8
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/ParentInheritance.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java | 4
opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfg.java | 7
opendj-server-legacy/src/test/java/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/api/CompressedSchema.java | 491 ++
opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java | 4
opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java | 3
opendj-server-legacy/src/main/java/org/opends/server/monitors/ConnectionHandlerMonitor.java | 3
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java | 60
opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/ProtocolCompatibilityTest.java | 7
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java | 238 -
opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java | 30
opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfg.java | 8
opendj-server-legacy/src/test/java/org/opends/server/core/TestModifyDNOperation.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java | 4
opendj-server-legacy/src/main/java/org/opends/server/config/DNConfigAttribute.java | 17
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskScheduler.java | 3
opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java | 3
opendj-server-legacy/src/main/java/org/opends/server/util/LDIFReader.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/BackupTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java | 55
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/ConfigurationAttributeTreeNode.java | 10
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java | 4
opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java | 3
opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java | 3
opendj-server-legacy/src/main/java/org/opends/server/config/ConfigEntry.java | 4
opendj-server-legacy/src/main/java/org/opends/server/controls/ServerSideSortRequestControl.java | 6
opendj-server-legacy/src/main/java/org/opends/server/config/StringConfigAttribute.java | 17
opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java | 13
opendj-server-legacy/src/test/java/org/opends/server/types/TestDN.java | 9
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaProvider.java | 17
opendj-server-legacy/src/main/java/org/opends/server/core/ModifyOperationBasis.java | 3
opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationWrapper.java | 3
opendj-server-legacy/src/main/java/org/opends/server/extensions/ExternalSASLMechanismHandler.java | 3
opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java | 3
opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/SynchronizationMsgTest.java | 3
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java | 2
opendj-server-legacy/src/main/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java | 4
opendj-server-legacy/src/test/java/org/opends/server/controls/VLVControlTestCase.java | 3
opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java | 3
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java | 9
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java | 59
opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java | 16
opendj-server-legacy/src/test/java/org/opends/server/schema/FakeEntryIndex.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateValue.java | 4
opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java | 60
opendj-server-legacy/src/test/java/org/opends/server/plugins/UniqueAttributePluginTestCase.java | 3
opendj-server-legacy/src/test/java/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java | 4
opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapperTestCase.java | 4
opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeRuleTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/monitors/ParallelWorkQueueMonitor.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java | 8
opendj-server-legacy/src/test/java/org/opends/server/core/SubentryPasswordPolicyTestCase.java | 8
opendj-server-legacy/src/main/java/org/opends/server/types/Attributes.java | 9
opendj-server-legacy/src/messages/org/opends/messages/schema.properties | 5
opendj-server-legacy/src/main/java/org/opends/server/types/CollectiveVirtualAttribute.java | 4
opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java | 29
opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyFactory.java | 3
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/IndexDescriptor.java | 4
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciHandler.java | 3
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/IndexPanel.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateLine.java | 4
opendj-server-legacy/src/main/java/org/opends/server/core/DefaultCompressedSchema.java | 8
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseCompareOperation.java | 3
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java | 3
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java | 25
opendj-server-legacy/src/main/java/org/opends/server/admin/AdministrationDataSync.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java | 3
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java | 19
opendj-server-legacy/src/main/java/org/opends/server/extensions/VirtualStaticGroup.java | 4
opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java | 33
opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java | 4
opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/AddMsg.java | 3
opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java | 62
opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrHistoricalMultipleTest.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java | 65
opendj-server-legacy/src/main/java/org/opends/server/types/LDIFExportConfig.java | 4
opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java | 1322 --------
opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java | 63
opendj-server-legacy/src/test/java/org/opends/server/types/AttributeTypeTest.java | 3
opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java | 26
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargetMatchContext.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java | 4
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java | 3
opendj-server-legacy/src/test/java/org/opends/server/controls/ServerSideSortControlTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java | 65
opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfPresentTag.java | 4
opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/resource/admin/property-types/attribute-type.xsl | 3
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java | 4
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java | 4
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java | 4
opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java | 4
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserAttr.java | 3
opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java | 3
opendj-server-legacy/src/main/java/org/opends/server/controls/GetEffectiveRightsRequestControl.java | 14
opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttributeRule.java | 3
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Template.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java | 1573 +++++----
opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java | 34
opendj-server-legacy/src/test/java/org/opends/server/plugins/DelayPreOpPlugin.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tasks/RebuildTask.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateFile.java | 4
opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationWrapper.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java | 19
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexFilter.java | 4
opendj-server-legacy/src/test/java/org/opends/server/plugins/UpdatePreOpPlugin.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/DN.java | 11
opendj-server-legacy/src/main/java/org/opends/server/types/ObjectClass.java | 4
opendj-server-legacy/src/test/java/org/opends/server/core/PasswordPolicyTestCase.java | 3
opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java | 39
opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/TestDnKeyFormat.java | 3
opendj-server-legacy/src/test/java/org/opends/server/extensions/UserDefinedVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/CustomAttributeTreeNode.java | 10
opendj-server-legacy/src/main/java/org/opends/server/extensions/PasswordModifyExtendedOperation.java | 4
opendj-server-legacy/src/test/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractVLVIndexPanel.java | 14
opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java | 3
opendj-server-legacy/src/main/java/org/opends/server/core/ServerContext.java | 11
opendj-server-legacy/src/test/java/org/opends/server/replication/SchemaReplicationTest.java | 4
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java | 7
opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/FractionalReplicationTest.java | 3
opendj-server-legacy/src/main/java/org/opends/server/core/AttributeSyntaxConfigManager.java | 25
/dev/null | 770 -----
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaElementPanel.java | 12
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciContainer.java | 3
opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java | 38
opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationBasis.java | 3
opendj-server-legacy/src/test/java/org/opends/server/extensions/EntityTagVirtualAttributeProviderTestCase.java | 4
opendj-server-legacy/src/test/java/org/opends/server/controls/MatchedValuesControlTest.java | 38
340 files changed, 3,481 insertions(+), 5,564 deletions(-)
diff --git a/opendj-server-legacy/replace.rb b/opendj-server-legacy/replace.rb
index 282a7cf..dfa1fa9 100755
--- a/opendj-server-legacy/replace.rb
+++ b/opendj-server-legacy/replace.rb
@@ -406,7 +406,7 @@
############################### List of replacements to run #################################
- REPLACEMENTS = [ SYNTAXES_TO_SDK, SYNTAXES_TO_SDK_SCM ]
+ REPLACEMENTS = [ ATTRTYPE ]
################################### Processing methods ########################################
diff --git a/opendj-server-legacy/resource/admin/property-types/attribute-type.xsl b/opendj-server-legacy/resource/admin/property-types/attribute-type.xsl
index 453e039..fb8432c 100644
--- a/opendj-server-legacy/resource/admin/property-types/attribute-type.xsl
+++ b/opendj-server-legacy/resource/admin/property-types/attribute-type.xsl
@@ -22,6 +22,7 @@
!
!
! Copyright 2008 Sun Microsystems, Inc.
+ ! Portions copyright 2015-2016 ForgeRock AS
! -->
<xsl:stylesheet version="1.0" xmlns:adm="http://www.opends.org/admin"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
@@ -29,7 +30,7 @@
Templates for processing attribute type properties.
-->
<xsl:template match="adm:attribute-type" mode="java-value-imports">
- <import>org.opends.server.types.AttributeType</import>
+ <import>org.forgerock.opendj.ldap.schema.AttributeType</import>
</xsl:template>
<xsl:template match="adm:attribute-type" mode="java-value-type">
<xsl:value-of select="'AttributeType'" />
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
index 032f63b..5d9aa49 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.datamodel;
@@ -45,10 +45,10 @@
import javax.naming.directory.SearchResult;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/IndexDescriptor.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/IndexDescriptor.java
index 01cb27b..6ac151a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/IndexDescriptor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/IndexDescriptor.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2015 ForgeRock AS
+ * Portions Copyright 2015-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.datamodel;
@@ -33,7 +33,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
/**
* The class used to describe the index configuration (the normal index: the one
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
index ab4d60a..daa4f83 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.datamodel;
@@ -39,8 +39,9 @@
import org.opends.guitools.controlpanel.util.ConfigFromDirContext;
import org.opends.quicksetup.UserData;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.tools.tasks.TaskEntry;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.OpenDsException;
@@ -563,17 +564,19 @@
private static boolean areAttributeTypesEqual(Schema schema1, Schema schema2)
{
- final Map<String, AttributeType> attrs1 = schema1.getAttributeTypes();
- final Map<String, AttributeType> attrs2 = schema2.getAttributeTypes();
+ final List<AttributeType> attrs1 = new ArrayList<>(schema1.getAttributeTypes());
+ final List<AttributeType> attrs2 = new ArrayList<>(schema2.getAttributeTypes());
if (attrs1.size() != attrs2.size())
{
return false;
}
- for (String name : attrs1.keySet())
+ Collections.sort(attrs1);
+ Collections.sort(attrs2);
+ for (int i = 0; i < attrs1.size(); i++)
{
- AttributeType attr1 = attrs1.get(name);
- AttributeType attr2 = attrs2.get(name);
- if (attr2 == null && !areAttributesEqual(attr1, attr2))
+ AttributeType attr1 = attrs1.get(i);
+ AttributeType attr2 = attrs2.get(i);
+ if (attr2 == null || !areAttributesEqual(attr1, attr2))
{
return false;
}
@@ -620,7 +623,8 @@
&& attr1.isOperational() == attr2.isOperational()
&& attr1.isSingleValue() == attr2.isSingleValue()
&& areEqual(attr1.getApproximateMatchingRule(), attr2.getApproximateMatchingRule())
- && areEqual(getDefinitionWithFileName(attr1), getDefinitionWithFileName(attr2))
+ && areEqual(new SomeSchemaElement(attr1).getDefinitionWithFileName(),
+ new SomeSchemaElement(attr2).getDefinitionWithFileName())
&& areEqual(attr1.getDescription(), attr2.getDescription())
&& areEqual(attr1.getEqualityMatchingRule(), attr2.getEqualityMatchingRule())
&& areEqual(attr1.getOrderingMatchingRule(), attr2.getOrderingMatchingRule())
@@ -629,8 +633,7 @@
&& areEqual(attr1.getSyntax(), attr2.getSyntax())
&& areEqual(attr1.getSyntax().getOID(), attr2.getSyntax().getOID())
&& areEqual(attr1.getExtraProperties().keySet(), attr2.getExtraProperties().keySet())
- && areEqual(toSet(attr1.getNormalizedNames()), toSet(attr2.getNormalizedNames()))
- && areEqual(toSet(attr1.getUserDefinedNames()), toSet(attr2.getUserDefinedNames()));
+ && areEqual(toSet(attr1.getNames()), toSet(attr2.getNames()));
}
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
index 04fa3ca..3140bb4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.guitools.controlpanel.task;
@@ -46,26 +46,27 @@
import javax.naming.directory.ModificationItem;
import javax.swing.SwingUtilities;
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
+import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
import org.opends.guitools.controlpanel.ui.ColorAndFontConstants;
import org.opends.guitools.controlpanel.ui.ProgressDialog;
import org.opends.guitools.controlpanel.util.Utilities;
-import org.forgerock.i18n.LocalizableMessage;
import org.opends.server.config.ConfigConstants;
import org.opends.server.core.DirectoryServer;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.Attributes;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.CommonSchemaElements;
import org.opends.server.types.Entry;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.Modification;
-import org.forgerock.opendj.ldap.ModificationType;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.OpenDsException;
import org.opends.server.types.Schema;
-import org.opends.server.types.SchemaFileElement;
import org.opends.server.util.LDIFReader;
import org.opends.server.util.LDIFWriter;
import org.opends.server.util.StaticUtils;
@@ -232,131 +233,20 @@
*/
private void updateSchema() throws OpenDsException
{
- final boolean[] isFirst = {true};
final int totalNumber = ocsToDelete.size() + attrsToDelete.size();
int numberDeleted = 0;
for (ObjectClass objectClass : ocsToDelete)
{
- final ObjectClass fObjectclass = objectClass;
- SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- if (!isFirst[0])
- {
- getProgressDialog().appendProgressHtml("<br><br>");
- }
- isFirst[0] = false;
- printEquivalentCommandToDelete(fObjectclass);
- getProgressDialog().appendProgressHtml(
- Utilities.getProgressWithPoints(
- INFO_CTRL_PANEL_DELETING_OBJECTCLASS.get(
- fObjectclass.getNameOrOID()),
- ColorAndFontConstants.progressFont));
- }
- });
-
- if (isServerRunning())
- {
- try
- {
- BasicAttribute attr = new BasicAttribute(
- getSchemaFileAttributeName(objectClass));
- attr.add(getSchemaFileAttributeValue(objectClass));
- ModificationItem mod =
- new ModificationItem(DirContext.REMOVE_ATTRIBUTE, attr);
- getInfo().getDirContext().modifyAttributes(
- ConfigConstants.DN_DEFAULT_SCHEMA_ROOT,
- new ModificationItem[] { mod });
- }
- catch (NamingException ne)
- {
- throw new OnlineUpdateException(
- ERR_CTRL_PANEL_ERROR_UPDATING_SCHEMA.get(ne), ne);
- }
- }
- else
- {
- updateSchemaFile(objectClass);
- }
- numberDeleted ++;
- final int fNumberDeleted = numberDeleted;
- SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- getProgressDialog().getProgressBar().setIndeterminate(false);
- getProgressDialog().getProgressBar().setValue(
- (fNumberDeleted * 100) / totalNumber);
- getProgressDialog().appendProgressHtml(
- Utilities.getProgressDone(ColorAndFontConstants.progressFont));
- }
- });
+ final SomeSchemaElement element = new SomeSchemaElement(objectClass);
+ deleteSchemaElement(element, numberDeleted, totalNumber, INFO_CTRL_PANEL_DELETING_OBJECTCLASS);
+ numberDeleted++;
}
for (AttributeType attribute : attrsToDelete)
{
- final AttributeType fAttribute = attribute;
- SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- if (!isFirst[0])
- {
- getProgressDialog().appendProgressHtml("<br><br>");
- }
- isFirst[0] = false;
- printEquivalentCommandToDelete(fAttribute);
- getProgressDialog().appendProgressHtml(
- Utilities.getProgressWithPoints(
- INFO_CTRL_PANEL_DELETING_ATTRIBUTE.get(
- fAttribute.getNameOrOID()),
- ColorAndFontConstants.progressFont));
- }
- });
-
- if (isServerRunning())
- {
- try
- {
- BasicAttribute attr = new BasicAttribute(
- getSchemaFileAttributeName(attribute));
- attr.add(getSchemaFileAttributeValue(attribute));
- ModificationItem mod = new ModificationItem(
- DirContext.REMOVE_ATTRIBUTE,
- attr);
- getInfo().getDirContext().modifyAttributes(
- ConfigConstants.DN_DEFAULT_SCHEMA_ROOT,
- new ModificationItem[] { mod });
- }
- catch (NamingException ne)
- {
- throw new OnlineUpdateException(
- ERR_CTRL_PANEL_ERROR_UPDATING_SCHEMA.get(ne), ne);
- }
- }
- else
- {
- updateSchemaFile(attribute);
- }
-
- numberDeleted ++;
- final int fNumberDeleted = numberDeleted;
- SwingUtilities.invokeLater(new Runnable()
- {
- @Override
- public void run()
- {
- getProgressDialog().getProgressBar().setIndeterminate(false);
- getProgressDialog().getProgressBar().setValue(
- (fNumberDeleted * 100) / totalNumber);
- getProgressDialog().appendProgressHtml(
- Utilities.getProgressDone(ColorAndFontConstants.progressFont));
- }
- });
+ final SomeSchemaElement element = new SomeSchemaElement(attribute);
+ deleteSchemaElement(element, numberDeleted, totalNumber, INFO_CTRL_PANEL_DELETING_ATTRIBUTE);
+ numberDeleted++;
}
if (!ocsToAdd.isEmpty() || !attrsToAdd.isEmpty())
@@ -381,12 +271,67 @@
}
}
+ private void deleteSchemaElement(final SomeSchemaElement element, final int numberDeleted, final int totalNumber,
+ final Arg1<Object> deletingElementMsg) throws OnlineUpdateException, OpenDsException
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ final boolean isFirst = numberDeleted == 0;
+ if (!isFirst)
+ {
+ getProgressDialog().appendProgressHtml("<br><br>");
+ }
+ printEquivalentCommandToDelete(element);
+ getProgressDialog().appendProgressHtml(
+ Utilities.getProgressWithPoints(
+ deletingElementMsg.get(element.getNameOrOID()), ColorAndFontConstants.progressFont));
+ }
+ });
+
+ if (isServerRunning())
+ {
+ try
+ {
+ BasicAttribute attr = new BasicAttribute(getSchemaFileAttributeName(element));
+ attr.add(getSchemaFileAttributeValue(element));
+ ModificationItem mod = new ModificationItem(DirContext.REMOVE_ATTRIBUTE, attr);
+ getInfo().getDirContext().modifyAttributes(
+ ConfigConstants.DN_DEFAULT_SCHEMA_ROOT,
+ new ModificationItem[] { mod });
+ }
+ catch (NamingException ne)
+ {
+ throw new OnlineUpdateException(ERR_CTRL_PANEL_ERROR_UPDATING_SCHEMA.get(ne), ne);
+ }
+ }
+ else
+ {
+ updateSchemaFile(element);
+ }
+
+ final int fNumberDeleted = numberDeleted + 1;
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ getProgressDialog().getProgressBar().setIndeterminate(false);
+ getProgressDialog().getProgressBar().setValue((fNumberDeleted * 100) / totalNumber);
+ getProgressDialog().appendProgressHtml(
+ Utilities.getProgressDone(ColorAndFontConstants.progressFont));
+ }
+ });
+ }
+
/**
* Updates the schema file by deleting the provided schema element.
* @param schemaElement the schema element to be deleted.
* @throws OpenDsException if an error occurs.
*/
- private void updateSchemaFile(CommonSchemaElements schemaElement)
+ private void updateSchemaFile(SomeSchemaElement schemaElement)
throws OpenDsException
{
String schemaFile = getSchemaFile(schemaElement);
@@ -425,9 +370,9 @@
* @param element the schema element.
* @return the schema file for a given schema element.
*/
- private String getSchemaFile(SchemaFileElement element)
+ private String getSchemaFile(SomeSchemaElement element)
{
- String schemaFile = CommonSchemaElements.getSchemaFile(element);
+ String schemaFile = element.getSchemaFile();
if (schemaFile == null)
{
schemaFile = ConfigConstants.FILE_USER_SCHEMA_ELEMENTS;
@@ -449,9 +394,9 @@
* @return the attribute name in the schema entry that corresponds to the
* provided schema element.
*/
- private String getSchemaFileAttributeName(CommonSchemaElements element)
+ private String getSchemaFileAttributeName(SomeSchemaElement element)
{
- if (element instanceof AttributeType)
+ if (element.isAttributeType())
{
return "attributeTypes";
}
@@ -466,7 +411,7 @@
* @param element the schema element.
* @return the value in the schema file for the provided element.
*/
- private String getSchemaFileAttributeValue(CommonSchemaElements element)
+ private String getSchemaFileAttributeValue(SomeSchemaElement element)
{
return element.toString();
}
@@ -476,7 +421,7 @@
* progress dialog.
* @param element the schema element to be deleted.
*/
- private void printEquivalentCommandToDelete(CommonSchemaElements element)
+ private void printEquivalentCommandToDelete(SomeSchemaElement element)
{
String schemaFile = getSchemaFile(element);
String attrName = getSchemaFileAttributeName(element);
@@ -484,7 +429,7 @@
if (!isServerRunning())
{
LocalizableMessage msg;
- if (element instanceof AttributeType)
+ if (element.isAttributeType())
{
msg = INFO_CTRL_PANEL_EQUIVALENT_CMD_TO_DELETE_ATTRIBUTE_OFFLINE.get(
element.getNameOrOID(), schemaFile);
@@ -510,7 +455,7 @@
args);
LocalizableMessage msg;
- if (element instanceof AttributeType)
+ if (element.isAttributeType())
{
msg = INFO_CTRL_PANEL_EQUIVALENT_CMD_TO_DELETE_ATTRIBUTE_ONLINE.get(
element.getNameOrOID());
@@ -543,38 +488,13 @@
if (attr.equals(attrToDelete.getSuperiorType()))
{
isSuperior = true;
- AttributeType newSuperior = attr.getSuperiorType();
- while (newSuperior != null &&
- providedAttrsToDelete.contains(newSuperior))
- {
- newSuperior = newSuperior.getSuperiorType();
- }
break;
}
}
if (isSuperior)
{
- ArrayList<String> allNames = new ArrayList<>(attrToDelete.getNormalizedNames());
- Map<String, List<String>> extraProperties =
- cloneExtraProperties(attrToDelete);
- return new AttributeType(
- "",
- attrToDelete.getPrimaryName(),
- allNames,
- attrToDelete.getOID(),
- attrToDelete.getDescription(),
- null,
- attrToDelete.getSyntax(),
- attrToDelete.getApproximateMatchingRule(),
- attrToDelete.getEqualityMatchingRule(),
- attrToDelete.getOrderingMatchingRule(),
- attrToDelete.getSubstringMatchingRule(),
- attrToDelete.getUsage(),
- attrToDelete.isCollective(),
- attrToDelete.isNoUserModification(),
- attrToDelete.isObsolete(),
- attrToDelete.isSingleValue(),
- extraProperties);
+ // get a new attribute without the superior type
+ return SomeSchemaElement.changeSuperiorType(attrToDelete, null);
}
else
{
@@ -771,7 +691,7 @@
AttributeType attribute, Schema schema)
{
LinkedHashSet<AttributeType> children = new LinkedHashSet<>();
- for (AttributeType attr : schema.getAttributeTypes().values())
+ for (AttributeType attr : schema.getAttributeTypes())
{
if (attribute.equals(attr.getSuperiorType()))
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java
index 036afe6..7a50703 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyAttributeTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.task;
@@ -41,11 +41,12 @@
import javax.swing.SwingUtilities;
import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
import org.opends.guitools.controlpanel.ui.ColorAndFontConstants;
import org.opends.guitools.controlpanel.ui.ProgressDialog;
import org.opends.guitools.controlpanel.util.Utilities;
-import org.opends.server.types.AttributeType;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.OpenDsException;
import org.opends.server.types.Schema;
@@ -155,28 +156,8 @@
}
else if (oldAttribute.equals(attrToDelete.getSuperiorType()))
{
- ArrayList<String> allNames = new ArrayList<>(attrToDelete.getNormalizedNames());
- Map<String, List<String>> extraProperties =
- DeleteSchemaElementsTask.cloneExtraProperties(attrToDelete);
- AttributeType newSuperior = newAttribute;
- return new AttributeType(
- "",
- attrToDelete.getPrimaryName(),
- allNames,
- attrToDelete.getOID(),
- attrToDelete.getDescription(),
- newSuperior,
- attrToDelete.getSyntax(),
- attrToDelete.getApproximateMatchingRule(),
- attrToDelete.getEqualityMatchingRule(),
- attrToDelete.getOrderingMatchingRule(),
- attrToDelete.getSubstringMatchingRule(),
- attrToDelete.getUsage(),
- attrToDelete.isCollective(),
- attrToDelete.isNoUserModification(),
- attrToDelete.isObsolete(),
- attrToDelete.isSingleValue(),
- extraProperties);
+ // get a new attribute with the new superior type
+ return SomeSchemaElement.changeSuperiorType(attrToDelete, newAttribute);
}
else
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
index 06acac1..99589b0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.task;
@@ -44,7 +44,7 @@
import org.opends.guitools.controlpanel.ui.ProgressDialog;
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.OpenDsException;
import org.opends.server.types.Schema;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java
index fc39f75..1afc2af 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/NewSchemaElementsTask.java
@@ -22,18 +22,18 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.guitools.controlpanel.task;
import static org.forgerock.util.Utils.*;
import static org.opends.messages.AdminToolMessages.*;
-import static org.opends.server.types.CommonSchemaElements.*;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
@@ -49,6 +49,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
import org.opends.guitools.controlpanel.ui.ColorAndFontConstants;
@@ -56,9 +57,8 @@
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.server.config.ConfigConstants;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.Attributes;
-import org.opends.server.types.CommonSchemaElements;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.ExistingFileBehavior;
@@ -67,10 +67,10 @@
import org.opends.server.types.Modification;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.OpenDsException;
-import org.opends.server.types.SchemaFileElement;
import org.opends.server.util.LDIFReader;
import org.opends.server.util.LDIFWriter;
import org.opends.server.util.ServerConstants;
+import org.opends.server.util.StaticUtils;
/**
* An abstract class used to re-factor some code between the different tasks
@@ -158,8 +158,8 @@
}
else
{
- final List<String> attrNames = getElementsNameOrOID(attrsToAdd);
- final List<String> ocNames = getElementsNameOrOID(ocsToAdd);
+ final List<String> attrNames = getElementsNameOrOID(attributeTypesToSchemaElements(attrsToAdd));
+ final List<String> ocNames = getElementsNameOrOID(objectClassesToSchemaElements(ocsToAdd));
if (ocNames.isEmpty())
{
return INFO_CTRL_PANEL_NEW_ATTRIBUTES_TASK_DESCRIPTION.get(joinAsString(", ", attrNames));
@@ -176,10 +176,10 @@
}
}
- private <T extends CommonSchemaElements> List<String> getElementsNameOrOID(final Collection<T> schemaElements)
+ private List<String> getElementsNameOrOID(final Collection<SomeSchemaElement> schemaElements)
{
final List<String> nameOrOIDs = new ArrayList<>();
- for (CommonSchemaElements schemaElement : schemaElements)
+ for (SomeSchemaElement schemaElement : schemaElements)
{
nameOrOIDs.add(schemaElement.getNameOrOID());
}
@@ -252,15 +252,15 @@
private void updateSchemaOffline() throws OpenDsException
{
// Group the changes in the same schema file.
- final Map<String, List<AttributeType>> hmAttrs = copy(attrsToAdd);
- final Map<String, List<ObjectClass>> hmOcs = copy(ocsToAdd);
- final Set<String> allFileNames = new LinkedHashSet<>(hmAttrs.keySet());
- allFileNames.addAll(hmOcs.keySet());
+ final Map<String, List<SomeSchemaElement>> mapAttrs = copy(attributeTypesToSchemaElements(attrsToAdd));
+ final Map<String, List<SomeSchemaElement>> mapClasses = copy(objectClassesToSchemaElements(ocsToAdd));
+ final Set<String> allFileNames = new LinkedHashSet<>(mapAttrs.keySet());
+ allFileNames.addAll(mapClasses.keySet());
for (String fileName : allFileNames)
{
- List<AttributeType> attrs = get(hmAttrs, fileName);
- List<ObjectClass> ocs = get(hmOcs, fileName);
+ List<AttributeType> attrs = schemaElementsToAttributeTypes(get(mapAttrs, fileName));
+ List<ObjectClass> ocs = schemaElementsToObjectClasses(get(mapClasses, fileName));
if ("".equals(fileName))
{
@@ -271,9 +271,9 @@
}
}
- private <T extends SchemaFileElement> List<T> get(Map<String, List<T>> hmElems, String fileName)
+ private List<SomeSchemaElement> get(Map<String, List<SomeSchemaElement>> hmElems, String fileName)
{
- List<T> elems = hmElems.get(fileName);
+ List<SomeSchemaElement> elems = hmElems.get(fileName);
if (elems != null)
{
return elems;
@@ -281,17 +281,17 @@
return Collections.emptyList();
}
- private <T extends SchemaFileElement> Map<String, List<T>> copy(Set<T> elemsToAdd)
+ private Map<String, List<SomeSchemaElement>> copy(Set<SomeSchemaElement> elemsToAdd)
{
- Map<String, List<T>> hmElems = new LinkedHashMap<>();
- for (T elem : elemsToAdd)
+ Map<String, List<SomeSchemaElement>> hmElems = new LinkedHashMap<>();
+ for (SomeSchemaElement elem : elemsToAdd)
{
- String fileName = CommonSchemaElements.getSchemaFile(elem);
+ String fileName = elem.getSchemaFile();
if (fileName == null)
{
fileName = "";
}
- List<T> elems = hmElems.get(fileName);
+ List<SomeSchemaElement> elems = hmElems.get(fileName);
if (elems == null)
{
elems = new ArrayList<>();
@@ -304,15 +304,17 @@
private void addAttributeOnline(final AttributeType attribute) throws OpenDsException
{
- addSchemaElementOnline(attribute, INFO_CTRL_PANEL_CREATING_ATTRIBUTE_PROGRESS.get(attribute.getNameOrOID()));
+ addSchemaElementOnline(new SomeSchemaElement(attribute),
+ INFO_CTRL_PANEL_CREATING_ATTRIBUTE_PROGRESS.get(attribute.getNameOrOID()));
}
private void addObjectClassOnline(final ObjectClass objectClass) throws OpenDsException
{
- addSchemaElementOnline(objectClass, INFO_CTRL_PANEL_CREATING_OBJECTCLASS_PROGRESS.get(objectClass.getNameOrOID()));
+ addSchemaElementOnline(new SomeSchemaElement(objectClass),
+ INFO_CTRL_PANEL_CREATING_OBJECTCLASS_PROGRESS.get(objectClass.getNameOrOID()));
}
- private void addSchemaElementOnline(final CommonSchemaElements schemaElement, final LocalizableMessage progressMsg)
+ private void addSchemaElementOnline(final SomeSchemaElement schemaElement, final LocalizableMessage progressMsg)
throws OpenDsException
{
SwingUtilities.invokeLater(new Runnable()
@@ -327,7 +329,7 @@
});
try
{
- final BasicAttribute attr = new BasicAttribute(getAttributeName(schemaElement));
+ final BasicAttribute attr = new BasicAttribute(schemaElement.getAttributeName());
attr.add(getElementDefinition(schemaElement));
final ModificationItem mod = new ModificationItem(DirContext.ADD_ATTRIBUTE, attr);
getInfo().getDirContext().modifyAttributes(
@@ -348,35 +350,31 @@
});
}
- private String getValueOffline(CommonSchemaElements element)
+ private String getValueOffline(SomeSchemaElement element)
{
final Map<String, List<String>> props = element.getExtraProperties();
List<String> previousValues = props.get(ServerConstants.SCHEMA_PROPERTY_FILENAME);
- setExtraProperty(element, ServerConstants.SCHEMA_PROPERTY_FILENAME, null);
+ element.setExtraPropertySingleValue(null, ServerConstants.SCHEMA_PROPERTY_FILENAME, null);
String attributeWithoutFileDefinition = getElementDefinition(element);
if (previousValues != null && !previousValues.isEmpty())
{
- element.setExtraProperty(ServerConstants.SCHEMA_PROPERTY_FILENAME, new ArrayList<String>(previousValues));
+ element.setExtraPropertyMultipleValues(null,
+ ServerConstants.SCHEMA_PROPERTY_FILENAME, new ArrayList<String>(previousValues));
}
return attributeWithoutFileDefinition;
}
- private String getElementDefinition(CommonSchemaElements element)
+ private String getElementDefinition(SomeSchemaElement element)
{
- final List<String> names = new ArrayList<>(element.getNormalizedNames());
- if (element instanceof AttributeType)
+ final List<String> names = new ArrayList<>();
+ for (final String name : element.getNames())
{
- return getAttributeTypeDefinition((AttributeType) element, names);
+ names.add(StaticUtils.toLowerCase(name));
}
- else if (element instanceof ObjectClass)
- {
- return getObjectClassDefinition((ObjectClass) element, names);
- }
- else
- {
- throw new IllegalArgumentException("Unsupported schema element: " + element.getClass().getName());
- }
+ return element.isAttributeType()
+ ? getAttributeTypeDefinition(element.getAttributeType(), names)
+ : getObjectClassDefinition(element.getObjectClass(), names);
}
private String getAttributeTypeDefinition(final AttributeType attributeType, final List<String> names)
@@ -427,22 +425,22 @@
appendCollection(buffer, "NAME", names);
appendDescription(buffer, objectClass.getDescription());
appendIfTrue(buffer, " OBSOLETE", objectClass.isObsolete());
- appendOIDs(buffer, "SUP", objectClass.getSuperiorClasses());
+ appendOIDs(buffer, "SUP", objectClassesToSchemaElements(objectClass.getSuperiorClasses()));
appendIfNotNull(buffer, " ", objectClass.getObjectClassType());
- appendOIDs(buffer, "MUST", objectClass.getRequiredAttributes());
- appendOIDs(buffer, "MAY", objectClass.getOptionalAttributes());
+ appendOIDs(buffer, "MUST", attributeTypesToSchemaElements(objectClass.getRequiredAttributes()));
+ appendOIDs(buffer, "MAY", attributeTypesToSchemaElements(objectClass.getOptionalAttributes()));
appendExtraProperties(buffer, objectClass.getExtraProperties());
buffer.append(")");
return buffer.toString();
}
- private <T extends CommonSchemaElements> void appendOIDs(final StringBuilder buffer, final String label,
- final Collection<T> schemaElements)
+ private void appendOIDs(final StringBuilder buffer, final String label,
+ final Collection<SomeSchemaElement> schemaElements)
{
if (!schemaElements.isEmpty())
{
- final Iterator<T> iterator = schemaElements.iterator();
+ final Iterator<SomeSchemaElement> iterator = schemaElements.iterator();
final String firstOID = iterator.next().getOID();
buffer.append(" ").append(label).append(" ( ").append(firstOID);
while (iterator.hasNext())
@@ -453,6 +451,46 @@
}
}
+ private Set<SomeSchemaElement> objectClassesToSchemaElements(final Collection<ObjectClass> classes)
+ {
+ Set<SomeSchemaElement> elements = new HashSet<>();
+ for (ObjectClass objectClass : classes)
+ {
+ elements.add(new SomeSchemaElement(objectClass));
+ }
+ return elements;
+ }
+
+ private Set<SomeSchemaElement> attributeTypesToSchemaElements(final Collection<AttributeType> types)
+ {
+ Set<SomeSchemaElement> elements = new HashSet<>();
+ for (AttributeType type : types)
+ {
+ elements.add(new SomeSchemaElement(type));
+ }
+ return elements;
+ }
+
+ private List<AttributeType> schemaElementsToAttributeTypes(final Collection<SomeSchemaElement> elements)
+ {
+ List<AttributeType> types = new ArrayList<>();
+ for (SomeSchemaElement element : elements)
+ {
+ types.add(element.getAttributeType());
+ }
+ return types;
+ }
+
+ private List<ObjectClass> schemaElementsToObjectClasses(final Collection<SomeSchemaElement> elements)
+ {
+ List<ObjectClass> classes = new ArrayList<>();
+ for (SomeSchemaElement element : elements)
+ {
+ classes.add(element.getObjectClass());
+ }
+ return classes;
+ }
+
private void appendIfTrue(final StringBuilder buffer, final String label, final boolean labelIsActive)
{
if (labelIsActive)
@@ -513,7 +551,7 @@
}
}
- private void printEquivalentCommandLineToAddOnline(CommonSchemaElements element)
+ private void printEquivalentCommandLineToAddOnline(SomeSchemaElement element)
{
List<String> args = new ArrayList<>();
args.add("-a");
@@ -521,13 +559,13 @@
args.add(getNoPropertiesFileArgument());
final String equivalentCmdLine = getEquivalentCommandLine(getCommandLinePath("ldapmodify"), args);
- final String elementID = element.getNameOrOID();
- final LocalizableMessage msg = element instanceof AttributeType ?
- INFO_CTRL_PANEL_EQUIVALENT_CMD_TO_ADD_ATTRIBUTE_ONLINE.get(elementID)
- : INFO_CTRL_PANEL_EQUIVALENT_CMD_TO_ADD_OBJECTCLASS_ONLINE.get(elementID);
final StringBuilder sb = new StringBuilder();
- final String attName = getAttributeName(element);
- sb.append(msg).append("<br><b>")
+ final String attName = element.getAttributeName();
+ final String elementId = element.getNameOrOID();
+ final LocalizableMessage message = element.isAttributeType()
+ ? INFO_CTRL_PANEL_EQUIVALENT_CMD_TO_ADD_ATTRIBUTE_ONLINE.get(elementId)
+ : INFO_CTRL_PANEL_EQUIVALENT_CMD_TO_ADD_OBJECTCLASS_ONLINE.get(elementId);
+ sb.append(message).append("<br><b>")
.append(equivalentCmdLine).append("<br>")
.append("dn: cn=schema<br>")
.append("changetype: modify<br>")
@@ -536,16 +574,12 @@
getProgressDialog().appendProgressHtml(Utilities.applyFont(sb.toString(), ColorAndFontConstants.progressFont));
}
- private String getAttributeName(CommonSchemaElements element)
- {
- return element instanceof AttributeType ? ConfigConstants.ATTR_ATTRIBUTE_TYPES : ConfigConstants.ATTR_OBJECTCLASSES;
- }
-
private void updateSchemaOffline(
String file, final List<AttributeType> attributes, final List<ObjectClass> objectClasses) throws OpenDsException
{
- final List<CommonSchemaElements> schemaElements = new ArrayList<CommonSchemaElements>(attributes);
- schemaElements.addAll(objectClasses);
+ final List<SomeSchemaElement> schemaElements =
+ new ArrayList<SomeSchemaElement>(attributeTypesToSchemaElements(attributes));
+ schemaElements.addAll(objectClassesToSchemaElements(objectClasses));
if (file == null)
{
file = ConfigConstants.FILE_USER_SCHEMA_ELEMENTS;
@@ -595,7 +629,7 @@
updateSchemaUndefinedFile(fileName, schemaElements);
}
- for (CommonSchemaElements schemaElement : schemaElements)
+ for (SomeSchemaElement schemaElement : schemaElements)
{
notifyConfigurationElementCreated(schemaElement);
}
@@ -610,7 +644,7 @@
}
private String equivalentCommandToAddOffline(
- String schemaFile, boolean isSchemaFileDefined, List<CommonSchemaElements> schemaElements)
+ String schemaFile, boolean isSchemaFileDefined, List<SomeSchemaElement> schemaElements)
{
List<String> names = getElementsNameOrOID(schemaElements);
@@ -632,9 +666,9 @@
}
}
- for (CommonSchemaElements schemaElement : schemaElements)
+ for (SomeSchemaElement schemaElement : schemaElements)
{
- sb.append(getAttributeName(schemaElement)).append(": ").append(getValueOffline(schemaElement)).append("<br>");
+ sb.append(schemaElement.getAttributeName()).append(": ").append(getValueOffline(schemaElement)).append("<br>");
}
sb.append("</b><br><br>");
@@ -692,7 +726,7 @@
* @throws OpenDsException
* if an error occurs updating the schema file.
*/
- private void updateSchemaFile(String schemaFile, List<CommonSchemaElements> schemaElements)
+ private void updateSchemaFile(String schemaFile, List<SomeSchemaElement> schemaElements)
throws OpenDsException
{
try (final LDIFExportConfig exportConfig = new LDIFExportConfig(schemaFile, ExistingFileBehavior.OVERWRITE))
@@ -714,26 +748,26 @@
}
}
- private void addElementsToEntry(List<CommonSchemaElements> schemaElements, Entry schemaEntry)
+ private void addElementsToEntry(List<SomeSchemaElement> schemaElements, Entry schemaEntry)
throws DirectoryException
{
- for (CommonSchemaElements schemaElement : schemaElements)
+ for (SomeSchemaElement schemaElement : schemaElements)
{
final Modification mod = new Modification(ModificationType.ADD,
- Attributes.create(getAttributeName(schemaElement).toLowerCase(), getValueOffline(schemaElement)));
+ Attributes.create(schemaElement.getAttributeName().toLowerCase(), getValueOffline(schemaElement)));
schemaEntry.applyModification(mod);
}
}
- private void updateSchemaUndefinedFile(String schemaFile, List<CommonSchemaElements> schemaElements)
+ private void updateSchemaUndefinedFile(String schemaFile, List<SomeSchemaElement> schemaElements)
throws OfflineUpdateException
{
try (LDIFExportConfig exportConfig = new LDIFExportConfig(schemaFile, ExistingFileBehavior.FAIL))
{
List<String> lines = getSchemaEntryLines();
- for (final CommonSchemaElements schemaElement : schemaElements)
+ for (final SomeSchemaElement schemaElement : schemaElements)
{
- lines.add(getAttributeName(schemaElement) + ": " + getValueOffline(schemaElement));
+ lines.add(schemaElement.getAttributeName() + ": " + getValueOffline(schemaElement));
}
for (String line : lines)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
index 5789b7a..b37ada6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -105,7 +105,7 @@
import org.opends.quicksetup.ui.CertificateDialog;
import org.opends.quicksetup.util.UIKeyStore;
import org.opends.server.protocols.ldap.LDAPFilter;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.LDAPException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractIndexPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractIndexPanel.java
index 3514e2b..9d6cf5b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractIndexPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractIndexPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -61,7 +61,7 @@
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.quicksetup.Installation;
import org.opends.server.config.ConfigException;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.OpenDsException;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractVLVIndexPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractVLVIndexPanel.java
index 3aa77c5..c9140d5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractVLVIndexPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AbstractVLVIndexPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -89,7 +89,8 @@
import org.opends.quicksetup.Installation;
import org.opends.server.config.ConfigException;
import org.opends.server.protocols.ldap.LDAPFilter;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.FilterType;
import org.opends.server.types.LDAPException;
import org.opends.server.types.OpenDsException;
@@ -327,16 +328,17 @@
configurationAttrNames.clear();
customAttrNames.clear();
- for (AttributeType attr : schema.getAttributeTypes().values())
+ for (AttributeType attr : schema.getAttributeTypes())
{
- String name = attr.getPrimaryName();
+ SomeSchemaElement element = new SomeSchemaElement(attr);
+ String name = attr.getNameOrOID();
if (!isDefined(name))
{
- if (Utilities.isStandard(attr))
+ if (Utilities.isStandard(element))
{
standardAttrNames.add(name);
}
- else if (Utilities.isConfiguration(attr))
+ else if (Utilities.isConfiguration(element))
{
configurationAttrNames.add(name);
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java
index 8ebdcdb..4d6f960 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/AttributeSyntaxPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -48,7 +48,7 @@
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Schema;
/**
@@ -76,23 +76,27 @@
}
/** {@inheritDoc} */
+ @Override
public LocalizableMessage getTitle()
{
return INFO_CTRL_PANEL_ATTRIBUTE_SYNTAX_TITLE.get();
}
/** {@inheritDoc} */
+ @Override
public Component getPreferredFocusComponent()
{
return usedByAttributes;
}
/** {@inheritDoc} */
+ @Override
public void configurationChanged(ConfigurationChangeEvent ev)
{
}
/** {@inheritDoc} */
+ @Override
public void okClicked()
{
}
@@ -153,6 +157,7 @@
MouseAdapter clickListener = new MouseAdapter()
{
+ @Override
public void mouseClicked(MouseEvent ev)
{
if (ev.getClickCount() == 1)
@@ -166,6 +171,7 @@
KeyAdapter keyListener = new KeyAdapter()
{
/** {@inheritDoc} */
+ @Override
public void keyTyped(KeyEvent ev)
{
if (ev.getKeyChar() == KeyEvent.VK_SPACE ||
@@ -205,7 +211,7 @@
Comparator<String> lowerCaseComparator = new LowerCaseComparator();
TreeSet<String> attributes = new TreeSet<>(lowerCaseComparator);
- for (AttributeType attr : schema.getAttributeTypes().values())
+ for (AttributeType attr : schema.getAttributeTypes())
{
if (syntax == attr.getSyntax())
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
index 5f7e611..64e159c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -87,7 +87,7 @@
import org.opends.guitools.controlpanel.util.LDAPEntryReader;
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.OpenDsException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java
index c4f2012..ce73f92 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java
@@ -22,11 +22,12 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
import static org.opends.messages.AdminToolMessages.*;
+import static org.opends.server.util.StaticUtils.*;
import java.awt.Component;
import java.awt.Dimension;
@@ -43,6 +44,7 @@
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
@@ -74,6 +76,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.guitools.controlpanel.browser.IconPool;
@@ -91,8 +94,7 @@
import org.opends.guitools.controlpanel.util.LowerCaseComparator;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.guitools.controlpanel.util.ViewPositions;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.CommonSchemaElements;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
@@ -134,7 +136,7 @@
private JPopupMenu popup;
- private CommonSchemaElements lastCreatedElement;
+ private SomeSchemaElement lastCreatedElement;
private final CategoryTreeNode attributes = new CategoryTreeNode(INFO_CTRL_PANEL_ATTRIBUTES_CATEGORY_NODE.get());
private final CategoryTreeNode objectClasses =
@@ -664,13 +666,14 @@
{
if (mustAdd(oc))
{
+ SomeSchemaElement element = new SomeSchemaElement(oc);
String name = oc.getPrimaryName();
- if (Utilities.isStandard(oc))
+ if (Utilities.isStandard(element))
{
standardOcNames.add(name);
hmStandardOcs.put(name, new StandardObjectClassTreeNode(name, oc));
}
- else if (Utilities.isConfiguration(oc))
+ else if (Utilities.isConfiguration(element))
{
configurationOcNames.add(name);
hmConfigurationOcs.put(name, new ConfigurationObjectClassTreeNode(name, oc));
@@ -689,17 +692,18 @@
Map<String, ConfigurationAttributeTreeNode> hmConfigurationAttrs = new HashMap<>();
Set<String> customAttrNames = new TreeSet<>(lowerCaseComparator);
Map<String, CustomAttributeTreeNode> hmCustomAttrs = new HashMap<>();
- for (AttributeType attr : lastSchema.getAttributeTypes().values())
+ for (AttributeType attr : lastSchema.getAttributeTypes())
{
+ SomeSchemaElement element = new SomeSchemaElement(attr);
if (mustAdd(attr))
{
- String name = attr.getPrimaryName();
- if (Utilities.isStandard(attr))
+ String name = attr.getNameOrOID();
+ if (Utilities.isStandard(element))
{
standardAttrNames.add(name);
hmStandardAttrs.put(name, new StandardAttributeTreeNode(name, attr));
}
- else if (Utilities.isConfiguration(attr))
+ else if (Utilities.isConfiguration(element))
{
configurationAttrNames.add(name);
hmConfigurationAttrs.put(name, new ConfigurationAttributeTreeNode(name, attr));
@@ -714,7 +718,7 @@
Set<String> matchingRuleNames = new TreeSet<>(lowerCaseComparator);
Map<String, MatchingRuleTreeNode> hmMatchingRules = new HashMap<>();
- for (MatchingRule matchingRule : lastSchema.getMatchingRules().values())
+ for (MatchingRule matchingRule : lastSchema.getMatchingRules())
{
if (mustAdd(matchingRule))
{
@@ -726,7 +730,7 @@
Set<String> syntaxNames = new TreeSet<>(lowerCaseComparator);
Map<String, AttributeSyntaxTreeNode> hmSyntaxes = new HashMap<>();
- for (Syntax syntax : lastSchema.getSyntaxes().values())
+ for (Syntax syntax : lastSchema.getSyntaxes())
{
if (mustAdd(syntax))
{
@@ -862,15 +866,7 @@
{
if (lastCreatedElement != null)
{
- if (node instanceof CustomObjectClassTreeNode && lastCreatedElement instanceof ObjectClass)
- {
- if (name.equals(lastCreatedElement.getNameOrOID()))
- {
- newSelectionPath = new TreePath(node.getPath());
- lastCreatedElement = null;
- }
- }
- else if (node instanceof CustomAttributeTreeNode && lastCreatedElement instanceof AttributeType
+ if (node instanceof CustomObjectClassTreeNode
&& name.equals(lastCreatedElement.getNameOrOID()))
{
newSelectionPath = new TreePath(node.getPath());
@@ -1163,23 +1159,27 @@
private boolean mustAddAttributeName(AttributeType attr, String attrName)
{
- return mustAdd(attrName, attr.getOID(), attr.getPrimaryName(), attr.getNormalizedNames());
+ return mustAdd(attrName, attr.getOID(), attr.getNameOrOID(), new HashSet<String>(attr.getNames()));
}
private boolean mustAddObjectClassName(ObjectClass oc, String ocName)
{
- return mustAdd(ocName, oc.getOID(), oc.getPrimaryName(), oc.getNormalizedNames());
+ return mustAdd(ocName, oc.getOID(), oc.getNameOrOID(), oc.getNormalizedNames());
}
- private boolean mustAdd(String name, String oid, String primaryName, Set<String> names)
+ /** Provided names may not be normalized. */
+ private boolean mustAdd(String name, String oid, String primaryNameOrOID, Set<String> names)
{
List<String> values = new ArrayList<>(names.size() + 2);
values.add(oid);
- if (primaryName != null)
+ if (!primaryNameOrOID.equals(oid))
{
- values.add(primaryName);
+ values.add(primaryNameOrOID);
}
- values.addAll(names);
+ for (String v : names)
+ {
+ values.add(toLowerCase(v));
+ }
return matchFilter(values, name, false);
}
@@ -1459,9 +1459,9 @@
private void configurationElementCreated(ConfigurationElementCreatedEvent ev)
{
Object o = ev.getConfigurationObject();
- if (o instanceof CommonSchemaElements)
+ if (o instanceof SomeSchemaElement)
{
- lastCreatedElement = (CommonSchemaElements) o;
+ lastCreatedElement = (SomeSchemaElement) o;
}
}
@@ -1596,7 +1596,7 @@
// Analyze attributes
for (AttributeType attribute : attrsToDelete)
{
- for (AttributeType attr : schema.getAttributeTypes().values())
+ for (AttributeType attr : schema.getAttributeTypes())
{
if (attribute.equals(attr.getSuperiorType()))
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java
index 29775c8..5f5587f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java
@@ -22,13 +22,12 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
import static org.opends.guitools.controlpanel.util.Utilities.*;
import static org.opends.messages.AdminToolMessages.*;
-import static org.opends.server.types.CommonSchemaElements.*;
import static org.opends.server.util.CollectionUtils.*;
import java.awt.Component;
@@ -75,8 +74,10 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.AttributeUsage;
import org.forgerock.opendj.ldap.schema.MatchingRule;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
@@ -91,7 +92,7 @@
import org.opends.guitools.controlpanel.ui.renderer.SchemaElementComboBoxCellRenderer;
import org.opends.guitools.controlpanel.util.LowerCaseComparator;
import org.opends.guitools.controlpanel.util.Utilities;
-import org.opends.server.types.AttributeType;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
import org.opends.server.util.ServerConstants;
@@ -529,11 +530,7 @@
void update(AttributeType attr, Schema schema)
{
ignoreChangeEvents = true;
- String n = attr.getPrimaryName();
- if (n == null)
- {
- n = "";
- }
+ String n = attr.getNameOrOID();
titlePanel.setDetails(LocalizableMessage.raw(n));
name.setText(n);
@@ -554,14 +551,15 @@
lastAliases.addAll(someAliases);
this.aliases.setText(Utilities.getStringFromCollection(someAliases, ", "));
- String sOrigin = Utilities.getOrigin(attr);
+ SomeSchemaElement element = new SomeSchemaElement(attr);
+ String sOrigin = Utilities.getOrigin(element);
if (sOrigin == null)
{
sOrigin = "";
}
origin.setText(sOrigin);
- String sFile = getSchemaFile(attr);
+ String sFile = element.getSchemaFile();
if (sFile == null)
{
sFile = "";
@@ -643,9 +641,8 @@
LowerCaseComparator lowerCase = new LowerCaseComparator();
Map<String, Syntax> syntaxNameMap = new TreeMap<>(lowerCase);
- for (String key : schema.getSyntaxes().keySet())
+ for (Syntax syntax : schema.getSyntaxes())
{
- Syntax syntax = schema.getSyntax(key);
String name = syntax.getName();
if (name == null)
{
@@ -658,9 +655,8 @@
updateComboBoxModel(newSyntaxes, (DefaultComboBoxModel) syntax.getModel());
Map<String, AttributeType> attributeNameMap = new TreeMap<>(lowerCase);
- for (String key : schema.getAttributeTypes().keySet())
+ for (AttributeType attr : schema.getAttributeTypes())
{
- AttributeType attr = schema.getAttributeType(key);
attributeNameMap.put(attr.getNameOrOID(), attr);
}
List<Object> newParents = new ArrayList<>();
@@ -669,17 +665,16 @@
updateComboBoxModel(newParents, (DefaultComboBoxModel) parent.getModel());
final Map<String, MatchingRule> matchingRuleNameMap = new TreeMap<>(lowerCase);
- for (String key : schema.getMatchingRules().keySet())
+ for (MatchingRule rule : schema.getMatchingRules())
{
- MatchingRule rule = schema.getMatchingRule(key);
matchingRuleNameMap.put(rule.getNameOrOID(), rule);
}
final List<MatchingRule> availableMatchingRules = new ArrayList<>(matchingRuleNameMap.values());
JComboBox[] combos = {approximate, equality, ordering, substring};
- for (JComboBox<LocalizableMessage> combo : combos)
+ for (JComboBox combo : combos)
{
- final DefaultComboBoxModel<LocalizableMessage> model = (DefaultComboBoxModel) combo.getModel();
+ final DefaultComboBoxModel model = (DefaultComboBoxModel) combo.getModel();
final List<Object> el = new ArrayList<Object>(availableMatchingRules);
el.add(0, model.getSize() != 0 ? model.getElementAt(0) : NO_MATCHING_RULE);
updateComboBoxModel(el, model);
@@ -761,7 +756,7 @@
TreeSet<String> dependentClasses = new TreeSet<>();
if (schema != null)
{
- for (AttributeType attr : schema.getAttributeTypes().values())
+ for (AttributeType attr : schema.getAttributeTypes())
{
if (attribute.equals(attr.getSuperiorType()))
{
@@ -1100,20 +1095,24 @@
private AttributeType getNewAttribute()
{
- return new AttributeType("", getAttributeName(),
- getAllNames(),
- getOID(),
- getDescription(),
- getSuperior(),
- (Syntax)syntax.getSelectedItem(),
- getMatchingRule(approximate),
- getMatchingRule(equality),
- getMatchingRule(ordering),
- getMatchingRule(substring),
- (AttributeUsage)usage.getSelectedItem(),
- collective.isSelected(), nonModifiable.isSelected(),
- obsolete.isSelected(), singleValued.isSelected(),
- getExtraProperties());
+ return new SchemaBuilder().buildAttributeType(getOID())
+ .names(getAllNames())
+ .description(getDescription())
+ .superiorType(getSuperior().getNameOrOID())
+ .syntax(((Syntax) syntax.getSelectedItem()).getOID())
+ .approximateMatchingRule(getMatchingRule(approximate).getNameOrOID())
+ .equalityMatchingRule(getMatchingRule(equality).getNameOrOID())
+ .orderingMatchingRule(getMatchingRule(ordering).getNameOrOID())
+ .substringMatchingRule(getMatchingRule(substring).getNameOrOID())
+ .usage((AttributeUsage)usage.getSelectedItem())
+ .collective(collective.isSelected())
+ .obsolete(obsolete.isSelected())
+ .noUserModification(nonModifiable.isSelected())
+ .singleValue(singleValued.isSelected())
+ .extraProperties(getExtraProperties())
+ .addToSchema()
+ .toSchema()
+ .getAttributeType(getOID());
}
private void updateDefaultMatchingRuleNames()
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
index 2fca78c..22e437f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -69,6 +69,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
import org.opends.guitools.controlpanel.datamodel.SortableListModel;
@@ -86,7 +87,7 @@
import org.opends.guitools.controlpanel.ui.components.TitlePanel;
import org.opends.guitools.controlpanel.ui.renderer.SchemaElementComboBoxCellRenderer;
import org.opends.guitools.controlpanel.util.Utilities;
-import org.opends.server.types.AttributeType;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
import org.opends.server.util.ServerConstants;
@@ -528,7 +529,7 @@
lastAliases.addAll(aliases);
this.aliases.setText(Utilities.getStringFromCollection(aliases, ", "));
- String sOrigin = Utilities.getOrigin(oc);
+ String sOrigin = Utilities.getOrigin(new SomeSchemaElement(oc));
if (sOrigin == null)
{
sOrigin = "";
@@ -1037,8 +1038,7 @@
attributes.getSelectedList2()
};
attributes.getAvailableListModel().clear();
- Collection<AttributeType> allAttrs =
- schema.getAttributeTypes().values();
+ Collection<AttributeType> allAttrs = schema.getAttributeTypes();
attributes.getAvailableListModel().addAll(allAttrs);
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/IndexPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/IndexPanel.java
index 8ace834..d55f1c7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/IndexPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/IndexPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -73,7 +73,7 @@
import org.opends.server.admin.std.client.BackendIndexCfgClient;
import org.opends.server.admin.std.client.PluggableBackendCfgClient;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.OpenDsException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
index 7e87a13..892c82d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -65,6 +65,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
import org.opends.guitools.controlpanel.datamodel.CustomSearchResult;
import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
@@ -79,7 +80,6 @@
import org.opends.server.tools.tasks.TaskEntry;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java
index 61ebe68..a59794b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/MatchingRulePanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -32,7 +32,6 @@
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
-import java.util.Comparator;
import java.util.TreeSet;
import javax.swing.DefaultListModel;
@@ -46,7 +45,7 @@
import org.opends.guitools.controlpanel.util.LowerCaseComparator;
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Schema;
import static org.opends.messages.AdminToolMessages.*;
@@ -206,7 +205,7 @@
oid.setText(matchingRule.getOID());
Syntax s = null;
String syntaxOID = matchingRule.getSyntax().getOID();
- for (Syntax candidate : schema.getSyntaxes().values())
+ for (Syntax candidate : schema.getSyntaxes())
{
if (candidate.getOID().equals(syntaxOID))
{
@@ -230,9 +229,8 @@
}
description.setText(n);
- Comparator<String> lowerCaseComparator = new LowerCaseComparator();
- TreeSet<String> attributes = new TreeSet<>(lowerCaseComparator);
- for (AttributeType attr : schema.getAttributeTypes().values())
+ TreeSet<String> attributes = new TreeSet<>(new LowerCaseComparator());
+ for (AttributeType attr : schema.getAttributeTypes())
{
if (matchingRule.equals(attr.getApproximateMatchingRule()) ||
matchingRule.equals(attr.getEqualityMatchingRule()) ||
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
index e09b8be..1350f4f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -58,6 +58,7 @@
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.ldap.schema.AttributeUsage;
import org.forgerock.opendj.ldap.schema.MatchingRule;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
import org.opends.guitools.controlpanel.event.ConfigurationElementCreatedListener;
@@ -69,7 +70,7 @@
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.config.ConfigConstants;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
import org.opends.server.util.ServerConstants;
@@ -189,9 +190,8 @@
schema = s;
Map<String, Syntax> syntaxNameMap = new HashMap<>();
- for (String key : schema.getSyntaxes().keySet())
+ for (Syntax syntax : schema.getSyntaxes())
{
- Syntax syntax = schema.getSyntax(key);
String name = syntax.getName();
if (name == null)
{
@@ -209,9 +209,8 @@
updateComboBoxModel(newSyntaxes, (DefaultComboBoxModel) syntax.getModel());
Map<String, AttributeType> attributeNameMap = new HashMap<>();
- for (String key : schema.getAttributeTypes().keySet())
+ for (AttributeType attr : schema.getAttributeTypes())
{
- AttributeType attr = schema.getAttributeType(key);
attributeNameMap.put(attr.getNameOrOID(), attr);
}
orderedKeys.clear();
@@ -226,9 +225,8 @@
final List<MatchingRule> availableMatchingRules = new ArrayList<>();
final Map<String, MatchingRule> matchingRuleNameMap = new HashMap<>();
- for (String key : schema.getMatchingRules().keySet())
+ for (MatchingRule rule : schema.getMatchingRules())
{
- MatchingRule rule = schema.getMatchingRule(key);
matchingRuleNameMap.put(rule.getNameOrOID(), rule);
}
@@ -240,9 +238,9 @@
}
final JComboBox[] combos = { approximate, equality, ordering, substring };
- for (int i = 0; i < combos.length; i++)
+ for (JComboBox combo : combos)
{
- final DefaultComboBoxModel model = (DefaultComboBoxModel) combos[i].getModel();
+ final DefaultComboBoxModel model = (DefaultComboBoxModel) combo.getModel();
final List<Object> el = new ArrayList<Object>(availableMatchingRules);
el.add(0, model.getSize() == 0 ? NO_MATCHING_RULE : model.getElementAt(0));
updateComboBoxModel(el, model);
@@ -438,7 +436,7 @@
static LocalizableMessage getSchemaElementType(String name, Schema schema)
{
final String lowerCase = name.toLowerCase();
- if (schema.getAttributeType(lowerCase) != null)
+ if (schema.hasAttributeType(lowerCase))
{
return INFO_CTRL_PANEL_TYPE_ATTRIBUTE.get();
}
@@ -455,7 +453,7 @@
return INFO_CTRL_PANEL_TYPE_MATCHING_RULE.get();
}
- for (Syntax attr : schema.getSyntaxes().values())
+ for (Syntax attr : schema.getSyntaxes())
{
if (name.equalsIgnoreCase(attr.getName()))
{
@@ -463,7 +461,7 @@
}
}
- for (MatchingRule rule : schema.getMatchingRules().values())
+ for (MatchingRule rule : schema.getMatchingRules())
{
String n = rule.getNameOrOID();
if (n != null && n.equalsIgnoreCase(name))
@@ -726,22 +724,23 @@
private AttributeType getAttribute()
{
- return new AttributeType("",
- getAttributeName(),
- getAllNames(),
- getOID(),
- getDescription(),
- getSuperior(),
- (Syntax) syntax.getSelectedItem(),
- getApproximateMatchingRule(),
- getEqualityMatchingRule(),
- getOrderingMatchingRule(),
- getSubstringMatchingRule(),
- (AttributeUsage) usage.getSelectedItem(),
- collective.isSelected(),
- nonModifiable.isSelected(),
- obsolete.isSelected(),
- singleValued.isSelected(),
- getExtraProperties());
+ return new SchemaBuilder().buildAttributeType(getOID())
+ .names(getAllNames())
+ .description(getDescription())
+ .superiorType(getSuperior().getNameOrOID())
+ .syntax(((Syntax) syntax.getSelectedItem()).getOID())
+ .approximateMatchingRule(getApproximateMatchingRule().getOID())
+ .equalityMatchingRule(getEqualityMatchingRule().getOID())
+ .orderingMatchingRule(getOrderingMatchingRule().getOID())
+ .substringMatchingRule(getSubstringMatchingRule().getOID())
+ .usage((AttributeUsage)usage.getSelectedItem())
+ .collective(collective.isSelected())
+ .obsolete(obsolete.isSelected())
+ .noUserModification(nonModifiable.isSelected())
+ .singleValue(singleValued.isSelected())
+ .extraProperties(getExtraProperties())
+ .addToSchema()
+ .toSchema()
+ .getAttributeType(getOID());
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewIndexPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewIndexPanel.java
index 8c39258..3265792 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewIndexPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewIndexPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -66,7 +66,8 @@
import org.opends.server.admin.std.client.PluggableBackendCfgClient;
import org.opends.server.admin.std.meta.BackendIndexCfgDefn;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.DN;
import org.opends.server.types.OpenDsException;
import org.opends.server.types.Schema;
@@ -141,16 +142,17 @@
TreeSet<String> standardAttrNames = new TreeSet<>();
TreeSet<String> configurationAttrNames = new TreeSet<>();
TreeSet<String> customAttrNames = new TreeSet<>();
- for (AttributeType attr : schema.getAttributeTypes().values())
+ for (AttributeType attr : schema.getAttributeTypes())
{
- String name = attr.getPrimaryName();
+ SomeSchemaElement element = new SomeSchemaElement(attr);
+ String name = attr.getNameOrOID();
if (!indexExists(backend, name))
{
- if (Utilities.isStandard(attr))
+ if (Utilities.isStandard(element))
{
standardAttrNames.add(name);
}
- else if (Utilities.isConfiguration(attr))
+ else if (Utilities.isConfiguration(element))
{
configurationAttrNames.add(name);
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java
index 61ed818..5406a1d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -73,7 +73,7 @@
import org.opends.guitools.controlpanel.ui.renderer.SchemaElementComboBoxCellRenderer;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.server.config.ConfigConstants;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
import org.opends.server.util.ServerConstants;
@@ -364,8 +364,7 @@
attributes.getSelectedList2()
};
attributes.getAvailableListModel().clear();
- Collection<AttributeType> allAttrs =
- schema.getAttributeTypes().values();
+ Collection<AttributeType> allAttrs = schema.getAttributeTypes();
attributes.getAvailableListModel().addAll(allAttrs);
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaBrowserRightPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaBrowserRightPanel.java
index 062c73c..01ca137 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaBrowserRightPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaBrowserRightPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -44,7 +44,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.forgerock.opendj.ldap.schema.MatchingRule;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaElementPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaElementPanel.java
index 24fe1c9..af912d1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaElementPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SchemaElementPanel.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2015 ForgeRock AS.
+ * Portions Copyright 2015-2016 ForgeRock AS.
*/
package org.opends.guitools.controlpanel.ui;
+import static org.opends.server.util.StaticUtils.*;
+
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -34,9 +36,9 @@
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.guitools.controlpanel.event.SchemaElementSelectionEvent;
import org.opends.guitools.controlpanel.event.SchemaElementSelectionListener;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
@@ -139,7 +141,7 @@
*/
protected Set<String> getAliases(AttributeType attr)
{
- return getAliases(attr.getNormalizedNames(), attr.getPrimaryName());
+ return getAliases(attr.getNames(), toLowerCase(attr.getNameOrOID()));
}
/**
@@ -152,7 +154,7 @@
return getAliases(oc.getNormalizedNames(), oc.getPrimaryName());
}
- private Set<String> getAliases(Set<String> names, String primaryName)
+ private Set<String> getAliases(Iterable<String> names, String primaryName)
{
Set<String> aliases = new LinkedHashSet<>();
if (primaryName == null)
@@ -163,7 +165,7 @@
{
if (!name.equalsIgnoreCase(primaryName))
{
- aliases.add(name);
+ aliases.add(toLowerCase(name));
}
}
return aliases;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
index 352a696..3e1b8f3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.guitools.controlpanel.ui;
@@ -92,6 +92,7 @@
import org.opends.guitools.controlpanel.ui.nodes.DndBrowserNodes;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.server.schema.SchemaConstants;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.Base64;
import org.opends.server.util.LDIFReader;
@@ -1180,9 +1181,9 @@
Schema schema = getInfo().getServerDescriptor().getSchema();
if (schema != null)
{
- AttributeType attr = schema.getAttributeType(attrName.toLowerCase());
- if (attr != null)
+ if (schema.hasAttributeType(attrName.toLowerCase()))
{
+ AttributeType attr = schema.getAttributeType(attrName.toLowerCase());
isSingleValue = attr.isSingleValue();
}
}
@@ -1199,9 +1200,9 @@
Schema schema = getInfo().getServerDescriptor().getSchema();
if (schema != null)
{
- AttributeType attr = schema.getAttributeType(attrName.toLowerCase());
- if (attr != null)
+ if (schema.hasAttributeType(attrName.toLowerCase()))
{
+ AttributeType attr = schema.getAttributeType(attrName.toLowerCase());
List<Object> ocs = sr.getAttributeValues(
ServerConstants.OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
for (Object o : ocs)
@@ -1445,9 +1446,9 @@
Schema schema = getInfo().getServerDescriptor().getSchema();
if (schema != null)
{
- AttributeType attr = schema.getAttributeType(attrName.toLowerCase());
- if (attr != null)
+ if (schema.hasAttributeType(attrName.toLowerCase()))
{
+ AttributeType attr = schema.getAttributeType(attrName.toLowerCase());
// There is no name for a regex syntax.
String syntaxName = attr.getSyntax().getName();
if (syntaxName!=null) {
@@ -1553,10 +1554,9 @@
{
String aName =
Utilities.getAttributeNameWithoutOptions(attrName);
- AttributeType attr =
- schema.getAttributeType(aName.toLowerCase());
- if (attr != null)
+ if (schema.hasAttributeType(aName.toLowerCase()))
{
+ AttributeType attr = schema.getAttributeType(aName.toLowerCase());
attributeTypes.add(attr);
attributeNames.add(attrName);
attributeValues.add(ByteString.valueOfUtf8((String) o));
@@ -1845,7 +1845,6 @@
this.attrName = attrName;
}
- @Override
public void actionPerformed(ActionEvent ev)
{
addBrowseClicked(attrName, tc);
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java
index 5952f58..aa29876 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -52,7 +52,8 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.ldap.schema.MatchingRule;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
@@ -246,11 +247,7 @@
*/
public void update(AttributeType attr, Schema schema)
{
- String n = attr.getPrimaryName();
- if (n == null)
- {
- n = NOT_APPLICABLE.toString();
- }
+ String n = attr.getNameOrOID();
titlePanel.setDetails(LocalizableMessage.raw(n));
name.setText(n);
AttributeType superior = attr.getSuperiorType();
@@ -260,15 +257,11 @@
}
else
{
- n = superior.getPrimaryName();
- }
- if (n == null)
- {
- n = NOT_APPLICABLE.toString();
+ n = superior.getNameOrOID();
}
parent.setText(n);
oid.setText(attr.getOID());
- origin.setText(StandardObjectClassPanel.getOrigin(attr).toString());
+ origin.setText(StandardObjectClassPanel.getOrigin(new SomeSchemaElement(attr)).toString());
n = attr.getDescription();
if (n == null)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java
index d916861..2c09b05 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardObjectClassPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -55,13 +55,11 @@
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.CommonSchemaElements;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
-import static org.opends.server.types.CommonSchemaElements.*;
-
/**
* The panel that displays a standard object class definition.
*
@@ -261,10 +259,10 @@
* @param element the schema element.
* @return the message describing the schema element origin (file, RFC, etc.).
*/
- static LocalizableMessage getOrigin(CommonSchemaElements element)
+ static LocalizableMessage getOrigin(SomeSchemaElement element)
{
LocalizableMessageBuilder returnValue = new LocalizableMessageBuilder();
- String fileName = getSchemaFile(element);
+ String fileName = element.getSchemaFile();
String xOrigin = Utilities.getOrigin(element);
if (xOrigin != null)
{
@@ -309,7 +307,7 @@
name.setText(n);
parent.setText(getSuperiorText(oc));
oid.setText(oc.getOID());
- origin.setText(getOrigin(oc).toString());
+ origin.setText(getOrigin(new SomeSchemaElement(oc)).toString());
n = oc.getDescription();
if (n == null)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
index ff58a28..4da6172 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -64,6 +64,7 @@
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.LDIFReader;
import org.opends.server.util.ServerConstants;
@@ -335,10 +336,9 @@
{
String aName =
Utilities.getAttributeNameWithoutOptions(attrName);
- AttributeType attr =
- schema.getAttributeType(aName.toLowerCase());
- if (attr != null)
+ if (schema.hasAttributeType(aName.toLowerCase()))
{
+ AttributeType attr = schema.getAttributeType(aName.toLowerCase());
attributeTypes.add(attr);
attributeNames.add(attrName);
attributeValues.add(ByteString.valueOfUtf8((String) o));
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
index fb3561e..dcd9877 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -57,7 +57,7 @@
import org.opends.guitools.controlpanel.ui.nodes.BasicNode;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.server.schema.SchemaConstants;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
@@ -357,7 +357,7 @@
{
schemaReadOnlyAttributes.clear();
schemaReadOnlyAttributesLowerCase.clear();
- for (AttributeType attr : schema.getAttributeTypes().values())
+ for (AttributeType attr : schema.getAttributeTypes())
{
if (attr.isNoUserModification())
{
@@ -487,10 +487,10 @@
// Check all the attributes that we consider binaries.
if (schema != null)
{
- AttributeType attr = schema.getAttributeType(
- Utilities.getAttributeNameWithoutOptions(attrName).toLowerCase());
- if (attr != null)
+ String attributeName = Utilities.getAttributeNameWithoutOptions(attrName).toLowerCase();
+ if (schema.hasAttributeType(attributeName))
{
+ AttributeType attr = schema.getAttributeType(attributeName);
Syntax syntax = attr.getSyntax();
if (syntax != null)
{
@@ -574,9 +574,9 @@
attrName = Utilities.getAttributeNameWithoutOptions(attrName);
if (schema != null)
{
- AttributeType attrType = schema.getAttributeType(attrName.toLowerCase());
- if (attrType != null)
+ if (schema.hasAttributeType(attrName.toLowerCase()))
{
+ AttributeType attrType = schema.getAttributeType(attrName.toLowerCase());
isEditable = !attrType.isNoUserModification();
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/ConfigurationAttributeTreeNode.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/ConfigurationAttributeTreeNode.java
index 5c249a2..acbdaf8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/ConfigurationAttributeTreeNode.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/ConfigurationAttributeTreeNode.java
@@ -22,17 +22,13 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
+ * Portions copyright 2015-2016 ForgeRock AS
*/
-
package org.opends.guitools.controlpanel.ui.nodes;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
-/**
- * Class of the nodes that represent a configuration attribute in the 'Manage
- * Schema' tree.
- *
- */
+/** Class of the nodes that represent a configuration attribute in the 'Manage Schema' tree. */
public class ConfigurationAttributeTreeNode extends SchemaElementTreeNode
{
private static final long serialVersionUID = 428949987639862400L;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/CustomAttributeTreeNode.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/CustomAttributeTreeNode.java
index 9cc42f5..59bff62 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/CustomAttributeTreeNode.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/CustomAttributeTreeNode.java
@@ -22,17 +22,13 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
+ * Portions copyright 2015-2016 ForgeRock AS
*/
-
package org.opends.guitools.controlpanel.ui.nodes;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
-/**
- * Class of the nodes that represent a custom attribute in the 'Manage
- * Schema' tree.
- *
- */
+/** Class of the nodes that represent a custom attribute in the 'Manage Schema' tree. */
public class CustomAttributeTreeNode extends SchemaElementTreeNode
{
private static final long serialVersionUID = -9198486156950262507L;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/StandardAttributeTreeNode.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/StandardAttributeTreeNode.java
index 47b37d2..73ebf19 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/StandardAttributeTreeNode.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/nodes/StandardAttributeTreeNode.java
@@ -22,17 +22,13 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
+ * Portions copyright 2015-2016 ForgeRock AS
*/
-
package org.opends.guitools.controlpanel.ui.nodes;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
-/**
- * Class of the nodes that represent a standard attribute in the 'Manage
- * Schema' tree.
- *
- */
+/** Class of the nodes that represent a standard attribute in the 'Manage Schema' tree. */
public class StandardAttributeTreeNode extends SchemaElementTreeNode
{
private static final long serialVersionUID = -3439217150360205524L;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java
index c498b32..6553668 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.util;
@@ -48,7 +48,7 @@
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.ServerContext;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.CanceledOperationException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
index f93adb9..c38b477 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.util;
@@ -38,7 +38,6 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.MatchingRuleImpl;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
@@ -50,14 +49,11 @@
import org.opends.server.core.ServerContext;
import org.opends.server.replication.plugin.HistoricalCsnOrderingMatchingRuleImpl;
import org.opends.server.schema.AciSyntax;
-import org.opends.server.schema.AttributeTypeSyntax;
-import org.opends.server.schema.LDAPSyntaxDescriptionSyntax;
import org.opends.server.schema.ObjectClassSyntax;
import org.opends.server.schema.SchemaConstants;
import org.opends.server.schema.SubtreeSpecificationSyntax;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
-import org.opends.server.types.LDAPSyntaxDescription;
import org.opends.server.types.Schema;
/** Class used to retrieve the schema from the schema files. */
@@ -133,11 +129,12 @@
for (AttributeSyntax<?> syntax : syntaxes)
{
final ServerContext serverContext = DirectoryServer.getInstance().getServerContext();
- if (!serverContext.getSchemaNG().hasSyntax(syntax.getOID()))
+ final org.forgerock.opendj.ldap.schema.Schema schemaNG = serverContext.getSchemaNG();
+ if (!schemaNG.hasSyntax(syntax.getOID()))
{
syntax.initializeSyntax(null, serverContext);
}
- schema.registerSyntax(syntax.getSDKSyntax(serverContext.getSchemaNG()), true);
+ schema.registerSyntax(syntax.getSDKSyntax(schemaNG), true);
}
}
@@ -145,14 +142,15 @@
final MatchingRuleImpl impl)
throws InitializationException, ConfigException, DirectoryException
{
+ final org.forgerock.opendj.ldap.schema.Schema schemaNG = schema.getSchemaNG();
final MatchingRule matchingRule;
- if (CoreSchema.getInstance().hasMatchingRule(name))
+ if (schemaNG.hasMatchingRule(name))
{
- matchingRule = CoreSchema.getInstance().getMatchingRule(name);
+ matchingRule = schemaNG.getMatchingRule(name);
}
else
{
- matchingRule = new SchemaBuilder(CoreSchema.getInstance()).buildMatchingRule(oid)
+ matchingRule = new SchemaBuilder(schemaNG).buildMatchingRule(oid)
.names(name)
.syntaxOID(syntaxOID)
.implementation(impl)
@@ -183,7 +181,7 @@
switch (schemaAttr)
{
case ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC:
- schema.registerAttributeType(AttributeTypeSyntax.decodeAttributeType(sb, schema, false), true);
+ schema.registerAttributeType(sb.toString(), null, true);
break;
case ConfigConstants.ATTR_OBJECTCLASSES_LC:
schema.registerObjectClass(ObjectClassSyntax.decodeObjectClass(sb, schema, false), true);
@@ -214,9 +212,7 @@
{
try
{
- final LDAPSyntaxDescription syntaxDesc = LDAPSyntaxDescriptionSyntax.decodeLDAPSyntax(
- sb, DirectoryServer.getInstance().getServerContext(), schema, false, false);
- schema.registerLdapSyntaxDescription(syntaxDesc, true);
+ schema.registerLdapSyntaxDescription(sb.toString(), true);
}
catch (DirectoryException e)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java
index f3fab6b..d8ab0bf 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.guitools.controlpanel.util;
@@ -42,7 +42,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SchemaConfigManager;
import org.opends.server.schema.SchemaConstants;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ObjectClass;
@@ -84,14 +84,13 @@
}
for (String name : ATTRIBUTES_TO_KEEP)
{
- AttributeType attr = sc.getAttributeType(name.toLowerCase());
- if (attr != null)
+ if (sc.hasAttributeType(name))
{
- attributesToKeep.add(attr);
+ attributesToKeep.add(sc.getAttributeType(name));
}
}
- matchingRulesToKeep.addAll(sc.getMatchingRules().values());
- syntaxesToKeep.addAll(sc.getSyntaxes().values());
+ matchingRulesToKeep.addAll(sc.getMatchingRules());
+ syntaxesToKeep.addAll(sc.getSyntaxes());
}
private static String getSchemaDirectoryPath()
@@ -176,8 +175,7 @@
// initialize the server schema.
for (String schemaFile : fileNames)
{
- // no server context to pass
- SchemaConfigManager.loadSchemaFile(null, schema, schemaFile);
+ SchemaConfigManager.loadSchemaFile(schema, schemaFile);
}
}
@@ -191,7 +189,8 @@
*/
protected Schema getBaseSchema() throws DirectoryException
{
- Schema schema = new Schema();
+ // start from default schema
+ Schema schema = new Schema(org.forgerock.opendj.ldap.schema.Schema.getDefaultSchema());
for (MatchingRule mr : matchingRulesToKeep)
{
schema.registerMatchingRule(mr, true);
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
index 100f31d..5161805 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
@@ -22,15 +22,13 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.guitools.controlpanel.util;
import static org.opends.admin.ads.util.ConnectionUtils.*;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.quicksetup.Installation.*;
-import static org.opends.server.types.CommonSchemaElements.*;
-
import static com.forgerock.opendj.cli.Utils.*;
import static com.forgerock.opendj.util.OperatingSystem.*;
@@ -129,13 +127,12 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.schema.SchemaConstants;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.CommonSchemaElements;
+import org.opends.server.schema.SomeSchemaElement;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.OpenDsException;
import org.opends.server.types.RDN;
import org.opends.server.types.Schema;
-import org.opends.server.types.SchemaFileElement;
import org.opends.server.util.ServerConstants;
import org.opends.server.util.StaticUtils;
@@ -2039,20 +2036,17 @@
* @return <CODE>true</CODE> if the provided schema element is part of the
* standard and <CODE>false</CODE> otherwise.
*/
- public static boolean isStandard(SchemaFileElement fileElement)
+ public static boolean isStandard(SomeSchemaElement fileElement)
{
- final String fileName = getSchemaFile(fileElement);
+ final String fileName = fileElement.getSchemaFile();
if (fileName != null)
{
return contains(standardSchemaFileNames, fileName) || fileName.toLowerCase().contains("-rfc");
}
- else if (fileElement instanceof CommonSchemaElements)
+ String xOrigin = getOrigin(fileElement);
+ if (xOrigin != null)
{
- String xOrigin = getOrigin(fileElement);
- if (xOrigin != null)
- {
- return contains(standardSchemaOrigins, xOrigin) || xOrigin.startsWith("RFC ") || xOrigin.startsWith("draft-");
- }
+ return contains(standardSchemaOrigins, xOrigin) || xOrigin.startsWith("RFC ") || xOrigin.startsWith("draft-");
}
return false;
}
@@ -2064,20 +2058,17 @@
* @return <CODE>true</CODE> if the provided schema element is part of the
* configuration and <CODE>false</CODE> otherwise.
*/
- public static boolean isConfiguration(SchemaFileElement fileElement)
+ public static boolean isConfiguration(SomeSchemaElement fileElement)
{
- String fileName = getSchemaFile(fileElement);
+ String fileName = fileElement.getSchemaFile();
if (fileName != null)
{
return contains(configurationSchemaFileNames, fileName);
}
- else if (fileElement instanceof CommonSchemaElements)
+ String xOrigin = getOrigin(fileElement);
+ if (xOrigin != null)
{
- String xOrigin = getOrigin(fileElement);
- if (xOrigin != null)
- {
- return contains(configurationSchemaOrigins, xOrigin);
- }
+ return contains(configurationSchemaOrigins, xOrigin);
}
return false;
}
@@ -2099,10 +2090,9 @@
* @param element the schema element.
* @return the origin of the provided schema element.
*/
- public static String getOrigin(SchemaFileElement element)
+ public static String getOrigin(SomeSchemaElement element)
{
- return CommonSchemaElements.getSingleValueProperty(
- element, ServerConstants.SCHEMA_PROPERTY_ORIGIN);
+ return element.getOrigin();
}
/**
@@ -2131,20 +2121,17 @@
*/
public static boolean hasImageSyntax(String attrName, Schema schema)
{
- attrName = Utilities.getAttributeNameWithoutOptions(attrName).toLowerCase();
+ attrName = Utilities.getAttributeNameWithoutOptions(attrName);
if ("photo".equals(attrName))
{
return true;
}
// Check all the attributes that we consider binaries.
- if (schema != null)
+ if (schema != null && schema.hasAttributeType(attrName))
{
AttributeType attr = schema.getAttributeType(attrName);
- if (attr != null)
- {
- String syntaxOID = attr.getSyntax().getOID();
- return SchemaConstants.SYNTAX_JPEG_OID.equals(syntaxOID);
- }
+ String syntaxOID = attr.getSyntax().getOID();
+ return SchemaConstants.SYNTAX_JPEG_OID.equals(syntaxOID);
}
return false;
}
@@ -2181,9 +2168,9 @@
if (schema != null)
{
attrName = Utilities.getAttributeNameWithoutOptions(attrName).toLowerCase();
- AttributeType attr = schema.getAttributeType(attrName);
- if (attr != null)
+ if (schema.hasAttributeType(attrName))
{
+ AttributeType attr = schema.getAttributeType(attrName);
return contains(oids, attr.getSyntax().getOID());
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/admin/AdministrationDataSync.java b/opendj-server-legacy/src/main/java/org/opends/server/admin/AdministrationDataSync.java
index 99a38c7..192e3d9 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/admin/AdministrationDataSync.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/admin/AdministrationDataSync.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.admin;
@@ -42,7 +42,7 @@
import org.opends.server.protocols.internal.Requests;
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/admin/AttributeTypePropertyDefinition.java b/opendj-server-legacy/src/main/java/org/opends/server/admin/AttributeTypePropertyDefinition.java
index d0093d0..c6fe899 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/admin/AttributeTypePropertyDefinition.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/admin/AttributeTypePropertyDefinition.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.admin;
@@ -31,7 +31,7 @@
import java.util.EnumSet;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
/** Attribute type property definition. */
public final class AttributeTypePropertyDefinition extends
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/admin/ManagedObjectPath.java b/opendj-server-legacy/src/main/java/org/opends/server/admin/ManagedObjectPath.java
index 6e783a2..e476de8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/admin/ManagedObjectPath.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/admin/ManagedObjectPath.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.admin;
@@ -37,6 +37,7 @@
import org.opends.server.admin.std.meta.RootCfgDefn;
import org.opends.server.admin.std.server.RootCfg;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/admin/PropertyValueVisitor.java b/opendj-server-legacy/src/main/java/org/opends/server/admin/PropertyValueVisitor.java
index eac199a..081d621 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/admin/PropertyValueVisitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/admin/PropertyValueVisitor.java
@@ -22,20 +22,17 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
+ * Portions copyright 2015-2016 ForgeRock AS
*/
-
package org.opends.server.admin;
-
-
import java.net.InetAddress;
import org.forgerock.opendj.ldap.AddressMask;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.authorization.dseecompat.Aci;
-
/**
* A visitor of property values, in the style of the visitor design
* pattern. Classes implementing this interface can query a property a
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/admin/server/ServerManagementContext.java b/opendj-server-legacy/src/main/java/org/opends/server/admin/server/ServerManagementContext.java
index 836fc4c..089b230 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/admin/server/ServerManagementContext.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/admin/server/ServerManagementContext.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.admin.server;
@@ -75,7 +75,7 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/api/AttributeSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/api/AttributeSyntax.java
index 5686f63..8bac029 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/api/AttributeSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/api/AttributeSyntax.java
@@ -22,32 +22,31 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.api;
-import org.forgerock.i18n.LocalizableMessage;
-
import java.util.List;
-import org.opends.server.admin.std.server.AttributeSyntaxCfg;
-import org.opends.server.core.ServerContext;
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.types.InitializationException;
-import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
+import org.opends.server.core.ServerContext;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.InitializationException;
+import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
/**
* This class defines the set of methods and structures that must be
* implemented by a Directory Server module that implements an
* attribute syntax.
*
- * @param <T> The type of configuration handled by this attribute
- * syntax.
+ * @param <T> The type of configuration handled by this attribute syntax.
*/
@org.opends.server.types.PublicAPI(
stability=org.opends.server.types.StabilityLevel.VOLATILE,
@@ -58,25 +57,22 @@
public abstract class AttributeSyntax<T extends AttributeSyntaxCfg>
{
/**
- * Initializes this attribute syntax based on the information in the
- * provided configuration entry.
+ * Initializes this attribute syntax based on the information in the provided configuration entry.
*
- * @param configuration The configuration to use to initialize
- * this attribute syntax.
+ * @param configuration
+ * The configuration to use to initialize this attribute syntax.
* @param serverContext
- * The server context.
- *
- * @throws ConfigException If an unrecoverable problem arises in
- * the process of performing the
- * initialization.
- *
- * @throws InitializationException If a problem occurs during
- * initialization that is not
- * related to the server
- * configuration.
+ * The server context.
+ * @throws ConfigException
+ * If an unrecoverable problem arises in the process of performing the initialization.
+ * @throws DirectoryException
+ * If an unrecoverable problem arises in the process of performing the initialization.
+ * @throws InitializationException
+ * If a problem occurs during initialization that is not related to the server
+ * configuration.
*/
public void initializeSyntax(T configuration, ServerContext serverContext)
- throws ConfigException, InitializationException
+ throws ConfigException, DirectoryException, InitializationException
{
// not implemented
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicy.java b/opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicy.java
index 5bab56f..312ed63 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicy.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicy.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
* Portions Copyright 2014 ForgeRock AS
*/
package org.opends.server.api;
@@ -35,6 +35,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.util.TimeThread;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicyState.java b/opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicyState.java
index 15e55fb..e148c66 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicyState.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/api/AuthenticationPolicyState.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
* Portions Copyright 2014 ForgeRock AS
*/
package org.opends.server.api;
@@ -34,9 +34,9 @@
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.GeneralizedTime;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/api/Backend.java b/opendj-server-legacy/src/main/java/org/opends/server/api/Backend.java
index 0026c3b..ce0d0da 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/api/Backend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/api/Backend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.api;
@@ -55,7 +55,7 @@
import org.opends.server.core.SearchOperation;
import org.opends.server.core.ServerContext;
import org.opends.server.monitors.BackendMonitor;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.CanceledOperationException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/api/ClientConnection.java b/opendj-server-legacy/src/main/java/org/opends/server/api/ClientConnection.java
index 2b219f9..60473e0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/api/ClientConnection.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/api/ClientConnection.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.api;
@@ -48,7 +48,7 @@
import org.opends.server.core.PluginConfigManager;
import org.opends.server.core.SearchOperation;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/api/CompressedSchema.java b/opendj-server-legacy/src/main/java/org/opends/server/api/CompressedSchema.java
index 553a33b..17f6ece 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/api/CompressedSchema.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/api/CompressedSchema.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.api;
@@ -41,18 +41,25 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import net.jcip.annotations.GuardedBy;
+
+import org.forgerock.opendj.ldap.ByteSequenceReader;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.ByteStringBuilder;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.Schema;
import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.ServerContext;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
-import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.Attributes;
-import org.forgerock.opendj.ldap.ByteSequence;
-import org.forgerock.opendj.ldap.ByteSequenceReader;
-import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ObjectClass;
+import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
/**
* This class provides a utility for interacting with compressed representations
@@ -66,14 +73,128 @@
mayInvoke = false)
public class CompressedSchema
{
- /** Maps attribute description to ID. */
- private final List<Entry<AttributeType, Set<String>>> adDecodeMap = new CopyOnWriteArrayList<>();
- /** Maps ID to attribute description. */
- private final Map<Entry<AttributeType, Set<String>>, Integer> adEncodeMap = new ConcurrentHashMap<>();
- /** The map between encoded representations and object class sets. */
- private final List<Map<ObjectClass, String>> ocDecodeMap = new CopyOnWriteArrayList<>();
- /** The map between object class sets and encoded representations. */
- private final Map<Map<ObjectClass, String>, Integer> ocEncodeMap = new ConcurrentHashMap<>();
+ /** Encloses all the encode and decode mappings for attribute and object classes. */
+ private static final class Mappings
+ {
+ /** Maps encoded representation's ID to its attribute description (the List's index is the ID). */
+ private final List<Entry<AttributeType, Set<String>>> adDecodeMap = new CopyOnWriteArrayList<>();
+ /** Maps attribute description to its encoded representation's ID. */
+ private final Map<Entry<AttributeType, Set<String>>, Integer> adEncodeMap;
+ /** Maps encoded representation's ID to its object class (the List's index is the ID). */
+ private final List<Map<ObjectClass, String>> ocDecodeMap = new CopyOnWriteArrayList<>();
+ /** Maps object class to its encoded representation's ID. */
+ private final Map<Map<ObjectClass, String>, Integer> ocEncodeMap;
+
+ private Mappings()
+ {
+ this.adEncodeMap = new ConcurrentHashMap<>();
+ this.ocEncodeMap = new ConcurrentHashMap<>();
+ }
+
+ private Mappings(int adEncodeMapSize, int ocEncodeMapSize)
+ {
+ this.adEncodeMap = new ConcurrentHashMap<>(adEncodeMapSize);
+ this.ocEncodeMap = new ConcurrentHashMap<>(ocEncodeMapSize);
+ }
+ }
+
+ private final ServerContext serverContext;
+ /** Lock to update the maps. */
+ final ReadWriteLock lock = new ReentrantReadWriteLock();
+ private final Lock exclusiveLock = lock.writeLock();
+ private final Lock sharedLock = lock.readLock();
+
+ /** Schema used to build the compressed information. */
+ @GuardedBy("lock")
+ private Schema schemaNG;
+ @GuardedBy("lock")
+ private Mappings mappings = new Mappings();
+
+ /**
+ * Creates a new empty instance of this compressed schema.
+ *
+ * @param serverContext
+ * The server context.
+ */
+ public CompressedSchema(ServerContext serverContext)
+ {
+ this.serverContext = serverContext;
+ }
+
+ private Mappings getMappings()
+ {
+ sharedLock.lock();
+ try
+ {
+ return mappings;
+ }
+ finally
+ {
+ sharedLock.unlock();
+ }
+ }
+
+ private Mappings reloadMappingsIfSchemaChanged(boolean force)
+ {
+ // @RemoveOnceSDKSchemaIsUsed remove the "force" parameter
+ sharedLock.lock();
+ boolean shared = true;
+ try
+ {
+ Schema currentSchema = serverContext.getSchemaNG();
+ if (force || schemaNG != currentSchema)
+ {
+ sharedLock.unlock();
+ exclusiveLock.lock();
+ shared = false;
+
+ currentSchema = serverContext.getSchemaNG();
+ if (force || schemaNG != currentSchema)
+ {
+ // build new maps from existing ones
+ Mappings newMappings = new Mappings(mappings.adEncodeMap.size(), mappings.ocEncodeMap.size());
+ reloadAttributeTypeMaps(mappings, newMappings);
+ reloadObjectClassesMap(mappings, newMappings);
+
+ mappings = newMappings;
+ schemaNG = currentSchema;
+ }
+ }
+ return mappings;
+ }
+ finally
+ {
+ (shared ? sharedLock : exclusiveLock).unlock();
+ }
+ }
+
+ /**
+ * Reload the attribute types maps. This should be called when schema has changed, because some
+ * types may be out dated.
+ */
+ private void reloadAttributeTypeMaps(Mappings mappings, Mappings newMappings)
+ {
+ for (Entry<Entry<AttributeType, Set<String>>, Integer> entry : mappings.adEncodeMap.entrySet())
+ {
+ Entry<AttributeType, Set<String>> ad = entry.getKey();
+ Integer id = entry.getValue();
+ loadAttributeToMaps(id, ad.getKey().getNameOrOID(), ad.getValue(), newMappings);
+ }
+ }
+
+ /**
+ * Reload the object classes maps. This should be called when schema has changed, because some
+ * classes may be out dated.
+ */
+ private void reloadObjectClassesMap(Mappings mappings, Mappings newMappings)
+ {
+ for (Entry<Map<ObjectClass, String>, Integer> entry : mappings.ocEncodeMap.entrySet())
+ {
+ Map<ObjectClass, String> ocMap = entry.getKey();
+ Integer id = entry.getValue();
+ loadObjectClassesToMaps(id, ocMap.values(), newMappings, false);
+ }
+ }
/**
* Decodes the contents of the provided array as an attribute at the current
@@ -89,40 +210,27 @@
throws DirectoryException
{
// First decode the encoded attribute description id.
- final int length = reader.readBERLength();
- final byte[] idBytes = new byte[length];
- reader.readBytes(idBytes);
- final int id = decodeId(idBytes);
+ final int id = decodeId(reader);
- // Look up the attribute description.
- Entry<AttributeType, Set<String>> ad = adDecodeMap.get(id);
+ // Before returning the attribute, make sure that the attribute type is not stale.
+ final Mappings mappings = reloadMappingsIfSchemaChanged(false);
+ final Entry<AttributeType, Set<String>> ad = mappings.adDecodeMap.get(id);
if (ad == null)
{
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
ERR_COMPRESSEDSCHEMA_UNRECOGNIZED_AD_TOKEN.get(id));
}
- // Before returning the attribute, make sure that the attribute type is not
- // stale.
AttributeType attrType = ad.getKey();
Set<String> options = ad.getValue();
- if (attrType.isDirty())
- {
- ad = loadAttribute(idBytes, attrType.getNameOrOID(), options);
- attrType = ad.getKey();
- options = ad.getValue();
- }
// Determine the number of values for the attribute.
final int numValues = reader.readBERLength();
- // For the common case of a single value with no options, generate
- // less garbage.
+ // For the common case of a single value with no options, generate less garbage.
if (numValues == 1 && options.isEmpty())
{
- final int valueLength = reader.readBERLength();
- final ByteSequence valueBytes = reader.readByteSequence(valueLength);
- return Attributes.create(attrType, valueBytes.toByteString());
+ return Attributes.create(attrType, readValue(reader));
}
else
{
@@ -131,15 +239,16 @@
builder.setOptions(options);
for (int i = 0; i < numValues; i++)
{
- final int valueLength = reader.readBERLength();
- final ByteSequence valueBytes = reader.readByteSequence(valueLength);
- builder.add(valueBytes.toByteString());
+ builder.add(readValue(reader));
}
return builder.toAttribute();
}
}
-
+ private ByteString readValue(final ByteSequenceReader reader)
+ {
+ return reader.readByteSequence(reader.readBERLength()).toByteString();
+ }
/**
* Decodes an object class set from the provided byte string.
@@ -155,35 +264,44 @@
final ByteSequenceReader reader) throws DirectoryException
{
// First decode the encoded object class id.
- final int length = reader.readBERLength();
- final byte[] idBytes = new byte[length];
- reader.readBytes(idBytes);
- final int id = decodeId(idBytes);
+ final int id = decodeId(reader);
// Look up the object classes.
- final Map<ObjectClass, String> ocMap = ocDecodeMap.get(id);
- if (ocMap != null)
+ final Mappings mappings = getMappings();
+ Map<ObjectClass, String> ocMap = mappings.ocDecodeMap.get(id);
+ if (ocMap == null)
{
- // Before returning the object classes, make sure that none of them are
- // stale.
- for (final ObjectClass oc : ocMap.keySet())
- {
- if (oc.isDirty())
- {
- // Found at least one object class which is dirty so refresh them.
- return loadObjectClasses(idBytes, ocMap.values());
- }
- }
- return ocMap;
- }
- else
- {
+ // @RemoveOnceSDKSchemaIsUsed remove this first check (check is performed again later)
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
ERR_COMPRESSEDSCHEMA_UNKNOWN_OC_TOKEN.get(id));
}
+ // Before returning the object classes, make sure that none of them are stale.
+ boolean forceReload = isAnyObjectClassDirty(ocMap.keySet());
+ final Mappings newMappings = reloadMappingsIfSchemaChanged(forceReload);
+ if (mappings != newMappings)
+ {
+ ocMap = newMappings.ocDecodeMap.get(id);
+ if (ocMap == null)
+ {
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+ ERR_COMPRESSEDSCHEMA_UNKNOWN_OC_TOKEN.get(id));
+ }
+ }
+ return ocMap;
}
-
+ @RemoveOnceSDKSchemaIsUsed
+ private boolean isAnyObjectClassDirty(Set<ObjectClass> objectClasses)
+ {
+ for (final ObjectClass oc : objectClasses)
+ {
+ if (oc.isDirty())
+ {
+ return true;
+ }
+ }
+ return false;
+ }
/**
* Encodes the information in the provided attribute to a byte array.
@@ -202,24 +320,7 @@
// Re-use or allocate a new ID.
final AttributeType type = attribute.getAttributeType();
final Set<String> options = attribute.getOptions();
- final Entry<AttributeType, Set<String>> ad = new SimpleImmutableEntry<>(type, options);
-
- // Use double checked locking to avoid lazy registration races.
- Integer id = adEncodeMap.get(ad);
- if (id == null)
- {
- synchronized (adEncodeMap)
- {
- id = adEncodeMap.get(ad);
- if (id == null)
- {
- id = adDecodeMap.size();
- adDecodeMap.add(ad);
- adEncodeMap.put(ad, id);
- storeAttribute(encodeId(id), type.getNameOrOID(), options);
- }
- }
- }
+ int id = getAttributeId(new SimpleImmutableEntry<>(type, options));
// Encode the attribute.
final byte[] idBytes = encodeId(id);
@@ -233,7 +334,38 @@
}
}
+ private int getAttributeId(final Entry<AttributeType, Set<String>> ad) throws DirectoryException
+ {
+ // avoid lazy registration races
+ boolean shared = true;
+ sharedLock.lock();
+ try
+ {
+ Integer id = mappings.adEncodeMap.get(ad);
+ if (id != null)
+ {
+ return id;
+ }
+ sharedLock.unlock();
+ exclusiveLock.lock();
+ shared = false;
+
+ id = mappings.adEncodeMap.get(ad);
+ if (id == null)
+ {
+ id = mappings.adDecodeMap.size();
+ mappings.adDecodeMap.add(ad);
+ mappings.adEncodeMap.put(ad, id);
+ storeAttribute(encodeId(id), ad.getKey().getNameOrOID(), ad.getValue());
+ }
+ return id;
+ }
+ finally
+ {
+ (shared ? sharedLock : exclusiveLock).unlock();
+ }
+ }
/**
* Encodes the provided set of object classes to a byte array. If the same set
@@ -253,22 +385,7 @@
final Map<ObjectClass, String> objectClasses) throws DirectoryException
{
// Re-use or allocate a new ID.
- // Use double checked locking to avoid lazy registration races.
- Integer id = ocEncodeMap.get(objectClasses);
- if (id == null)
- {
- synchronized (ocEncodeMap)
- {
- id = ocEncodeMap.get(objectClasses);
- if (id == null)
- {
- id = ocDecodeMap.size();
- ocDecodeMap.add(objectClasses);
- ocEncodeMap.put(objectClasses, id);
- storeObjectClasses(encodeId(id), objectClasses.values());
- }
- }
- }
+ int id = getObjectClassId(objectClasses);
// Encode the object classes.
final byte[] idBytes = encodeId(id);
@@ -276,31 +393,58 @@
builder.appendBytes(idBytes);
}
+ private int getObjectClassId(final Map<ObjectClass, String> objectClasses) throws DirectoryException
+ {
+ // avoid lazy registration races
+ boolean shared = true;
+ sharedLock.lock();
+ try
+ {
+ Integer id = mappings.ocEncodeMap.get(objectClasses);
+ if (id != null)
+ {
+ return id;
+ }
+ sharedLock.unlock();
+ exclusiveLock.lock();
+ shared = false;
+
+ id = mappings.ocEncodeMap.get(objectClasses);
+ if (id == null)
+ {
+ id = mappings.ocDecodeMap.size();
+ mappings.ocDecodeMap.add(objectClasses);
+ mappings.ocEncodeMap.put(objectClasses, id);
+ storeObjectClasses(encodeId(id), objectClasses.values());
+ }
+ return id;
+ }
+ finally
+ {
+ (shared ? sharedLock : exclusiveLock).unlock();
+ }
+ }
/**
- * Returns a view of the encoded attributes in this compressed schema which
- * can be used for saving the entire content to disk. The iterator returned by
- * this method is not thread safe.
+ * Returns a view of the encoded attributes in this compressed schema which can be used for saving
+ * the entire content to disk.
+ * <p>
+ * The iterator returned by this method is not thread safe.
*
* @return A view of the encoded attributes in this compressed schema.
*/
- protected final Iterable<Entry<byte[],
- Entry<String,
- Collection<String>>>> getAllAttributes()
+ protected final Iterable<Entry<byte[], Entry<String, Collection<String>>>> getAllAttributes()
{
return new Iterable<Entry<byte[], Entry<String, Collection<String>>>>()
{
-
@Override
- public Iterator<Entry<byte[],
- Entry<String, Collection<String>>>> iterator()
+ public Iterator<Entry<byte[], Entry<String, Collection<String>>>> iterator()
{
return new Iterator<Entry<byte[], Entry<String, Collection<String>>>>()
{
- private int id = 0;
-
-
+ private int id;
+ private List<Entry<AttributeType, Set<String>>> adDecodeMap = getMappings().adDecodeMap;
@Override
public boolean hasNext()
@@ -308,8 +452,6 @@
return id < adDecodeMap.size();
}
-
-
@Override
public Entry<byte[], Entry<String, Collection<String>>> next()
{
@@ -322,8 +464,6 @@
.getKey().getNameOrOID(), ad.getValue()));
}
-
-
@Override
public void remove()
{
@@ -334,27 +474,25 @@
};
}
-
-
/**
- * Returns a view of the encoded object classes in this compressed schema
- * which can be used for saving the entire content to disk. The iterator
- * returned by this method is not thread safe.
+ * Returns a view of the encoded object classes in this compressed schema which can be used for
+ * saving the entire content to disk.
+ * <p>
+ * The iterator returned by this method is not thread safe.
*
* @return A view of the encoded object classes in this compressed schema.
*/
- protected final Iterable<Entry<byte[],
- Collection<String>>> getAllObjectClasses()
+ protected final Iterable<Entry<byte[], Collection<String>>> getAllObjectClasses()
{
return new Iterable<Entry<byte[], Collection<String>>>()
{
-
@Override
public Iterator<Entry<byte[], Collection<String>>> iterator()
{
return new Iterator<Map.Entry<byte[], Collection<String>>>()
{
- private int id = 0;
+ private int id;
+ private final List<Map<ObjectClass, String>> ocDecodeMap = getMappings().ocDecodeMap;
@Override
public boolean hasNext()
@@ -397,28 +535,52 @@
final byte[] encodedAttribute, final String attributeName,
final Collection<String> attributeOptions)
{
- final AttributeType type = DirectoryServer.getAttributeTypeOrDefault(toLowerCase(attributeName));
+ final int id = decodeId(encodedAttribute);
+ return loadAttributeToMaps(id, attributeName, attributeOptions, getMappings());
+ }
+
+ /**
+ * Loads an attribute into provided encode and decode maps, given its id, name, and options.
+ *
+ * @param id
+ * the id computed on the attribute.
+ * @param attributeName
+ * The user provided attribute type name.
+ * @param attributeOptions
+ * The non-null but possibly empty set of attribute options.
+ * @param mappings
+ * attribute description encodeMap and decodeMap maps id to entry
+ * @return The attribute type description.
+ */
+ private Entry<AttributeType, Set<String>> loadAttributeToMaps(final int id, final String attributeName,
+ final Collection<String> attributeOptions, final Mappings mappings)
+ {
+ final AttributeType type = DirectoryServer.getAttributeTypeOrDefault(attributeName);
final Set<String> options = getOptions(attributeOptions);
final Entry<AttributeType, Set<String>> ad = new SimpleImmutableEntry<>(type, options);
- final int id = decodeId(encodedAttribute);
- synchronized (adEncodeMap)
+ exclusiveLock.lock();
+ try
{
- adEncodeMap.put(ad, id);
- if (id < adDecodeMap.size())
+ mappings.adEncodeMap.put(ad, id);
+ if (id < mappings.adDecodeMap.size())
{
- adDecodeMap.set(id, ad);
+ mappings.adDecodeMap.set(id, ad);
}
else
{
// Grow the decode array.
- while (id > adDecodeMap.size())
+ while (id > mappings.adDecodeMap.size())
{
- adDecodeMap.add(null);
+ mappings.adDecodeMap.add(null);
}
- adDecodeMap.add(ad);
+ mappings.adDecodeMap.add(ad);
}
+ return ad;
}
- return ad;
+ finally
+ {
+ exclusiveLock.unlock();
+ }
}
private Set<String> getOptions(final Collection<String> attributeOptions)
@@ -449,6 +611,29 @@
final byte[] encodedObjectClasses,
final Collection<String> objectClassNames)
{
+ final int id = decodeId(encodedObjectClasses);
+ return loadObjectClassesToMaps(id, objectClassNames, mappings, true);
+ }
+
+ /**
+ * Loads a set of object classes into provided encode and decode maps, given the id and set of
+ * names.
+ *
+ * @param id
+ * the id computed on the object classes set.
+ * @param objectClassNames
+ * The user provided set of object class names.
+ * @param mappings
+ * .ocEncodeMap maps id to entry
+ * @param mappings
+ * .ocDecodeMap maps entry to id
+ * @param sync
+ * indicates if update of maps should be synchronized
+ * @return The object class set.
+ */
+ private final Map<ObjectClass, String> loadObjectClassesToMaps(int id, final Collection<String> objectClassNames,
+ Mappings mappings, boolean sync)
+ {
final LinkedHashMap<ObjectClass, String> ocMap = new LinkedHashMap<>(objectClassNames.size());
for (final String name : objectClassNames)
{
@@ -456,28 +641,42 @@
final ObjectClass oc = DirectoryServer.getObjectClass(lowerName, true);
ocMap.put(oc, name);
}
- final int id = decodeId(encodedObjectClasses);
- synchronized (ocEncodeMap)
+ if (sync)
{
- ocEncodeMap.put(ocMap, id);
- if (id < ocDecodeMap.size())
+ exclusiveLock.lock();
+ try
{
- ocDecodeMap.set(id, ocMap);
+ updateObjectClassesMaps(id, mappings, ocMap);
}
- else
+ finally
{
- // Grow the decode array.
- while (id > ocDecodeMap.size())
- {
- ocDecodeMap.add(null);
- }
- ocDecodeMap.add(ocMap);
+ exclusiveLock.unlock();
}
}
+ else
+ {
+ updateObjectClassesMaps(id, mappings, ocMap);
+ }
return ocMap;
}
-
+ private void updateObjectClassesMaps(int id, Mappings mappings, LinkedHashMap<ObjectClass, String> ocMap)
+ {
+ mappings.ocEncodeMap.put(ocMap, id);
+ if (id < mappings.ocDecodeMap.size())
+ {
+ mappings.ocDecodeMap.set(id, ocMap);
+ }
+ else
+ {
+ // Grow the decode array.
+ while (id > mappings.ocDecodeMap.size())
+ {
+ mappings.ocDecodeMap.add(null);
+ }
+ mappings.ocDecodeMap.add(ocMap);
+ }
+ }
/**
* Persists the provided encoded attribute. The default implementation is to
@@ -502,8 +701,6 @@
// Do nothing by default.
}
-
-
/**
* Persists the provided encoded object classes. The default implementation is
* to do nothing. Calls to this method are synchronized, so implementations
@@ -524,8 +721,6 @@
// Do nothing by default.
}
-
-
/**
* Decodes the provided encoded schema element ID.
*
@@ -544,7 +739,13 @@
return id - 1; // Subtract 1 to compensate for old behavior.
}
-
+ private int decodeId(final ByteSequenceReader reader)
+ {
+ final int length = reader.readBERLength();
+ final byte[] idBytes = new byte[length];
+ reader.readBytes(idBytes);
+ return decodeId(idBytes);
+ }
/**
* Encodes the provided schema element ID.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciContainer.java
index 4477aeb..a18d67e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciContainer.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -43,6 +43,7 @@
import org.opends.server.core.AddOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.protocols.ldap.LDAPClientConnection;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEffectiveRights.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEffectiveRights.java
index a557322..c74273b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEffectiveRights.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEffectiveRights.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -33,9 +33,9 @@
import java.util.Set;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.Entry;
@@ -640,9 +640,7 @@
//Check if the aclRightsInfo attribute was requested.
if(hasAttrMask(mask,ACL_RIGHTS_INFO)) {
//Build the attribute type.
- String typeStr=
- aclRightsInfoAttrLogsStr + ";" + rightStr + ";" +
- aType.getPrimaryName();
+ String typeStr = aclRightsInfoAttrLogsStr + ";" + rightStr + ";" + aType.getNameOrOID();
AttributeType attributeType = DirectoryServer.getAttributeTypeOrDefault(typeStr);
Attribute attr = Attributes.create(attributeType, container.getEvalSummary());
// The attribute type might have already been added, probably
@@ -751,7 +749,7 @@
String attrStr="NULL";
if(aType != null)
{
- attrStr=aType.getPrimaryName();
+ attrStr = aType.getNameOrOID();
}
if(evalCtx.getTargAttrFiltersAciName() != null)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEvalContext.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEvalContext.java
index 25d179e..f359752 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEvalContext.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEvalContext.java
@@ -22,13 +22,13 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.api.Group;
import java.net.InetAddress;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciHandler.java
index 1d47a29..b2a81c7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciHandler.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
* Portions Copyright 2013 Manuel Gaupp
*/
package org.opends.server.authorization.dseecompat;
@@ -53,6 +53,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.workflowelement.localbackend.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java
index cbf9848..17b12ed 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -44,6 +44,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.*;
import org.opends.server.workflowelement.localbackend.LocalBackendSearchOperation;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargetMatchContext.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargetMatchContext.java
index 22995f9..e35a9aa 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargetMatchContext.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargetMatchContext.java
@@ -22,11 +22,11 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.Entry;
import java.util.List;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargets.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargets.java
index 2cb9426..7b9d08a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargets.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciTargets.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -33,7 +33,7 @@
import java.util.regex.Pattern;
import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.forgerock.opendj.ldap.SearchScope;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/GroupDN.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/GroupDN.java
index f11ac9e..e17d840 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/GroupDN.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/GroupDN.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -39,6 +39,7 @@
import org.opends.server.api.Group;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.GroupManager;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/ParentInheritance.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/ParentInheritance.java
index ecf4884..fb97625 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/ParentInheritance.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/ParentInheritance.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -36,7 +36,7 @@
import java.util.regex.Matcher;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.LDAPURL;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/PatternRDN.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/PatternRDN.java
index c7b9a71..76e04c2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/PatternRDN.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/PatternRDN.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -42,6 +42,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilterList.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilterList.java
index d55744d..475a630 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilterList.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilterList.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -35,7 +35,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilters.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilters.java
index 98733f2..23b7745 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilters.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargAttrFilters.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -36,6 +36,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java
index dc514b5..6122b72 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/TargetAttr.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -34,7 +34,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
/**
* A class representing an ACI's targetattr keyword.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserAttr.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserAttr.java
index 5ed8c7f..0961109 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserAttr.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserAttr.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -35,6 +35,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.opends.messages.AccessControlMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserDN.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserDN.java
index 5c5c6bc..4a28a34 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserDN.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/UserDN.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -34,6 +34,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.SearchScope;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.opends.messages.AccessControlMessages.*;
@@ -424,4 +425,4 @@
}
}
-}
\ No newline at end of file
+}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java
index 5285625..6a7355d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.backends;
@@ -56,6 +56,7 @@
import org.opends.server.core.SearchOperation;
import org.opends.server.core.ServerContext;
import org.opends.server.schema.GeneralizedTimeSyntax;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/ChangelogBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/ChangelogBackend.java
index 35d2782..32c22f4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/ChangelogBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/ChangelogBackend.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Copyright 2014-2015 ForgeRock AS.
+ * Copyright 2014-2016 ForgeRock AS.
*/
package org.opends.server.backends;
@@ -93,7 +93,7 @@
import org.opends.server.replication.server.changelog.file.ECLMultiDomainDBCursor;
import org.opends.server.replication.server.changelog.file.MultiDomainDBCursor;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
@@ -814,7 +814,7 @@
{
return filter.getFilterType() == filterType
&& filter.getAttributeType() != null
- && filter.getAttributeType().getPrimaryName().equalsIgnoreCase(primaryName);
+ && filter.getAttributeType().getNameOrOID().equalsIgnoreCase(primaryName);
}
/** Search the changelog when a cookie control is provided. */
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java
index d683719..83fde96 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.backends;
@@ -48,6 +48,7 @@
import org.opends.server.api.Backend;
import org.opends.server.controls.SubtreeDeleteControl;
import org.opends.server.core.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.LDIFException;
import org.opends.server.util.LDIFReader;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
index 6ea3df0..b8da8c2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.backends;
@@ -54,7 +54,7 @@
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.ServerContext;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.Control;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
index 68df4b2..2a095ae 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.backends;
@@ -51,6 +51,7 @@
import org.opends.server.api.MonitorProvider;
import org.opends.server.config.ConfigEntry;
import org.opends.server.core.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.DynamicConstants;
import org.opends.server.util.LDIFWriter;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java
index 715e11a..351bbcb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.backends;
@@ -52,7 +52,7 @@
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.ServerContext;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
index 38e415d..9806fe5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.backends;
@@ -68,6 +68,7 @@
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.ServerContext;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.BuildVersion;
import org.opends.server.util.LDIFWriter;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
index 673f15d..6198e7e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.backends;
@@ -68,10 +68,10 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
-import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.SchemaBackendCfg;
@@ -92,11 +92,10 @@
import org.opends.server.schema.DITContentRuleSyntax;
import org.opends.server.schema.DITStructureRuleSyntax;
import org.opends.server.schema.GeneralizedTimeSyntax;
-import org.opends.server.schema.LDAPSyntaxDescriptionSyntax;
import org.opends.server.schema.MatchingRuleUseSyntax;
import org.opends.server.schema.NameFormSyntax;
import org.opends.server.schema.ObjectClassSyntax;
-import org.opends.server.schema.SchemaUpdater;
+import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.*;
import org.opends.server.util.BackupManager;
import org.opends.server.util.DynamicConstants;
@@ -565,14 +564,14 @@
* Add the schema definition attributes.
*/
Schema schema = DirectoryServer.getSchema();
- buildSchemaAttribute(schema.getAttributeTypes().values(), userAttrs,
+ buildSchemaAttribute(schema.getAttributeTypes(), userAttrs,
operationalAttrs, attributeTypesType, includeSchemaFile,
AttributeTypeSyntax.isStripSyntaxMinimumUpperBound(),
ignoreShowAllOption);
buildSchemaAttribute(schema.getObjectClasses().values(), userAttrs,
operationalAttrs, objectClassesType, includeSchemaFile, false,
ignoreShowAllOption);
- buildSchemaAttribute(schema.getMatchingRules().values(), userAttrs,
+ buildSchemaAttribute(schema.getMatchingRules(), userAttrs,
operationalAttrs, matchingRulesType, includeSchemaFile, false,
ignoreShowAllOption);
@@ -584,7 +583,7 @@
* updates to fail. This means that you'll always have to explicitly request
* these attributes in order to be able to see them.
*/
- buildSchemaAttribute(schema.getSyntaxes().values(), userAttrs,
+ buildSchemaAttribute(schema.getSyntaxes(), userAttrs,
operationalAttrs, ldapSyntaxesType, includeSchemaFile, false, true);
buildSchemaAttribute(schema.getNameFormsByNameOrOID().values(), userAttrs,
operationalAttrs, nameFormsType, includeSchemaFile, false, true);
@@ -775,22 +774,8 @@
{
for (ByteString v : a)
{
- AttributeType type;
- try
- {
- type = AttributeTypeSyntax.decodeAttributeType(v, newSchema, false);
- }
- catch (DirectoryException de)
- {
- logger.traceException(de);
-
- LocalizableMessage message = ERR_SCHEMA_MODIFY_CANNOT_DECODE_ATTRTYPE.get(
- v, de.getMessageObject());
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message, de);
- }
-
- addAttributeType(type, newSchema, modifiedSchemaFiles);
+ AttributeType attributeType = newSchema.parseAttributeType(v.toString());
+ addAttributeType(attributeType, newSchema, modifiedSchemaFiles);
}
}
else if (at.equals(objectClassesType))
@@ -907,10 +892,9 @@
{
for (ByteString v : a)
{
- LDAPSyntaxDescription lsd;
try
{
- lsd = LDAPSyntaxDescriptionSyntax.decodeLDAPSyntax(v, serverContext, newSchema, false, false);
+ addLdapSyntaxDescription(v.toString(), newSchema, modifiedSchemaFiles);
}
catch (DirectoryException de)
{
@@ -921,7 +905,6 @@
throw new DirectoryException(
ResultCode.INVALID_ATTRIBUTE_SYNTAX, message, de);
}
- addLdapSyntaxDescription(lsd, newSchema, modifiedSchemaFiles);
}
}
else
@@ -948,23 +931,8 @@
{
for (ByteString v : a)
{
- AttributeType type;
- try
- {
- type = AttributeTypeSyntax.decodeAttributeType(v, newSchema, false);
- }
- catch (DirectoryException de)
- {
- logger.traceException(de);
-
- LocalizableMessage message = ERR_SCHEMA_MODIFY_CANNOT_DECODE_ATTRTYPE.get(
- v, de.getMessageObject());
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message, de);
- }
-
- removeAttributeType(type, newSchema, mods, pos,
- modifiedSchemaFiles);
+ AttributeType type = newSchema.parseAttributeType(v.toString());
+ removeAttributeType(type, newSchema, modifiedSchemaFiles);
}
}
else if (at.equals(objectClassesType))
@@ -1082,10 +1050,9 @@
{
for (ByteString v : a)
{
- LDAPSyntaxDescription lsd;
try
{
- lsd = LDAPSyntaxDescriptionSyntax.decodeLDAPSyntax(v, serverContext, newSchema, false, true);
+ removeLdapSyntaxDescription(v.toString(), newSchema, modifiedSchemaFiles);
}
catch (DirectoryException de)
{
@@ -1097,7 +1064,6 @@
throw new DirectoryException(
ResultCode.INVALID_ATTRIBUTE_SYNTAX, message, de);
}
- removeLdapSyntaxDescription(lsd, newSchema, modifiedSchemaFiles);
}
}
else
@@ -1234,24 +1200,20 @@
* the provided attribute type to the server
* schema.
*/
- private void addAttributeType(AttributeType attributeType, Schema schema,
- Set<String> modifiedSchemaFiles)
+ private void addAttributeType(AttributeType attributeType, Schema schema, Set<String> modifiedSchemaFiles)
throws DirectoryException
{
- // First, see if the specified attribute type already exists. We'll check
- // the OID and all of the names, which means that it's possible there could
- // be more than one match (although if there is, then we'll refuse the
- // operation).
- AttributeType existingType =
- schema.getAttributeType(attributeType.getOID());
- for (String name : attributeType.getNormalizedNames())
+ // Check if there is only a single attribute type for each name
+ // This is not checked by the SDK schema.
+ AttributeType existingType = schema.getAttributeType(attributeType.getOID());
+ for (String name : attributeType.getNames())
{
AttributeType t = schema.getAttributeType(name);
- if (t == null)
+ if (t.isPlaceHolder())
{
continue;
}
- else if (existingType == null)
+ if (existingType.isPlaceHolder())
{
existingType = t;
}
@@ -1260,89 +1222,56 @@
// NOTE: We really do want to use "!=" instead of "! t.equals()"
// because we want to check whether it's the same object instance, not
// just a logical equivalent.
- LocalizableMessage message = ERR_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_ATTRTYPE.
- get(attributeType.getNameOrOID(), existingType.getNameOrOID(),
- t.getNameOrOID());
+ LocalizableMessage message = ERR_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_ATTRTYPE.get(
+ attributeType.getNameOrOID(), existingType.getNameOrOID(), t.getNameOrOID());
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
}
-
- // Make sure that the new attribute type doesn't reference an undefined
- // or OBSOLETE superior attribute type.
+ // Make sure that the new attribute type doesn't reference an
+ // OBSOLETE superior attribute type.
AttributeType superiorType = attributeType.getSuperiorType();
- if (superiorType != null)
+ if (superiorType != null && superiorType.isObsolete())
{
- if (! schema.hasAttributeType(superiorType.getOID()))
- {
- LocalizableMessage message = ERR_SCHEMA_MODIFY_UNDEFINED_SUPERIOR_ATTRIBUTE_TYPE.
- get(attributeType.getNameOrOID(), superiorType.getNameOrOID());
- throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
- }
- else if (superiorType.isObsolete())
- {
- LocalizableMessage message = ERR_SCHEMA_MODIFY_OBSOLETE_SUPERIOR_ATTRIBUTE_TYPE.
- get(attributeType.getNameOrOID(), superiorType.getNameOrOID());
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
+ LocalizableMessage message = ERR_SCHEMA_MODIFY_OBSOLETE_SUPERIOR_ATTRIBUTE_TYPE.get(
+ attributeType.getNameOrOID(), superiorType.getNameOrOID());
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
-
// Make sure that none of the associated matching rules are marked OBSOLETE.
- MatchingRule mr = attributeType.getEqualityMatchingRule();
- if (mr != null && mr.isObsolete())
- {
- LocalizableMessage message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(
- attributeType.getNameOrOID(), mr.getNameOrOID());
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
-
- mr = attributeType.getOrderingMatchingRule();
- if (mr != null && mr.isObsolete())
- {
- LocalizableMessage message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(
- attributeType.getNameOrOID(), mr.getNameOrOID());
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
-
- mr = attributeType.getSubstringMatchingRule();
- if (mr != null && mr.isObsolete())
- {
- LocalizableMessage message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(
- attributeType.getNameOrOID(), mr.getNameOrOID());
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
-
- mr = attributeType.getApproximateMatchingRule();
- if (mr != null && mr.isObsolete())
- {
- LocalizableMessage message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(
- attributeType.getNameOrOID(), mr.getNameOrOID());
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
-
+ throwIfObsoleteMatchingRule(attributeType, attributeType.getEqualityMatchingRule());
+ throwIfObsoleteMatchingRule(attributeType, attributeType.getOrderingMatchingRule());
+ throwIfObsoleteMatchingRule(attributeType, attributeType.getSubstringMatchingRule());
+ throwIfObsoleteMatchingRule(attributeType, attributeType.getApproximateMatchingRule());
// If there is no existing type, then we're adding a new attribute.
// Otherwise, we're replacing an existing one.
- if (existingType == null)
+ if (existingType.isPlaceHolder())
{
- schema.registerAttributeType(attributeType, false);
- addNewSchemaElement(modifiedSchemaFiles, attributeType);
+ String schemaFile = addNewSchemaElement(modifiedSchemaFiles, new SomeSchemaElement(attributeType));
+ schema.registerAttributeType(attributeType, schemaFile, false);
}
else
{
schema.deregisterAttributeType(existingType);
- schema.registerAttributeType(attributeType, false);
- schema.rebuildDependentElements(existingType);
- replaceExistingSchemaElement(modifiedSchemaFiles, attributeType,
- existingType);
+
+ String schemaFile = replaceExistingSchemaElement(
+ modifiedSchemaFiles, new SomeSchemaElement(attributeType), new SomeSchemaElement(existingType));
+ schema.registerAttributeType(attributeType, schemaFile, false);
+ schema.rebuildDependentElements(new SomeSchemaElement(existingType));
}
}
+ private void throwIfObsoleteMatchingRule(AttributeType attributeType, MatchingRule mr) throws DirectoryException
+ {
+ if (mr != null && mr.isObsolete())
+ {
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
+ ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(attributeType.getNameOrOID(), mr.getNameOrOID()));
+ }
+ }
-
- private void addNewSchemaElement(Set<String> modifiedSchemaFiles,
- SchemaFileElement elem)
+ private void addNewSchemaElement(Set<String> modifiedSchemaFiles, SchemaFileElement elem)
{
String schemaFile = getSchemaFile(elem);
if (schemaFile == null || schemaFile.length() == 0)
@@ -1350,11 +1279,17 @@
schemaFile = FILE_USER_SCHEMA_ELEMENTS;
setSchemaFile(elem, schemaFile);
}
-
modifiedSchemaFiles.add(schemaFile);
}
-
+ /** Update list of modified files and return the schema file to use for the added element (may be null). */
+ private String addNewSchemaElement(Set<String> modifiedSchemaFiles, SomeSchemaElement elem)
+ {
+ String schemaFile = elem.getSchemaFile();
+ String finalFile = schemaFile != null ? schemaFile : FILE_USER_SCHEMA_ELEMENTS;
+ modifiedSchemaFiles.add(finalFile);
+ return schemaFile == null ? finalFile : null;
+ }
private <T extends SchemaFileElement> void replaceExistingSchemaElement(
Set<String> modifiedSchemaFiles, T newElem, T existingElem)
@@ -1382,7 +1317,32 @@
}
}
-
+ /** Update list of modified files and return the schema file to use for the new element (may be null). */
+ private String replaceExistingSchemaElement(
+ Set<String> modifiedSchemaFiles, SomeSchemaElement newElem, SomeSchemaElement existingElem)
+ {
+ String newSchemaFile = newElem.getSchemaFile();
+ String oldSchemaFile = existingElem.getSchemaFile();
+ if (newSchemaFile == null)
+ {
+ if (oldSchemaFile == null)
+ {
+ oldSchemaFile = FILE_USER_SCHEMA_ELEMENTS;
+ }
+ modifiedSchemaFiles.add(oldSchemaFile);
+ return oldSchemaFile;
+ }
+ else if (oldSchemaFile == null || oldSchemaFile.equals(newSchemaFile))
+ {
+ modifiedSchemaFiles.add(newSchemaFile);
+ }
+ else
+ {
+ modifiedSchemaFiles.add(newSchemaFile);
+ modifiedSchemaFiles.add(oldSchemaFile);
+ }
+ return null;
+ }
/**
* Handles all processing required to remove the provided attribute type from
@@ -1411,67 +1371,22 @@
* the provided attribute type from the server
* schema.
*/
- private void removeAttributeType(AttributeType attributeType, Schema schema,
- ArrayList<Modification> modifications,
- int currentPosition,
- Set<String> modifiedSchemaFiles)
+ private void removeAttributeType(AttributeType attributeType, Schema schema, Set<String> modifiedSchemaFiles)
throws DirectoryException
{
// See if the specified attribute type is actually defined in the server
// schema. If not, then fail.
AttributeType removeType = schema.getAttributeType(attributeType.getOID());
- if (removeType == null || !removeType.equals(attributeType))
+ if (removeType.isPlaceHolder() || !removeType.equals(attributeType))
{
LocalizableMessage message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_ATTRIBUTE_TYPE.get(
attributeType.getNameOrOID());
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
- // See if there is another modification later to add the attribute type back
- // into the schema. If so, then it's a replace and we should ignore the
- // remove because adding it back will handle the replace.
- for (int i=currentPosition+1; i < modifications.size(); i++)
- {
- Modification m = modifications.get(i);
- Attribute a = m.getAttribute();
-
- if (m.getModificationType() != ModificationType.ADD
- || !a.getAttributeType().equals(attributeTypesType))
- {
- continue;
- }
-
- for (ByteString v : a)
- {
- AttributeType at;
- try
- {
- at = AttributeTypeSyntax.decodeAttributeType(v, schema, true);
- }
- catch (DirectoryException de)
- {
- logger.traceException(de);
-
- LocalizableMessage message = ERR_SCHEMA_MODIFY_CANNOT_DECODE_ATTRTYPE.get(
- v, de.getMessageObject());
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message, de);
- }
-
- if (attributeType.getOID().equals(at.getOID()))
- {
- // We found a match where the attribute type is added back later, so
- // we don't need to do anything else here.
- return;
- }
- }
- }
-
-
// Make sure that the attribute type isn't used as the superior type for
// any other attributes.
- for (AttributeType at : schema.getAttributeTypes().values())
+ for (AttributeType at : schema.getAttributeTypes())
{
AttributeType superiorType = at.getSuperiorType();
if (superiorType != null && superiorType.equals(removeType))
@@ -1482,7 +1397,6 @@
}
}
-
// Make sure that the attribute type isn't used as a required or optional
// attribute type in any objectclass.
for (ObjectClass oc : schema.getObjectClasses().values())
@@ -1496,7 +1410,6 @@
}
}
-
// Make sure that the attribute type isn't used as a required or optional
// attribute type in any name form.
for (List<NameForm> mappedForms :
@@ -1515,7 +1428,6 @@
}
}
-
// Make sure that the attribute type isn't used as a required, optional, or
// prohibited attribute type in any DIT content rule.
for (DITContentRule dcr : schema.getDITContentRules().values())
@@ -1530,7 +1442,6 @@
}
}
-
// Make sure that the attribute type isn't referenced by any matching rule
// use.
for (MatchingRuleUse mru : schema.getMatchingRuleUses().values())
@@ -1543,11 +1454,10 @@
}
}
-
// If we've gotten here, then it's OK to remove the attribute type from
// the schema.
schema.deregisterAttributeType(removeType);
- String schemaFile = getSchemaFile(removeType);
+ String schemaFile = new SomeSchemaElement(removeType).getSchemaFile();
if (schemaFile != null)
{
modifiedSchemaFiles.add(schemaFile);
@@ -1672,8 +1582,7 @@
schema.deregisterObjectClass(existingClass);
schema.registerObjectClass(objectClass, false);
schema.rebuildDependentElements(existingClass);
- replaceExistingSchemaElement(modifiedSchemaFiles, objectClass,
- existingClass);
+ replaceExistingSchemaElement(modifiedSchemaFiles, objectClass, existingClass);
}
}
@@ -2691,80 +2600,76 @@
}
}
-
-
/**
- * Handles all processing required for adding the provided ldap syntax
- * description to the given schema, replacing an existing ldap syntax
- * description if necessary, and ensuring all other metadata is properly
- * updated.
+ * Handles all processing required for adding the provided ldap syntax description to the given
+ * schema, replacing an existing ldap syntax description if necessary, and ensuring all other
+ * metadata is properly updated.
*
- * @param ldapSyntaxDesc The ldap syntax description to add or replace in
- * the server schema.
- * @param schema The schema to which the name form should be
- * added.
- * @param modifiedSchemaFiles The names of the schema files containing
- * schema elements that have been updated as part
- * of the schema modification.
- *
- * @throws DirectoryException If a problem occurs while attempting to add
- * the provided ldap syntax description to the
- * server schema.
+ * @param definition
+ * The definition of the ldap syntax description to add or replace in the server schema.
+ * @param schema
+ * The schema to which the LDAP syntax description should be added.
+ * @param modifiedSchemaFiles
+ * The names of the schema files containing schema elements that have been updated as
+ * part of the schema modification.
+ * @throws DirectoryException
+ * If a problem occurs while attempting to add the provided ldap syntax description to
+ * the server schema.
*/
- private void addLdapSyntaxDescription(LDAPSyntaxDescription ldapSyntaxDesc,
- Schema schema,
- Set<String> modifiedSchemaFiles)
+ private void addLdapSyntaxDescription(final String definition, Schema schema, Set<String> modifiedSchemaFiles)
throws DirectoryException
{
- //Check if there is an existing syntax with this oid.
- String oid = ldapSyntaxDesc.getSyntax().getOID();
+ // Check if there is an existing syntax with this oid.
+ String oid =
+ Schema.parseOID(definition, ResultCode.INVALID_ATTRIBUTE_SYNTAX, ERR_ATTR_SYNTAX_LDAPSYNTAX_EMPTY_VALUE);
// We allow only unimplemented syntaxes to be substituted.
- if(schema.getSyntax(oid) !=null)
+ if (schema.hasSyntax(oid))
{
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_INVALID_LDAP_SYNTAX.get(ldapSyntaxDesc, oid);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
- message);
+ LocalizableMessage message = ERR_ATTR_SYNTAX_INVALID_LDAP_SYNTAX.get(definition, oid);
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
LDAPSyntaxDescription existingLSD = schema.getLdapSyntaxDescription(oid);
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- org.forgerock.opendj.ldap.schema.Schema newSchema = null;
-
// If there is no existing lsd, then we're adding a new ldapsyntax.
// Otherwise, we're replacing an existing one.
if (existingLSD == null)
{
- schema.registerLdapSyntaxDescription(ldapSyntaxDesc, false);
- addNewSchemaElement(modifiedSchemaFiles, ldapSyntaxDesc);
+ String def = Schema.addSchemaFileToElementDefinitionIfAbsent(definition, FILE_USER_SCHEMA_ELEMENTS);
+ schema.registerLdapSyntaxDescription(def, false);
- // update schema NG
- newSchema = schemaUpdater.getSchemaBuilder().buildSyntax(ldapSyntaxDesc.getSyntax()).addToSchema().toSchema();
- schemaUpdater.updateSchema(newSchema);
+ String schemaFile = getSchemaFile(schema.getLdapSyntaxDescription(oid));
+ modifiedSchemaFiles.add(schemaFile);
}
else
{
schema.deregisterLdapSyntaxDescription(existingLSD);
- schema.registerLdapSyntaxDescription(ldapSyntaxDesc, false);
- // update schema NG
- SchemaBuilder schemaBuilder = schemaUpdater.getSchemaBuilder();
- schemaBuilder.removeSyntax(oid);
- newSchema = schemaBuilder.buildSyntax(ldapSyntaxDesc.getSyntax()).addToSchema().toSchema();
- schemaUpdater.updateSchema(newSchema);
+
+ String oldSchemaFile = getSchemaFile(existingLSD);
+ String schemaFile = oldSchemaFile != null && oldSchemaFile.length() > 0 ?
+ oldSchemaFile : FILE_USER_SCHEMA_ELEMENTS;
+ String def = Schema.addSchemaFileToElementDefinitionIfAbsent(definition, schemaFile);
+ schema.registerLdapSyntaxDescription(def, false);
schema.rebuildDependentElements(existingLSD);
- replaceExistingSchemaElement(modifiedSchemaFiles, ldapSyntaxDesc, existingLSD);
+ String newSchemaFile = getSchemaFile(schema.getLdapSyntaxDescription(oid));
+
+ if (oldSchemaFile != null)
+ {
+ modifiedSchemaFiles.add(oldSchemaFile);
+ }
+ if (newSchemaFile != null)
+ {
+ modifiedSchemaFiles.add(newSchemaFile);
+ }
}
}
/** Gets rid of the ldap syntax description. */
- private void removeLdapSyntaxDescription(LDAPSyntaxDescription ldapSyntaxDesc,
- Schema schema,
- Set<String> modifiedSchemaFiles)
- throws DirectoryException
+ private void removeLdapSyntaxDescription(String definition, Schema schema, Set<String> modifiedSchemaFiles)
+ throws DirectoryException
{
/*
* See if the specified ldap syntax description is actually defined in the
@@ -2772,22 +2677,17 @@
* part of the ldapsyntaxes attribute. A virtual value is not searched and
* hence never deleted.
*/
- String oid = ldapSyntaxDesc.getSyntax().getOID();
- LDAPSyntaxDescription removeLSD = schema.getLdapSyntaxDescription(oid);
+ String oid =
+ Schema.parseOID(definition, ResultCode.INVALID_ATTRIBUTE_SYNTAX, ERR_ATTR_SYNTAX_LDAPSYNTAX_EMPTY_VALUE);
- if (removeLSD == null || !removeLSD.equals(ldapSyntaxDesc))
+ LDAPSyntaxDescription removeLSD = schema.getLdapSyntaxDescription(oid);
+ if (removeLSD == null)
{
LocalizableMessage message =
ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_LSD.get(oid);
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
- // update schema NG
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- SchemaBuilder schemaBuilder = schemaUpdater.getSchemaBuilder();
- schemaBuilder.removeSyntax(oid);
- schemaUpdater.updateSchema(schemaBuilder.toSchema());
-
schema.deregisterLdapSyntaxDescription(removeLSD);
String schemaFile = getSchemaFile(removeLSD);
if (schemaFile != null)
@@ -2886,9 +2786,10 @@
// same file are written before the subordinate types.
Set<AttributeType> addedTypes = new HashSet<>();
values = new LinkedHashSet<>();
- for (AttributeType at : schema.getAttributeTypes().values())
+ for (AttributeType at : schema.getAttributeTypes())
{
- if (schemaFile.equals(getSchemaFile(at)))
+ String atSchemaFile = new SomeSchemaElement(at).getSchemaFile();
+ if (schemaFile.equals(atSchemaFile))
{
addAttrTypeToSchemaFile(schema, schemaFile, at, values, addedTypes, 0);
}
@@ -3070,7 +2971,7 @@
AttributeType superiorType = attributeType.getSuperiorType();
if (superiorType != null &&
- schemaFile.equals(getSchemaFile(superiorType)) &&
+ schemaFile.equals(new SomeSchemaElement(attributeType).getSchemaFile()) &&
!addedTypes.contains(superiorType))
{
addAttrTypeToSchemaFile(schema, schemaFile, superiorType, values,
@@ -3618,8 +3519,8 @@
private void importEntry(Entry newSchemaEntry)
throws DirectoryException
{
- Schema schema = DirectoryServer.getSchema();
- Schema newSchema = DirectoryServer.getSchema().duplicate();
+ Schema schema = serverContext.getSchema();
+ Schema newSchema = schema.duplicate();
TreeSet<String> modifiedSchemaFiles = new TreeSet<>();
// Get the attributeTypes attribute from the entry.
@@ -3628,8 +3529,7 @@
{
attrTypeSyntax = CoreSchema.getAttributeTypeDescriptionSyntax();
}
- AttributeType attributeAttrType = DirectoryServer.getAttributeTypeOrDefault(
- ATTR_ATTRIBUTE_TYPES_LC, ATTR_ATTRIBUTE_TYPES, attrTypeSyntax);
+ AttributeType attributeAttrType = CoreSchema.getAttributeTypesAttributeType();
// loop on the attribute types in the entry just received
// and add them in the existing schema.
@@ -3641,8 +3541,8 @@
for (ByteString v : a)
{
// Parse the attribute type.
- AttributeType attrType = AttributeTypeSyntax.decodeAttributeType(v, schema, false);
- String schemaFile = getSchemaFile(attrType);
+ AttributeType attrType = schema.parseAttributeType(v.toString());
+ String schemaFile = new SomeSchemaElement(attrType).getSchemaFile();
if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
{
// Don't import the file containing the definitions of the
@@ -3676,14 +3576,10 @@
// loop on all the attribute types in the current schema and delete
// them from the new schema if they are not in the imported schema entry.
- ConcurrentHashMap<String, AttributeType> currentAttrTypes =
- newSchema.getAttributeTypes();
-
- for (AttributeType removeType : currentAttrTypes.values())
+ for (AttributeType removeType : newSchema.getAttributeTypes())
{
- String schemaFile = getSchemaFile(removeType);
- if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile)
- || CORE_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
+ String schemaFile = new SomeSchemaElement(removeType).getSchemaFile();
+ if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile) || CORE_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
{
// Don't import the file containing the definitions of the
// Schema elements used for configuration because these
@@ -3696,7 +3592,7 @@
newSchema.deregisterAttributeType(removeType);
if (schemaFile != null)
{
- modifiedSchemaFiles.add(schemaFile);
+ modifiedSchemaFiles.add(schemaFile);
}
}
}
@@ -3708,8 +3604,7 @@
{
ocSyntax = CoreSchema.getObjectClassDescriptionSyntax();
}
- AttributeType objectclassAttrType = DirectoryServer.getAttributeTypeOrDefault(
- ATTR_OBJECTCLASSES_LC, ATTR_OBJECTCLASSES, ocSyntax);
+ AttributeType objectclassAttrType = CoreSchema.getObjectClassAttributeType();
oidList.clear();
List<Attribute> ocList = newSchemaEntry.getAttribute(objectclassAttrType);
@@ -3761,10 +3656,9 @@
}
}
- // loop on all the attribute types in the current schema and delete
+ // loop on all the object classes in the current schema and delete
// them from the new schema if they are not in the imported schema entry.
- ConcurrentHashMap<String, ObjectClass> currentObjectClasses =
- newSchema.getObjectClasses();
+ ConcurrentHashMap<String, ObjectClass> currentObjectClasses = newSchema.getObjectClasses();
for (ObjectClass removeClass : currentObjectClasses.values())
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
index 0602071..7651a14 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.backends;
@@ -78,6 +78,7 @@
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.ServerContext;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.CertificateManager;
import org.opends.server.util.Platform.KeyType;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEMonitor.java
index ac3082a..4a95595 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEMonitor.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.backends.jeb;
@@ -34,12 +34,12 @@
import java.util.List;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.admin.std.server.MonitorProviderCfg;
import org.opends.server.api.MonitorProvider;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Attributes;
import com.sleepycat.je.Environment;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
index e90309d..ba816d5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
* Portions Copyright 2014 Manuel Gaupp
*/
package org.opends.server.backends.pluggable;
@@ -56,6 +56,7 @@
import org.opends.server.backends.pluggable.spi.WriteOperation;
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.StaticUtils;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
index 4eee4d4..2383c38 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -66,7 +66,7 @@
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.ServerContext;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.CanceledOperationException;
@@ -123,6 +123,8 @@
OID_SERVER_SIDE_SORT_REQUEST_CONTROL,
OID_VLV_REQUEST_CONTROL);
+ private ServerContext serverContext;
+
/**
* Begin a Backend API method that accesses the {@link EntryContainer} for <code>entryDN</code>
* and returns it.
@@ -177,6 +179,7 @@
Reject.ifNull(cfg, "cfg must not be null");
this.cfg = cfg;
+ this.serverContext = serverContext;
baseDNs = this.cfg.getBaseDN().toArray(new DN[0]);
storage = new TracedStorage(configureStorage(cfg, serverContext), cfg.getBackendId());
}
@@ -1021,7 +1024,7 @@
throws ConfigException, InitializationException {
// Open the storage
try {
- final RootContainer rc = new RootContainer(getBackendID(), storage, cfg);
+ final RootContainer rc = new RootContainer(getBackendID(), serverContext, storage, cfg);
rc.open(accessMode);
return rc;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java
index d57e09f..85ee0b6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -54,7 +54,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
index a75b37f..85eae55 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
@@ -97,7 +97,7 @@
import org.opends.server.core.SearchOperation;
import org.opends.server.protocols.ldap.LDAPResultCode;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.CanceledOperationException;
import org.opends.server.types.Control;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java
index 293375f..9d4361c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java
@@ -20,7 +20,7 @@
*
* CDDL HEADER END
*
- * Copyright 2015 ForgeRock AS
+ * Copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -41,7 +41,7 @@
import org.forgerock.util.Reject;
import org.opends.server.api.plugin.PluginResult;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LDIFImportConfig;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexFilter.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexFilter.java
index 6892c9c..945e4cb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexFilter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexFilter.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions copyright 2011-2015 ForgeRock AS
+ * Portions copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -36,7 +36,7 @@
import org.opends.server.backends.pluggable.AttributeIndex.IndexFilterType;
import org.opends.server.backends.pluggable.spi.ReadableTransaction;
import org.opends.server.core.SearchOperation;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.FilterType;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java
index 45da3c1..10e3a1c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/IndexQueryFactoryImpl.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -37,6 +37,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.spi.IndexQueryFactory;
import org.forgerock.opendj.ldap.spi.IndexingOptions;
import org.forgerock.util.Utils;
@@ -44,7 +45,6 @@
import org.opends.server.backends.pluggable.spi.Cursor;
import org.opends.server.backends.pluggable.spi.ReadableTransaction;
import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
-import org.opends.server.types.AttributeType;
/**
* This class is an implementation of IndexQueryFactory which creates
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/PersistentCompressedSchema.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/PersistentCompressedSchema.java
index 6d19be8..129354c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/PersistentCompressedSchema.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/PersistentCompressedSchema.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.backends.pluggable;
@@ -46,6 +46,7 @@
import org.opends.server.backends.pluggable.spi.WriteOperation;
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.ServerContext;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
@@ -80,6 +81,8 @@
/**
* Creates a new instance of this compressed schema manager.
*
+ * @param serverContext
+ * The server context.
* @param storage
* A reference to the storage in which the trees will be held.
* @param txn a non null transaction
@@ -92,9 +95,10 @@
* If an error occurs while loading and processing the compressed
* schema definitions.
*/
- PersistentCompressedSchema(final Storage storage, WriteableTransaction txn, AccessMode accessMode)
- throws StorageRuntimeException, InitializationException
+ PersistentCompressedSchema(ServerContext serverContext, final Storage storage, WriteableTransaction txn,
+ AccessMode accessMode) throws StorageRuntimeException, InitializationException
{
+ super(serverContext);
this.storage = storage;
load(txn, accessMode.isWriteable());
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
index a483d44..b043c04 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -55,6 +55,7 @@
import org.opends.server.backends.pluggable.spi.WriteOperation;
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
import org.opends.server.core.SearchOperation;
+import org.opends.server.core.ServerContext;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
@@ -89,18 +90,23 @@
/** The compressed schema manager for this backend. */
private PersistentCompressedSchema compressedSchema;
+ private final ServerContext serverContext;
+
/**
* Creates a new RootContainer object representing a storage.
*
- * @param config
- * The configuration of the backend.
* @param backendID
* A reference to the backend that is creating this root
* container.
+ * @param serverContext
+ * The server context.
+ * @param config
+ * The configuration of the backend.
*/
- RootContainer(String backendID, Storage storage, PluggableBackendCfg config)
+ RootContainer(String backendID, ServerContext serverContext, Storage storage, PluggableBackendCfg config)
{
this.backendId = backendID;
+ this.serverContext = serverContext;
this.storage = storage;
this.config = config;
@@ -140,7 +146,7 @@
@Override
public void run(WriteableTransaction txn) throws Exception
{
- compressedSchema = new PersistentCompressedSchema(storage, txn, accessMode);
+ compressedSchema = new PersistentCompressedSchema(serverContext, storage, txn, accessMode);
openAndRegisterEntryContainers(txn, config.getBaseDN(), accessMode);
}
});
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java
index 24c48a8..10000cc 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java
@@ -69,7 +69,7 @@
import org.opends.server.core.SearchOperation;
import org.opends.server.protocols.ldap.LDAPResultCode;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java
index 23f15ee..de2ed27 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -60,7 +60,7 @@
import org.opends.server.backends.pluggable.spi.SequentialCursor;
import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/RecurringTask.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/RecurringTask.java
index 06bde9f..614b5c7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/RecurringTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/RecurringTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.backends.task;
@@ -43,7 +43,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
index ee72df7..902d9be 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.backends.task;
@@ -47,6 +47,7 @@
import org.opends.messages.Severity;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.LockManager.DNLock;
import org.opends.server.util.EMailMessage;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
index 8153858..1f687ec 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.backends.task;
@@ -58,6 +58,7 @@
import org.opends.server.api.Backupable;
import org.opends.server.config.ConfigEntry;
import org.opends.server.core.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.LockManager.DNLock;
import org.opends.server.util.BackupManager;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskScheduler.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskScheduler.java
index 4df3374..7f4da56 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskScheduler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskScheduler.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.backends.task;
@@ -42,6 +42,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.api.AlertGenerator;
import org.opends.server.api.DirectoryThread;
import org.opends.server.core.DirectoryServer;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/config/ConfigEntry.java b/opendj-server-legacy/src/main/java/org/opends/server/config/ConfigEntry.java
index 93cdd80..035dd67 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/config/ConfigEntry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/config/ConfigEntry.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.config;
@@ -34,13 +34,13 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.api.ConfigAddListener;
import org.opends.server.api.ConfigChangeListener;
import org.opends.server.api.ConfigDeleteListener;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ObjectClass;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/config/DNConfigAttribute.java b/opendj-server-legacy/src/main/java/org/opends/server/config/DNConfigAttribute.java
index 4e01fd5..f455a68 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/config/DNConfigAttribute.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/config/DNConfigAttribute.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.config;
@@ -222,6 +222,7 @@
*
* @return The name of the data type for this configuration attribute.
*/
+ @Override
public String getDataType()
{
return "DN";
@@ -234,6 +235,7 @@
*
* @return The attribute syntax for this configuration attribute.
*/
+ @Override
public Syntax getSyntax()
{
return DirectoryServer.getDefaultStringSyntax();
@@ -486,6 +488,7 @@
* configuration attribute. This will not take any action if there are no
* pending values.
*/
+ @Override
public void applyPendingValues()
{
if (! hasPendingValues())
@@ -511,6 +514,7 @@
* @return <CODE>true</CODE> if the provided value is acceptable for use in
* this attribute, or <CODE>false</CODE> if not.
*/
+ @Override
public boolean valueIsAcceptable(ByteString value, StringBuilder rejectReason)
{
// Make sure that the value is not null.
@@ -557,6 +561,7 @@
* @throws ConfigException If an unrecoverable problem occurs while
* performing the conversion.
*/
+ @Override
public LinkedHashSet<ByteString> stringsToValues(List<String> valueStrings, boolean allowFailures)
throws ConfigException
{
@@ -633,6 +638,7 @@
* @return The string representations of the set of active values for this
* configuration attribute.
*/
+ @Override
public List<String> activeValuesToStrings()
{
ArrayList<String> valueStrings = new ArrayList<>(activeValues.size());
@@ -657,6 +663,7 @@
* configuration attribute, or <CODE>null</CODE> if there are no
* pending values.
*/
+ @Override
public List<String> pendingValuesToStrings()
{
if (hasPendingValues())
@@ -694,6 +701,7 @@
* single-valued and the provided attribute has
* multiple values).
*/
+ @Override
public ConfigAttribute getConfigAttribute(List<Attribute> attributeList)
throws ConfigException
{
@@ -889,6 +897,7 @@
* configuration attribute, or <CODE>null</CODE> if it does not have
* any active values.
*/
+ @Override
public javax.management.Attribute toJMXAttribute()
{
return _toJMXAttribute(false) ;
@@ -901,6 +910,7 @@
* @return A JMX attribute containing the pending value set for this
* configuration attribute.
*/
+ @Override
public javax.management.Attribute toJMXAttributePending()
{
return _toJMXAttribute(true) ;
@@ -917,6 +927,7 @@
* @param attributeList The attribute list to which the JMX attribute(s)
* should be added.
*/
+ @Override
public void toJMXAttribute(AttributeList attributeList)
{
if (!activeValues.isEmpty())
@@ -987,6 +998,7 @@
* @param attributeInfoList The list to which the attribute information
* should be added.
*/
+ @Override
public void toJMXAttributeInfo(List<MBeanAttributeInfo> attributeInfoList)
{
attributeInfoList.add(new MBeanAttributeInfo(getName(), getType(),
@@ -1009,6 +1021,7 @@
* @return A JMX <CODE>MBeanParameterInfo</CODE> object that describes this
* configuration attribute.
*/
+ @Override
public MBeanParameterInfo toJMXParameterInfo()
{
return new MBeanParameterInfo(getName(), getType(), String.valueOf(getDescription()));
@@ -1030,6 +1043,7 @@
* acceptable value for this configuration
* attribute.
*/
+ @Override
public void setValue(javax.management.Attribute jmxAttribute)
throws ConfigException
{
@@ -1137,6 +1151,7 @@
*
* @return A duplicate of this configuration attribute.
*/
+ @Override
public ConfigAttribute duplicate()
{
return new DNConfigAttribute(getName(), getDescription(), isRequired(),
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/config/IntegerConfigAttribute.java b/opendj-server-legacy/src/main/java/org/opends/server/config/IntegerConfigAttribute.java
index 22cbe81..bb93a36 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/config/IntegerConfigAttribute.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/config/IntegerConfigAttribute.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.config;
@@ -43,8 +43,8 @@
import org.opends.server.types.Attribute;
import org.opends.server.util.CollectionUtils;
-import static org.opends.messages.ConfigMessages.*;
import static org.opends.server.config.ConfigConstants.*;
+import static org.opends.messages.ConfigMessages.*;
/**
* This class defines an integer configuration attribute, which can hold zero or
@@ -275,6 +275,7 @@
*
* @return The name of the data type for this configuration attribute.
*/
+ @Override
public String getDataType()
{
return "Integer";
@@ -285,6 +286,7 @@
*
* @return The attribute syntax for this configuration attribute.
*/
+ @Override
public Syntax getSyntax()
{
return DirectoryServer.getDefaultIntegerSyntax();
@@ -674,6 +676,7 @@
* configuration attribute. This will not take any action if there are no
* pending values.
*/
+ @Override
public void applyPendingValues()
{
if (! hasPendingValues())
@@ -697,6 +700,7 @@
* @return <CODE>true</CODE> if the provided value is acceptable for use in
* this attribute, or <CODE>false</CODE> if not.
*/
+ @Override
public boolean valueIsAcceptable(ByteString value, StringBuilder rejectReason)
{
// First, make sure we can represent it as a long.
@@ -753,6 +757,7 @@
* @throws ConfigException If an unrecoverable problem occurs while
* performing the conversion.
*/
+ @Override
public LinkedHashSet<ByteString>
stringsToValues(List<String> valueStrings, boolean allowFailures)
throws ConfigException
@@ -832,6 +837,7 @@
* @return The string representations of the set of active values for this
* configuration attribute.
*/
+ @Override
public List<String> activeValuesToStrings()
{
return toListOfString(activeValues);
@@ -848,6 +854,7 @@
* configuration attribute, or <CODE>null</CODE> if there are no
* pending values.
*/
+ @Override
public List<String> pendingValuesToStrings()
{
if (hasPendingValues())
@@ -888,6 +895,7 @@
* single-valued and the provided attribute has
* multiple values).
*/
+ @Override
public ConfigAttribute getConfigAttribute(List<Attribute> attributeList)
throws ConfigException
{
@@ -1122,6 +1130,7 @@
* configuration attribute, or <CODE>null</CODE> if it does not have
* any active values.
*/
+ @Override
public javax.management.Attribute toJMXAttribute()
{
return _toJMXAttribute(false);
@@ -1134,6 +1143,7 @@
* @return A JMX attribute containing the pending value set for this
* configuration attribute.
*/
+ @Override
public javax.management.Attribute toJMXAttributePending()
{
return _toJMXAttribute(true);
@@ -1150,6 +1160,7 @@
* @param attributeList The attribute list to which the JMX attribute(s)
* should be added.
*/
+ @Override
public void toJMXAttribute(AttributeList attributeList)
{
if (!activeValues.isEmpty())
@@ -1219,6 +1230,7 @@
* @param attributeInfoList The list to which the attribute information
* should be added.
*/
+ @Override
public void toJMXAttributeInfo(List<MBeanAttributeInfo> attributeInfoList)
{
if (isMultiValued())
@@ -1266,6 +1278,7 @@
* @return A JMX <CODE>MBeanParameterInfo</CODE> object that describes this
* configuration attribute.
*/
+ @Override
public MBeanParameterInfo toJMXParameterInfo()
{
if (isMultiValued())
@@ -1291,6 +1304,7 @@
* acceptable value for this configuration
* attribute.
*/
+ @Override
public void setValue(javax.management.Attribute jmxAttribute)
throws ConfigException
{
@@ -1393,6 +1407,7 @@
*
* @return A duplicate of this configuration attribute.
*/
+ @Override
public ConfigAttribute duplicate()
{
return new IntegerConfigAttribute(getName(), getDescription(), isRequired(),
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java b/opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java
index aac293a..bebdeb3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java
@@ -22,7 +22,7 @@
*
*
* Portions Copyright 2006-2007-2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.config;
@@ -64,7 +64,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.jmx.Credential;
import org.opends.server.protocols.jmx.JmxClientConnection;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InvokableMethod;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/config/MultiChoiceConfigAttribute.java b/opendj-server-legacy/src/main/java/org/opends/server/config/MultiChoiceConfigAttribute.java
index 0d808d6..8d9715f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/config/MultiChoiceConfigAttribute.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/config/MultiChoiceConfigAttribute.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.config;
@@ -44,8 +44,8 @@
import org.opends.server.types.Attribute;
import org.opends.server.util.CollectionUtils;
-import static org.opends.messages.ConfigMessages.*;
import static org.opends.server.config.ConfigConstants.*;
+import static org.opends.messages.ConfigMessages.*;
/**
* This class defines a multi-choice configuration attribute, which can hold
@@ -260,6 +260,7 @@
*
* @return The name of the data type for this configuration attribute.
*/
+ @Override
public String getDataType()
{
return "MultiChoice";
@@ -272,6 +273,7 @@
*
* @return The attribute syntax for this configuration attribute.
*/
+ @Override
public Syntax getSyntax()
{
return DirectoryServer.getDefaultStringSyntax();
@@ -503,6 +505,7 @@
* configuration attribute. This will not take any action if there are no
* pending values.
*/
+ @Override
public void applyPendingValues()
{
if (! hasPendingValues())
@@ -528,6 +531,7 @@
* @return <CODE>true</CODE> if the provided value is acceptable for use in
* this attribute, or <CODE>false</CODE> if not.
*/
+ @Override
public boolean valueIsAcceptable(ByteString value,
StringBuilder rejectReason)
{
@@ -572,6 +576,7 @@
* @throws ConfigException If an unrecoverable problem occurs while
* performing the conversion.
*/
+ @Override
public LinkedHashSet<ByteString>
stringsToValues(List<String> valueStrings, boolean allowFailures)
throws ConfigException
@@ -638,6 +643,7 @@
*
* @return The string representations of the set of active values for this configuration attribute.
*/
+ @Override
public List<String> activeValuesToStrings()
{
return activeValues;
@@ -656,6 +662,7 @@
* configuration attribute, or <CODE>null</CODE> if there are no
* pending values.
*/
+ @Override
public List<String> pendingValuesToStrings()
{
if (hasPendingValues())
@@ -688,6 +695,7 @@
* single-valued and the provided attribute has
* multiple values).
*/
+ @Override
public ConfigAttribute getConfigAttribute(List<Attribute> attributeList)
throws ConfigException
{
@@ -872,6 +880,7 @@
* configuration attribute, or <CODE>null</CODE> if it does not have
* any active values.
*/
+ @Override
public javax.management.Attribute toJMXAttribute()
{
return _toJMXAttribute(false) ;
@@ -885,6 +894,7 @@
* configuration attribute, or <CODE>null</CODE> if it does not have
* any active values.
*/
+ @Override
public javax.management.Attribute toJMXAttributePending()
{
return _toJMXAttribute(true) ;
@@ -902,6 +912,7 @@
* @param attributeList The attribute list to which the JMX attribute(s)
* should be added.
*/
+ @Override
public void toJMXAttribute(AttributeList attributeList)
{
if (!activeValues.isEmpty())
@@ -965,6 +976,7 @@
* @param attributeInfoList The list to which the attribute information
* should be added.
*/
+ @Override
public void toJMXAttributeInfo(List<MBeanAttributeInfo> attributeInfoList)
{
attributeInfoList.add(new MBeanAttributeInfo(getName(), getType(),
@@ -987,6 +999,7 @@
* @return A JMX <CODE>MBeanParameterInfo</CODE> object that describes this
* configuration attribute.
*/
+ @Override
public MBeanParameterInfo toJMXParameterInfo()
{
return new MBeanParameterInfo(getName(), getType(), String.valueOf(getDescription()));
@@ -1008,6 +1021,7 @@
* acceptable value for this configuration
* attribute.
*/
+ @Override
public void setValue(javax.management.Attribute jmxAttribute)
throws ConfigException
{
@@ -1068,6 +1082,7 @@
*
* @return A duplicate of this configuration attribute.
*/
+ @Override
public ConfigAttribute duplicate()
{
return new MultiChoiceConfigAttribute(getName(), getDescription(),
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/config/StringConfigAttribute.java b/opendj-server-legacy/src/main/java/org/opends/server/config/StringConfigAttribute.java
index 3279597..e337a94 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/config/StringConfigAttribute.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/config/StringConfigAttribute.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.config;
@@ -226,6 +226,7 @@
*
* @return The name of the data type for this configuration attribute.
*/
+ @Override
public String getDataType()
{
return "String";
@@ -238,6 +239,7 @@
*
* @return The attribute syntax for this configuration attribute.
*/
+ @Override
public Syntax getSyntax()
{
return DirectoryServer.getDefaultStringSyntax();
@@ -450,6 +452,7 @@
* configuration attribute. This will not take any action if there are no
* pending values.
*/
+ @Override
public void applyPendingValues()
{
if (! hasPendingValues())
@@ -475,6 +478,7 @@
* @return <CODE>true</CODE> if the provided value is acceptable for use in
* this attribute, or <CODE>false</CODE> if not.
*/
+ @Override
public boolean valueIsAcceptable(ByteString value,
StringBuilder rejectReason)
{
@@ -508,6 +512,7 @@
* @throws ConfigException If an unrecoverable problem occurs while
* performing the conversion.
*/
+ @Override
public LinkedHashSet<ByteString> stringsToValues(List<String> valueStrings, boolean allowFailures)
throws ConfigException
{
@@ -568,6 +573,7 @@
* @return The string representations of the set of active values for this
* configuration attribute.
*/
+ @Override
public List<String> activeValuesToStrings()
{
return activeValues;
@@ -586,6 +592,7 @@
* configuration attribute, or <CODE>null</CODE> if there are no
* pending values.
*/
+ @Override
public List<String> pendingValuesToStrings()
{
if (hasPendingValues())
@@ -618,6 +625,7 @@
* single-valued and the provided attribute has
* multiple values).
*/
+ @Override
public ConfigAttribute getConfigAttribute(List<Attribute> attributeList)
throws ConfigException
{
@@ -781,6 +789,7 @@
* configuration attribute, or <CODE>null</CODE> if it does not have
* any active values.
*/
+ @Override
public javax.management.Attribute toJMXAttribute()
{
return _toJMXAttribute(false) ;
@@ -794,6 +803,7 @@
* configuration attribute, or <CODE>null</CODE> if it does not have
* any active values.
*/
+ @Override
public javax.management.Attribute toJMXAttributePending()
{
return _toJMXAttribute(true) ;
@@ -812,6 +822,7 @@
* @param attributeList The attribute list to which the JMX attribute(s)
* should be added.
*/
+ @Override
public void toJMXAttribute(AttributeList attributeList)
{
if (!activeValues.isEmpty())
@@ -875,6 +886,7 @@
* @param attributeInfoList The list to which the attribute information
* should be added.
*/
+ @Override
public void toJMXAttributeInfo(List<MBeanAttributeInfo> attributeInfoList)
{
attributeInfoList.add(new MBeanAttributeInfo(getName(), getType(),
@@ -897,6 +909,7 @@
* @return A JMX <CODE>MBeanParameterInfo</CODE> object that describes this
* configuration attribute.
*/
+ @Override
public MBeanParameterInfo toJMXParameterInfo()
{
return new MBeanParameterInfo(getName(), getType(), String.valueOf(getDescription()));
@@ -918,6 +931,7 @@
* acceptable value for this configuration
* attribute.
*/
+ @Override
public void setValue(javax.management.Attribute jmxAttribute)
throws ConfigException
{
@@ -978,6 +992,7 @@
*
* @return A duplicate of this configuration attribute.
*/
+ @Override
public ConfigAttribute duplicate()
{
return new StringConfigAttribute(getName(), getDescription(), isRequired(),
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/controls/GetEffectiveRightsRequestControl.java b/opendj-server-legacy/src/main/java/org/opends/server/controls/GetEffectiveRightsRequestControl.java
index ac06618..84fc255 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/controls/GetEffectiveRightsRequestControl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/controls/GetEffectiveRightsRequestControl.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.controls;
@@ -37,8 +37,8 @@
import org.forgerock.opendj.io.ASN1Writer;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
@@ -82,7 +82,7 @@
private static final class Decoder
implements ControlDecoder<GetEffectiveRightsRequestControl>
{
- /** {@inheritDoc} */
+ @Override
public GetEffectiveRightsRequestControl decode(boolean isCritical,
ByteString value) throws DirectoryException
{
@@ -138,6 +138,7 @@
}
}
+ @Override
public String getOID()
{
return OID_GET_EFFECTIVE_RIGHTS;
@@ -212,13 +213,6 @@
this.rawAttrs=attrs;
}
- /**
- * Writes this control's value to an ASN.1 writer. The value (if any) must be
- * written as an ASN1OctetString.
- *
- * @param writer The ASN.1 output stream to write to.
- * @throws IOException If a problem occurs while writing to the stream.
- */
@Override
public void writeValue(ASN1Writer writer) throws IOException {
writer.writeStartSequence(ASN1.UNIVERSAL_OCTET_STRING_TYPE);
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesControl.java b/opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesControl.java
index 90f87ae..bb2da5f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesControl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesControl.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.controls;
import org.forgerock.i18n.LocalizableMessage;
@@ -33,6 +33,7 @@
import java.io.IOException;
import org.forgerock.opendj.io.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.ByteString;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesFilter.java b/opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesFilter.java
index 2f9e1c1..83f350d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesFilter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/controls/MatchedValuesFilter.java
@@ -23,7 +23,7 @@
*
* Copyright 2006-2010 Sun Microsystems, Inc.
* Portions Copyright 2013-2014 Manuel Gaupp
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.controls;
@@ -38,11 +38,11 @@
import org.forgerock.opendj.ldap.Assertion;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DecodeException;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.util.Reject;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.ldap.LDAPResultCode;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.LDAPException;
import org.opends.server.types.RawFilter;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/controls/ServerSideSortRequestControl.java b/opendj-server-legacy/src/main/java/org/opends/server/controls/ServerSideSortRequestControl.java
index bf40d9c..8dfe6ee 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/controls/ServerSideSortRequestControl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/controls/ServerSideSortRequestControl.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.controls;
@@ -36,9 +36,11 @@
import org.opends.server.core.DirectoryServer;
import org.forgerock.opendj.io.*;
import org.opends.server.protocols.ldap.LDAPResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.ByteString;
+
import static org.opends.messages.ProtocolMessages.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
@@ -80,6 +82,7 @@
implements ControlDecoder<ServerSideSortRequestControl>
{
/** {@inheritDoc} */
+ @Override
public ServerSideSortRequestControl decode(boolean isCritical,
ByteString value)
throws DirectoryException
@@ -166,6 +169,7 @@
}
}
+ @Override
public String getOID()
{
return OID_SERVER_SIDE_SORT_REQUEST_CONTROL;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperation.java
index b17d72b..eefe62a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperation.java
@@ -22,13 +22,14 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.core;
import java.util.List;
import java.util.Map;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ByteString;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationBasis.java b/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationBasis.java
index f50aaae..2b5a20d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationBasis.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationBasis.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -37,6 +37,7 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.protocols.ldap.LDAPResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.PostResponseAddOperation;
import org.opends.server.types.operation.PreParseAddOperation;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationWrapper.java b/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationWrapper.java
index bd3c7af..f802174 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationWrapper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/AddOperationWrapper.java
@@ -22,13 +22,14 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.core;
import java.util.List;
import java.util.Map;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ByteString;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/AttributeSyntaxConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/AttributeSyntaxConfigManager.java
index 80ad1af..aea93a2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/AttributeSyntaxConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/AttributeSyntaxConfigManager.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -35,7 +35,11 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.Schema;
+import org.forgerock.opendj.ldap.schema.Syntax;
import org.forgerock.util.Utils;
import org.opends.server.admin.ClassPropertyDefinition;
import org.opends.server.admin.server.ConfigurationAddListener;
@@ -46,9 +50,6 @@
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.admin.std.server.RootCfg;
import org.opends.server.api.AttributeSyntax;
-import org.opends.server.types.AttributeType;
-import org.forgerock.opendj.config.server.ConfigChangeResult;
-import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
@@ -133,8 +134,16 @@
AttributeSyntax<?> syntax = loadSyntax(className, syntaxConfiguration, true);
try
{
- Syntax sdkSyntax = syntax.getSDKSyntax(serverContext.getSchemaNG());
- serverContext.getSchema().registerSyntax(sdkSyntax, false);
+ Schema schemaNG = serverContext.getSchemaNG();
+ Syntax sdkSyntax = syntax.getSDKSyntax(schemaNG);
+ // skip the syntax registration if already defined in the (core) schema
+ if (!schemaNG.hasSyntax(sdkSyntax.getOID()))
+ {
+ // The syntaxes configuration options (e.g. strictness, support for zero length values, etc)
+ // are set by the call to loadSyntax() which calls initializeSyntax()
+ // which updates the SDK schema options.
+ serverContext.getSchema().registerSyntax(sdkSyntax, false);
+ }
syntaxes.put(syntaxConfiguration.dn(), syntax);
}
catch (DirectoryException de)
@@ -243,7 +252,7 @@
if (syntax != null)
{
String oid = syntax.getOID();
- for (AttributeType at : DirectoryServer.getAttributeTypes().values())
+ for (AttributeType at : DirectoryServer.getAttributeTypes())
{
if (oid.equals(at.getSyntax().getOID()))
{
@@ -310,7 +319,7 @@
if (syntax != null)
{
String oid = syntax.getOID();
- for (AttributeType at : DirectoryServer.getAttributeTypes().values())
+ for (AttributeType at : DirectoryServer.getAttributeTypes())
{
if (oid.equals(at.getSyntax().getOID()))
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperation.java
index 1e7221f..d861c08 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperation.java
@@ -22,12 +22,13 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.core;
import java.util.Set;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ByteString;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationBasis.java b/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationBasis.java
index 1e46e12..77ec319 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationBasis.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationBasis.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -35,6 +35,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.api.ClientConnection;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.PostResponseCompareOperation;
import org.opends.server.types.operation.PreParseCompareOperation;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationWrapper.java b/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationWrapper.java
index f7d67db..8e3507e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationWrapper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/CompareOperationWrapper.java
@@ -22,13 +22,13 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.core;
import java.util.Set;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
index 754f479..8a1f32b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/CoreConfigManager.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -32,9 +32,6 @@
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.schema.Schema;
-import org.forgerock.opendj.ldap.schema.SchemaBuilder;
-import org.forgerock.opendj.ldap.schema.SchemaOptions;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.server.ServerManagementContext;
import org.opends.server.admin.std.meta.GlobalCfgDefn;
@@ -45,9 +42,9 @@
import org.opends.server.admin.std.server.RootCfg;
import org.opends.server.api.AuthenticationPolicy;
import org.opends.server.loggers.CommonAudit;
-import org.opends.server.schema.SchemaUpdater;
import org.opends.server.types.*;
+import static org.forgerock.opendj.ldap.schema.SchemaOptions.*;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.server.core.DirectoryServer.*;
import static org.opends.server.util.ServerConstants.*;
@@ -120,19 +117,16 @@
}
}
-
- // Apply the configuration to the server.
applyGlobalConfiguration(globalConfig, serverContext);
}
-
-
/**
* Applies the settings in the provided configuration to the Directory Server.
*
* @param globalConfig The configuration settings to be applied.
*/
- private static void applyGlobalConfiguration(GlobalCfg globalConfig, ServerContext serverContext)
+ private static void applyGlobalConfiguration(final GlobalCfg globalConfig, final ServerContext serverContext)
+ throws ConfigException
{
setCheckSchema(globalConfig.isCheckSchema());
setDefaultPasswordPolicyDN(globalConfig.getDefaultPasswordPolicyDN());
@@ -170,17 +164,16 @@
commonAudit.setTrustTransactionIds(globalConfig.isTrustTransactionIds());
}
- // Update the "new" schema with configuration changes
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- SchemaBuilder schemaBuilder = schemaUpdater.getSchemaBuilder();
- boolean allowMalformedNames = globalConfig.isAllowAttributeNameExceptions();
- schemaBuilder.setOption(SchemaOptions.ALLOW_MALFORMED_NAMES_AND_OPTIONS, allowMalformedNames);
- Schema schema = schemaBuilder.toSchema();
- if (!globalConfig.isCheckSchema())
+ // Update the "new" schema with configuration changes if necessary
+ try
{
- schema = schema.asNonStrictSchema();
+ final boolean allowMalformedNames = globalConfig.isAllowAttributeNameExceptions();
+ serverContext.getSchema().updateSchemaOption(ALLOW_MALFORMED_NAMES_AND_OPTIONS, allowMalformedNames);
}
- schemaUpdater.updateSchema(schema);
+ catch (DirectoryException e)
+ {
+ throw new ConfigException(e.getMessageObject(), e);
+ }
}
private static AcceptRejectWarn convert(InvalidAttributeSyntaxBehavior invalidAttributeSyntaxBehavior)
@@ -326,8 +319,6 @@
}
}
-
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(GlobalCfg configuration,
List<LocalizableMessage> unacceptableReasons)
@@ -346,8 +337,7 @@
}
catch (RuntimeException e)
{
- LocalizableMessage message = ERR_CONFIG_CORE_INVALID_SMTP_SERVER.get(server);
- unacceptableReasons.add(message);
+ unacceptableReasons.add(ERR_CONFIG_CORE_INVALID_SMTP_SERVER.get(server));
configAcceptable = false;
}
}
@@ -370,17 +360,19 @@
return configAcceptable;
}
-
-
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(GlobalCfg configuration)
{
final ConfigChangeResult ccr = new ConfigChangeResult();
-
- applyGlobalConfiguration(configuration, serverContext);
-
+ try
+ {
+ applyGlobalConfiguration(configuration, serverContext);
+ }
+ catch (ConfigException e)
+ {
+ ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.addMessage(e.getMessageObject());
+ }
return ccr;
}
}
-
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/DefaultCompressedSchema.java b/opendj-server-legacy/src/main/java/org/opends/server/core/DefaultCompressedSchema.java
index 285eec2..05d7f40 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/DefaultCompressedSchema.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/DefaultCompressedSchema.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -63,9 +63,13 @@
/**
* Creates a new instance of this compressed schema manager.
+ *
+ * @param serverContext
+ * The server context.
*/
- public DefaultCompressedSchema()
+ public DefaultCompressedSchema(ServerContext serverContext)
{
+ super(serverContext);
load();
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java b/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
index 85e2902..9b96b2b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2010-2015 ForgeRock AS.
+ * Portions Copyright 2010-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -69,11 +69,10 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.schema.AttributeUsage;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
-import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.forgerock.util.Reject;
import org.opends.server.admin.AdministrationConnector;
@@ -113,7 +112,6 @@
import org.opends.server.api.InitializationCompletedListener;
import org.opends.server.api.InvokableComponent;
import org.opends.server.api.KeyManagerProvider;
-import org.opends.server.api.MatchingRuleFactory;
import org.opends.server.api.MonitorProvider;
import org.opends.server.api.PasswordGenerator;
import org.opends.server.api.PasswordStorageScheme;
@@ -151,32 +149,7 @@
import org.opends.server.monitors.ConnectionHandlerMonitor;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalConnectionHandler;
-import org.opends.server.schema.BooleanEqualityMatchingRuleFactory;
-import org.opends.server.schema.CaseExactEqualityMatchingRuleFactory;
-import org.opends.server.schema.CaseExactIA5EqualityMatchingRuleFactory;
-import org.opends.server.schema.CaseExactIA5SubstringMatchingRuleFactory;
-import org.opends.server.schema.CaseExactOrderingMatchingRuleFactory;
-import org.opends.server.schema.CaseExactSubstringMatchingRuleFactory;
-import org.opends.server.schema.CaseIgnoreEqualityMatchingRuleFactory;
-import org.opends.server.schema.CaseIgnoreIA5EqualityMatchingRuleFactory;
-import org.opends.server.schema.CaseIgnoreIA5SubstringMatchingRuleFactory;
-import org.opends.server.schema.CaseIgnoreOrderingMatchingRuleFactory;
-import org.opends.server.schema.CaseIgnoreSubstringMatchingRuleFactory;
-import org.opends.server.schema.DistinguishedNameEqualityMatchingRuleFactory;
-import org.opends.server.schema.DoubleMetaphoneApproximateMatchingRuleFactory;
-import org.opends.server.schema.GeneralizedTimeEqualityMatchingRuleFactory;
-import org.opends.server.schema.GeneralizedTimeOrderingMatchingRuleFactory;
-import org.opends.server.schema.IntegerEqualityMatchingRuleFactory;
-import org.opends.server.schema.IntegerOrderingMatchingRuleFactory;
-import org.opends.server.schema.ObjectIdentifierEqualityMatchingRuleFactory;
-import org.opends.server.schema.OctetStringEqualityMatchingRuleFactory;
-import org.opends.server.schema.OctetStringOrderingMatchingRuleFactory;
-import org.opends.server.schema.OctetStringSubstringMatchingRuleFactory;
-import org.opends.server.schema.SchemaUpdater;
-import org.opends.server.schema.TelephoneNumberEqualityMatchingRuleFactory;
-import org.opends.server.schema.TelephoneNumberSubstringMatchingRuleFactory;
import org.opends.server.types.AcceptRejectWarn;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.Control;
import org.opends.server.types.DITContentRule;
@@ -204,7 +177,6 @@
import org.opends.server.util.ActivateOnceSDKSchemaIsUsed;
import org.opends.server.util.BuildVersion;
import org.opends.server.util.MultiOutputStream;
-import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
import org.opends.server.util.RuntimeInformation;
import org.opends.server.util.SetupUtils;
import org.opends.server.util.TimeThread;
@@ -281,8 +253,6 @@
/** The account status notification handler config manager for the server. */
private AccountStatusNotificationHandlerConfigManager accountStatusNotificationHandlerConfigManager;
- /** The attribute type used to reference the "objectclass" attribute. */
- private AttributeType objectClassAttributeType;
/** The authenticated users manager for the server. */
private AuthenticatedUsers authenticatedUsers;
/** The configuration manager that will handle the server backends. */
@@ -636,19 +606,6 @@
/** The schema for the Directory Server. */
private Schema schema;
- /**
- * The schema for the Directory Server.
- * <p>
- * This schema is synchronized indirectly to the existing schema, because
- * syntaxes are defined in schemaNG (i.e, migrated to SDK classes) and there
- * is currently no way to handle the SchemaOptions in the configuration (e.g.
- * SchemaOptions.ALLOW_ZERO_LENGTH_DIRECTORY_STRINGS).
- * Thus, configuration of the legacy syntaxes are kept, and any change related
- * to them is synchronized with this schema.
- */
- @RemoveOnceSDKSchemaIsUsed("'schema' field will then be a reference to a SDK schema")
- private org.forgerock.opendj.ldap.schema.Schema schemaNG;
-
/** The schema configuration manager for the Directory Server. */
private SchemaConfigManager schemaConfigManager;
@@ -753,64 +710,36 @@
*/
private class DirectoryServerContext implements ServerContext
{
-
- /** {@inheritDoc} */
@Override
public String getInstanceRoot()
{
return DirectoryServer.getInstanceRoot();
}
- /** {@inheritDoc} */
@Override
public String getServerRoot()
{
return DirectoryServer.getServerRoot();
}
- /** {@inheritDoc} */
@Override
public Schema getSchema()
{
return directoryServer.schema;
}
- /** {@inheritDoc} */
@Override
public org.forgerock.opendj.ldap.schema.Schema getSchemaNG()
{
- return directoryServer.schemaNG;
+ return directoryServer.schema.getSchemaNG();
}
- /** {@inheritDoc} */
@Override
public DirectoryEnvironmentConfig getEnvironment()
{
return directoryServer.environmentConfig;
}
- /** {@inheritDoc} */
- @Override
- public SchemaUpdater getSchemaUpdater()
- {
- return new SchemaUpdater()
- {
- @Override
- public boolean updateSchema(org.forgerock.opendj.ldap.schema.Schema schema)
- {
- schemaNG = schema;
- return true;
- }
-
- @Override
- public SchemaBuilder getSchemaBuilder()
- {
- return new SchemaBuilder(schemaNG);
- }
- };
- }
-
- /** {@inheritDoc} */
@Override
public org.forgerock.opendj.config.server.ServerManagementContext getServerManagementContext()
{
@@ -958,15 +887,13 @@
{
synchronized (directoryServer)
{
- // Set default values for variables that may be needed during schema
- // processing.
+ // Set default values for variables that may be needed during schema processing.
directoryServer.syntaxEnforcementPolicy = AcceptRejectWarn.REJECT;
// Create the server schema and initialize and register a minimal set of
// matching rules and attribute syntaxes.
- directoryServer.schema = new Schema();
- directoryServer.schemaNG = new SchemaBuilder("mainSchema").addSchema(CoreSchema.getInstance(), true).toSchema();
- directoryServer.bootstrapMatchingRules();
+ org.forgerock.opendj.ldap.schema.Schema coreSchema = org.forgerock.opendj.ldap.schema.Schema.getCoreSchema();
+ directoryServer.schema = new Schema(coreSchema);
directoryServer.bootstrapAttributeSyntaxes();
// Perform any additional initialization that might be necessary before
@@ -1525,61 +1452,6 @@
}
/**
- * Registers a basic set of matching rules with the server that should always
- * be available regardless of the server configuration and may be needed for
- * configuration processing.
- */
- private void bootstrapMatchingRules()
- {
- MatchingRuleFactory<?>[] factories =
- new MatchingRuleFactory<?>[] {
- new DoubleMetaphoneApproximateMatchingRuleFactory(),
- new BooleanEqualityMatchingRuleFactory(),
- new CaseExactEqualityMatchingRuleFactory(),
- new CaseExactIA5EqualityMatchingRuleFactory(),
- new CaseIgnoreEqualityMatchingRuleFactory(),
- new CaseIgnoreIA5EqualityMatchingRuleFactory(),
- new DistinguishedNameEqualityMatchingRuleFactory(),
- new GeneralizedTimeEqualityMatchingRuleFactory(),
- new IntegerEqualityMatchingRuleFactory(),
- new OctetStringEqualityMatchingRuleFactory(),
- new ObjectIdentifierEqualityMatchingRuleFactory(),
- new TelephoneNumberEqualityMatchingRuleFactory(),
- new CaseExactOrderingMatchingRuleFactory(),
- new CaseIgnoreOrderingMatchingRuleFactory(),
- new GeneralizedTimeOrderingMatchingRuleFactory(),
- new IntegerOrderingMatchingRuleFactory(),
- new OctetStringOrderingMatchingRuleFactory(),
- new CaseExactSubstringMatchingRuleFactory(),
- new CaseExactIA5SubstringMatchingRuleFactory(),
- new CaseIgnoreSubstringMatchingRuleFactory(),
- new CaseIgnoreIA5SubstringMatchingRuleFactory(),
- new OctetStringSubstringMatchingRuleFactory(),
- new TelephoneNumberSubstringMatchingRuleFactory()};
-
- MatchingRuleFactory<?> currentFactory = null;
- try
- {
- for(MatchingRuleFactory<?> factory: factories)
- {
- currentFactory = factory;
- currentFactory.initializeMatchingRule(null);
- for(MatchingRule matchingRule: currentFactory.getMatchingRules())
- {
- registerMatchingRule(matchingRule, true);
- }
- }
- }
- catch (Exception e)
- {
- logger.traceException(e);
-
- logger.error(ERR_CANNOT_BOOTSTRAP_MATCHING_RULE, currentFactory.getClass().getName(),
- stackTraceToSingleLineString(e));
- }
- }
-
- /**
* Registers a basic set of attribute syntaxes with the server that should
* always be available regardless of the server configuration and may be
* needed for configuration processing.
@@ -1722,7 +1594,7 @@
schemaConfigManager.initializeSchemaFromFiles();
// With server schema in place set compressed schema.
- compressedSchema = new DefaultCompressedSchema();
+ compressedSchema = new DefaultCompressedSchema(serverContext);
// At this point we have a problem, because none of the configuration is
// usable because it was all read before we had a schema (and therefore all
@@ -2403,13 +2275,10 @@
/**
* Retrieves the set of matching rules registered with the Directory Server.
- * The mapping will be between the lowercase name or OID for each matching
- * rule and the matching rule implementation. The same matching rule instance
- * may be included multiple times with different keys.
*
* @return The set of matching rules registered with the Directory Server.
*/
- public static ConcurrentMap<String, MatchingRule> getMatchingRules()
+ public static Collection<MatchingRule> getMatchingRules()
{
return directoryServer.schema.getMatchingRules();
}
@@ -2638,7 +2507,7 @@
* @return The set of attribute type definitions that have been
* defined in the Directory Server.
*/
- public static ConcurrentMap<String, AttributeType> getAttributeTypes()
+ public static Collection<AttributeType> getAttributeTypes()
{
return directoryServer.schema.getAttributeTypes();
}
@@ -2654,7 +2523,8 @@
*/
public static AttributeType getAttributeTypeOrNull(String lowerName)
{
- return directoryServer.schema.getAttributeType(lowerName);
+ AttributeType attrType = directoryServer.schema.getAttributeType(lowerName);
+ return attrType.isPlaceHolder() ? null : attrType;
}
/**
@@ -2706,12 +2576,7 @@
*/
public static AttributeType getAttributeTypeOrDefault(String lowerName, String upperName, Syntax syntax)
{
- AttributeType attrType = getAttributeTypeOrNull(lowerName);
- if (attrType == null)
- {
- attrType = getDefaultAttributeType(upperName, syntax);
- }
- return attrType;
+ return directoryServer.schema.getAttributeType(upperName, syntax);
}
/**
@@ -2732,8 +2597,7 @@
boolean overwriteExisting)
throws DirectoryException
{
- directoryServer.schema.registerAttributeType(attributeType,
- overwriteExisting);
+ directoryServer.schema.registerAttributeType(attributeType, overwriteExisting);
}
/**
@@ -2754,78 +2618,7 @@
*/
public static AttributeType getObjectClassAttributeType()
{
- if (directoryServer.objectClassAttributeType == null)
- {
- directoryServer.objectClassAttributeType =
- directoryServer.schema.getAttributeType(
- OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
-
- if (directoryServer.objectClassAttributeType == null)
- {
- Syntax oidSyntax = directoryServer.schema.getSyntax(SYNTAX_OID_NAME);
- if (oidSyntax == null)
- {
- try
- {
- oidSyntax = CoreSchema.getOIDSyntax();
- directoryServer.schema.registerSyntax(oidSyntax, true);
- }
- catch (Exception e)
- {
- logger.traceException(e);
- }
- }
-
- String definition =
- "( 2.5.4.0 NAME 'objectClass' EQUALITY objectIdentifierMatch " +
- "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 X-ORIGIN 'RFC 2256' )";
-
- directoryServer.objectClassAttributeType =
- newAttributeType(definition, "objectClass", OBJECTCLASS_ATTRIBUTE_TYPE_OID, oidSyntax);
- try
- {
- directoryServer.schema.registerAttributeType(
- directoryServer.objectClassAttributeType, true);
- }
- catch (Exception e)
- {
- // This should never happen.
- logger.traceException(e);
- }
- }
- }
-
- return directoryServer.objectClassAttributeType;
- }
-
- /**
- * Causes the Directory Server to construct a new attribute type definition
- * with the provided name and syntax. This should only be used if there is no
- * real attribute type for the specified name.
- * <p>
- * TODO remove once we switch to the SDK Schema
- * <p>
- * FIXME move to {@link org.opends.server.types.Schema}?
- *
- * @param name The name to use for the attribute type, as provided by the user.
- * @param syntax The syntax to use for the attribute type.
- *
- * @return The constructed attribute type definition.
- */
- public static AttributeType getDefaultAttributeType(String name, Syntax syntax)
- {
- String oid = toLowerCase(name) + "-oid";
- String definition = "( " + oid + " NAME '" + name + "' SYNTAX " +
- syntax.getOID() + " )";
-
- // Temporary attribute types are immediately dirty.
- return newAttributeType(definition, name, oid, syntax).setDirty();
- }
-
- private static AttributeType newAttributeType(String definition, String name, String oid, Syntax syntax)
- {
- return new AttributeType(definition, name, Collections.singleton(name), oid, null, null, syntax,
- AttributeUsage.USER_APPLICATIONS, false, false, false, false);
+ return directoryServer.schema.getAttributeType(OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
}
/**
@@ -2833,7 +2626,7 @@
*
* @return The set of attribute syntaxes defined in the Directory Server.
*/
- public static ConcurrentMap<String, Syntax> getAttributeSyntaxes()
+ public static Collection<Syntax> getAttributeSyntaxes()
{
return directoryServer.schema.getSyntaxes();
}
@@ -6447,7 +6240,6 @@
cryptoManager = null;
entryCache = null;
environmentConfig = null;
- objectClassAttributeType = null;
schemaDN = null;
shutdownHook = null;
workQueue = null;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/MatchingRuleConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/MatchingRuleConfigManager.java
index c4fcdc7..a0bcf5a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/MatchingRuleConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/MatchingRuleConfigManager.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -36,7 +36,9 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.util.Utils;
import org.opends.server.admin.ClassPropertyDefinition;
@@ -48,12 +50,12 @@
import org.opends.server.admin.std.server.MatchingRuleCfg;
import org.opends.server.admin.std.server.RootCfg;
import org.opends.server.api.MatchingRuleFactory;
-import org.opends.server.types.AttributeType;
-import org.forgerock.opendj.config.server.ConfigChangeResult;
+import org.opends.server.schema.CollationMatchingRuleFactory;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.MatchingRuleUse;
+import org.opends.server.types.Schema;
/**
* This class defines a utility that will be used to manage the set of matching
@@ -76,9 +78,17 @@
*/
private ConcurrentHashMap<DN,MatchingRuleFactory> matchingRuleFactories;
- /** Creates a new instance of this matching rule config manager. */
- public MatchingRuleConfigManager()
+ private final ServerContext serverContext;
+
+ /**
+ * Creates a new instance of this matching rule config manager.
+ *
+ * @param serverContext
+ * The server context.
+ */
+ public MatchingRuleConfigManager(ServerContext serverContext)
{
+ this.serverContext = serverContext;
matchingRuleFactories = new ConcurrentHashMap<>();
}
@@ -100,8 +110,7 @@
throws ConfigException, InitializationException
{
// Get the root configuration object.
- ServerManagementContext managementContext =
- ServerManagementContext.getInstance();
+ ServerManagementContext managementContext = ServerManagementContext.getInstance();
RootCfg rootConfiguration =
managementContext.getRootConfiguration();
@@ -111,7 +120,6 @@
rootConfiguration.addMatchingRuleAddListener(this);
rootConfiguration.addMatchingRuleDeleteListener(this);
-
//Initialize the existing matching rules.
for (String name : rootConfiguration.listMatchingRules())
{
@@ -123,14 +131,18 @@
String className = mrConfiguration.getJavaClass();
try
{
- MatchingRuleFactory<?> factory =
- loadMatchingRuleFactory(className, mrConfiguration, true);
+ MatchingRuleFactory<?> factory = loadMatchingRuleFactory(className, mrConfiguration, true);
try
{
for(MatchingRule matchingRule: factory.getMatchingRules())
{
- DirectoryServer.registerMatchingRule(matchingRule, false);
+ Schema schema = serverContext.getSchema();
+ // skip the matching rule registration if already defined in the (core) schema
+ if (!schema.hasMatchingRule(matchingRule.getNameOrOID()))
+ {
+ DirectoryServer.registerMatchingRule(matchingRule, false);
+ }
}
matchingRuleFactories.put(mrConfiguration.dn(), factory);
}
@@ -237,7 +249,7 @@
{
if (matchingRule != null)
{
- for (AttributeType at : DirectoryServer.getAttributeTypes().values())
+ for (AttributeType at : DirectoryServer.getAttributeTypes())
{
final String attr = at.getNameOrOID();
if (!isDeleteAcceptable(at.getApproximateMatchingRule(), matchingRule, attr, unacceptableReasons)
@@ -339,7 +351,7 @@
{
if (matchingRule != null)
{
- for (AttributeType at : DirectoryServer.getAttributeTypes().values())
+ for (AttributeType at : DirectoryServer.getAttributeTypes())
{
final String attr = at.getNameOrOID();
if (!isDisableAcceptable(at.getApproximateMatchingRule(), matchingRule, attr, unacceptableReasons)
@@ -488,6 +500,13 @@
propertyDefinition.loadClass(className,
MatchingRuleFactory.class);
factory = matchingRuleFactoryClass.newInstance();
+ // specific behavior for collation
+ // in order to avoid useless injection of context server for all factories
+ if (factory instanceof CollationMatchingRuleFactory)
+ {
+ CollationMatchingRuleFactory collationFactory = (CollationMatchingRuleFactory) factory;
+ collationFactory.setServerContext(serverContext);
+ }
if (initialize)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/ModifyOperationBasis.java b/opendj-server-legacy/src/main/java/org/opends/server/core/ModifyOperationBasis.java
index daf5396..efa327b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/ModifyOperationBasis.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/ModifyOperationBasis.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -36,6 +36,7 @@
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.protocols.ldap.LDAPModification;
import org.opends.server.protocols.ldap.LDAPResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.PostResponseModifyOperation;
import org.opends.server.types.operation.PreParseModifyOperation;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicy.java b/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicy.java
index d708713..bcf5c26 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicy.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicy.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions copyright 2011-2015 ForgeRock AS.
+ * Portions copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -33,7 +33,7 @@
import org.opends.server.admin.std.meta.PasswordPolicyCfgDefn.*;
import org.opends.server.api.*;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyFactory.java b/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyFactory.java
index 50e267c..bde5b8d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyFactory.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyFactory.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -46,6 +46,7 @@
import org.opends.server.admin.std.meta.PasswordPolicyCfgDefn.StateUpdateFailurePolicy;
import org.opends.server.admin.std.server.PasswordPolicyCfg;
import org.opends.server.api.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyState.java b/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyState.java
index 52d7f5c..f64c53d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyState.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/PasswordPolicyState.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -72,7 +72,7 @@
import org.opends.server.types.AccountStatusNotificationType;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java
index a0464ba..a055bc6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -38,8 +38,9 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
-import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.schema.*;
import org.opends.server.types.*;
@@ -80,7 +81,9 @@
public SchemaConfigManager(ServerContext serverContext)
{
this.serverContext = serverContext;
- schema = new Schema();
+ // the manager will build the schema from scratch, but we need to start from
+ // core schema for SDK schema
+ schema = new Schema(org.forgerock.opendj.ldap.schema.Schema.getCoreSchema());
}
@@ -134,8 +137,7 @@
public void initializeMatchingRules()
throws ConfigException, InitializationException
{
- MatchingRuleConfigManager matchingRuleConfigManager =
- new MatchingRuleConfigManager();
+ MatchingRuleConfigManager matchingRuleConfigManager = new MatchingRuleConfigManager(serverContext);
matchingRuleConfigManager.initializeMatchingRules();
}
@@ -300,7 +302,7 @@
// from that entry and parse them to initialize the server schema.
for (String schemaFile : fileNames)
{
- loadSchemaFile(serverContext, schema, schemaFile, false);
+ loadSchemaFile(schema, schemaFile, false);
}
}
@@ -309,9 +311,6 @@
/**
* Loads the contents of the specified schema file into the provided schema.
*
- * @param serverContext
- * The server context.
- *
* @param schema The schema in which the contents of the schema file are
* to be loaded.
* @param schemaFile The name of the schema file to be loaded into the
@@ -327,10 +326,10 @@
* the schema elements that is not related
* to the server configuration.
*/
- public static List<Modification> loadSchemaFile(ServerContext serverContext, Schema schema, String schemaFile)
+ public static List<Modification> loadSchemaFile(Schema schema, String schemaFile)
throws ConfigException, InitializationException
{
- return loadSchemaFile(serverContext, schema, schemaFile, true);
+ return loadSchemaFile(schema, schemaFile, true);
}
@@ -360,7 +359,7 @@
* the schema elements that is not related
* to the server configuration.
*/
- private static List<Modification> loadSchemaFile(ServerContext serverContext, Schema schema, String schemaFile,
+ private static List<Modification> loadSchemaFile(Schema schema, String schemaFile,
boolean failOnError) throws ConfigException, InitializationException
{
// Create an LDIF reader to use when reading the files.
@@ -464,8 +463,7 @@
}
}
- parseLdapSyntaxesDefinitions(serverContext, schema, schemaFile, failOnError,
- ldapSyntaxList);
+ parseLdapSyntaxesDefinitions(schema, schemaFile, failOnError, ldapSyntaxList);
parseAttributeTypeDefinitions(schema, schemaFile, failOnError, attrList);
parseObjectclassDefinitions(schema, schemaFile, failOnError, ocList);
parseNameFormDefinitions(schema, schemaFile, failOnError, nfList);
@@ -485,7 +483,7 @@
syntax = CoreSchema.getLDAPSyntaxDescriptionSyntax();
}
- AttributeType ldapSyntaxAttrType = getAttributeType(schema, ATTR_LDAP_SYNTAXES, ATTR_LDAP_SYNTAXES_LC, syntax);
+ AttributeType ldapSyntaxAttrType = schema.getAttributeType(ATTR_LDAP_SYNTAXES, syntax);
return createAddModifications(entry, mods, ldapSyntaxAttrType);
}
@@ -498,8 +496,7 @@
{
syntax = CoreSchema.getAttributeTypeDescriptionSyntax();
}
- AttributeType attributeAttrType = getAttributeType(
- schema, ATTR_ATTRIBUTE_TYPES, ATTR_ATTRIBUTE_TYPES_LC, syntax);
+ AttributeType attributeAttrType = schema.getAttributeType(ATTR_ATTRIBUTE_TYPES, syntax);
return createAddModifications(entry, mods, attributeAttrType);
}
@@ -513,7 +510,7 @@
{
syntax = CoreSchema.getObjectClassDescriptionSyntax();
}
- AttributeType objectclassAttrType = getAttributeType(schema, ATTR_OBJECTCLASSES, ATTR_OBJECTCLASSES_LC, syntax);
+ AttributeType objectclassAttrType = schema.getAttributeType(ATTR_OBJECTCLASSES, syntax);
return createAddModifications(entry, mods, objectclassAttrType);
}
@@ -527,8 +524,7 @@
{
syntax = CoreSchema.getNameFormDescriptionSyntax();
}
- AttributeType nameFormAttrType = getAttributeType(
- schema, ATTR_NAME_FORMS, ATTR_NAME_FORMS_LC, syntax);
+ AttributeType nameFormAttrType = schema.getAttributeType(ATTR_NAME_FORMS, syntax);
return createAddModifications(entry, mods, nameFormAttrType);
}
@@ -542,8 +538,7 @@
{
syntax = CoreSchema.getDITContentRuleDescriptionSyntax();
}
- AttributeType dcrAttrType = getAttributeType(
- schema, ATTR_DIT_CONTENT_RULES, ATTR_DIT_CONTENT_RULES_LC, syntax);
+ AttributeType dcrAttrType = schema.getAttributeType(ATTR_DIT_CONTENT_RULES, syntax);
return createAddModifications(entry, mods, dcrAttrType);
}
@@ -557,7 +552,7 @@
{
syntax = CoreSchema.getDITStructureRuleDescriptionSyntax();
}
- AttributeType dsrAttrType = getAttributeType(schema, ATTR_DIT_STRUCTURE_RULES, ATTR_DIT_STRUCTURE_RULES_LC, syntax);
+ AttributeType dsrAttrType = schema.getAttributeType(ATTR_DIT_STRUCTURE_RULES, syntax);
return createAddModifications(entry, mods, dsrAttrType);
}
@@ -571,21 +566,10 @@
{
syntax = CoreSchema.getMatchingRuleUseDescriptionSyntax();
}
- AttributeType mruAttrType = getAttributeType(schema, ATTR_MATCHING_RULE_USE, ATTR_MATCHING_RULE_USE_LC, syntax);
+ AttributeType mruAttrType = schema.getAttributeType(ATTR_MATCHING_RULE_USE, syntax);
return createAddModifications(entry, mods, mruAttrType);
}
- private static AttributeType getAttributeType(Schema schema, String attrName,
- String attrLowerName, Syntax syntax)
- {
- final AttributeType attrType = schema.getAttributeType(attrLowerName);
- if (attrType != null)
- {
- return attrType;
- }
- return DirectoryServer.getDefaultAttributeType(attrName, syntax);
- }
-
private static List<Attribute> createAddModifications(Entry entry,
List<Modification> mods, AttributeType attrType)
{
@@ -598,7 +582,7 @@
}
/** Parse the ldapsyntaxes definitions if there are any. */
- private static void parseLdapSyntaxesDefinitions(ServerContext serverContext, Schema schema,
+ private static void parseLdapSyntaxesDefinitions(Schema schema,
String schemaFile, boolean failOnError, List<Attribute> ldapSyntaxList)
throws ConfigException
{
@@ -608,56 +592,36 @@
{
for (ByteString v : a)
{
- LDAPSyntaxDescription syntaxDescription;
+ final String definition = Schema.addSchemaFileToElementDefinitionIfAbsent(v.toString(), schemaFile);
try
{
- syntaxDescription = LDAPSyntaxDescriptionSyntax.decodeLDAPSyntax(v, serverContext, schema, false, false);
- setExtraProperty(syntaxDescription, SCHEMA_PROPERTY_FILENAME, null);
- setSchemaFile(syntaxDescription, schemaFile);
+ schema.registerLdapSyntaxDescription(definition, failOnError);
}
catch (DirectoryException de)
{
logger.traceException(de);
- LocalizableMessage message = WARN_CONFIG_SCHEMA_CANNOT_PARSE_LDAP_SYNTAX.get(
- schemaFile,
- de.getMessageObject());
- reportError(failOnError, de, message);
- continue;
- }
- catch (Exception e)
- {
- logger.traceException(e);
-
- LocalizableMessage message = WARN_CONFIG_SCHEMA_CANNOT_PARSE_LDAP_SYNTAX.get(
- schemaFile, v + ": " + getExceptionMessage(e));
- reportError(failOnError, e, message);
- continue;
- }
-
- // Register it with the schema. We will allow duplicates, with the
- // later definition overriding any earlier definition, but we want
- // to trap them and log a warning.
- try
- {
- schema.registerLdapSyntaxDescription(syntaxDescription, failOnError);
- registerLdapSyntaxInSchemaNG(serverContext, syntaxDescription, failOnError);
- }
- catch (DirectoryException de)
- {
- logger.traceException(de);
-
- logger.warn(WARN_CONFIG_SCHEMA_CONFLICTING_LDAP_SYNTAX, schemaFile, de.getMessageObject());
-
- try
+ if (de.getResultCode().equals(ResultCode.CONSTRAINT_VIOLATION))
{
- schema.registerLdapSyntaxDescription(syntaxDescription, true);
- registerLdapSyntaxInSchemaNG(serverContext, syntaxDescription, true);
+ // Register it with the schema. We will allow duplicates, with the
+ // later definition overriding any earlier definition, but we want
+ // to trap them and log a warning.
+ logger.warn(WARN_CONFIG_SCHEMA_CONFLICTING_LDAP_SYNTAX, schemaFile, de.getMessageObject());
+ try
+ {
+ schema.registerLdapSyntaxDescription(definition, true);
+ }
+ catch (Exception e)
+ {
+ // This should never happen.
+ logger.traceException(e);
+ }
}
- catch (Exception e)
+ else
{
- // This should never happen.
- logger.traceException(e);
+ LocalizableMessage message = WARN_CONFIG_SCHEMA_CANNOT_PARSE_LDAP_SYNTAX.get(
+ schemaFile, de.getMessageObject());
+ reportError(failOnError, de, message);
}
}
}
@@ -665,81 +629,50 @@
}
}
- private static void registerLdapSyntaxInSchemaNG(ServerContext serverContext, LDAPSyntaxDescription syntaxDescription,
- boolean overwrite)
- {
- // The server context may be null when this code is reached through non-server code (e.g. gui tools)
- if (serverContext != null)
- {
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- Syntax.Builder builder = schemaUpdater.getSchemaBuilder().buildSyntax(syntaxDescription.getSyntax());
- SchemaBuilder schemaBuilder = overwrite ? builder.addToSchemaOverwrite() : builder.addToSchema();
- schemaUpdater.updateSchema(schemaBuilder.toSchema());
- }
- }
-
/** Parse the attribute type definitions if there are any. */
- private static void parseAttributeTypeDefinitions(Schema schema,
- String schemaFile, boolean failOnError, List<Attribute> attrList)
- throws ConfigException
+ private static void parseAttributeTypeDefinitions(
+ Schema schema, String schemaFile, boolean failOnError, List<Attribute> attrList)
+ throws ConfigException
{
if (attrList != null)
{
+ List<String> definitions = new ArrayList<>();
for (Attribute a : attrList)
{
for (ByteString v : a)
{
- // Parse the attribute type.
- AttributeType attrType;
- try
- {
- attrType = AttributeTypeSyntax.decodeAttributeType(v, schema, false);
- setExtraProperty(attrType, SCHEMA_PROPERTY_FILENAME, null);
- setSchemaFile(attrType, schemaFile);
- }
- catch (DirectoryException de)
- {
- logger.traceException(de);
+ definitions.add(v.toString());
+ }
+ }
+ try
+ {
+ schema.registerAttributeTypes(definitions, schemaFile, !failOnError);
+ }
+ catch (DirectoryException de)
+ {
+ logger.traceException(de);
- LocalizableMessage message = WARN_CONFIG_SCHEMA_CANNOT_PARSE_ATTR_TYPE.get(
- schemaFile, de.getMessageObject());
- reportError(failOnError, de, message);
- continue;
- }
- catch (Exception e)
- {
- logger.traceException(e);
-
- LocalizableMessage message = WARN_CONFIG_SCHEMA_CANNOT_PARSE_ATTR_TYPE.get(
- schemaFile, v + ": " + getExceptionMessage(e));
- reportError(failOnError, e, message);
- continue;
- }
-
- // Register it with the schema. We will allow duplicates, with the
+ if (de.getResultCode().equals(ResultCode.CONSTRAINT_VIOLATION))
+ {
+ // Register it with the schema. We will allow duplicates, with the
// later definition overriding any earlier definition, but we want
// to trap them and log a warning.
+ logger.warn(WARN_CONFIG_SCHEMA_CONFLICTING_ATTR_TYPE, schemaFile, de.getMessageObject());
try
{
- schema.registerAttributeType(attrType, failOnError);
+ schema.registerAttributeTypes(definitions, schemaFile, true);
}
- catch (DirectoryException de)
+ catch (DirectoryException e)
{
- logger.traceException(de);
-
- logger.warn(WARN_CONFIG_SCHEMA_CONFLICTING_ATTR_TYPE, schemaFile, de.getMessageObject());
-
- try
- {
- schema.registerAttributeType(attrType, true);
- }
- catch (Exception e)
- {
- // This should never happen.
- logger.traceException(e);
- }
+ // This should never happen
+ logger.traceException(e);
}
}
+ else
+ {
+ LocalizableMessage message = WARN_CONFIG_SCHEMA_CANNOT_PARSE_ATTR_TYPE.get(schemaFile, de.getMessageObject());
+ reportError(failOnError, de, message);
+ }
}
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
index 7095a39..ce1230d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
@@ -21,12 +21,15 @@
* CDDL HEADER END
*
*
- * Copyright 2014-2015 ForgeRock AS
+ * Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.core;
import static org.forgerock.util.Utils.*;
import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.replication.plugin.HistoricalCsnOrderingMatchingRuleImpl.*;
+import static org.opends.server.schema.AciSyntax.*;
+import static org.opends.server.schema.SubtreeSpecificationSyntax.*;
import static org.opends.server.util.StaticUtils.*;
import java.io.File;
@@ -51,8 +54,10 @@
import org.forgerock.opendj.server.config.server.SchemaProviderCfg;
import org.forgerock.util.Utils;
import org.opends.server.schema.SchemaProvider;
-import org.opends.server.schema.SchemaUpdater;
+import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
+import org.opends.server.types.Schema.SchemaUpdater;
+import org.opends.server.util.ActivateOnceSDKSchemaIsUsed;
/**
* Responsible for loading the server schema.
@@ -64,6 +69,7 @@
* <li>Load all schema files located in the schema directory.</li>
* </ul>
*/
+@ActivateOnceSDKSchemaIsUsed
public final class SchemaHandler
{
private static final String CORE_SCHEMA_PROVIDER_NAME = "Core Schema";
@@ -101,18 +107,47 @@
this.serverContext = serverContext;
final RootCfg rootConfiguration = serverContext.getServerManagementContext().getRootConfiguration();
- final SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
+ final org.opends.server.types.Schema schema = serverContext.getSchema();
- // Start from the core schema (TODO: or start with empty schema and add core schema in core schema provider ?)
- final SchemaBuilder schemaBuilder = new SchemaBuilder(Schema.getCoreSchema());
+ schema.exclusiveLock();
+ try
+ {
+ // Start from the core schema (TODO: or start with empty schema and add core schema in core schema provider ?)
+ final SchemaBuilder schemaBuilder = new SchemaBuilder(Schema.getCoreSchema());
- // Take providers into account.
- loadSchemaFromProviders(rootConfiguration, schemaBuilder, schemaUpdater);
+ // Take providers into account.
+ loadSchemaFromProviders(rootConfiguration, schemaBuilder);
- // Take schema files into account (TODO : or load files using provider mechanism ?)
- completeSchemaFromFiles(schemaBuilder);
+ // Take schema files into account (TODO : or load files using provider mechanism ?)
+ completeSchemaFromFiles(schemaBuilder);
- schemaUpdater.updateSchema(schemaBuilder.toSchema());
+ try
+ {
+ schema.updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public Schema update(SchemaBuilder ignored)
+ {
+ // see RemoteSchemaLoader.readSchema()
+ addAciSyntax(schemaBuilder);
+ addSubtreeSpecificationSyntax(schemaBuilder);
+ addHistoricalCsnOrderingMatchingRule(schemaBuilder);
+
+ // Uses the builder incrementally updated instead of the default provided by the method.
+ // This is why it is necessary to explicitly lock/unlock the schema updater.
+ return schemaBuilder.toSchema();
+ }
+ });
+ }
+ catch (DirectoryException e)
+ {
+ throw new ConfigException(e.getMessageObject(), e);
+ }
+ }
+ finally
+ {
+ schema.exclusiveUnlock();
+ }
}
/**
@@ -123,22 +158,21 @@
* @param schemaBuilder
* The schema builder that providers should update.
* @param schemaUpdater
- * The updater that providers should use when applying a
- * configuration change.
+ * The updater that providers should use when applying a configuration change.
*/
- private void loadSchemaFromProviders(final RootCfg rootConfiguration, final SchemaBuilder schemaBuilder,
- final SchemaUpdater schemaUpdater) throws ConfigException, InitializationException {
+ private void loadSchemaFromProviders(final RootCfg rootConfiguration, final SchemaBuilder schemaBuilder)
+ throws ConfigException, InitializationException {
for (final String name : rootConfiguration.listSchemaProviders())
{
final SchemaProviderCfg config = rootConfiguration.getSchemaProvider(name);
if (config.isEnabled())
{
- loadSchemaProvider(config.getJavaClass(), config, schemaBuilder, schemaUpdater, true);
+ loadSchemaProvider(config.getJavaClass(), config, schemaBuilder, true);
}
- else if (name.equals(CORE_SCHEMA_PROVIDER_NAME)) {
+ else if (name.equals(CORE_SCHEMA_PROVIDER_NAME))
+ {
// TODO : use correct message ERR_CORE_SCHEMA_NOT_ENABLED
- LocalizableMessage message = LocalizableMessage.raw("Core Schema can't be disabled");
- throw new ConfigException(message);
+ throw new ConfigException(LocalizableMessage.raw("Core Schema can't be disabled"));
}
}
}
@@ -147,11 +181,10 @@
* Load the schema provider from the provided class name.
* <p>
* If {@code} initialize} is {@code true}, then the provider is initialized,
- * and the provided schema builder is updated with schema elements fropm the
- * provider.
+ * and the provided schema builder is updated with schema elements from the provider.
*/
private <T extends SchemaProviderCfg> SchemaProvider<T> loadSchemaProvider(final String className,
- final T config, final SchemaBuilder schemaBuilder, final SchemaUpdater schemaUpdater, final boolean initialize)
+ final T config, final SchemaBuilder schemaBuilder, final boolean initialize)
throws InitializationException
{
try
@@ -160,13 +193,14 @@
final Class<? extends SchemaProvider> providerClass = propertyDef.loadClass(className, SchemaProvider.class);
final SchemaProvider<T> provider = providerClass.newInstance();
- if (initialize) {
- provider.initialize(config, schemaBuilder, schemaUpdater);
+ if (initialize)
+ {
+ provider.initialize(serverContext, config, schemaBuilder);
}
- else {
+ else
+ {
final List<LocalizableMessage> unacceptableReasons = new ArrayList<>();
- final boolean isAcceptable = provider.isConfigurationAcceptable(config, unacceptableReasons);
- if (!isAcceptable)
+ if (!provider.isConfigurationAcceptable(config, unacceptableReasons))
{
final String reasons = Utils.joinAsString(". ", unacceptableReasons);
// TODO : fix message, eg CONFIG SCHEMA PROVIDER CONFIG NOT ACCEPTABLE
@@ -176,11 +210,11 @@
return provider;
}
catch (Exception e)
- {
- // TODO : fix message
- throw new InitializationException(ERR_CONFIG_SCHEMA_SYNTAX_CANNOT_INITIALIZE.
- get(className, config.dn(), stackTraceToSingleLineString(e)), e);
- }
+ {
+ // TODO : fix message
+ throw new InitializationException(ERR_CONFIG_SCHEMA_SYNTAX_CANNOT_INITIALIZE.get(
+ className, config.dn(), stackTraceToSingleLineString(e)), e);
+ }
}
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SearchOperationBasis.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SearchOperationBasis.java
index a918ff4..ea43262 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SearchOperationBasis.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SearchOperationBasis.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -49,7 +49,7 @@
import org.opends.server.types.AbstractOperation;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.CanceledOperationException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/ServerContext.java b/opendj-server-legacy/src/main/java/org/opends/server/core/ServerContext.java
index 829e974..f20da28 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/ServerContext.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/ServerContext.java
@@ -21,14 +21,13 @@
* CDDL HEADER END
*
*
- * Copyright 2014-2015 ForgeRock AS.
+ * Copyright 2014-2016 ForgeRock AS.
*/
package org.opends.server.core;
import org.forgerock.opendj.config.server.ServerManagementContext;
import org.opends.server.extensions.DiskSpaceMonitor;
import org.opends.server.loggers.CommonAudit;
-import org.opends.server.schema.SchemaUpdater;
import org.opends.server.types.DirectoryEnvironmentConfig;
import org.opends.server.types.Schema;
@@ -71,14 +70,6 @@
org.forgerock.opendj.ldap.schema.Schema getSchemaNG();
/**
- * Returns the schema updater, which provides
- * a mean to update the server's current schema.
- *
- * @return the schema updater
- */
- SchemaUpdater getSchemaUpdater();
-
- /**
* Returns the environment of the server.
*
* @return the environment
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SubentryPasswordPolicy.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SubentryPasswordPolicy.java
index 204130b..5eee633 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SubentryPasswordPolicy.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SubentryPasswordPolicy.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -39,6 +39,7 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.std.meta.PasswordPolicyCfgDefn.StateUpdateFailurePolicy;
import org.opends.server.admin.std.server.PasswordValidatorCfg;
import org.opends.server.api.AccountStatusNotificationHandler;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerImpl.java
index 90c60dc..edbccce 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerImpl.java
@@ -23,7 +23,7 @@
*
* Copyright 2006-2010 Sun Microsystems, Inc.
* Portions Copyright 2009 Parametric Technology Corporation (PTC)
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.crypto;
@@ -79,6 +79,7 @@
import org.opends.server.tools.LDAPConnectionOptions;
import org.opends.server.tools.LDAPReader;
import org.opends.server.tools.LDAPWriter;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.Base64;
import org.opends.server.util.SelectableCertificateKeyManager;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java b/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java
index 6275c01..c2fb0ce 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.crypto;
@@ -60,7 +60,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Control;
import org.opends.server.types.CryptoManagerException;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/AttributeValuePasswordValidator.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/AttributeValuePasswordValidator.java
index aad917e..abdb16f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/AttributeValuePasswordValidator.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/AttributeValuePasswordValidator.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.extensions;
@@ -35,6 +35,7 @@
import org.opends.server.admin.std.server.AttributeValuePasswordValidatorCfg;
import org.opends.server.admin.std.server.PasswordValidatorCfg;
import org.opends.server.api.PasswordValidator;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.ldap.ByteString;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java
index 21047b4..8fb13de 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -75,6 +75,7 @@
import org.opends.server.core.ServerContext;
import org.opends.server.schema.GeneralizedTimeSyntax;
import org.opends.server.tools.LDIFModify;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.BackupManager;
import org.opends.server.util.LDIFException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java
index eecb244..22fd72d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -56,7 +56,7 @@
import org.opends.server.api.ServerShutdownListener;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/DynamicGroup.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/DynamicGroup.java
index 2d7adec..f014cc4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/DynamicGroup.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/DynamicGroup.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -37,12 +37,12 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.std.server.DynamicGroupImplementationCfg;
import org.opends.server.api.Group;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryConfig;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/EntryDNVirtualAttributeProvider.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/EntryDNVirtualAttributeProvider.java
index a91916f..087de9e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/EntryDNVirtualAttributeProvider.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/EntryDNVirtualAttributeProvider.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -38,6 +38,7 @@
import org.opends.server.api.VirtualAttributeProvider;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.opends.server.util.ServerConstants.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/ExactMatchIdentityMapper.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/ExactMatchIdentityMapper.java
index 7092750..f537b8b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/ExactMatchIdentityMapper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/ExactMatchIdentityMapper.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -50,6 +50,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
import static org.opends.server.protocols.internal.Requests.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.opends.messages.ExtensionMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/ExternalSASLMechanismHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/ExternalSASLMechanismHandler.java
index d0bd85a..705b3b0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/ExternalSASLMechanismHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/ExternalSASLMechanismHandler.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -44,6 +44,7 @@
import org.opends.server.core.BindOperation;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.ldap.LDAPClientConnection;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.opends.messages.ExtensionMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/FingerprintCertificateMapper.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/FingerprintCertificateMapper.java
index e8c2128..0ef2204 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/FingerprintCertificateMapper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/FingerprintCertificateMapper.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -53,6 +53,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
import static org.opends.server.protocols.internal.Requests.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.opends.messages.ExtensionMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java
index ff64c8c..33a3a39 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProvider.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -36,6 +36,7 @@
import org.opends.server.api.VirtualAttributeProvider;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.opends.messages.ExtensionMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java
index 802a9c1..4834789 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -39,6 +39,7 @@
import org.opends.server.api.VirtualAttributeProvider;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.opends.server.util.ServerConstants.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java
index 7f9d093..f340d51 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.extensions;
@@ -48,6 +48,7 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.meta.LDAPPassThroughAuthenticationPolicyCfgDefn.MappingPolicy;
import org.opends.server.admin.std.server.LDAPPassThroughAuthenticationPolicyCfg;
@@ -67,7 +68,6 @@
import org.opends.server.tools.LDAPReader;
import org.opends.server.tools.LDAPWriter;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/PasswordModifyExtendedOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/PasswordModifyExtendedOperation.java
index 6d7f73c..a57739a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/PasswordModifyExtendedOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/PasswordModifyExtendedOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -57,6 +57,7 @@
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.ExtendedOperationHandlerCfg;
import org.opends.server.admin.std.server.PasswordModifyExtendedOperationHandlerCfg;
@@ -78,7 +79,6 @@
import org.opends.server.types.AccountStatusNotificationProperty;
import org.opends.server.types.AdditionalLogItem;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/RegularExpressionIdentityMapper.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/RegularExpressionIdentityMapper.java
index 98bf57a..91f461d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/RegularExpressionIdentityMapper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/RegularExpressionIdentityMapper.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -57,6 +57,7 @@
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java
index 2eb658e..15d0057 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
* Portions copyright 2015 Edan Idzerda
*/
package org.opends.server.extensions;
@@ -46,6 +46,7 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.util.Utils;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.AccountStatusNotificationHandlerCfg;
@@ -56,7 +57,6 @@
import org.opends.server.types.AccountStatusNotificationProperty;
import org.opends.server.types.AccountStatusNotificationType;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Entry;
import org.opends.server.types.InitializationException;
import org.opends.server.util.EMailMessage;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/StaticGroup.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/StaticGroup.java
index 404610b..64f9592 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/StaticGroup.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/StaticGroup.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -51,7 +51,7 @@
import org.opends.server.core.ServerContext;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
index 5e4ca30..03a20bb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
* Portions Copyright 2013 Manuel Gaupp
*/
package org.opends.server.extensions;
@@ -59,7 +59,7 @@
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
@@ -421,7 +421,7 @@
/**
- * Tries to normalize the given attribute name; if normalization is not
+ * Normalizes the given attribute name; if normalization is not
* possible the original String value is returned.
*
* @param attrName The attribute name which should be normalized.
@@ -430,14 +430,6 @@
private static String normalizeAttributeName(String attrName)
{
AttributeType attrType = DirectoryServer.getAttributeTypeOrNull(attrName);
- if (attrType != null)
- {
- String attrNameNormalized = attrType.getNormalizedPrimaryNameOrOID();
- if (attrNameNormalized != null)
- {
- return attrNameNormalized;
- }
- }
- return attrName;
+ return attrType != null ? attrType.getNormalizedNameOrOID() : attrName;
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
index 9acf916..636af83 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -42,6 +42,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.CertificateMapperCfg;
import org.opends.server.admin.std.server.SubjectDNToUserAttributeCertificateMapperCfg;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/UserAttributeNotificationMessageTemplateElement.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/UserAttributeNotificationMessageTemplateElement.java
index 7622dbb..d0f4f02 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/UserAttributeNotificationMessageTemplateElement.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/UserAttributeNotificationMessageTemplateElement.java
@@ -22,15 +22,15 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.extensions;
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.AccountStatusNotification;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Entry;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/VirtualStaticGroup.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/VirtualStaticGroup.java
index 4e75bf9..f2cf48f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/VirtualStaticGroup.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/VirtualStaticGroup.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -36,12 +36,12 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.std.server.VirtualStaticGroupImplementationCfg;
import org.opends.server.api.Group;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/monitors/BackendMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/monitors/BackendMonitor.java
index ebb9c66..f2a3460 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/monitors/BackendMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/monitors/BackendMonitor.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.monitors;
@@ -38,6 +38,7 @@
import org.opends.server.api.MonitorProvider;
import org.opends.server.core.DirectoryServer;
import org.opends.server.schema.BooleanSyntax;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/monitors/ConnectionHandlerMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/monitors/ConnectionHandlerMonitor.java
index 097f822..4d76fdd 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/monitors/ConnectionHandlerMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/monitors/ConnectionHandlerMonitor.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.monitors;
@@ -37,6 +37,7 @@
import org.opends.server.api.ConnectionHandler;
import org.opends.server.api.MonitorProvider;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/monitors/ParallelWorkQueueMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/monitors/ParallelWorkQueueMonitor.java
index cdef8ed..5c78e97 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/monitors/ParallelWorkQueueMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/monitors/ParallelWorkQueueMonitor.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.monitors;
@@ -36,7 +36,7 @@
import org.opends.server.api.MonitorProvider;
import org.opends.server.extensions.ParallelWorkQueue;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.InitializationException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/monitors/TraditionalWorkQueueMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/monitors/TraditionalWorkQueueMonitor.java
index 82288f5..5bf5171 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/monitors/TraditionalWorkQueueMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/monitors/TraditionalWorkQueueMonitor.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.monitors;
@@ -36,7 +36,7 @@
import org.opends.server.api.MonitorProvider;
import org.opends.server.extensions.TraditionalWorkQueue;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.InitializationException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/EntryUUIDPlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/EntryUUIDPlugin.java
index f6b4627..e2c2d2b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/EntryUUIDPlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/EntryUUIDPlugin.java
@@ -22,13 +22,12 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.plugins;
import static org.opends.messages.PluginMessages.*;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -37,7 +36,6 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.schema.AttributeUsage;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.meta.PluginCfgDefn;
import org.opends.server.admin.std.server.EntryUUIDPluginCfg;
@@ -46,6 +44,7 @@
import org.opends.server.api.plugin.PluginResult;
import org.opends.server.api.plugin.PluginType;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.PreOperationAddOperation;
@@ -62,56 +61,20 @@
extends DirectoryServerPlugin<EntryUUIDPluginCfg>
implements ConfigurationChangeListener<EntryUUIDPluginCfg>
{
- /**
- * The name of the entryUUID attribute type.
- */
+ /** The name of the entryUUID attribute type. */
private static final String ENTRYUUID = "entryuuid";
-
-
/** The attribute type for the "entryUUID" attribute. */
private final AttributeType entryUUIDType;
-
/** The current configuration for this plugin. */
private EntryUUIDPluginCfg currentConfig;
-
-
- /**
- * Creates a new instance of this Directory Server plugin. Every plugin must
- * implement a default constructor (it is the only one that will be used to
- * create plugins defined in the configuration), and every plugin constructor
- * must call <CODE>super()</CODE> as its first element.
- */
+ /** Mandatory default constructor of this Directory Server plugin. */
public EntryUUIDPlugin()
{
- super();
-
-
- // Get the entryUUID attribute type. This needs to be done in the
- // constructor in order to make the associated variables "final".
- AttributeType at = DirectoryServer.getAttributeTypeOrNull(ENTRYUUID);
- if (at == null)
- {
- String definition =
- "( 1.3.6.1.1.16.4 NAME 'entryUUID' DESC 'UUID of the entry' " +
- "EQUALITY uuidMatch ORDERING uuidOrderingMatch " +
- "SYNTAX 1.3.6.1.1.16.1 SINGLE-VALUE NO-USER-MODIFICATION " +
- "USAGE directoryOperation X-ORIGIN 'RFC 4530' )";
-
- at = new AttributeType(definition, ENTRYUUID,
- Collections.singleton(ENTRYUUID), ENTRYUUID, null,
- null, DirectoryConfig.getDefaultAttributeSyntax(),
- AttributeUsage.DIRECTORY_OPERATION, false, true,
- false, true);
- }
-
- entryUUIDType = at;
+ entryUUIDType = DirectoryServer.getAttributeTypeOrDefault(ENTRYUUID);
}
-
-
- /** {@inheritDoc} */
@Override
public final void initializePlugin(Set<PluginType> pluginTypes,
EntryUUIDPluginCfg configuration)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/LDAPADListPlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/LDAPADListPlugin.java
index 81c3a7e..9e120e1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/LDAPADListPlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/LDAPADListPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.plugins;
@@ -40,7 +40,7 @@
import org.opends.server.api.plugin.PluginType;
import org.opends.server.api.plugin.PluginResult;
import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.opends.server.types.DirectoryConfig;
import org.opends.server.types.ObjectClass;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/LastModPlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/LastModPlugin.java
index 017d662..545f4ef 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/LastModPlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/LastModPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -35,6 +35,7 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.meta.PluginCfgDefn;
import org.opends.server.admin.std.server.LastModPluginCfg;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/PasswordPolicyImportPlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/PasswordPolicyImportPlugin.java
index ed68a00..9ec0483 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/PasswordPolicyImportPlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/PasswordPolicyImportPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.plugins;
@@ -59,6 +59,7 @@
import org.opends.server.core.SubentryPasswordPolicy;
import org.opends.server.schema.AuthPasswordSyntax;
import org.opends.server.schema.UserPasswordSyntax;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
@@ -115,9 +116,6 @@
super();
}
-
-
- /** {@inheritDoc} */
@Override
public final void initializePlugin(Set<PluginType> pluginTypes,
PasswordPolicyImportPluginCfg configuration)
@@ -243,16 +241,14 @@
processImportBegin(null, null);
}
-
-
- /** {@inheritDoc} */
+ @Override
public void processImportBegin(Backend backend, LDIFImportConfig config)
{
// Find the set of attribute types with the auth password and user password
// syntax defined in the schema.
HashSet<AttributeType> authPWTypes = new HashSet<>();
HashSet<AttributeType> userPWTypes = new HashSet<>();
- for (AttributeType t : DirectoryServer.getAttributeTypes().values())
+ for (AttributeType t : DirectoryServer.getAttributeTypes())
{
if (t.getSyntax().getOID().equals(SYNTAX_AUTH_PASSWORD_OID))
{
@@ -293,18 +289,13 @@
userPasswordTypes = userTypesArray;
}
-
-
- /** {@inheritDoc} */
+ @Override
public void processImportEnd(Backend backend, LDIFImportConfig config,
boolean successful)
{
// No implementation is required.
}
-
-
- /** {@inheritDoc} */
@Override
public final PluginResult.ImportLDIF
doLDIFImport(LDIFImportConfig importConfig, Entry entry)
@@ -552,9 +543,6 @@
return PluginResult.ImportLDIF.continueEntryProcessing();
}
-
-
- /** {@inheritDoc} */
@Override
public boolean isConfigurationAcceptable(PluginCfg configuration,
List<LocalizableMessage> unacceptableReasons)
@@ -564,9 +552,7 @@
return isConfigurationChangeAcceptable(config, unacceptableReasons);
}
-
-
- /** {@inheritDoc} */
+ @Override
public boolean isConfigurationChangeAcceptable(
PasswordPolicyImportPluginCfg configuration,
List<LocalizableMessage> unacceptableReasons)
@@ -674,9 +660,7 @@
return configAcceptable;
}
-
-
- /** {@inheritDoc} */
+ @Override
public ConfigChangeResult applyConfigurationChange(
PasswordPolicyImportPluginCfg configuration)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/ReferentialIntegrityPlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/ReferentialIntegrityPlugin.java
index a83d606..cd71959 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/ReferentialIntegrityPlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/ReferentialIntegrityPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
* Portions copyright 2011 profiq s.r.o.
*/
package org.opends.server.plugins;
@@ -73,6 +73,7 @@
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.PostOperationDeleteOperation;
import org.opends.server.types.operation.PostOperationModifyDNOperation;
@@ -349,13 +350,11 @@
if (attrType == null || !theAttributeTypes.contains(attrType))
{
isAcceptable = false;
- unacceptableReasons.add(
- ERR_PLUGIN_REFERENT_ATTR_NOT_LISTED.get(attr));
+ unacceptableReasons.add(ERR_PLUGIN_REFERENT_ATTR_NOT_LISTED.get(attr));
}
/* Verify the filter.
*/
-
try
{
SearchFilter.createFilterFromString(filtStr);
@@ -366,7 +365,6 @@
unacceptableReasons.add(
ERR_PLUGIN_REFERENT_BAD_FILTER.get(filtStr, de.getMessage()));
}
-
}
return isAcceptable;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/SambaPasswordPlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/SambaPasswordPlugin.java
index e103841..191079d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/SambaPasswordPlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/SambaPasswordPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2011-2012 profiq s.r.o.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.plugins;
@@ -55,6 +55,7 @@
import org.opends.server.extensions.PasswordModifyExtendedOperation;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.ldap.LDAPFilter;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.types.operation.PostOperationExtendedOperation;
@@ -1043,4 +1044,4 @@
this.timeStampProvider = (timeStampProvider == null)
? DEFAULT_TIMESTAMP_PROVIDER : timeStampProvider;
}
-}
\ No newline at end of file
+}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/SevenBitCleanPlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/SevenBitCleanPlugin.java
index 7d72fef..00ab2d6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/SevenBitCleanPlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/SevenBitCleanPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -42,6 +42,7 @@
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.ByteString;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java
index 30c10aa..82341c5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -52,6 +52,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.schema.SchemaConstants;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/internal/InternalClientConnection.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/internal/InternalClientConnection.java
index 36b89e2..261042c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/internal/InternalClientConnection.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/internal/InternalClientConnection.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.protocols.internal;
@@ -38,6 +38,7 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.api.ConnectionHandler;
import org.opends.server.core.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.AddChangeRecordEntry;
import org.opends.server.util.DeleteChangeRecordEntry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPFilter.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPFilter.java
index 2433ace..8b70b72 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPFilter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPFilter.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.protocols.ldap;
@@ -38,9 +38,9 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.FilterType;
import org.opends.server.types.LDAPException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPStatistics.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPStatistics.java
index c6d063b..b786889 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPStatistics.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPStatistics.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.protocols.ldap;
@@ -38,9 +38,7 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.admin.std.server.MonitorProviderCfg;
import org.opends.server.api.MonitorProvider;
-import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DirectoryConfig;
import org.opends.server.types.ObjectClass;
@@ -594,8 +592,7 @@
*/
protected Attribute createAttribute(String name, Object value)
{
- AttributeType attrType = DirectoryServer.getAttributeTypeOrNull(name.toLowerCase());
- return Attributes.create(attrType, String.valueOf(value));
+ return Attributes.create(name, String.valueOf(value));
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java
index 07c7856..8cd4b10 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.protocols.ldap;
@@ -41,10 +41,10 @@
import org.forgerock.opendj.io.ASN1Writer;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LDAPException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java
index b7054a2..abcff67 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java
@@ -23,7 +23,7 @@
*
* Copyright 2006-2010 Sun Microsystems, Inc.
* Portions Copyright 2013-2014 ForgeRock, AS.
- * Portions Copyright 2015 ForgeRock AS.
+ * Portions Copyright 2015-2016 ForgeRock AS.
*/
package org.opends.server.replication.plugin;
@@ -32,7 +32,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.replication.common.CSN;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
index ff70eec..283cce4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -36,9 +36,9 @@
import org.opends.server.replication.common.CSN;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
+import org.forgerock.opendj.ldap.schema.AttributeType;
/**
* This class is used to store historical information for multiple valued attributes.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java
index 15e19f1..39863de 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -36,7 +36,7 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.opends.server.replication.common.CSN;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java
index cabb3df..9d6e216 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -37,6 +37,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.protocol.OperationContext;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.PreOperationAddOperation;
import org.opends.server.types.operation.PreOperationModifyDNOperation;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java
index 248ed02..ab167bf 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -32,6 +32,7 @@
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.util.Utils;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.server.ServerManagementContext;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalAttributeValue.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalAttributeValue.java
index e1eb2e7..1035b88 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalAttributeValue.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalAttributeValue.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.replication.plugin;
@@ -35,12 +35,12 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.core.DirectoryServer;
import org.opends.server.replication.common.CSN;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
import org.opends.server.types.AttributeDescription;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Modification;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRuleImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRuleImpl.java
index c069c56..03fd0e7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRuleImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRuleImpl.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.replication.plugin;
@@ -38,6 +38,7 @@
import org.forgerock.opendj.ldap.DecodeException;
import org.forgerock.opendj.ldap.schema.MatchingRuleImpl;
import org.forgerock.opendj.ldap.schema.Schema;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.spi.IndexQueryFactory;
import org.forgerock.opendj.ldap.spi.Indexer;
import org.forgerock.opendj.ldap.spi.IndexingOptions;
@@ -181,11 +182,26 @@
};
}
- /** {@inheritDoc} */
@Override
public Collection<? extends Indexer> createIndexers(IndexingOptions options)
{
return indexers;
}
+ /**
+ * Adds the historical csn ordering matching rule to the provided schema builder.
+ *
+ * @param builder
+ * where to add the historical csn ordering matching rule
+ * @return the provided builder
+ */
+ public static SchemaBuilder addHistoricalCsnOrderingMatchingRule(SchemaBuilder builder)
+ {
+ return builder
+ .buildMatchingRule("1.3.6.1.4.1.26027.1.4.4")
+ .names("historicalCsnOrderingMatch")
+ .syntaxOID("1.3.6.1.4.1.1466.115.121.1.40")
+ .implementation(new HistoricalCsnOrderingMatchingRuleImpl())
+ .addToSchema();
+ }
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index 4346502..184669f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -92,6 +92,7 @@
import org.opends.server.replication.service.ReplicationDomain;
import org.opends.server.tasks.PurgeConflictsHistoricalTask;
import org.opends.server.tasks.TaskUtils;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.*;
import org.opends.server.util.LDIFReader;
@@ -879,7 +880,7 @@
{
// Get attribute from attributes1
AttributeType attributeType1 = schema.getAttributeType(attrName1);
- if (attributeType1 == null)
+ if (attributeType1.isPlaceHolder())
{
throw new ConfigException(
NOTE_ERR_FRACTIONAL_CONFIG_UNKNOWN_ATTRIBUTE_TYPE.get(attrName1));
@@ -889,7 +890,7 @@
for (String attrName2 : attributes2)
{
AttributeType attributeType2 = schema.getAttributeType(attrName2);
- if (attributeType2 == null)
+ if (attributeType2.isPlaceHolder())
{
throw new ConfigException(
NOTE_ERR_FRACTIONAL_CONFIG_UNKNOWN_ATTRIBUTE_TYPE.get(attrName2));
@@ -978,7 +979,7 @@
// Does the attribute exist ?
AttributeType attributeType = schema.getAttributeType(attrName);
- if (attributeType != null)
+ if (!attributeType.isPlaceHolder())
{
// No more checking for the extensibleObject class
if (!isExtensibleObjectClass
@@ -1296,7 +1297,7 @@
private static boolean isFractionalProhibited(AttributeType attrType)
{
- String attributeName = attrType.getPrimaryName();
+ String attributeName = attrType.getNameOrOID();
return (attributeName != null && isFractionalProhibitedAttr(attributeName))
|| isFractionalProhibitedAttr(attrType.getOID());
}
@@ -1304,12 +1305,11 @@
private static boolean canRemoveAttribute(AttributeType attributeType,
boolean fractionalExclusive, Set<String> fractionalConcernedAttributes)
{
- String attributeName = attributeType.getPrimaryName();
+ String attributeName = attributeType.getNameOrOID();
String attributeOid = attributeType.getOID();
// Is the current attribute part of the established list ?
- boolean foundAttribute =
- contains(fractionalConcernedAttributes, attributeName, attributeOid);
+ boolean foundAttribute = contains(fractionalConcernedAttributes, attributeName, attributeOid);
// Now remove the attribute or modification if:
// - exclusive mode and attribute is in configuration
// - inclusive mode and attribute is not in configuration
@@ -1323,11 +1323,9 @@
|| (!foundAttribute && !fractionalExclusive);
}
- private static boolean contains(Set<String> attrNames, String attrName,
- String attrOID)
+ private static boolean contains(Set<String> attrNames, String attrName, String attrOID)
{
- return attrNames.contains(attrOID)
- || (attrName != null && attrNames.contains(attrName.toLowerCase()));
+ return attrNames.contains(attrOID) || attrNames.contains(attrName.toLowerCase());
}
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/PersistentServerState.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/PersistentServerState.java
index e48d0d3..bb15324 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/PersistentServerState.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/PersistentServerState.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.replication.plugin;
@@ -35,6 +35,7 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyOperationBasis;
import org.opends.server.protocols.internal.InternalSearchOperation;
@@ -44,7 +45,6 @@
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.common.ServerState;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.RawModification;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/AddMsg.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/AddMsg.java
index be94340..0d98434 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/AddMsg.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/AddMsg.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.protocol;
@@ -43,6 +43,7 @@
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.plugin.EntryHistorical;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.types.operation.PostOperationAddOperation;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/ModifyCommonMsg.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/ModifyCommonMsg.java
index 8c3d275..55f2841 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/ModifyCommonMsg.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/ModifyCommonMsg.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.replication.protocol;
@@ -39,6 +39,7 @@
import org.opends.server.protocols.ldap.LDAPModification;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.plugin.EntryHistorical;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/ReplicationServer.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/ReplicationServer.java
index 9d4f162..7b96df7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/ReplicationServer.java
@@ -65,7 +65,7 @@
import org.opends.server.replication.server.changelog.file.ECLEnabledDomainPredicate;
import org.opends.server.replication.server.changelog.file.FileChangelogDB;
import org.opends.server.replication.service.DSRSShutdownSync;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.HostPort;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java
index 8efd993..87d6da8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java
@@ -22,18 +22,21 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.schema;
import static org.opends.server.schema.SchemaConstants.*;
import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Schema.SchemaUpdater;
/**
* This class implements the access control information (aci) attribute syntax.
@@ -52,53 +55,55 @@
super();
}
- /** {@inheritDoc} */
@Override
- public void initializeSyntax(AttributeSyntaxCfg configuration, ServerContext serverContext) throws ConfigException
+ public void initializeSyntax(AttributeSyntaxCfg configuration, ServerContext serverContext)
+ throws ConfigException, DirectoryException
{
// Add the Aci syntax to the "new" schema
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- SchemaBuilder builder = schemaUpdater.getSchemaBuilder().buildSyntax(SYNTAX_ACI_OID)
- .description(SYNTAX_ACI_DESCRIPTION)
- .implementation(new AciSyntaxImpl())
- .addToSchema();
- schemaUpdater.updateSchema(builder.toSchema());
+ serverContext.getSchema().updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public Schema update(SchemaBuilder builder)
+ {
+ return addAciSyntax(builder).toSchema();
+ }
+ });
}
- /** {@inheritDoc} */
+ /**
+ * Adds the ACI syntax to the provided schema builder.
+ *
+ * @param builder
+ * where to add the ACI syntax
+ * @return the provided builder
+ */
+ public static SchemaBuilder addAciSyntax(SchemaBuilder builder)
+ {
+ return builder
+ .buildSyntax(SYNTAX_ACI_OID)
+ .description(SYNTAX_ACI_DESCRIPTION)
+ .implementation(new AciSyntaxImpl())
+ .addToSchema();
+ }
+
@Override
public Syntax getSDKSyntax(org.forgerock.opendj.ldap.schema.Schema schema)
{
return schema.getSyntax(SchemaConstants.SYNTAX_ACI_OID);
}
- /**
- * Retrieves the common name for this attribute syntax.
- *
- * @return The common name for this attribute syntax.
- */
@Override
public String getName()
{
return SYNTAX_ACI_NAME;
}
- /**
- * Retrieves the OID for this attribute syntax.
- *
- * @return The OID for this attribute syntax.
- */
@Override
public String getOID()
{
return SYNTAX_ACI_OID;
}
- /**
- * Retrieves a description for this attribute syntax.
- *
- * @return A description for this attribute syntax.
- */
@Override
public String getDescription()
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java
index 6f5b3ca..8ed5b3b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java
@@ -22,48 +22,34 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.schema;
-import static org.opends.messages.SchemaMessages.*;
-import static org.opends.server.config.ConfigConstants.*;
+import static org.forgerock.opendj.ldap.schema.SchemaOptions.*;
import static org.opends.server.schema.SchemaConstants.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
import java.util.List;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.ByteSequence;
-import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.schema.AttributeUsage;
-import org.forgerock.opendj.ldap.schema.MatchingRule;
-import org.forgerock.opendj.ldap.schema.SchemaOptions;
+import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.util.Option;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.AttributeTypeDescriptionAttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
-import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.CommonSchemaElements;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
-import org.opends.server.types.Schema;
+import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
/**
* This class defines the attribute type description syntax, which is used to
* hold attribute type definitions in the server schema. The format of this
* syntax is defined in RFC 2252.
*/
+@RemoveOnceSDKSchemaIsUsed
public class AttributeTypeSyntax
extends AttributeSyntax<AttributeTypeDescriptionAttributeSyntaxCfg>
implements
@@ -94,13 +80,10 @@
super();
}
-
-
- /** {@inheritDoc} */
@Override
public void
initializeSyntax(AttributeTypeDescriptionAttributeSyntaxCfg configuration, ServerContext serverContext)
- throws ConfigException, InitializationException
+ throws ConfigException, InitializationException, DirectoryException
{
this.serverContext = serverContext;
@@ -115,1318 +98,53 @@
currentConfig = configuration;
currentConfig.addAttributeTypeDescriptionChangeListener(this);
- stripMinimumUpperBound=configuration.isStripSyntaxMinUpperBound();
- updateNewSchema();
+ stripMinimumUpperBound = configuration.isStripSyntaxMinUpperBound();
+ serverContext.getSchema().updateSchemaOption(STRIP_UPPER_BOUND_FOR_ATTRIBUTE_TYPE, stripMinimumUpperBound);
}
- /** Update the option in new schema if it changes from current value. */
- private void updateNewSchema()
- {
- Option<Boolean> option = SchemaOptions.STRIP_UPPER_BOUND_FOR_ATTRIBUTE_TYPE;
- if (isStripSyntaxMinimumUpperBound() != serverContext.getSchemaNG().getOption(option))
- {
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- schemaUpdater.updateSchema(
- schemaUpdater.getSchemaBuilder().setOption(option, stripMinimumUpperBound).toSchema());
- }
- }
-
- /** {@inheritDoc} */
@Override
- public Syntax getSDKSyntax(org.forgerock.opendj.ldap.schema.Schema schema)
+ public Syntax getSDKSyntax(Schema schema)
{
return schema.getSyntax(SchemaConstants.SYNTAX_ATTRIBUTE_TYPE_OID);
}
- /** {@inheritDoc} */
@Override
public String getName()
{
return SYNTAX_ATTRIBUTE_TYPE_NAME;
}
-
-
- /** {@inheritDoc} */
@Override
public String getOID()
{
return SYNTAX_ATTRIBUTE_TYPE_OID;
}
-
-
- /** {@inheritDoc} */
@Override
public String getDescription()
{
return SYNTAX_ATTRIBUTE_TYPE_DESCRIPTION;
}
-
-
- /**
- * Decodes the contents of the provided ASN.1 octet string as an attribute
- * type definition according to the rules of this syntax. Note that the
- * provided octet string value does not need to be normalized (and in fact, it
- * should not be in order to allow the desired capitalization to be
- * preserved).
- *
- * @param value The ASN.1 octet string containing the value
- * to decode (it does not need to be
- * normalized).
- * @param schema The schema to use to resolve references to
- * other schema elements.
- * @param allowUnknownElements Indicates whether to allow values that
- * reference a superior attribute type which are
- * not defined in the server schema. This should
- * only be true when called by
- * {@code valueIsAcceptable}.
- *
- * @return The decoded attribute type definition.
- *
- * @throws DirectoryException If the provided value cannot be decoded as an
- * attribute type definition.
- */
- public static AttributeType decodeAttributeType(ByteSequence value,
- Schema schema,
- boolean allowUnknownElements)
- throws DirectoryException
- {
- // Get string representations of the provided value using the provided form
- // and with all lowercase characters.
- String valueStr = value.toString();
- String lowerStr = toLowerCase(valueStr);
-
-
- // We'll do this a character at a time. First, skip over any leading
- // whitespace.
- int pos = 0;
- int length = valueStr.length();
- while (pos < length && valueStr.charAt(pos) == ' ')
- {
- pos++;
- }
-
- if (pos >= length)
- {
- // This means that the value was empty or contained only whitespace. That
- // is illegal.
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_EMPTY_VALUE.get();
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // The next character must be an open parenthesis. If it is not, then that
- // is an error.
- char c = valueStr.charAt(pos++);
- if (c != '(')
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_EXPECTED_OPEN_PARENTHESIS.get(valueStr, pos - 1, c);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Skip over any spaces immediately following the opening parenthesis.
- while (pos < length && ((c = valueStr.charAt(pos)) == ' '))
- {
- pos++;
- }
-
- if (pos >= length)
- {
- // This means that the end of the value was reached before we could find
- // the OID. Ths is illegal.
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // The next set of characters must be the OID. Strictly speaking, this
- // should only be a numeric OID, but we'll also allow for the
- // "attrname-oid" case as well. Look at the first character to figure out
- // which we will be using.
- int oidStartPos = pos;
- if (isDigit(c))
- {
- // This must be a numeric OID. In that case, we will accept only digits
- // and periods, but not consecutive periods.
- boolean lastWasPeriod = false;
- while (pos < length
- && ((c = valueStr.charAt(pos)) != ' ')
- && ((c = valueStr.charAt(pos)) != ')'))
- {
- if (c == '.')
- {
- if (lastWasPeriod)
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_DOUBLE_PERIOD_IN_NUMERIC_OID.
- get(valueStr, pos - 1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
- }
- else
- {
- lastWasPeriod = true;
- }
- }
- else if (! isDigit(c))
- {
- // This must have been an illegal character.
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_NUMERIC_OID.get(valueStr, c, pos - 1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
- else
- {
- lastWasPeriod = false;
- }
- pos++;
- }
- }
- else
- {
- // This must be a "fake" OID. In this case, we will only accept
- // alphabetic characters, numeric digits, and the hyphen.
- while (pos < length
- && ((c = valueStr.charAt(pos)) != ' ')
- && ((c = valueStr.charAt(pos)) != ')'))
- {
- if (isAlpha(c)
- || isDigit(c)
- || c == '-'
- || (c == '_' && DirectoryServer.allowAttributeNameExceptions()))
- {
- // This is fine. It is an acceptable character.
- pos++;
- }
- else
- {
- // This must have been an illegal character.
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_STRING_OID.get(valueStr, c, pos - 1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
- }
- }
-
-
- // If we're at the end of the value, then it isn't a valid attribute type
- // description. Otherwise, parse out the OID.
- String oid;
- if (pos >= length)
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
- else
- {
- oid = lowerStr.substring(oidStartPos, pos);
- }
-
-
- // Skip over the space(s) after the OID.
- while (pos < length && ((c = valueStr.charAt(pos)) == ' '))
- {
- pos++;
- }
-
- if (pos >= length)
- {
- // This means that the end of the value was reached before we could find
- // the OID. Ths is illegal.
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // At this point, we should have a pretty specific syntax that describes
- // what may come next, but some of the components are optional and it would
- // be pretty easy to put something in the wrong order, so we will be very
- // flexible about what we can accept. Just look at the next token, figure
- // out what it is and how to treat what comes after it, then repeat until
- // we get to the end of the value. But before we start, set default values
- // for everything else we might need to know.
- String primaryName = oid;
- List<String> typeNames = new LinkedList<>();
- String description = null;
- AttributeType superiorType = null;
- Syntax syntax = DirectoryServer.getDefaultAttributeSyntax();
- MatchingRule approximateMatchingRule = null;
- MatchingRule equalityMatchingRule = null;
- MatchingRule orderingMatchingRule = null;
- MatchingRule substringMatchingRule = null;
- AttributeUsage attributeUsage = AttributeUsage.USER_APPLICATIONS;
- boolean isCollective = false;
- boolean isNoUserModification = false;
- boolean isObsolete = false;
- boolean isSingleValue = false;
- HashMap<String,List<String>> extraProperties = new LinkedHashMap<>();
-
-
- while (true)
- {
- StringBuilder tokenNameBuffer = new StringBuilder();
- pos = readTokenName(valueStr, tokenNameBuffer, pos);
- String tokenName = tokenNameBuffer.toString();
- String lowerTokenName = toLowerCase(tokenName);
- if (")".equals(tokenName))
- {
- // We must be at the end of the value. If not, then that's a problem.
- if (pos < length)
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_UNEXPECTED_CLOSE_PARENTHESIS.
- get(valueStr, pos - 1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
- }
-
- break;
- }
- else if ("name".equals(lowerTokenName))
- {
- // This specifies the set of names for the attribute type. It may be a
- // single name in single quotes, or it may be an open parenthesis
- // followed by one or more names in single quotes separated by spaces.
- c = valueStr.charAt(pos++);
- if (c == '\'')
- {
- StringBuilder userBuffer = new StringBuilder();
- StringBuilder lowerBuffer = new StringBuilder();
- pos = readQuotedString(valueStr, lowerStr, userBuffer, lowerBuffer, pos - 1);
- primaryName = userBuffer.toString();
- typeNames.add(primaryName);
- }
- else if (c == '(')
- {
- StringBuilder userBuffer = new StringBuilder();
- StringBuilder lowerBuffer = new StringBuilder();
- pos = readQuotedString(valueStr, lowerStr, userBuffer, lowerBuffer,
- pos);
- primaryName = userBuffer.toString();
- typeNames.add(primaryName);
-
-
- while (true)
- {
- if (valueStr.charAt(pos) == ')')
- {
- // Skip over any spaces after the parenthesis.
- pos++;
- while (pos < length && ((c = valueStr.charAt(pos)) == ' '))
- {
- pos++;
- }
-
- break;
- }
- userBuffer = new StringBuilder();
- lowerBuffer = new StringBuilder();
-
- pos = readQuotedString(valueStr, lowerStr, userBuffer, lowerBuffer, pos);
- typeNames.add(userBuffer.toString());
- }
- }
- else
- {
- // This is an illegal character.
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR.get(valueStr, c, pos - 1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
- //RFC 2251: A specification may also assign one or more textual names
- //for an attribute type. These names MUST begin with a letter, and
- //only contain ASCII letters, digit characters and hyphens.
-
- //The global config hasn't been read so far. Allow the name exceptions
- //during startup.
- boolean allowExceptions = DirectoryServer.isRunning()?
- DirectoryServer.allowAttributeNameExceptions():true;
- //Iterate over all the names and throw an exception if it is invalid.
- for(String name : typeNames)
- {
- for(int index=0; index < name.length(); index++)
- {
- char ch = name.charAt(index);
- switch(ch)
- {
- case '-':
- //hyphen is allowed but not as the first byte.
- if (index==0)
- {
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- ERR_ATTR_SYNTAX_ATTR_ILLEGAL_INITIAL_DASH.get(value));
- }
- break;
- case '_':
- // This will never be allowed as the first character. It
- // may be allowed for subsequent characters if the attribute
- // name exceptions option is enabled.
- if (index==0)
- {
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- ERR_ATTR_SYNTAX_ATTR_ILLEGAL_INITIAL_UNDERSCORE.get(
- value, ATTR_ALLOW_ATTRIBUTE_NAME_EXCEPTIONS));
- }
- else if (!allowExceptions)
- {
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- ERR_ATTR_SYNTAX_ATTR_ILLEGAL_UNDERSCORE_CHAR.get(
- value, ATTR_ALLOW_ATTRIBUTE_NAME_EXCEPTIONS));
- }
- break;
-
- default:
- //Only digits and ascii letters are allowed but the first byte
- //can not be a digit.
- if(index ==0 && isDigit(ch) && !allowExceptions)
- {
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- ERR_ATTR_SYNTAX_ATTR_ILLEGAL_INITIAL_DIGIT.get(
- value, ch, ATTR_ALLOW_ATTRIBUTE_NAME_EXCEPTIONS));
- }
- else if (!(('0'<=ch && ch<='9')
- || ('A'<=ch && ch<='Z')
- || ('a'<=ch && ch<='z')))
- {
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- ERR_ATTR_SYNTAX_ATTR_ILLEGAL_CHAR.get(value, ch, index));
- }
- break;
- }
- }
-
- }
-
- }
- else if ("desc".equals(lowerTokenName))
- {
- // This specifies the description for the attribute type. It is an
- // arbitrary string of characters enclosed in single quotes.
- StringBuilder descriptionBuffer = new StringBuilder();
- pos = readQuotedString(valueStr, descriptionBuffer, pos);
- description = descriptionBuffer.toString();
- }
- else if ("obsolete".equals(lowerTokenName))
- {
- // This indicates whether the attribute type should be considered
- // obsolete. We do not need to do any more parsing for this token.
- isObsolete = true;
- }
- else if ("sup".equals(lowerTokenName))
- {
- // This specifies the name or OID of the superior attribute type from
- // which this attribute type should inherit its properties.
- StringBuilder woidBuffer = new StringBuilder();
- pos = readWOID(lowerStr, woidBuffer, pos);
- String woidString = woidBuffer.toString();
- superiorType = schema.getAttributeType(woidString);
- if (superiorType == null)
- {
- if (allowUnknownElements)
- {
- superiorType = DirectoryServer.getAttributeTypeOrDefault(woidString);
- }
- else
- {
- // This is bad because we don't know what the superior attribute
- // type is so we can't base this attribute type on it.
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_SUPERIOR_TYPE.get(oid, woidString);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
- }
-
-
- // Use the information in the superior type to provide defaults for the
- // rest of the components in this attribute type description.
- // Technically, the definition of the superior type should be provided
- // before the matching rule, syntax, single-value, collective,
- // no-user-modification, and usage components, and in that case we won't
- // undo something else that has already been set by an earlier
- // definition. However, if the information is provided out-of-order,
- // then it is possible that this could overwrite some desired setting
- // that is different from that of the supertype.
- approximateMatchingRule = superiorType.getApproximateMatchingRule();
- equalityMatchingRule = superiorType.getEqualityMatchingRule();
- orderingMatchingRule = superiorType.getOrderingMatchingRule();
- substringMatchingRule = superiorType.getSubstringMatchingRule();
- syntax = superiorType.getSyntax();
- isSingleValue = superiorType.isSingleValue();
- isCollective = superiorType.isCollective();
- isNoUserModification = superiorType.isNoUserModification();
- attributeUsage = superiorType.getUsage();
- }
- else if ("equality".equals(lowerTokenName))
- {
- // This specifies the name or OID of the equality matching rule to use
- // for this attribute type.
- StringBuilder woidBuffer = new StringBuilder();
- pos = readWOID(lowerStr, woidBuffer, pos);
- MatchingRule emr =
- schema.getMatchingRule(woidBuffer.toString());
- if (emr == null)
- {
- // This is bad because we have no idea what the equality matching
- // rule should be.
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_EQUALITY_MR.get(oid, woidBuffer);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
- else
- {
- equalityMatchingRule = emr;
- }
- }
- else if ("ordering".equals(lowerTokenName))
- {
- // This specifies the name or OID of the ordering matching rule to use
- // for this attribute type.
- StringBuilder woidBuffer = new StringBuilder();
- pos = readWOID(lowerStr, woidBuffer, pos);
- MatchingRule omr = schema.getMatchingRule(woidBuffer.toString());
- if (omr == null)
- {
- // This is bad because we have no idea what the ordering matching
- // rule should be.
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_ORDERING_MR.get(oid, woidBuffer);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
- else
- {
- orderingMatchingRule = omr;
- }
- }
- else if ("substr".equals(lowerTokenName))
- {
- // This specifies the name or OID of the substring matching rule to use
- // for this attribute type.
- StringBuilder woidBuffer = new StringBuilder();
- pos = readWOID(lowerStr, woidBuffer, pos);
- MatchingRule smr = schema.getMatchingRule(woidBuffer.toString());
- if (smr == null)
- {
- // This is bad because we have no idea what the substring matching
- // rule should be.
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_SUBSTRING_MR.get(oid, woidBuffer);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
- else
- {
- substringMatchingRule = smr;
- }
- }
- else if ("syntax".equals(lowerTokenName))
- {
- // This specifies the numeric OID of the syntax for this matching rule.
- // It may optionally be immediately followed by an open curly brace, an
- // integer value, and a close curly brace to suggest the minimum number
- // of characters that should be allowed in values of that type. This
- // implementation will ignore any such length because it does not
- // impose any practical limit on the length of attribute values.
- boolean inBrace = false;
- boolean lastWasPeriod = false;
- StringBuilder oidBuffer = new StringBuilder();
- while (pos < length)
- {
- c = lowerStr.charAt(pos++);
- if (inBrace)
- {
- // The only thing we'll allow here will be numeric digits and the
- // closing curly brace.
- if (c == '}')
- {
- // The next character must be a space or a closing parenthesis.
- c = lowerStr.charAt(pos);
- if (c != ' ' && c != ')')
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_NUMERIC_OID.get(valueStr, c, pos - 1);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
- break;
- }
- else if (! isDigit(c))
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_NUMERIC_OID.get(valueStr, c, pos - 1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
- }
- }
- else
- {
- if (isDigit(c))
- {
- oidBuffer.append(c);
- lastWasPeriod = false;
- }
- else if (c == '.')
- {
- if (lastWasPeriod)
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_DOUBLE_PERIOD_IN_NUMERIC_OID.
- get(valueStr, pos - 1);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
- else
- {
- oidBuffer.append(c);
- lastWasPeriod = true;
- }
- }
- else if (c == '{')
- {
- // It's the start of the length specification.
- inBrace = true;
- }
- else if (c == ' ')
- {
- // It's the end of the value.
- break;
- }
- else if(c == ')')
- {
- // As per RFC 4512 (4.1.2) it is end of the value.
- --pos;
- break;
- }
- else
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_NUMERIC_OID.get(valueStr, c, pos - 1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
- }
- }
- }
-
- syntax = schema.getSyntax(oidBuffer.toString());
- if (syntax == null)
- {
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_SYNTAX.get(oid, oidBuffer);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
- message);
- }
-
- if (approximateMatchingRule == null)
- {
- approximateMatchingRule = syntax.getApproximateMatchingRule();
- }
-
- if (equalityMatchingRule == null)
- {
- equalityMatchingRule = syntax.getEqualityMatchingRule();
- }
-
- if (orderingMatchingRule == null)
- {
- orderingMatchingRule = syntax.getOrderingMatchingRule();
- }
-
- if (substringMatchingRule == null)
- {
- substringMatchingRule = syntax.getSubstringMatchingRule();
- }
- }
- else if ("single-value".equals(lowerTokenName))
- {
- // This indicates that attributes of this type are allowed to have at
- // most one value. We do not need any more parsing for this token.
- isSingleValue = true;
- }
- else if ("collective".equals(lowerTokenName))
- {
- // This indicates that attributes of this type are collective (i.e.,
- // have their values generated dynamically in some way). We do not need
- // any more parsing for this token.
- isCollective = true;
- }
- else if ("no-user-modification".equals(lowerTokenName))
- {
- // This indicates that the values of attributes of this type are not to
- // be modified by end users. We do not need any more parsing for this
- // token.
- isNoUserModification = true;
- }
- else if ("usage".equals(lowerTokenName))
- {
- // This specifies the usage string for this attribute type. It should
- // be followed by one of the strings "userApplications",
- // "directoryOperation", "distributedOperation", or "dSAOperation".
- StringBuilder usageBuffer = new StringBuilder();
- while (pos < length)
- {
- c = lowerStr.charAt(pos++);
- if (c == ' ')
- {
- break;
- }
- else if(c == ')')
- {
- pos--;
- break;
- }
- else
- {
- usageBuffer.append(c);
- }
- }
-
- String usageStr = usageBuffer.toString();
- if ("userapplications".equals(usageStr))
- {
- attributeUsage = AttributeUsage.USER_APPLICATIONS;
- }
- else if ("directoryoperation".equals(usageStr))
- {
- attributeUsage = AttributeUsage.DIRECTORY_OPERATION;
- }
- else if ("distributedoperation".equals(usageStr))
- {
- attributeUsage = AttributeUsage.DISTRIBUTED_OPERATION;
- }
- else if ("dsaoperation".equals(usageStr))
- {
- attributeUsage = AttributeUsage.DSA_OPERATION;
- }
- else
- {
- // This must be an illegal usage.
- attributeUsage = AttributeUsage.USER_APPLICATIONS;
-
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_INVALID_ATTRIBUTE_USAGE.get(oid, usageStr);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
- }
- else
- {
- // This must be a non-standard property and it must be followed by
- // either a single value in single quotes or an open parenthesis
- // followed by one or more values in single quotes separated by spaces
- // followed by a close parenthesis.
- List<String> valueList = new ArrayList<>();
- pos = readExtraParameterValues(valueStr, valueList, pos);
- extraProperties.put(tokenName, valueList);
- }
- }
-
- List<String> approxRules = extraProperties.get(SCHEMA_PROPERTY_APPROX_RULE);
- if (approxRules != null && !approxRules.isEmpty())
- {
- String ruleName = approxRules.get(0);
- String lowerName = toLowerCase(ruleName);
- MatchingRule amr = schema.getMatchingRule(lowerName);
- if (amr == null)
- {
- // This is bad because we have no idea what the approximate matching
- // rule should be.
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_APPROXIMATE_MR.get(oid, ruleName);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
- else
- {
- approximateMatchingRule = amr;
- }
- }
-
-
- // If there is a superior type, then it must have the same usage as the
- // subordinate type. Also, if the superior type is collective, then so must
- // the subordinate type be collective.
- if (superiorType != null)
- {
- if (superiorType.getUsage() != attributeUsage)
- {
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_INVALID_SUPERIOR_USAGE.get(
- oid, attributeUsage, superiorType.getNameOrOID());
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
-
- if (superiorType.isCollective() && !isCollective)
- {
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
- WARN_ATTR_SYNTAX_ATTRTYPE_NONCOLLECTIVE_FROM_COLLECTIVE
- .get(oid, superiorType.getNameOrOID()));
- }
- }
-
-
- // If the attribute type is NO-USER-MODIFICATION, then it must not have a
- // usage of userApplications.
- if (isNoUserModification
- && attributeUsage == AttributeUsage.USER_APPLICATIONS)
- {
- LocalizableMessage message =
- WARN_ATTR_SYNTAX_ATTRTYPE_NO_USER_MOD_NOT_OPERATIONAL.get(oid);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
-
- CommonSchemaElements.checkSafeProperties(extraProperties);
-
- return new AttributeType(value.toString(), primaryName, typeNames, oid,
- description, superiorType, syntax,
- approximateMatchingRule, equalityMatchingRule,
- orderingMatchingRule, substringMatchingRule,
- attributeUsage, isCollective, isNoUserModification,
- isObsolete, isSingleValue, extraProperties);
- }
-
-
-
- /**
- * Reads the next token name from the attribute type definition, skipping over
- * any leading or trailing spaces, and appends it to the provided buffer.
- *
- * @param valueStr The string representation of the attribute type
- * definition.
- * @param tokenName The buffer into which the token name will be written.
- * @param startPos The position in the provided string at which to start
- * reading the token name.
- *
- * @return The position of the first character that is not part of the token
- * name or one of the trailing spaces after it.
- *
- * @throws DirectoryException If a problem is encountered while reading the
- * token name.
- */
- private static int readTokenName(String valueStr, StringBuilder tokenName,
- int startPos)
- throws DirectoryException
- {
- // Skip over any spaces at the beginning of the value.
- char c = '\u0000';
- int length = valueStr.length();
- while (startPos < length && ((c = valueStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
- if (startPos >= length)
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Read until we find the next space.
- while (startPos < length
- && ((c = valueStr.charAt(startPos)) != ' ')
- && ((c = valueStr.charAt(startPos)) != ')'))
- {
- tokenName.append(c);
- startPos++;
- }
-
- //We may be left with only ')' which is not part of the token yet.
- //Let us see if it is the case.
- if(tokenName.length()==0 && c == ')')
- {
- tokenName.append(c);
- startPos++;
- }
-
- // Skip over any trailing spaces after the value.
- while (startPos < length && ((c = valueStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
-
- // Return the position of the first non-space character after the token.
- return startPos;
- }
-
-
-
- /**
- * Reads the value of a string enclosed in single quotes, skipping over the
- * quotes and any leading or trailing spaces, and appending the string to the
- * provided buffer.
- *
- * @param valueStr The user-provided representation of the attribute type
- * definition.
- * @param valueBuffer The buffer into which the user-provided representation
- * of the value will be placed.
- * @param startPos The position in the provided string at which to start
- * reading the quoted string.
- *
- * @return The position of the first character that is not part of the quoted
- * string or one of the trailing spaces after it.
- *
- * @throws DirectoryException If a problem is encountered while reading the
- * quoted string.
- */
- private static int readQuotedString(String valueStr,
- StringBuilder valueBuffer, int startPos)
- throws DirectoryException
- {
- // Skip over any spaces at the beginning of the value.
- char c = '\u0000';
- int length = valueStr.length();
- while (startPos < length && ((c = valueStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
- if (startPos >= length)
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // The next character must be a single quote.
- if (c != '\'')
- {
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_EXPECTED_QUOTE_AT_POS.get(valueStr, startPos, c);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Read until we find the closing quote.
- startPos++;
- while (startPos < length && ((c = valueStr.charAt(startPos)) != '\''))
- {
- valueBuffer.append(c);
- startPos++;
- }
-
-
- // Skip over any trailing spaces after the value.
- startPos++;
- while (startPos < length && ((c = valueStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
-
- // If we're at the end of the value, then that's illegal.
- if (startPos >= length)
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Return the position of the first non-space character after the token.
- return startPos;
- }
-
-
-
- /**
- * Reads the value of a string enclosed in single quotes, skipping over the
- * quotes and any leading or trailing spaces, and appending the string to the
- * provided buffer.
- *
- * @param valueStr The user-provided representation of the attribute type
- * definition.
- * @param lowerStr The all-lowercase representation of the attribute type
- * definition.
- * @param userBuffer The buffer into which the user-provided representation
- * of the value will be placed.
- * @param lowerBuffer The buffer into which the all-lowercase representation
- * of the value will be placed.
- * @param startPos The position in the provided string at which to start
- * reading the quoted string.
- *
- * @return The position of the first character that is not part of the quoted
- * string or one of the trailing spaces after it.
- *
- * @throws DirectoryException If a problem is encountered while reading the
- * quoted string.
- */
- private static int readQuotedString(String valueStr, String lowerStr,
- StringBuilder userBuffer,
- StringBuilder lowerBuffer, int startPos)
- throws DirectoryException
- {
- // Skip over any spaces at the beginning of the value.
- char c = '\u0000';
- int length = lowerStr.length();
- while (startPos < length && ((c = lowerStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
- if (startPos >= length)
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(lowerStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // The next character must be a single quote.
- if (c != '\'')
- {
- LocalizableMessage message = WARN_ATTR_SYNTAX_ATTRTYPE_EXPECTED_QUOTE_AT_POS.get(valueStr, startPos, c);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Read until we find the closing quote.
- startPos++;
- while (startPos < length && ((c = lowerStr.charAt(startPos)) != '\''))
- {
- lowerBuffer.append(c);
- userBuffer.append(valueStr.charAt(startPos));
- startPos++;
- }
-
-
- // Skip over any trailing spaces after the value.
- startPos++;
- while (startPos < length && ((c = lowerStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
-
- // If we're at the end of the value, then that's illegal.
- if (startPos >= length)
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(lowerStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Return the position of the first non-space character after the token.
- return startPos;
- }
-
-
-
- /**
- * Reads the attribute description or numeric OID from the provided string,
- * skipping over any leading or trailing spaces, and appending the value to
- * the provided buffer.
- *
- * @param lowerStr The string from which the name or OID is to be read.
- * @param woidBuffer The buffer into which the name or OID should be
- * appended.
- * @param startPos The position at which to start reading.
- *
- * @return The position of the first character after the name or OID that is
- * not a space.
- *
- * @throws DirectoryException If a problem is encountered while reading the
- * name or OID.
- */
- private static int readWOID(String lowerStr, StringBuilder woidBuffer,
- int startPos)
- throws DirectoryException
- {
- // Skip over any spaces at the beginning of the value.
- char c = '\u0000';
- int length = lowerStr.length();
- while (startPos < length && ((c = lowerStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
- if (startPos >= length)
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(lowerStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // The next character must be either numeric (for an OID) or alphabetic (for
- // an attribute description).
- if (isDigit(c))
- {
- // This must be a numeric OID. In that case, we will accept only digits
- // and periods, but not consecutive periods.
- boolean lastWasPeriod = false;
- while (startPos < length && ((c = lowerStr.charAt(startPos++)) != ' '))
- {
- if (c == '.')
- {
- if (lastWasPeriod)
- {
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- ERR_ATTR_SYNTAX_ATTRTYPE_DOUBLE_PERIOD_IN_NUMERIC_OID
- .get(lowerStr, startPos - 1));
- }
- else
- {
- woidBuffer.append(c);
- lastWasPeriod = true;
- }
- }
- else if (! isDigit(c))
- {
- // Technically, this must be an illegal character. However, it is
- // possible that someone just got sloppy and did not include a space
- // between the name/OID and a closing parenthesis. In that case,
- // we'll assume it's the end of the value. What's more, we'll have
- // to prematurely return to nasty side effects from stripping off
- // additional characters.
- if (c == ')')
- {
- return startPos - 1;
- }
-
- // This must have been an illegal character.
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_NUMERIC_OID.get(lowerStr, c, startPos-1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
- else
- {
- woidBuffer.append(c);
- lastWasPeriod = false;
- }
- }
- }
- else if (isAlpha(c))
- {
- // This must be an attribute description. In this case, we will only
- // accept alphabetic characters, numeric digits, and the hyphen.
- while (startPos < length && ((c = lowerStr.charAt(startPos++)) != ' '))
- {
- if (isAlpha(c)
- || isDigit(c)
- || c == '-'
- || (c == '_' && DirectoryServer.allowAttributeNameExceptions()))
- {
- woidBuffer.append(c);
- }
- else
- {
- // Technically, this must be an illegal character. However, it is
- // possible that someone just got sloppy and did not include a space
- // between the name/OID and a closing parenthesis. In that case,
- // we'll assume it's the end of the value. What's more, we'll have
- // to prematurely return to nasty side effects from stripping off
- // additional characters.
- if (c == ')')
- {
- return startPos - 1;
- }
-
- // This must have been an illegal character.
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_STRING_OID.get(
- lowerStr, c, startPos - 1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
- }
- }
- else
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR.get(lowerStr, c, startPos);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Skip over any trailing spaces after the value.
- while (startPos < length && ((c = lowerStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
-
- // If we're at the end of the value, then that's illegal.
- if (startPos >= length)
- {
- LocalizableMessage message = ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(lowerStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Return the position of the first non-space character after the token.
- return startPos;
- }
-
-
-
- /**
- * Reads the value for an "extra" parameter. It will handle a single unquoted
- * word (which is technically illegal, but we'll allow it), a single quoted
- * string, or an open parenthesis followed by a space-delimited set of quoted
- * strings or unquoted words followed by a close parenthesis.
- *
- * @param valueStr The string containing the information to be read.
- * @param valueList The list of "extra" parameter values read so far.
- * @param startPos The position in the value string at which to start
- * reading.
- *
- * @return The "extra" parameter value that was read.
- *
- * @throws DirectoryException If a problem occurs while attempting to read
- * the value.
- */
- private static int readExtraParameterValues(String valueStr,
- List<String> valueList, int startPos)
- throws DirectoryException
- {
- // Skip over any leading spaces.
- int length = valueStr.length();
- char c = '\u0000';
- while (startPos < length && ((c = valueStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
- if (startPos >= length)
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
-
- // Look at the next character. If it is a quote, then parse until the next
- // quote and end. If it is an open parenthesis, then parse individual
- // values until the close parenthesis and end. Otherwise, parse until the
- // next space and end.
- if (c == '\'')
- {
- // Parse until the closing quote.
- StringBuilder valueBuffer = new StringBuilder();
- startPos++;
- while (startPos < length && ((c = valueStr.charAt(startPos)) != '\''))
- {
- valueBuffer.append(c);
- startPos++;
- }
- startPos++;
- valueList.add(valueBuffer.toString());
- }
- else if (c == '(')
- {
- startPos++;
- // We're expecting a list of values. Quoted, space separated.
- while (true)
- {
- // Skip over any leading spaces;
- while (startPos < length && ((c = valueStr.charAt(startPos)) == ' '))
- {
- startPos++;
- }
-
- if (startPos >= length)
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
- }
-
- if (c == ')')
- {
- // This is the end of the list.
- startPos++;
- break;
- }
- else if (c == '(')
- {
- // This is an illegal character.
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRSYNTAX_EXTENSION_INVALID_CHARACTER.get(
- valueStr, startPos);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
- }
- else if (c == '\'')
- {
- // We have a quoted string
- StringBuilder valueBuffer = new StringBuilder();
- startPos++;
- while (startPos < length
- && ((c = valueStr.charAt(startPos)) != '\''))
- {
- valueBuffer.append(c);
- startPos++;
- }
-
- valueList.add(valueBuffer.toString());
- startPos++;
- }
- else
- {
- //Consider unquoted string
- StringBuilder valueBuffer = new StringBuilder();
- while (startPos < length
- && ((c = valueStr.charAt(startPos)) != ' '))
- {
- valueBuffer.append(c);
- startPos++;
- }
-
- valueList.add(valueBuffer.toString());
- }
-
- if (startPos >= length)
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
- }
- }
- }
- else
- {
- // Parse until the next space.
- StringBuilder valueBuffer = new StringBuilder();
- while (startPos < length && ((c = valueStr.charAt(startPos)) != ' '))
- {
- valueBuffer.append(c);
- startPos++;
- }
-
- valueList.add(valueBuffer.toString());
- }
-
- // Skip over any trailing spaces.
- while (startPos < length && valueStr.charAt(startPos) == ' ')
- {
- startPos++;
- }
-
- if (startPos >= length)
- {
- LocalizableMessage message =
- ERR_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE.get(valueStr);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
- return startPos;
- }
-
-
-
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(
AttributeTypeDescriptionAttributeSyntaxCfg configuration)
{
+ ConfigChangeResult ccr = new ConfigChangeResult();
currentConfig = configuration;
stripMinimumUpperBound = configuration.isStripSyntaxMinUpperBound();
- updateNewSchema();
- return new ConfigChangeResult();
+ try
+ {
+ serverContext.getSchema().updateSchemaOption(STRIP_UPPER_BOUND_FOR_ATTRIBUTE_TYPE, stripMinimumUpperBound);
+ }
+ catch (DirectoryException e)
+ {
+ ccr.setResultCode(e.getResultCode());
+ ccr.addMessage(e.getMessageObject());
+ }
+ return ccr;
}
-
-
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
AttributeTypeDescriptionAttributeSyntaxCfg configuration,
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java
index b039f5a..5e0756f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
* Portions Copyright 2013-2014 Manuel Gaupp
*/
package org.opends.server.schema;
@@ -37,11 +37,11 @@
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaOptions;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.util.Option;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.CertificateAttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
+import org.opends.server.types.DirectoryException;
/**
@@ -69,37 +69,22 @@
super();
}
- /** {@inheritDoc} */
@Override
public void initializeSyntax(CertificateAttributeSyntaxCfg configuration, ServerContext serverContext)
- throws ConfigException
+ throws ConfigException, DirectoryException
{
this.config = configuration;
this.serverContext = serverContext;
- updateNewSchema();
+ serverContext.getSchema().updateSchemaOption(SchemaOptions.ALLOW_MALFORMED_CERTIFICATES, !config.isStrictFormat());
config.addCertificateChangeListener(this);
}
- /** Update the option in new schema if it changes from current value. */
- private void updateNewSchema()
- {
- Option<Boolean> option = SchemaOptions.ALLOW_MALFORMED_CERTIFICATES;
- if (config.isStrictFormat() == serverContext.getSchemaNG().getOption(option))
- {
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- schemaUpdater.updateSchema(
- schemaUpdater.getSchemaBuilder().setOption(option, !config.isStrictFormat()).toSchema());
- }
- }
-
- /** {@inheritDoc} */
@Override
public Syntax getSDKSyntax(Schema schema)
{
return schema.getSyntax(SchemaConstants.SYNTAX_CERTIFICATE_OID);
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
CertificateAttributeSyntaxCfg configuration,
@@ -109,14 +94,23 @@
return true;
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(
CertificateAttributeSyntaxCfg configuration)
{
this.config = configuration;
- updateNewSchema();
- return new ConfigChangeResult();
+ final ConfigChangeResult ccr = new ConfigChangeResult();
+ try
+ {
+ serverContext.getSchema()
+ .updateSchemaOption(SchemaOptions.ALLOW_MALFORMED_CERTIFICATES, !config.isStrictFormat());
+ }
+ catch (DirectoryException e)
+ {
+ ccr.setResultCode(e.getResultCode());
+ ccr.addMessage(e.getMessageObject());
+ }
+ return ccr;
}
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
index 77f7f7d..ecdc0bb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -45,6 +45,7 @@
import org.opends.server.admin.std.server.CollationMatchingRuleCfg;
import org.opends.server.api.MatchingRuleFactory;
import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.ServerContext;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.util.CollectionUtils;
@@ -70,6 +71,8 @@
/** Map of OID and the Matching Rule. */
private final Map<String, MatchingRule> matchingRules = new HashMap<>();
+ private ServerContext serverContext;
+
/** Creates a new instance of CollationMatchingRuleFactory. */
public CollationMatchingRuleFactory()
@@ -77,6 +80,17 @@
super();
}
+ /**
+ * Sets the server context.
+ *
+ * @param serverContext
+ * The server context.
+ */
+ public void setServerContext(ServerContext serverContext)
+ {
+ this.serverContext = serverContext;
+ }
+
/** {@inheritDoc} */
@Override
public final Collection<org.forgerock.opendj.ldap.schema.MatchingRule> getMatchingRules()
@@ -196,13 +210,13 @@
// Clear the associated matching rules.
resetRules();
- final Schema coreSchema = CoreSchema.getInstance();
+ final Schema schema = serverContext.getSchemaNG();
for (String collation : configuration.getCollation())
{
// validation has already been performed in isConfigurationChangeAcceptable()
CollationMapper mapper = new CollationMapper(collation);
String nOID = mapper.getNumericOID();
- addMatchingRule(nOID, coreSchema.getMatchingRule(nOID));
+ addMatchingRule(nOID, schema.getMatchingRule(nOID));
}
try
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java
index 1e1dd78..b2f47d7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Copyright 2014 ForgeRock AS.
+ * Copyright 2014-2016 ForgeRock AS.
* Portions Copyright 2014-2015 ForgeRock AS
*/
package org.opends.server.schema;
@@ -34,10 +34,14 @@
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.config.server.ConfigurationChangeListener;
-import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.server.config.server.CoreSchemaCfg;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.ServerContext;
+import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
+import org.opends.server.types.Schema.SchemaUpdater;
/**
* Provides the core schema, which includes core matching rules and syntaxes.
@@ -50,20 +54,14 @@
/** The current configuration of core schema. */
private CoreSchemaCfg currentConfig;
- /** The current schema builder. */
- private SchemaBuilder currentSchemaBuilder;
+ private ServerContext serverContext;
- /** Updater to notify schema update when configuration changes. */
- private SchemaUpdater schemaUpdater;
-
- /** {@inheritDoc} */
@Override
- public void initialize(final CoreSchemaCfg configuration, final SchemaBuilder initialSchemaBuilder,
- final SchemaUpdater schemaUpdater) throws ConfigException, InitializationException
+ public void initialize(final ServerContext serverContext, final CoreSchemaCfg configuration,
+ final SchemaBuilder initialSchemaBuilder) throws ConfigException, InitializationException
{
+ this.serverContext = serverContext;
this.currentConfig = configuration;
- this.currentSchemaBuilder = initialSchemaBuilder;
- this.schemaUpdater = schemaUpdater;
updateSchemaFromConfiguration(initialSchemaBuilder, configuration);
@@ -107,14 +105,12 @@
}
}
- /** {@inheritDoc} */
@Override
public void finalizeProvider()
{
currentConfig.removeCoreSchemaChangeListener(this);
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationAcceptable(final CoreSchemaCfg configuration,
final List<LocalizableMessage> unacceptableReasons)
@@ -123,14 +119,6 @@
return true;
}
- /** {@inheritDoc} */
- @Override
- public SchemaBuilder getSchema()
- {
- return currentSchemaBuilder;
- }
-
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(final CoreSchemaCfg configuration,
final List<LocalizableMessage> unacceptableReasons)
@@ -145,20 +133,29 @@
return true;
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(final CoreSchemaCfg configuration)
{
- currentSchemaBuilder = schemaUpdater.getSchemaBuilder();
-
- updateSchemaFromConfiguration(currentSchemaBuilder, configuration);
-
- final boolean isUpdated = schemaUpdater.updateSchema(currentSchemaBuilder.toSchema());
-
- // TODO : fix result code + log an error in case of failure
- final ConfigChangeResult result = new ConfigChangeResult();
- result.setResultCode(isUpdated ? ResultCode.SUCCESS : ResultCode.OTHER);
- return result;
+ final ConfigChangeResult ccr = new ConfigChangeResult();
+ // TODO : the server schema should probably be renamed to something like ServerSchema
+ // Even after migration to SDK schema, it will be probably be kept
+ try
+ {
+ serverContext.getSchema().updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public Schema update(SchemaBuilder builder)
+ {
+ updateSchemaFromConfiguration(builder, configuration);
+ return builder.toSchema();
+ }
+ });
+ }
+ catch (DirectoryException e)
+ {
+ ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.addMessage(e.getMessageObject());
+ }
+ return ccr;
}
-
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java
index 6d046a4..963a7b9 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java
@@ -22,12 +22,12 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
* Portions Copyright 2012 Manuel Gaupp
*/
package org.opends.server.schema;
-
+import static org.forgerock.opendj.ldap.schema.SchemaOptions.*;
import static org.opends.server.schema.SchemaConstants.*;
import java.util.List;
@@ -36,13 +36,12 @@
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.schema.Schema;
-import org.forgerock.opendj.ldap.schema.SchemaOptions;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.util.Option;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.CountryStringAttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
+import org.opends.server.types.DirectoryException;
/**
* This class defines the country string attribute syntax, which should be a
@@ -71,37 +70,22 @@
super();
}
- /** {@inheritDoc} */
@Override
public void initializeSyntax(CountryStringAttributeSyntaxCfg configuration, ServerContext serverContext)
- throws ConfigException
+ throws ConfigException, DirectoryException
{
this.config = configuration;
this.serverContext = serverContext;
- updateNewSchema();
+ serverContext.getSchema().updateSchemaOption(STRICT_FORMAT_FOR_COUNTRY_STRINGS, config.isStrictFormat());
config.addCountryStringChangeListener(this);
}
- /** Update the option in new schema if it changes from current value. */
- private void updateNewSchema()
- {
- Option<Boolean> option = SchemaOptions.STRICT_FORMAT_FOR_COUNTRY_STRINGS;
- if (config.isStrictFormat() != serverContext.getSchemaNG().getOption(option))
- {
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- schemaUpdater.updateSchema(
- schemaUpdater.getSchemaBuilder().setOption(option, config.isStrictFormat()).toSchema());
- }
- }
-
- /** {@inheritDoc} */
@Override
public Syntax getSDKSyntax(Schema schema)
{
return schema.getSyntax(SchemaConstants.SYNTAX_COUNTRY_STRING_OID);
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
CountryStringAttributeSyntaxCfg configuration,
@@ -111,46 +95,36 @@
return true;
}
- /** {@inheritDoc} */
@Override
- public ConfigChangeResult applyConfigurationChange(
- CountryStringAttributeSyntaxCfg configuration)
+ public ConfigChangeResult applyConfigurationChange(CountryStringAttributeSyntaxCfg configuration)
{
this.config = configuration;
- updateNewSchema();
- return new ConfigChangeResult();
+
+ final ConfigChangeResult ccr = new ConfigChangeResult();
+ try
+ {
+ serverContext.getSchema().updateSchemaOption(STRICT_FORMAT_FOR_COUNTRY_STRINGS, config.isStrictFormat());
+ }
+ catch (DirectoryException e)
+ {
+ ccr.setResultCode(e.getResultCode());
+ ccr.addMessage(e.getMessageObject());
+ }
+ return ccr;
}
-
-
-
- /**
- * Retrieves the common name for this attribute syntax.
- *
- * @return The common name for this attribute syntax.
- */
@Override
public String getName()
{
return SYNTAX_COUNTRY_STRING_NAME;
}
- /**
- * Retrieves the OID for this attribute syntax.
- *
- * @return The OID for this attribute syntax.
- */
@Override
public String getOID()
{
return SYNTAX_COUNTRY_STRING_OID;
}
- /**
- * Retrieves a description for this attribute syntax.
- *
- * @return A description for this attribute syntax.
- */
@Override
public String getDescription()
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/DITContentRuleSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/DITContentRuleSyntax.java
index 7a5339e..319115e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/DITContentRuleSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/DITContentRuleSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -39,12 +39,12 @@
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg2;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DITContentRule;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ObjectClass;
@@ -660,16 +660,9 @@
{
String woidString = woidBuffer.toString();
AttributeType attr = schema.getAttributeType(woidString);
- if (attr == null)
+ if (attr.isPlaceHolder() && !allowUnknownElements)
{
- // This isn't good because it means that the DIT content rule
- // refers to an attribute type that we don't know anything about.
- if (!allowUnknownElements)
- {
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
- msg.get(valueStr, woidString));
- }
- attr = DirectoryServer.getAttributeTypeOrDefault(woidString);
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, msg.get(valueStr, woidString));
}
return attr;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java
index 751ebd9..92c88e0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java
@@ -22,9 +22,11 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.schema;
+
+import static org.forgerock.opendj.ldap.schema.SchemaOptions.*;
import static org.opends.server.schema.SchemaConstants.*;
import java.util.List;
@@ -33,13 +35,12 @@
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.schema.Schema;
-import org.forgerock.opendj.ldap.schema.SchemaOptions;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.util.Option;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.DirectoryStringAttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
+import org.opends.server.types.DirectoryException;
/**
@@ -72,10 +73,9 @@
super();
}
- /** {@inheritDoc} */
@Override
public void initializeSyntax(DirectoryStringAttributeSyntaxCfg configuration, ServerContext serverContext)
- throws ConfigException
+ throws ConfigException, DirectoryException
{
this.serverContext = serverContext;
@@ -91,64 +91,33 @@
currentConfig = configuration;
currentConfig.addDirectoryStringChangeListener(this);
allowZeroLengthValues = currentConfig.isAllowZeroLengthValues();
- updateNewSchema();
+ serverContext.getSchema().updateSchemaOption(ALLOW_ZERO_LENGTH_DIRECTORY_STRINGS, allowZeroLengthValues);
}
- /** Update the option in new schema if it changes from current value. */
- private void updateNewSchema()
- {
- Option<Boolean> option = SchemaOptions.ALLOW_ZERO_LENGTH_DIRECTORY_STRINGS;
- if (allowZeroLengthValues != serverContext.getSchemaNG().getOption(option))
- {
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- schemaUpdater.updateSchema(
- schemaUpdater.getSchemaBuilder().setOption(option, allowZeroLengthValues).toSchema());
- }
- }
-
- /** {@inheritDoc} */
@Override
public Syntax getSDKSyntax(Schema schema)
{
return schema.getSyntax(SchemaConstants.SYNTAX_DIRECTORY_STRING_OID);
}
- /**
- * Performs any finalization that may be necessary for this attribute syntax.
- */
@Override
public void finalizeSyntax()
{
currentConfig.removeDirectoryStringChangeListener(this);
}
- /**
- * Retrieves the common name for this attribute syntax.
- *
- * @return The common name for this attribute syntax.
- */
@Override
public String getName()
{
return SYNTAX_DIRECTORY_STRING_NAME;
}
- /**
- * Retrieves the OID for this attribute syntax.
- *
- * @return The OID for this attribute syntax.
- */
@Override
public String getOID()
{
return SYNTAX_DIRECTORY_STRING_OID;
}
- /**
- * Retrieves a description for this attribute syntax.
- *
- * @return A description for this attribute syntax.
- */
@Override
public String getDescription()
{
@@ -170,7 +139,6 @@
return allowZeroLengthValues;
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
DirectoryStringAttributeSyntaxCfg configuration,
@@ -180,16 +148,22 @@
return true;
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(
DirectoryStringAttributeSyntaxCfg configuration)
{
currentConfig = configuration;
allowZeroLengthValues = configuration.isAllowZeroLengthValues();
- updateNewSchema();
-
- return new ConfigChangeResult();
+ final ConfigChangeResult ccr = new ConfigChangeResult();
+ try
+ {
+ serverContext.getSchema().updateSchemaOption(ALLOW_ZERO_LENGTH_DIRECTORY_STRINGS, allowZeroLengthValues);
+ }
+ catch (DirectoryException e)
+ {
+ ccr.setResultCode(e.getResultCode());
+ ccr.addMessage(e.getMessageObject());
+ }
+ return ccr;
}
}
-
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java
index 6c4ffed..6430d87 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*
*/
package org.opends.server.schema;
@@ -37,11 +37,11 @@
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaOptions;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.util.Option;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.JPEGAttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
+import org.opends.server.types.DirectoryException;
/**
* This class implements the JPEG attribute syntax. This is actually
@@ -70,70 +70,40 @@
super();
}
- /** {@inheritDoc} */
@Override
public void initializeSyntax(JPEGAttributeSyntaxCfg configuration, ServerContext serverContext)
- throws ConfigException
+ throws ConfigException, DirectoryException
{
this.config = configuration;
this.serverContext = serverContext;
- updateNewSchema();
+ serverContext.getSchema().updateSchemaOption(SchemaOptions.ALLOW_MALFORMED_JPEG_PHOTOS, !config.isStrictFormat());
config.addJPEGChangeListener(this);
}
- /** Update the option in new schema if it changes from current value. */
- private void updateNewSchema()
- {
- Option<Boolean> option = SchemaOptions.ALLOW_MALFORMED_JPEG_PHOTOS;
- if (config.isStrictFormat() == serverContext.getSchemaNG().getOption(option))
- {
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- schemaUpdater.updateSchema(
- schemaUpdater.getSchemaBuilder().setOption(option, !config.isStrictFormat()).toSchema());
- }
- }
-
- /** {@inheritDoc} */
@Override
public Syntax getSDKSyntax(Schema schema)
{
return schema.getSyntax(SchemaConstants.SYNTAX_JPEG_OID);
}
- /**
- * Retrieves the common name for this attribute syntax.
- *
- * @return The common name for this attribute syntax.
- */
@Override
public String getName()
{
return SYNTAX_JPEG_NAME;
}
- /**
- * Retrieves the OID for this attribute syntax.
- *
- * @return The OID for this attribute syntax.
- */
@Override
public String getOID()
{
return SYNTAX_JPEG_OID;
}
- /**
- * Retrieves a description for this attribute syntax.
- *
- * @return A description for this attribute syntax.
- */
@Override
public String getDescription()
{
return SYNTAX_JPEG_DESCRIPTION;
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
JPEGAttributeSyntaxCfg configuration,
@@ -143,14 +113,22 @@
return true;
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(
JPEGAttributeSyntaxCfg configuration)
{
this.config = configuration;
- updateNewSchema();
- return new ConfigChangeResult();
+ final ConfigChangeResult ccr = new ConfigChangeResult();
+ try
+ {
+ serverContext.getSchema().updateSchemaOption(SchemaOptions.ALLOW_MALFORMED_JPEG_PHOTOS, !config.isStrictFormat());
+ }
+ catch (DirectoryException e)
+ {
+ ccr.setResultCode(e.getResultCode());
+ ccr.addMessage(e.getMessageObject());
+ }
+ return ccr;
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
index dfb0fde..243dd1b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -41,14 +41,12 @@
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.ServerContext;
import org.opends.server.types.CommonSchemaElements;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.LDAPSyntaxDescription;
@@ -190,8 +188,6 @@
* @param value The byte sequence containing the value
* to decode (it does not need to be
* normalized).
- * @param serverContext
- * The server context.
* @param schema The schema to use to resolve references to
* other schema elements.
* @param allowUnknownElements Indicates whether to allow values that are
@@ -207,8 +203,9 @@
* @throws DirectoryException If the provided value cannot be decoded as an
* ldapsyntax definition.
*/
- public static LDAPSyntaxDescription decodeLDAPSyntax(ByteSequence value, ServerContext serverContext,
- Schema schema, boolean allowUnknownElements, boolean forDelete) throws DirectoryException
+ public static LDAPSyntaxDescription decodeLDAPSyntax(
+ ByteSequence value, Schema schema, boolean allowUnknownElements, boolean forDelete)
+ throws DirectoryException
{
// Get string representations of the provided value using the provided form.
String valueStr = value.toString();
@@ -275,24 +272,17 @@
if (lastWasPeriod)
{
LocalizableMessage message =
- ERR_ATTR_SYNTAX_LDAPSYNTAX_DOUBLE_PERIOD_IN_NUMERIC_OID.
- get(valueStr, pos-1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
+ ERR_ATTR_SYNTAX_LDAPSYNTAX_DOUBLE_PERIOD_IN_NUMERIC_OID.get(valueStr, pos-1);
+ throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
}
- else
- {
- lastWasPeriod = true;
- }
+ lastWasPeriod = true;
}
else if (! isDigit(c))
{
// This must have been an illegal character.
LocalizableMessage message =
- ERR_ATTR_SYNTAX_LDAPSYNTAX_ILLEGAL_CHAR_IN_NUMERIC_OID.
- get(valueStr, c, pos-1);
- throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
- message);
+ ERR_ATTR_SYNTAX_LDAPSYNTAX_ILLEGAL_CHAR_IN_NUMERIC_OID.get(valueStr, c, pos-1);
+ throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
}
else
{
@@ -394,8 +384,7 @@
}
else
{
- SchemaBuilder schemaBuilder = serverContext != null ?
- serverContext.getSchemaUpdater().getSchemaBuilder() : new SchemaBuilder(CoreSchema.getInstance());
+ SchemaBuilder schemaBuilder = new SchemaBuilder(schema.getSchemaNG());
if (lowerTokenName.equals("x-subst"))
{
@@ -528,7 +517,7 @@
CommonSchemaElements.checkSafeProperties(extraProperties);
//Since we reached here it means everything is OK.
- return new LDAPSyntaxDescription(valueStr, syntax, extraProperties);
+ return new LDAPSyntaxDescription(valueStr, syntax.getOID(), extraProperties);
}
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/MatchingRuleUseSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/MatchingRuleUseSyntax.java
index 38a1102..4802c7f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/MatchingRuleUseSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/MatchingRuleUseSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.schema;
import static org.opends.messages.SchemaMessages.*;
@@ -37,12 +37,12 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.MatchingRuleUse;
import org.opends.server.types.Schema;
@@ -442,16 +442,10 @@
{
String woidString = woidBuffer.toString();
AttributeType attr = schema.getAttributeType(woidString);
- if (attr == null)
+ if (attr.isPlaceHolder() && !allowUnknownElements)
{
- // This isn't good because it means that the matching rule use
- // refers to an attribute type that we don't know anything about.
- if (!allowUnknownElements)
- {
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
- ERR_ATTR_SYNTAX_MRUSE_UNKNOWN_ATTR.get(oid, woidString));
- }
- attr = DirectoryServer.getAttributeTypeOrDefault(woidString);
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
+ ERR_ATTR_SYNTAX_MRUSE_UNKNOWN_ATTR.get(oid, woidString));
}
return attr;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/NameFormSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/NameFormSyntax.java
index 11839d4..11447d4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/NameFormSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/NameFormSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -39,12 +39,12 @@
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg2;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.NameForm;
import org.opends.server.types.ObjectClass;
@@ -531,16 +531,9 @@
{
String woidString = woidBuffer.toString();
AttributeType attr = schema.getAttributeType(woidString);
- if (attr == null)
+ if (attr.isPlaceHolder() && !allowUnknownElements)
{
- // This isn't good because it means that the name form
- // refers to an attribute type that we don't know anything about.
- if (!allowUnknownElements)
- {
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
- msg.get(oid, woidString));
- }
- attr = DirectoryServer.getAttributeTypeOrDefault(woidString);
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, msg.get(oid, woidString));
}
return attr;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/ObjectClassSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/ObjectClassSyntax.java
index ef9b34b..ab435eb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/ObjectClassSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/ObjectClassSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -43,12 +43,12 @@
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg2;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.CommonSchemaElements;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ObjectClass;
@@ -719,16 +719,10 @@
{
String woidString = woidBuffer.toString();
AttributeType attr = schema.getAttributeType(woidString);
- if (attr == null)
+ if (attr.isPlaceHolder() && !allowUnknownElements)
{
- // This isn't good because it means that the objectclass
- // refers to an attribute type that we don't know anything about.
- if (!allowUnknownElements)
- {
- LocalizableMessage message = msg.get(oid, woidString);
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
- attr = DirectoryServer.getAttributeTypeOrDefault(woidString);
+ LocalizableMessage message = msg.get(oid, woidString);
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
return attr;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaProvider.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaProvider.java
index ab90a91..2283220 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaProvider.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaProvider.java
@@ -21,8 +21,8 @@
* CDDL HEADER END
*
*
- * Copyright 2014 ForgeRock AS.
- * Portions Copyright 2014 ForgeRock AS
+ * Copyright 2014-2016 ForgeRock AS.
+ * Portions Copyright 2014-2015 ForgeRock AS
*/
package org.opends.server.schema;
@@ -32,6 +32,7 @@
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.server.config.server.SchemaProviderCfg;
import org.forgerock.opendj.config.server.ConfigException;
+import org.opends.server.core.ServerContext;
import org.opends.server.types.InitializationException;
/**
@@ -50,12 +51,12 @@
* Initialize the schema provider from provided configuration and schema
* builder.
*
+ * @param serverContext
+ * The server context.
* @param configuration
* Configuration of the provider.
* @param initialSchemaBuilder
* Schema builder to update during initialization phase.
- * @param schemaUpdater
- * The updater to call when applying a configuration change.
* @throws ConfigException
* If a configuration problem arises in the process of performing
* the initialization.
@@ -63,7 +64,7 @@
* If a problem that is not configuration-related occurs during
* initialization.
*/
- void initialize(T configuration, SchemaBuilder initialSchemaBuilder, SchemaUpdater schemaUpdater)
+ void initialize(ServerContext serverContext, T configuration, SchemaBuilder initialSchemaBuilder)
throws ConfigException, InitializationException;
/**
@@ -85,10 +86,4 @@
*/
boolean isConfigurationAcceptable(T configuration, List<LocalizableMessage> unacceptableReasons);
- /**
- * Returns the schema builder, as updated by this provider.
- *
- * @return the schema builder resulting from this provider.
- */
- SchemaBuilder getSchema();
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaUpdater.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaUpdater.java
deleted file mode 100644
index a80a1fb..0000000
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaUpdater.java
+++ /dev/null
@@ -1,51 +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 legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * 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 legal-notices/CDDLv1_0.txt.
- * 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
- *
- *
- * Copyright 2014-2015 ForgeRock AS.
- */
-package org.opends.server.schema;
-
-import org.forgerock.opendj.ldap.schema.Schema;
-import org.forgerock.opendj.ldap.schema.SchemaBuilder;
-
-/**
- * An interface to update a schema through a schema builder.
- */
-public interface SchemaUpdater
-{
- /**
- * Returns a schema builder based on the current schema.
- *
- * @return a schema builder
- */
- SchemaBuilder getSchemaBuilder();
-
- /**
- * Replaces the current schema by the provided schema.
- *
- * @param schema
- * the new schema
- * @return {@code true} if the replacement succeeds, false otherwise
- */
- boolean updateSchema(Schema schema);
-}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java
new file mode 100644
index 0000000..40762fa
--- /dev/null
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java
@@ -0,0 +1,307 @@
+/*
+ * 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 legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * 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 legal-notices/CDDLv1_0.txt.
+ * 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
+ *
+ *
+ * Copyright 2015-2016 ForgeRock AS
+ */
+package org.opends.server.schema;
+
+import static org.opends.server.util.ServerConstants.*;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.Schema;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
+import org.opends.server.config.ConfigConstants;
+import org.opends.server.core.ServerContext;
+import org.opends.server.types.CommonSchemaElements;
+import org.opends.server.types.ObjectClass;
+import org.opends.server.types.SchemaFileElement;
+import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
+import org.opends.server.util.ServerConstants;
+
+/**
+ * Represents a schema element which is either a SDK attribute type or an objectclass from the server.
+ * <p>
+ * In absence of a common interface, this class allows to process all elements in the same way,
+ * and to provide useful server-oriented methods like {@code getSchemaFile()} or
+ * {@code getOrigin()}.
+ */
+@RemoveOnceSDKSchemaIsUsed("This class is a temporary mechanism"
+ + " to manage in the same way SDK and server schema element classes")
+public class SomeSchemaElement implements SchemaFileElement
+{
+ private final ObjectClass objectClass;
+ private AttributeType attributeType;
+
+ /**
+ * Builds SomeSchemaElement.
+ *
+ * @param objectClass
+ * the common schema element to wrap
+ */
+ public SomeSchemaElement(ObjectClass objectClass)
+ {
+ this.objectClass = objectClass;
+ this.attributeType = null;
+ }
+
+ /**
+ * Builds SomeSchemaElement.
+ *
+ * @param attributeType
+ * the attribute type element to wrap
+ */
+ public SomeSchemaElement(AttributeType attributeType)
+ {
+ this.objectClass = null;
+ this.attributeType = attributeType;
+ }
+
+ /**
+ * Returns the wrapped schema element as an object class.
+ *
+ * @return the wrapped object class
+ */
+ public ObjectClass getObjectClass()
+ {
+ return objectClass;
+ }
+
+ /**
+ * Returns the wrapped schema element as an attribute type.
+ *
+ * @return the wrapped attribute type
+ */
+ public AttributeType getAttributeType()
+ {
+ return attributeType;
+ }
+
+ /**
+ * Returns whether the wrapped element is an attribute type.
+ *
+ * @return {@code true} when the wrapped element is an attribute type, {@code false} otherwise
+ */
+ public boolean isAttributeType()
+ {
+ return attributeType != null;
+ }
+
+ /**
+ * Returns whether the wrapped element is an object class.
+ *
+ * @return {@code true} when the wrapped element is an object class, {@code false} otherwise
+ */
+ public boolean isObjectClass()
+ {
+ return objectClass != null;
+ }
+
+ /**
+ * Returns the OID of the wrapped element.
+ *
+ * @return the OID of the wrapped element.
+ */
+ public String getOID()
+ {
+ return attributeType != null ? attributeType.getOID() : objectClass.getOID();
+ }
+
+ /**
+ * Returns the name or OID of the wrapped element.
+ *
+ * @return the name or OID of the wrapped element.
+ */
+ public String getNameOrOID()
+ {
+ return attributeType != null ? attributeType.getNameOrOID() : objectClass.getNameOrOID();
+ }
+
+ /**
+ * Returns the names of the wrapped element.
+ *
+ * @return the names of the wrapped element.
+ */
+ public Iterable<String> getNames()
+ {
+ return attributeType != null ? attributeType.getNames() : objectClass.getNormalizedNames();
+ }
+
+ @Override
+ public Map<String, List<String>> getExtraProperties()
+ {
+ return attributeType != null ? attributeType.getExtraProperties() : objectClass.getExtraProperties();
+ }
+
+ @Override
+ public String toString()
+ {
+ return attributeType != null ? attributeType.toString() : objectClass.toString();
+ }
+
+ /**
+ * Retrieves the definition string used to create this attribute
+ * type and including the X-SCHEMA-FILE extension.
+ *
+ * @return The definition string used to create this attribute
+ * type including the X-SCHEMA-FILE extension.
+ */
+ public String getDefinitionWithFileName()
+ {
+ final String schemaFile = getSchemaFile();
+ final String definition = toString();
+ if (schemaFile != null)
+ {
+ int pos = definition.lastIndexOf(')');
+ return definition.substring(0, pos).trim() + " " + SCHEMA_PROPERTY_FILENAME + " '" + schemaFile + "' )";
+ }
+ return definition;
+ }
+
+ /**
+ * Returns the name of the schema file that contains the definition of the wrapped element.
+ *
+ * @return the name of the schema file that contains the definition of the wrapped element.
+ */
+ public String getSchemaFile()
+ {
+ return getExtraPropertySingleValue(ServerConstants.SCHEMA_PROPERTY_FILENAME);
+ }
+
+ /**
+ * Sets the name of the schema file that contains the definition of the wrapped element.
+ *
+ * @param serverContext
+ * the server context
+ * @param schemaFile
+ * the name of the schema file that contains the definition of the wrapped element.
+ */
+ public void setSchemaFile(ServerContext serverContext, String schemaFile)
+ {
+ setExtraPropertySingleValue(serverContext, SCHEMA_PROPERTY_FILENAME, schemaFile);
+ }
+
+ /**
+ * Returns the origin of the provided schema element.
+ * @return the origin of the provided schema element.
+ */
+ public String getOrigin()
+ {
+ return getExtraPropertySingleValue(ServerConstants.SCHEMA_PROPERTY_ORIGIN);
+ }
+
+ private String getExtraPropertySingleValue(String schemaPropertyOrigin)
+ {
+ if (objectClass != null)
+ {
+ return CommonSchemaElements.getSingleValueProperty(objectClass, schemaPropertyOrigin);
+ }
+ List<String> values = attributeType.getExtraProperties().get(schemaPropertyOrigin);
+ return values != null && !values.isEmpty() ? values.get(0) : null;
+ }
+
+ /**
+ * Returns the attribute name of the wrapped element.
+ * @return the attribute name of the wrapped element.
+ */
+ public String getAttributeName()
+ {
+ return attributeType!= null ? ConfigConstants.ATTR_ATTRIBUTE_TYPES : ConfigConstants.ATTR_OBJECTCLASSES;
+ }
+
+ /**
+ * Sets a single-valued extra property on the wrapped element.
+ *
+ * @param serverContext
+ * the server context
+ * @param property
+ * the property to set
+ * @param value
+ * the value to set
+ */
+ public void setExtraPropertySingleValue(ServerContext serverContext, String property, String value)
+ {
+ if (attributeType != null)
+ {
+ List<String> values = value != null ? Arrays.asList(value) : null;
+ setExtraPropertyMultipleValues(serverContext, property, values);
+ }
+ else
+ {
+ CommonSchemaElements.setExtraProperty(objectClass, property, value);
+ }
+ }
+
+ /**
+ * Sets a multi-valued extra property on the wrapped element.
+ *
+ * @param serverContext
+ * the server context
+ * @param property
+ * the property to set
+ * @param values
+ * the values to set
+ */
+ public void setExtraPropertyMultipleValues(ServerContext serverContext, String property, List<String> values)
+ {
+ if (attributeType != null)
+ {
+ SchemaBuilder schemaBuilder = serverContext != null ?
+ new SchemaBuilder(serverContext.getSchemaNG()) : new SchemaBuilder(Schema.getDefaultSchema());
+ AttributeType.Builder builder =
+ schemaBuilder.buildAttributeType(attributeType).removeExtraProperty(property, (String) null);
+ if (values != null && !values.isEmpty())
+ {
+ builder.extraProperties(property, values);
+ }
+ attributeType = builder.addToSchemaOverwrite().toSchema().getAttributeType(attributeType.getNameOrOID());
+ }
+ else
+ {
+ objectClass.setExtraProperty(property, values);
+ }
+ }
+
+ /**
+ * Returns a copy of the provided attribute type, changing the superior attribute type.
+ *
+ * @param attributeType
+ * the attribute type for which a modified copy must be built
+ * @param newSuperiorType
+ * the new superior attribute type to set, {@code null} means remove the superior type
+ * @return an attribute type builder to build an updated copy of the provided attribute type
+ */
+ public static AttributeType changeSuperiorType(AttributeType attributeType, AttributeType newSuperiorType)
+ {
+ String superiorTypeOID = newSuperiorType != null ? newSuperiorType.getNameOrOID() : null;
+ Schema schema = new SchemaBuilder()
+ .buildAttributeType(attributeType)
+ .superiorType(superiorTypeOID)
+ .addToSchemaOverwrite()
+ .toSchema();
+ return schema.getAttributeType(attributeType.getNameOrOID());
+ }
+}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java
index 526efa8..d05323a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -32,17 +32,17 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteSequence;
-import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
+import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Schema.SchemaUpdater;
import org.opends.server.types.SubtreeSpecification;
-
/**
* This class defines the subtree specification attribute syntax,
* which is used to specify the scope of sub-entries (RFC 3672).
@@ -63,76 +63,61 @@
// No implementation required.
}
- /** {@inheritDoc} */
@Override
public void initializeSyntax(AttributeSyntaxCfg configuration, ServerContext serverContext)
- throws ConfigException
+ throws ConfigException, DirectoryException
{
// Add the subtree specification syntax to the "new" schema
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- SchemaBuilder builder = schemaUpdater.getSchemaBuilder().buildSyntax(SYNTAX_SUBTREE_SPECIFICATION_OID)
- .description(SYNTAX_SUBTREE_SPECIFICATION_DESCRIPTION)
- .implementation(new SubtreeSpecificationSyntaxImpl())
- .addToSchema();
- schemaUpdater.updateSchema(builder.toSchema());
+ serverContext.getSchema().updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public Schema update(SchemaBuilder builder)
+ {
+ return addSubtreeSpecificationSyntax(builder).toSchema();
+ }
+ });
}
- /** {@inheritDoc} */
+ /**
+ * Adds the subtree specification syntax to the provided schema builder.
+ *
+ * @param builder
+ * where to add the subtree specification syntax
+ * @return the provided builder
+ */
+ public static SchemaBuilder addSubtreeSpecificationSyntax(SchemaBuilder builder)
+ {
+ return builder
+ .buildSyntax(SYNTAX_SUBTREE_SPECIFICATION_OID)
+ .description(SYNTAX_SUBTREE_SPECIFICATION_DESCRIPTION)
+ .implementation(new SubtreeSpecificationSyntaxImpl())
+ .addToSchema();
+ }
+
@Override
public Syntax getSDKSyntax(Schema schema)
{
return schema.getSyntax(SchemaConstants.SYNTAX_SUBTREE_SPECIFICATION_OID);
}
- /**
- * Retrieves the common name for this attribute syntax.
- *
- * @return The common name for this attribute syntax.
- */
@Override
public String getName() {
-
return SYNTAX_SUBTREE_SPECIFICATION_NAME;
}
- /**
- * Retrieves the OID for this attribute syntax.
- *
- * @return The OID for this attribute syntax.
- */
@Override
public String getOID() {
-
return SYNTAX_SUBTREE_SPECIFICATION_OID;
}
- /**
- * Retrieves a description for this attribute syntax.
- *
- * @return A description for this attribute syntax.
- */
@Override
public String getDescription() {
-
return SYNTAX_SUBTREE_SPECIFICATION_DESCRIPTION;
}
- /**
- * Indicates whether the provided value is acceptable for use in an
- * attribute with this syntax. If it is not, then the reason may be
- * appended to the provided buffer.
- *
- * @param value
- * The value for which to make the determination.
- * @param invalidReason
- * The buffer to which the invalid reason should be appended.
- * @return <CODE>true</CODE> if the provided value is acceptable for
- * use with this syntax, or <CODE>false</CODE> if not.
- */
@Override
public boolean valueIsAcceptable(ByteSequence value,
LocalizableMessageBuilder invalidReason) {
-
// Use the subtree specification code to make this determination.
try {
SubtreeSpecification.valueOf(DN.rootDN(), value.toString());
@@ -146,14 +131,12 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean isBEREncodingRequired()
{
return false;
}
- /** {@inheritDoc} */
@Override
public boolean isHumanReadable()
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java
index c05cc47..4ce3a77 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -36,11 +36,11 @@
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaOptions;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.util.Option;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.TelephoneNumberAttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
+import org.opends.server.types.DirectoryException;
/**
* This class implements the telephone number attribute syntax, which is defined
@@ -74,87 +74,54 @@
super();
}
- /** {@inheritDoc} */
@Override
public void initializeSyntax(TelephoneNumberAttributeSyntaxCfg configuration, ServerContext serverContext)
- throws ConfigException
+ throws ConfigException, DirectoryException
{
this.serverContext = serverContext;
// We may or may not have access to the config entry. If we do, then see if
- // we should use the strict compliance mode. If not, just assume that we
- // won't.
+ // we should use the strict compliance mode. If not, just assume that we won't.
strictMode = false;
if (configuration != null)
{
currentConfig = configuration;
currentConfig.addTelephoneNumberChangeListener(this);
strictMode = currentConfig.isStrictFormat();
- updateNewSchema();
+ serverContext.getSchema().updateSchemaOption(SchemaOptions.ALLOW_NON_STANDARD_TELEPHONE_NUMBERS, !strictMode);
}
}
- /** Update the option in new schema if it changes from current value. */
- private void updateNewSchema()
- {
- Option<Boolean> option = SchemaOptions.ALLOW_NON_STANDARD_TELEPHONE_NUMBERS;
- if (strictMode == serverContext.getSchemaNG().getOption(option))
- {
- SchemaUpdater schemaUpdater = serverContext.getSchemaUpdater();
- schemaUpdater.updateSchema(schemaUpdater.getSchemaBuilder().setOption(option, !strictMode).toSchema());
- }
- }
-
- /** {@inheritDoc} */
@Override
public Syntax getSDKSyntax(Schema schema)
{
return schema.getSyntax(SchemaConstants.SYNTAX_TELEPHONE_OID);
}
- /**
- * Performs any finalization that may be necessary for this attribute syntax.
- */
@Override
public void finalizeSyntax()
{
currentConfig.removeTelephoneNumberChangeListener(this);
}
- /**
- * Retrieves the common name for this attribute syntax.
- *
- * @return The common name for this attribute syntax.
- */
@Override
public String getName()
{
return SYNTAX_TELEPHONE_NAME;
}
- /**
- * Retrieves the OID for this attribute syntax.
- *
- * @return The OID for this attribute syntax.
- */
@Override
public String getOID()
{
return SYNTAX_TELEPHONE_OID;
}
- /**
- * Retrieves a description for this attribute syntax.
- *
- * @return A description for this attribute syntax.
- */
@Override
public String getDescription()
{
return SYNTAX_TELEPHONE_DESCRIPTION;
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
TelephoneNumberAttributeSyntaxCfg configuration,
@@ -164,16 +131,23 @@
return true;
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(
TelephoneNumberAttributeSyntaxCfg configuration)
{
currentConfig = configuration;
strictMode = configuration.isStrictFormat();
- updateNewSchema();
-
- return new ConfigChangeResult();
+ final ConfigChangeResult ccr = new ConfigChangeResult();
+ try
+ {
+ serverContext.getSchema().updateSchemaOption(SchemaOptions.ALLOW_NON_STANDARD_TELEPHONE_NUMBERS, !strictMode);
+ }
+ catch (DirectoryException e)
+ {
+ ccr.setResultCode(e.getResultCode());
+ ccr.addMessage(e.getMessageObject());
+ }
+ return ccr;
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java
index c231f7d..6fc97fb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/AddSchemaFileTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.tasks;
@@ -36,6 +36,7 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.std.server.SynchronizationProviderCfg;
import org.opends.server.api.ClientConnection;
import org.opends.server.api.SynchronizationProvider;
@@ -149,7 +150,7 @@
{
try
{
- SchemaConfigManager.loadSchemaFile(getServerContext(), schema, schemaFile);
+ SchemaConfigManager.loadSchemaFile(schema, schemaFile);
}
catch (ConfigException | InitializationException e)
{
@@ -184,8 +185,7 @@
{
try
{
- List<Modification> modList =
- SchemaConfigManager.loadSchemaFile(getServerContext(), schema, schemaFile);
+ List<Modification> modList = SchemaConfigManager.loadSchemaFile(schema, schemaFile);
for (Modification m : modList)
{
Attribute a = m.getAttribute();
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/BackupTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/BackupTask.java
index 6f69ab6..6453ec8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/BackupTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/BackupTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -46,6 +46,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.messages.Severity;
import org.opends.messages.TaskMessages;
import org.opends.server.admin.std.server.BackendCfg;
@@ -57,7 +58,6 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/DisconnectClientTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/DisconnectClientTask.java
index f91716b..3d822a6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/DisconnectClientTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/DisconnectClientTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -40,7 +40,7 @@
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java
index 4413a0e..d2eb45e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -53,7 +53,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
index 06cec39..94448ed 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -55,7 +55,7 @@
import org.opends.server.core.LockFileManager;
import org.opends.server.tools.makeldif.TemplateFile;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTargetTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTargetTask.java
index 9e7e163..e229a21 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTargetTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTargetTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -42,7 +42,7 @@
import org.opends.server.backends.task.TaskState;
import org.opends.server.replication.plugin.LDAPReplicationDomain;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTask.java
index 0fb0245..163b424 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/InitializeTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -40,7 +40,7 @@
import org.opends.server.backends.task.TaskState;
import org.opends.server.replication.plugin.LDAPReplicationDomain;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/PurgeConflictsHistoricalTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/PurgeConflictsHistoricalTask.java
index 7d76769..a6593df 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/PurgeConflictsHistoricalTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/PurgeConflictsHistoricalTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -36,6 +36,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.plugin.LDAPReplicationDomain;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.util.TimeThread;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/RebuildTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/RebuildTask.java
index 2413e34..6e5251b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/RebuildTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/RebuildTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.tasks;
@@ -49,7 +49,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ResetChangeNumberTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ResetChangeNumberTask.java
index df6b2f8..52cb703 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ResetChangeNumberTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ResetChangeNumberTask.java
@@ -21,19 +21,19 @@
* CDDL HEADER END
*
*
- * Copyright 2015 ForgeRock AS
+ * Copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.tasks;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.backends.task.Task;
import org.opends.server.backends.task.TaskState;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.replication.server.changelog.api.ChangelogException;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java
index 1017963..bf478b1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -52,7 +52,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/SetGenerationIdTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/SetGenerationIdTask.java
index 92fecb2..753074b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/SetGenerationIdTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/SetGenerationIdTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -41,7 +41,7 @@
import org.opends.server.replication.plugin.LDAPReplicationDomain;
import org.opends.server.replication.service.ReplicationDomain;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java
index ad37e96..92463b6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tasks;
@@ -40,7 +40,7 @@
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.Operation;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java
index c88f9c7..8dfa46a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/ExportLDIF.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.tools;
@@ -59,7 +59,7 @@
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.tasks.ExportTask;
import org.opends.server.tools.tasks.TaskTool;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ExistingFileBehavior;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java
index c87f463..a3d80c6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.tools;
@@ -64,7 +64,7 @@
import org.opends.server.tasks.ImportTask;
import org.opends.server.tools.makeldif.TemplateFile;
import org.opends.server.tools.tasks.TaskTool;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.ExistingFileBehavior;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java
index 5f4f276..f1893f3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.tools;
@@ -47,7 +47,7 @@
import org.opends.server.loggers.JDKLogging;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java
index 300098b..a07a87a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFModify.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.tools;
@@ -51,7 +51,7 @@
import org.opends.server.extensions.ConfigFileHandler;
import org.opends.server.loggers.JDKLogging;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java
index badc935..81e0983 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFSearch.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.tools;
@@ -50,6 +50,7 @@
import org.opends.server.extensions.ConfigFileHandler;
import org.opends.server.loggers.JDKLogging;
import org.opends.server.protocols.ldap.LDAPResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.BuildVersion;
import org.opends.server.util.LDIFException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/AttributeValueTag.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/AttributeValueTag.java
index 6aa0ab6..836d0f2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/AttributeValueTag.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/AttributeValueTag.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tools.makeldif;
import org.forgerock.i18n.LocalizableMessage;
@@ -32,7 +32,7 @@
import java.util.List;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.InitializationException;
import static org.opends.messages.ToolMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Branch.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Branch.java
index 9d4389c..218fb01 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Branch.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Branch.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tools.makeldif;
@@ -38,7 +38,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfAbsentTag.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfAbsentTag.java
index 9a50a84..a130004 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfAbsentTag.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfAbsentTag.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tools.makeldif;
import org.forgerock.i18n.LocalizableMessage;
@@ -32,7 +32,7 @@
import java.util.List;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.InitializationException;
import static org.opends.messages.ToolMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfPresentTag.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfPresentTag.java
index ec5dc32..1b3a2c2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfPresentTag.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/IfPresentTag.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tools.makeldif;
import org.forgerock.i18n.LocalizableMessage;
@@ -32,7 +32,7 @@
import java.util.List;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.InitializationException;
import static org.opends.messages.ToolMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java
index 4c41cbf..ed1399c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/MakeLDIF.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.tools.makeldif;
@@ -43,7 +43,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler;
import org.opends.server.loggers.JDKLogging;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFExportConfig;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Template.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Template.java
index 2721660..c4576e7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Template.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Template.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tools.makeldif;
@@ -33,7 +33,7 @@
import java.util.HashSet;
import java.util.Map;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import static org.opends.messages.ToolMessages.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java
index 316412a..6871fe4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tools.makeldif;
@@ -37,6 +37,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.LDIFException;
@@ -168,7 +169,7 @@
return null;
}
- names[i] = t.getPrimaryName();
+ names[i] = t.getNameOrOID();
values[i] = ByteString.valueOfUtf8(v.getValue().toString());
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateFile.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateFile.java
index 457528c..75449b2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateFile.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateFile.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.tools.makeldif;
@@ -43,7 +43,7 @@
import java.util.StringTokenizer;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.InitializationException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateLine.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateLine.java
index 4fba780..4df3bd3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateLine.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateLine.java
@@ -22,11 +22,11 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2015 ForgeRock AS
+ * Portions Copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.tools.makeldif;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
/**
* This class defines a line that may appear in a template or branch. It may
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateValue.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateValue.java
index be48d4a..78bf03f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateValue.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateValue.java
@@ -22,13 +22,13 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2015 ForgeRock AS.
+ * Portions Copyright 2015-2016 ForgeRock AS.
*/
package org.opends.server.tools.makeldif;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java
index 6e2e119..7b8d9dd 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java
@@ -22,17 +22,17 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.tools.tasks;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.backends.task.FailedDependencyAction;
import org.opends.server.backends.task.Task;
import org.opends.server.backends.task.TaskState;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
@@ -133,7 +133,7 @@
// Build a map of non-superior attribute value pairs for display
Map<AttributeType, List<Attribute>> attrMap = entry.getUserAttributes();
for (AttributeType type : attrMap.keySet()) {
- String typeName = type.getNameOrOID();
+ String typeName = type.getNormalizedNameOrOID();
// See if we've handled it already above
if (!supAttrNames.contains(typeName)) {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/Attribute.java b/opendj-server-legacy/src/main/java/org/opends/server/types/Attribute.java
index b0b0917..00b9d2a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/Attribute.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/Attribute.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeBuilder.java b/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeBuilder.java
index 2d80a1b..fdcff76 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeBuilder.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeBuilder.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.AbstractSet;
import java.util.Collection;
import java.util.Collections;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeDescription.java b/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeDescription.java
index c3f9fe6..c835524 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeDescription.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeDescription.java
@@ -20,7 +20,7 @@
*
* CDDL HEADER END
*
- * Copyright 2015 ForgeRock AS
+ * Copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.types;
@@ -32,6 +32,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.util.Reject;
/** Temporary class until we move to {@link org.forgerock.opendj.ldap.AttributeDescription}. */
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeType.java b/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeType.java
deleted file mode 100644
index f2dcb4c..0000000
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/AttributeType.java
+++ /dev/null
@@ -1,620 +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 legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * 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 legal-notices/CDDLv1_0.txt.
- * 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
- *
- *
- * Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
- */
-package org.opends.server.types;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.opendj.ldap.schema.AttributeUsage;
-import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.opendj.ldap.schema.MatchingRule;
-import org.opends.server.core.DirectoryServer;
-
-import static org.forgerock.util.Reject.*;
-import static org.opends.server.util.ServerConstants.*;
-
-/**
- * This class defines a data structure for storing and interacting
- * with an attribute type, which contains information about the format
- * of an attribute and the syntax and matching rules that should be
- * used when interacting with it.
- * <p>
- * Any methods which accesses the set of names associated with this
- * attribute type, will retrieve the primary name as the first name,
- * regardless of whether or not it was contained in the original set
- * of <code>names</code> passed to the constructor.
- * <p>
- * Where ordered sets of names, or extra properties are provided, the
- * ordering will be preserved when the associated fields are accessed
- * via their getters or via the {@link #toString()} methods.
- */
-@org.opends.server.types.PublicAPI(
- stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
- mayInstantiate=false,
- mayExtend=false,
- mayInvoke=true)
-public final class AttributeType
- extends CommonSchemaElements
- implements Comparable<AttributeType>
-{
- private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
- /** The approximate matching rule for this attribute type. */
- private final MatchingRule approximateMatchingRule;
-
- /** The syntax for this attribute type. */
- private final Syntax syntax;
-
- /** The superior attribute type from which this attribute type inherits. */
- private final AttributeType superiorType;
-
- /** The attribute usage for this attribute type. */
- private final AttributeUsage attributeUsage;
-
- /** Indicates whether this attribute type is declared "collective". */
- private final boolean isCollective;
-
- /**
- * Indicates whether this attribute type is declared
- * "no-user-modification".
- */
- private final boolean isNoUserModification;
-
- /** Indicates whether this attribute type is the objectclass type. */
- private final boolean isObjectClassType;
-
- /** Indicates whether this attribute type is operational. */
- private final boolean isOperational;
-
- /** Indicates whether this attribute type is declared "single-value". */
- private final boolean isSingleValue;
-
- /**
- * Indicates whether there is a possibility that this attribute type
- * may have one or more subtypes that list this type or one of its
- * subtypes as a superior. Note that this variable is intentional
- * not declared "final", but if it ever gets set to "true", then it
- * should never be unset back to "false".
- */
- private boolean mayHaveSubordinateTypes;
- /** The definition string used to create this attribute type. */
- private final String definition;
-
- /** The equality matching rule for this attribute type. */
- private final MatchingRule equalityMatchingRule;
- /** The ordering matching rule for this attribute type. */
- private final MatchingRule orderingMatchingRule;
- /** The substring matching rule for this attribute type. */
- private final MatchingRule substringMatchingRule;
-
- /** True once this attribute type has been removed from the schema. */
- private volatile boolean isDirty;
-
-
-
- /**
- * Creates a new attribute type with the provided information.
- * <p>
- * If no <code>primaryName</code> is specified, but a set of
- * <code>names</code> is specified, then the first name retrieved
- * from the set of <code>names</code> will be used as the primary
- * name.
- *
- * @param definition
- * The definition string used to create this attribute
- * type. It must not be {@code null}.
- * @param primaryName
- * The primary name for this attribute type, or
- * <code>null</code> if there is no primary name.
- * @param typeNames
- * The full set of names for this attribute type, or
- * <code>null</code> if there are no names.
- * @param oid
- * The OID for this attribute type. It must not be
- * {@code null}.
- * @param description
- * The description for the attribute type, or
- * <code>null</code> if there is no description.
- * @param superiorType
- * The reference to the superior type for this attribute
- * type, or <code>null</code> if there is no superior
- * type.
- * @param syntax
- * The syntax for this attribute type, or <code>null</code>
- * if there is no syntax.
- * @param attributeUsage
- * The attribute usage for this attribute type, or
- * <code>null</code> to default to user applications.
- * @param isCollective
- * Indicates whether this attribute type is declared
- * "collective".
- * @param isNoUserModification
- * Indicates whether this attribute type is declared
- * "no-user-modification".
- * @param isObsolete
- * Indicates whether this attribute type is declared
- * "obsolete".
- * @param isSingleValue
- * Indicates whether this attribute type is declared
- * "single-value".
- */
- public AttributeType(String definition, String primaryName,
- Collection<String> typeNames,
- String oid, String description,
- AttributeType superiorType,
- Syntax syntax,
- AttributeUsage attributeUsage,
- boolean isCollective,
- boolean isNoUserModification,
- boolean isObsolete, boolean isSingleValue)
- {
- this(definition, primaryName, typeNames, oid, description,
- superiorType, syntax, null, null, null,
- null, attributeUsage, isCollective,
- isNoUserModification, isObsolete, isSingleValue, null);
- }
-
-
-
- /**
- * Creates a new attribute type with the provided information.
- * <p>
- * If no <code>primaryName</code> is specified, but a set of
- * <code>names</code> is specified, then the first name retrieved
- * from the set of <code>names</code> will be used as the primary
- * name.
- *
- * @param definition
- * The definition string used to create this attribute
- * type. It must not be {@code null}.
- * @param primaryName
- * The primary name for this attribute type, or
- * <code>null</code> if there is no primary name.
- * @param typeNames
- * The full set of names for this attribute type, or
- * <code>null</code> if there are no names.
- * @param oid
- * The OID for this attribute type. It must not be
- * {@code null}.
- * @param description
- * The description for the attribute type, or
- * <code>null</code> if there is no description.
- * @param superiorType
- * The reference to the superior type for this attribute
- * type, or <code>null</code> if there is no superior
- * type.
- * @param syntax
- * The syntax for this attribute type, or <code>null</code>
- * if there is no syntax.
- * @param approximateMatchingRule
- * The approximate matching rule for this attribute type,
- * or <code>null</code> if there is no rule.
- * @param equalityMatchingRule
- * The equality matching rule for this attribute type, or
- * <code>null</code> if there is no rule.
- * @param orderingMatchingRule
- * The ordering matching rule for this attribute type, or
- * <code>null</code> if there is no rule.
- * @param substringMatchingRule
- * The substring matching rule for this attribute type, or
- * <code>null</code> if there is no rule.
- * @param attributeUsage
- * The attribute usage for this attribute type, or
- * <code>null</code> to default to user applications.
- * @param isCollective
- * Indicates whether this attribute type is declared
- * "collective".
- * @param isNoUserModification
- * Indicates whether this attribute type is declared
- * "no-user-modification".
- * @param isObsolete
- * Indicates whether this attribute type is declared
- * "obsolete".
- * @param isSingleValue
- * Indicates whether this attribute type is declared
- * "single-value".
- * @param extraProperties
- * A set of extra properties for this attribute type, or
- * <code>null</code> if there are no extra properties.
- */
- public AttributeType(String definition, String primaryName,
- Collection<String> typeNames,
- String oid, String description,
- AttributeType superiorType,
- Syntax syntax,
- MatchingRule approximateMatchingRule,
- MatchingRule equalityMatchingRule,
- MatchingRule orderingMatchingRule,
- MatchingRule substringMatchingRule,
- AttributeUsage attributeUsage,
- boolean isCollective,
- boolean isNoUserModification,
- boolean isObsolete, boolean isSingleValue,
- Map<String,List<String>> extraProperties)
- {
- super(primaryName, typeNames, oid, description, isObsolete,
- extraProperties);
-
-
- ifNull(definition, oid);
-
- this.superiorType = superiorType;
- this.isCollective = isCollective;
- this.isNoUserModification = isNoUserModification;
- this.isSingleValue = isSingleValue;
-
- mayHaveSubordinateTypes = false;
-
- int schemaFilePos = definition.indexOf(SCHEMA_PROPERTY_FILENAME);
- if (schemaFilePos > 0)
- {
- String defStr;
- try
- {
- int firstQuotePos = definition.indexOf('\'', schemaFilePos);
- int secondQuotePos = definition.indexOf('\'',
- firstQuotePos+1);
-
- defStr = definition.substring(0, schemaFilePos).trim() + " " +
- definition.substring(secondQuotePos+1).trim();
- }
- catch (Exception e)
- {
- logger.traceException(e);
-
- defStr = definition;
- }
-
- this.definition = defStr;
- }
- else
- {
- this.definition = definition;
- }
-
- if (syntax == null)
- {
- if (superiorType != null)
- {
- this.syntax = superiorType.getSyntax();
- }
- else
- {
- this.syntax = DirectoryServer.getDefaultAttributeSyntax();
- }
- }
- else
- {
- this.syntax = syntax;
- }
-
- if (approximateMatchingRule == null)
- {
- this.approximateMatchingRule =
- this.syntax.getApproximateMatchingRule();
- }
- else
- {
- this.approximateMatchingRule = approximateMatchingRule;
- }
-
-
- if (equalityMatchingRule == null)
- {
- this.equalityMatchingRule =
- this.syntax.getEqualityMatchingRule();
- }
- else
- {
- this.equalityMatchingRule = equalityMatchingRule;
- }
-
-
- if (orderingMatchingRule == null)
- {
- this.orderingMatchingRule =
- this.syntax.getOrderingMatchingRule();
- }
- else
- {
- this.orderingMatchingRule = orderingMatchingRule;
- }
-
-
- if (substringMatchingRule == null)
- {
- this.substringMatchingRule =
- this.syntax.getSubstringMatchingRule();
- }
- else
- {
- this.substringMatchingRule = substringMatchingRule;
- }
-
- if (attributeUsage != null)
- {
- this.attributeUsage = attributeUsage;
- }
- else
- {
- this.attributeUsage = AttributeUsage.USER_APPLICATIONS;
- }
-
- if (oid.equals(OBJECTCLASS_ATTRIBUTE_TYPE_OID))
- {
- isObjectClassType = true;
- }
- else
- {
- isObjectClassType = hasName(OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
- }
-
- isOperational = this.attributeUsage.isOperational();
- }
-
-
-
- /**
- * Retrieves the superior type for this attribute type.
- *
- * @return The superior type for this attribute type, or
- * <CODE>null</CODE> if it does not have one.
- */
- public AttributeType getSuperiorType()
- {
- return superiorType;
- }
-
-
-
- /**
- * Indicates whether there is a possibility that this attribute type
- * may have one or more subordinate attribute types defined in the
- * server schema. This is only intended for use by the
- * {@code org.opends.server.types.Entry} class for the purpose of
- * determining whether to check for subtypes when retrieving
- * attributes. Note that it is possible for this method to report
- * false positives (if an attribute type that previously had one or
- * more subordinate types no longer has any), but not false
- * negatives.
- *
- * @return {@code true} if the {@code hasSubordinateTypes} flag has
- * been set for this attribute type at any time since
- * startup, or {@code false} if not.
- */
- boolean mayHaveSubordinateTypes()
- {
- return mayHaveSubordinateTypes;
- }
-
-
-
- /**
- * Sets a flag indicating that this attribute type may have one or
- * more subordinate attribute types defined in the server schema.
- * This is only intended for use by the
- * {@code org.opends.server.types.Schema} class.
- */
- void setMayHaveSubordinateTypes()
- {
- mayHaveSubordinateTypes = true;
- }
-
-
-
- /**
- * Retrieves the syntax for this attribute type.
- *
- * @return The syntax for this attribute type.
- */
- public Syntax getSyntax()
- {
- return syntax;
- }
-
- /**
- * Retrieves the matching rule that should be used for approximate
- * matching with this attribute type.
- *
- * @return The matching rule that should be used for approximate
- * matching with this attribute type.
- */
- public MatchingRule getApproximateMatchingRule()
- {
- return approximateMatchingRule;
- }
-
-
-
- /**
- * Retrieves the matching rule that should be used for equality
- * matching with this attribute type.
- *
- * @return The matching rule that should be used for equality
- * matching with this attribute type.
- */
- public MatchingRule getEqualityMatchingRule()
- {
- return equalityMatchingRule;
- }
-
-
-
- /**
- * Retrieves the matching rule that should be used for ordering with
- * this attribute type.
- *
- * @return The matching rule that should be used for ordering with
- * this attribute type.
- */
- public MatchingRule getOrderingMatchingRule()
- {
- return orderingMatchingRule;
- }
-
-
-
- /**
- * Retrieves the matching rule that should be used for substring
- * matching with this attribute type.
- *
- * @return The matching rule that should be used for substring
- * matching with this attribute type.
- */
- public MatchingRule getSubstringMatchingRule()
- {
- return substringMatchingRule;
- }
-
-
-
- /**
- * Retrieves the usage indicator for this attribute type.
- *
- * @return The usage indicator for this attribute type.
- */
- public AttributeUsage getUsage()
- {
- return attributeUsage;
- }
-
-
-
- /**
- * Indicates whether this is an operational attribute. An
- * operational attribute is one with a usage of
- * "directoryOperation", "distributedOperation", or "dSAOperation"
- * (i.e., only userApplications is not operational).
- *
- * @return <CODE>true</CODE> if this is an operational attribute,
- * or <CODE>false</CODE> if not.
- */
- public boolean isOperational()
- {
- return isOperational;
- }
-
-
-
- /**
- * Indicates whether this attribute type is declared "collective".
- *
- * @return <CODE>true</CODE> if this attribute type is declared
- * "collective", or <CODE>false</CODE> if not.
- */
- public boolean isCollective()
- {
- return isCollective;
- }
-
-
-
- /**
- * Indicates whether this attribute type is declared
- * "no-user-modification".
- *
- * @return <CODE>true</CODE> if this attribute type is declared
- * "no-user-modification", or <CODE>false</CODE> if not.
- */
- public boolean isNoUserModification()
- {
- return isNoUserModification;
- }
-
-
-
- /**
- * Indicates whether this attribute type is declared "single-value".
- *
- * @return <CODE>true</CODE> if this attribute type is declared
- * "single-value", or <CODE>false</CODE> if not.
- */
- public boolean isSingleValue()
- {
- return isSingleValue;
- }
-
-
-
- /**
- * Indicates whether this attribute type represents the
- * "objectclass" attribute. The determination will be made based on
- * the name and/or OID.
- *
- * @return <CODE>true</CODE> if this attribute type is the
- * objectclass type, or <CODE>false</CODE> if not.
- */
- public boolean isObjectClass()
- {
- return isObjectClassType;
- }
-
- /** {@inheritDoc} */
- @Override
- public String toString()
- {
- return definition;
- }
-
- /** {@inheritDoc} */
- @Override
- public int compareTo(AttributeType o) {
- return getNormalizedPrimaryNameOrOID().compareTo(
- o.getNormalizedPrimaryNameOrOID());
- }
-
-
-
- /**
- * Marks this attribute type as dirty, indicating that it has been removed or
- * replaced in the schema.
- *
- * @return A reference to this attribute type.
- */
- public AttributeType setDirty()
- {
- isDirty = true;
- return this;
- }
-
-
-
- /**
- * Returns {@code true} if this attribute type has been removed or replaced in
- * the schema.
- *
- * @return {@code true} if this attribute type has been removed or replaced in
- * the schema.
- */
- public boolean isDirty()
- {
- return isDirty;
- }
-}
-
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/Attributes.java b/opendj-server-legacy/src/main/java/org/opends/server/types/Attributes.java
index 1eeb58b..e4b2f3c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/Attributes.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/Attributes.java
@@ -22,21 +22,22 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types;
+import static org.opends.server.util.CollectionUtils.*;
+import static org.opends.server.util.StaticUtils.*;
+
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.core.DirectoryServer;
-import static org.opends.server.util.CollectionUtils.*;
-import static org.opends.server.util.StaticUtils.*;
-
/**
* This class contains various methods for manipulating
* {@link Attribute}s as well as static factory methods for
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/CollectiveVirtualAttribute.java b/opendj-server-legacy/src/main/java/org/opends/server/types/CollectiveVirtualAttribute.java
index 55dbcc4..8dd4986 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/CollectiveVirtualAttribute.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/CollectiveVirtualAttribute.java
@@ -22,11 +22,13 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.Iterator;
import java.util.List;
import java.util.Set;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java b/opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java
index d21e76e..ab63b09 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/DN.java b/opendj-server-legacy/src/main/java/org/opends/server/types/DN.java
index 5dbd2a8..d9389ee 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/DN.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/DN.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.types;
@@ -44,6 +44,7 @@
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.util.Reject;
import org.opends.server.core.DirectoryServer;
@@ -659,7 +660,6 @@
// Create the new RDN with the provided information.
RDN rdn = newRDN(attributeName, parsedValue);
-
// Skip over any spaces that might be after the attribute value.
b = ' ';
while (dnReader.remaining() > 0 && (b = dnReader.readByte()) == ' ')
@@ -768,11 +768,8 @@
// Parse the value for this RDN component.
parsedValue = parseAttributeValue(dnReader);
-
-
addValue(attributeName, rdn, parsedValue);
-
// Skip over any spaces that might be after the attribute value.
// Skip over any spaces that might be after the attribute value.
b = ' ';
@@ -1082,9 +1079,6 @@
// Parse the value for this RDN component.
parsedValue.clear();
pos = parseAttributeValue(dnString, pos, parsedValue);
-
-
- // Create the new RDN with the provided information.
addValue(attributeName, rdn, parsedValue.toByteString());
@@ -2613,5 +2607,6 @@
{
return toNormalizedByteString().compareTo(other.toNormalizedByteString());
}
+
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java b/opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java
index b4349e7..b825b79 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java
@@ -22,10 +22,13 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -179,16 +182,12 @@
/**
* Retrieves the set of matching rules registered with the Directory
- * Server. The mapping will be between the lowercase name or OID
- * for each matching rule and the matching rule implementation. The
- * same matching rule instance may be included multiple times with
- * different keys. The returned map must not be altered by the
- * caller.
+ * Server.
*
* @return The set of matching rules registered with the Directory
* Server.
*/
- public static Map<String,MatchingRule> getMatchingRules()
+ public static Collection<MatchingRule> getMatchingRules()
{
return DirectoryServer.getMatchingRules();
}
@@ -354,7 +353,7 @@
* @return The set of attribute type definitions that have been
* defined in the Directory Server.
*/
- public static Map<String,AttributeType> getAttributeTypes()
+ public static Collection<AttributeType> getAttributeTypes()
{
return DirectoryServer.getAttributeTypes();
}
@@ -373,35 +372,18 @@
/**
* Retrieves the set of attribute syntaxes defined in the Directory
- * Server. The mapping will be between the OID and the
- * corresponding syntax implementation. The returned map must not
- * be altered by the caller.
+ * Server.
*
* @return The set of attribute syntaxes defined in the Directory
* Server.
*/
- public static Map<String,Syntax>
- getAttributeSyntaxes()
+ public static Collection<Syntax> getAttributeSyntaxes()
{
return DirectoryServer.getAttributeSyntaxes();
}
/**
* Retrieves the default attribute syntax that should be used for
- * attributes that are not defined in the server schema.
- *
- * @return The default attribute syntax that should be used for
- * attributes that are not defined in the server schema.
- */
- public static Syntax getDefaultAttributeSyntax()
- {
- return DirectoryServer.getDefaultAttributeSyntax();
- }
-
-
-
- /**
- * Retrieves the default attribute syntax that should be used for
* attributes that are not defined in the server schema and are
* meant to store binary values.
*
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java b/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
index ab594ea..ff8c9cc 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.io.BufferedWriter;
import java.io.IOException;
import java.util.*;
@@ -485,21 +487,18 @@
}
// Check sub-types.
- if (attributeType.mayHaveSubordinateTypes())
+ for (AttributeType subType : schema.getSubTypes(attributeType))
{
- for (AttributeType subType : schema.getSubTypes(attributeType))
+ attributes = getAttributes(subType);
+ if (attributes != null)
{
- attributes = getAttributes(subType);
- if (attributes != null)
+ for (Attribute attribute : attributes)
{
- for (Attribute attribute : attributes)
+ // It's possible that there could be an attribute without any values,
+ // which we should treat as not having the requested attribute.
+ if (!attribute.isEmpty() && attribute.hasAllOptions(options))
{
- // It's possible that there could be an attribute without any values,
- // which we should treat as not having the requested attribute.
- if (!attribute.isEmpty() && attribute.hasAllOptions(options))
- {
- return true;
- }
+ return true;
}
}
}
@@ -601,7 +600,7 @@
public List<Attribute> getAttribute(AttributeType attributeType,
boolean includeSubordinates)
{
- if (includeSubordinates && attributeType.mayHaveSubordinateTypes())
+ if (includeSubordinates && !attributeType.isObjectClass())
{
List<Attribute> attributes = new LinkedList<>();
addAllIfNotNull(attributes, userAttributes.get(attributeType));
@@ -718,7 +717,7 @@
Set<String> options)
{
List<Attribute> attributes = new LinkedList<>();
- if (attributeType.mayHaveSubordinateTypes())
+ if (!attributeType.isObjectClass())
{
addAllIfNotNull(attributes, userAttributes.get(attributeType));
addAllIfNotNull(attributes, operationalAttributes.get(attributeType));
@@ -824,18 +823,13 @@
private List<Attribute> getAttribute(AttributeType attributeType,
Map<AttributeType, List<Attribute>> attrs)
{
- if (attributeType.mayHaveSubordinateTypes())
+ List<Attribute> attributes = new LinkedList<>();
+ addAllIfNotNull(attributes, attrs.get(attributeType));
+ for (AttributeType at : schema.getSubTypes(attributeType))
{
- List<Attribute> attributes = new LinkedList<>();
- addAllIfNotNull(attributes, attrs.get(attributeType));
- for (AttributeType at : schema.getSubTypes(attributeType))
- {
- addAllIfNotNull(attributes, attrs.get(at));
- }
- return attributes;
+ addAllIfNotNull(attributes, attrs.get(at));
}
- List<Attribute> results = attrs.get(attributeType);
- return results != null ? results : Collections.<Attribute> emptyList();
+ return attributes;
}
@@ -858,12 +852,9 @@
List<Attribute> attributes = new LinkedList<>();
addAllIfNotNull(attributes, attrs.get(attributeType));
- if (attributeType.mayHaveSubordinateTypes())
+ for (AttributeType at : schema.getSubTypes(attributeType))
{
- for (AttributeType at : schema.getSubTypes(attributeType))
- {
- addAllIfNotNull(attributes, attrs.get(at));
- }
+ addAllIfNotNull(attributes, attrs.get(at));
}
onlyKeepAttributesWithAllOptions(attributes, options);
@@ -914,22 +905,17 @@
return true;
}
- if (attributeType.mayHaveSubordinateTypes())
+ for (AttributeType at : schema.getSubTypes(attributeType))
{
- for (AttributeType at : schema.getSubTypes(attributeType))
+ if (attributes.containsKey(at))
{
- if (attributes.containsKey(at))
- {
- return true;
- }
+ return true;
}
}
return false;
}
-
-
/**
* Retrieves the requested operational attribute element(s) for the
* specified attribute type. The list returned may include multiple
@@ -2946,8 +2932,7 @@
for (Attribute collectiveAttr : collectiveAttrList)
{
AttributeType attributeType = collectiveAttr.getAttributeType();
- if (exclusionsNameSet.contains(
- attributeType.getNormalizedPrimaryNameOrOID()))
+ if (exclusionsNameSet.contains(attributeType.getNormalizedNameOrOID()))
{
continue;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java b/opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java
index 8859c24..519913f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.types;
@@ -34,8 +34,6 @@
import java.util.List;
import java.util.Map;
-import org.forgerock.opendj.ldap.schema.Syntax;
-
/**
* This class defines a data structure for storing and interacting
* with an ldap syntax, which defines the custom ldap syntaxes.
@@ -58,36 +56,24 @@
/** The definition string used to create this ldap syntax description. */
private final String definition;
- /** The description for this ldap syntax description. */
- private final String description;
-
/** The OID of the enclosed ldap syntax description. */
private final String oid;
- /** The LDAPSyntaxDescritpionSyntax associated with this ldap syntax. */
- private Syntax syntax;
-
-
-
/**
- * Creates a new ldap syntax definition with the provided
- * information.
+ * Creates a new ldap syntax definition with the provided information.
*
- * @param definition The definition string used to create
- * this ldap syntax. It must not be
- * {@code null}.
- * @param syntax The ldap syntax description syntax
- * associated with this ldap syntax.
- * @param extraProperties A set of extra properties for this
- * ldap syntax description.
+ * @param definition
+ * The definition string used to create this ldap syntax. It must not be {@code null}.
+ * @param oid
+ * oid of the syntax
+ * @param extraProperties
+ * A set of extra properties for this ldap syntax description.
*/
- public LDAPSyntaxDescription(String definition, Syntax syntax, Map<String,List<String>> extraProperties)
+ public LDAPSyntaxDescription(String definition, String oid, Map<String,List<String>> extraProperties)
{
- ifNull(definition, syntax);
+ ifNull(definition, oid);
- this.syntax = syntax;
- this.oid = syntax.getOID();
- this.description = syntax.getDescription();
+ this.oid = oid;
int schemaFilePos = definition.indexOf(SCHEMA_PROPERTY_FILENAME);
if (schemaFilePos > 0)
@@ -123,32 +109,6 @@
}
}
-
-
- /**
- * Retrieves the ldap syntax description syntax associated with
- * this ldap syntax.
- *
- * @return The description syntax for this definition.
- */
- public Syntax getSyntax()
- {
- return syntax;
- }
-
-
-
- /**
- * Retrieves the description for this ldap syntax description.
- *
- * @return The description for this ldap syntax description, or
- * {@code true} if there is none.
- */
- public String getDescription()
- {
- return description;
- }
-
/**
* Returns the oid.
*
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/LDIFExportConfig.java b/opendj-server-legacy/src/main/java/org/opends/server/types/LDIFExportConfig.java
index 7ce1cf3..b25786a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/LDIFExportConfig.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/LDIFExportConfig.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.io.*;
import java.util.ArrayList;
import java.util.HashSet;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/LDIFImportConfig.java b/opendj-server-legacy/src/main/java/org/opends/server/types/LDIFImportConfig.java
index 70da7ff..4a8fd7c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/LDIFImportConfig.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/LDIFImportConfig.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import static org.opends.messages.UtilityMessages.*;
import java.io.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/MatchingRuleUse.java b/opendj-server-legacy/src/main/java/org/opends/server/types/MatchingRuleUse.java
index 5884952..80885fe 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/MatchingRuleUse.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/MatchingRuleUse.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java b/opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java
index 5c0140d..de7c6d8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/ObjectClass.java b/opendj-server-legacy/src/main/java/org/opends/server/types/ObjectClass.java
index 641b65d..b8c02b9 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/ObjectClass.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/ObjectClass.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java b/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
index a8f7671..5c126b0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.CharBuffer;
@@ -88,7 +90,7 @@
{
Reject.ifNull(attributeType, attributeValue);
attributeTypes = new AttributeType[] { attributeType };
- attributeNames = new String[] { attributeType.getPrimaryName() };
+ attributeNames = new String[] { attributeType.getNameOrOID() };
attributeValues = new ByteString[] { attributeValue };
}
@@ -666,16 +668,11 @@
// don't return it yet because this could be a multi-valued RDN.
String name = attributeName.toString();
String lowerName = toLowerCase(name);
- AttributeType attrType = DirectoryServer.getAttributeTypeOrNull(lowerName);
- if (attrType == null)
- {
- // This must be an attribute type that we don't know about.
- // In that case, we'll create a new attribute using the default
- // syntax. If this is a problem, it will be caught later either
- // by not finding the target entry or by not allowing the entry
- // to be added.
- attrType = DirectoryServer.getAttributeTypeOrDefault(name);
- }
+
+ // If using default is a problem, it will be caught later either
+ // by not finding the target entry or by not allowing the entry
+ // to be added.
+ AttributeType attrType = DirectoryServer.getAttributeTypeOrDefault(lowerName, name);
RDN rdn = new RDN(attrType, name, parsedValue.toByteString());
@@ -785,17 +782,7 @@
{
name = attributeName.toString();
lowerName = toLowerCase(name);
- attrType = DirectoryServer.getAttributeTypeOrNull(lowerName);
-
- if (attrType == null)
- {
- // This must be an attribute type that we don't know about.
- // In that case, we'll create a new attribute using the
- // default syntax. If this is a problem, it will be caught
- // later either by not finding the target entry or by not
- // allowing the entry to be added.
- attrType = DirectoryServer.getAttributeTypeOrDefault(name);
- }
+ attrType = DirectoryServer.getAttributeTypeOrDefault(lowerName.toString(), name);
rdn.addValue(attrType, name, ByteString.empty());
return rdn;
@@ -810,16 +797,10 @@
// Update the RDN to include the new attribute/value.
name = attributeName.toString();
lowerName = toLowerCase(name);
- attrType = DirectoryServer.getAttributeTypeOrNull(lowerName);
- if (attrType == null)
- {
- // This must be an attribute type that we don't know about.
- // In that case, we'll create a new attribute using the
- // default syntax. If this is a problem, it will be caught
- // later either by not finding the target entry or by not
- // allowing the entry to be added.
- attrType = DirectoryServer.getAttributeTypeOrDefault(name);
- }
+ // If using default is a problem, it will be caught later either
+ // by not finding the target entry or by not allowing the entry
+ // to be added.
+ attrType = DirectoryServer.getAttributeTypeOrDefault(lowerName, name);
rdn.addValue(attrType, name, parsedValue.toByteString());
@@ -1091,7 +1072,7 @@
*/
private ByteStringBuilder normalizeAVAToByteString(int position, final ByteStringBuilder builder)
{
- builder.appendUtf8(attributeTypes[position].getNormalizedPrimaryNameOrOID());
+ builder.appendUtf8(attributeTypes[position].getNormalizedNameOrOID());
builder.appendUtf8("=");
final ByteString value = getEqualityNormalizedValue(position);
if (value.length() > 0)
@@ -1156,7 +1137,7 @@
*/
private StringBuilder normalizeAVAToUrlSafeString(int position, StringBuilder builder)
{
- builder.append(attributeTypes[position].getNormalizedPrimaryNameOrOID());
+ builder.append(attributeTypes[position].getNormalizedNameOrOID());
builder.append('=');
ByteString value = getEqualityNormalizedValue(position);
@@ -1164,7 +1145,7 @@
{
return builder;
}
- final boolean hasAttributeName = attributeTypes[position].getPrimaryName() != null;
+ final boolean hasAttributeName = !attributeTypes[position].getNames().isEmpty();
final boolean isHumanReadable = attributeTypes[position].getSyntax().isHumanReadable();
if (!hasAttributeName || !isHumanReadable)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java b/opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java
index 831e752..b08b5a2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java
@@ -22,12 +22,20 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.types;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.FilenameFilter;
+import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashSet;
@@ -37,26 +45,38 @@
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageDescriptor.Arg0;
+import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.ConflictingSchemaElementException;
import org.forgerock.opendj.ldap.schema.MatchingRule;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.opendj.ldap.schema.UnknownSchemaElementException;
+import org.forgerock.util.Option;
+import org.forgerock.util.Utils;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SchemaConfigManager;
-import org.opends.server.schema.AttributeTypeSyntax;
import org.opends.server.schema.DITContentRuleSyntax;
import org.opends.server.schema.DITStructureRuleSyntax;
import org.opends.server.schema.MatchingRuleUseSyntax;
import org.opends.server.schema.NameFormSyntax;
import org.opends.server.schema.ObjectClassSyntax;
+import org.opends.server.schema.SomeSchemaElement;
+import org.opends.server.util.ServerConstants;
import org.opends.server.util.StaticUtils;
import static org.opends.messages.BackendMessages.*;
import static org.opends.messages.CoreMessages.*;
+import static org.opends.messages.SchemaMessages.*;
import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.types.CommonSchemaElements.*;
import static org.opends.server.util.CollectionUtils.*;
@@ -78,6 +98,7 @@
* <LI>DIT structure rule definitions</LI>
* <LI>Name form definitions</LI>
* </UL>
+ * It always uses non-strict {@link org.forgerock.opendj.ldap.schema.Schema} under the hood.
*/
@org.opends.server.types.PublicAPI(
stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
@@ -89,16 +110,10 @@
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
/**
- * The set of subordinate attribute types registered within the server schema.
+ * Provides for each attribute type having at least one subordinate type the complete list of
+ * its descendants.
*/
- private ConcurrentHashMap<AttributeType,List<AttributeType>>
- subordinateTypes;
-
- /**
- * 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;
+ private Map<AttributeType, List<AttributeType>> subordinateTypes;
/**
* The set of objectclass definitions for this schema, mapped between the
@@ -107,23 +122,9 @@
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,Syntax> syntaxes;
-
- /**
* The default attribute syntax to use for attributes with no defined syntax.
*/
- private Syntax defaultSyntax;
-
- /**
- * 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;
-
-
+ private String defaultSyntaxOID;
/**
* The set of matching rule uses for this schema, mapped between the matching
@@ -187,186 +188,378 @@
*/
private Map<String, Attribute> extraAttributes = new HashMap<>();
+ /**
+ * The SDK schema.
+ * <p>
+ * It will progressively take over server implementation of the schema.
+ * <p>
+ * @GuardedBy("exclusiveLock")
+ */
+ private volatile org.forgerock.opendj.ldap.schema.Schema schemaNG;
- /** Creates a new schema structure with all elements initialized but empty. */
- public Schema()
+ /** Guards updates to the schema. */
+ private final Lock exclusiveLock = new ReentrantLock();
+
+ /**
+ * Creates a new schema structure with all elements initialized but empty.
+ *
+ * @param schemaNG
+ * The SDK schema
+ */
+ public Schema(org.forgerock.opendj.ldap.schema.Schema schemaNG)
{
- attributeTypes = new ConcurrentHashMap<>();
- objectClasses = new ConcurrentHashMap<>();
- syntaxes = new ConcurrentHashMap<>();
- matchingRules = new ConcurrentHashMap<>();
- matchingRuleUses = new ConcurrentHashMap<>();
- ditContentRules = new ConcurrentHashMap<>();
- ditStructureRulesByID = new ConcurrentHashMap<>();
- ditStructureRulesByNameForm = new ConcurrentHashMap<>();
- nameFormsByOC = new ConcurrentHashMap<>();
- nameFormsByName = new ConcurrentHashMap<>();
- ldapSyntaxDescriptions = new ConcurrentHashMap<>();
- subordinateTypes = new ConcurrentHashMap<>();
+ setSchemaNG(schemaNG);
+
+ objectClasses = new ConcurrentHashMap<String,ObjectClass>();
+ matchingRuleUses = new ConcurrentHashMap<MatchingRule,MatchingRuleUse>();
+ ditContentRules = new ConcurrentHashMap<ObjectClass,DITContentRule>();
+ ditStructureRulesByID = new ConcurrentHashMap<Integer,DITStructureRule>();
+ ditStructureRulesByNameForm = new ConcurrentHashMap<NameForm,DITStructureRule>();
+ nameFormsByOC = new ConcurrentHashMap<ObjectClass,List<NameForm>>();
+ nameFormsByName = new ConcurrentHashMap<String,NameForm>();
+ ldapSyntaxDescriptions = new ConcurrentHashMap<String,LDAPSyntaxDescription>();
+ subordinateTypes = new ConcurrentHashMap<AttributeType,List<AttributeType>>();
oldestModificationTime = System.currentTimeMillis();
youngestModificationTime = oldestModificationTime;
}
-
+ /**
+ * Returns the SDK schema.
+ *
+ * @return the SDK schema
+ */
+ public org.forgerock.opendj.ldap.schema.Schema getSchemaNG()
+ {
+ return schemaNG;
+ }
/**
- * 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.
+ * Retrieves the attribute type definitions for this schema.
*
* @return The attribute type definitions for this schema.
*/
- public ConcurrentHashMap<String,AttributeType> getAttributeTypes()
+ public Collection<AttributeType> getAttributeTypes()
{
- return attributeTypes;
+ return schemaNG.getAttributeTypes();
}
-
-
/**
* Indicates whether this schema definition includes an attribute
* type with the provided name or OID.
*
- * @param lowerName The name or OID for which to make the
- * determination, formatted in all lowercase
- * characters.
- *
+ * @param nameOrOid The name or OID for which to make the determination, ignoring case considerations
* @return {@code true} if this schema contains an attribute type
* with the provided name or OID, or {@code false} if not.
*/
- public boolean hasAttributeType(String lowerName)
+ public boolean hasAttributeType(String nameOrOid)
{
- return attributeTypes.containsKey(lowerName);
+ return schemaNG.hasAttributeType(nameOrOid);
}
-
-
/**
- * Retrieves the attribute type definition with the specified name
- * or OID.
+ * 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.
+ * @param nameOrOid
+ * The name or OID of the attribute type to retrieve, ignoring case considerations
+ * @return The requested attribute type
*/
- public AttributeType getAttributeType(String lowerName)
+ public AttributeType getAttributeType(String nameOrOid)
{
- 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
- {
- synchronized (attributeTypes)
+ try
{
- if (! overwriteExisting)
- {
- String oid = toLowerCase(attributeType.getOID());
- if (attributeTypes.containsKey(oid))
- {
- AttributeType conflictingType = attributeTypes.get(oid);
-
- LocalizableMessage message = ERR_SCHEMA_CONFLICTING_ATTRIBUTE_OID.
- get(attributeType.getNameOrOID(), oid,
- conflictingType.getNameOrOID());
- throw new DirectoryException(
- ResultCode.CONSTRAINT_VIOLATION, message);
- }
-
- for (String name : attributeType.getNormalizedNames())
- {
- if (attributeTypes.containsKey(name))
- {
- AttributeType conflictingType = attributeTypes.get(name);
-
- LocalizableMessage message = ERR_SCHEMA_CONFLICTING_ATTRIBUTE_NAME.
- get(attributeType.getNameOrOID(), name,
- conflictingType.getNameOrOID());
- throw new DirectoryException(
- ResultCode.CONSTRAINT_VIOLATION, message);
- }
- }
- }
-
- AttributeType old = attributeTypes.put(
- toLowerCase(attributeType.getOID()), attributeType);
- if (old != null && old != attributeType)
- {
- // Mark the old attribute type as stale so that caches (such as
- // compressed schema) can detect changes.
- old.setDirty();
- }
-
- for (String name : attributeType.getNormalizedNames())
- {
- attributeTypes.put(name, attributeType);
- }
-
- AttributeType superiorType = attributeType.getSuperiorType();
- if (superiorType != null)
- {
- registerSubordinateType(attributeType, superiorType);
- }
+ return schemaNG.getAttributeType(nameOrOid);
+ }
+ catch (UnknownSchemaElementException e)
+ {
+ // It should never happen because we only use non-strict schemas
+ throw new RuntimeException(e);
}
}
/**
- * Deregisters the provided attribute type definition with this
- * schema.
+ * Retrieves the attribute type definition with the specified name or OID.
*
- * @param attributeType The attribute type to deregister with this
- * schema.
+ * @param nameOrOid
+ * The name or OID of the attribute type to retrieve, ignoring case considerations
+ * @param syntax
+ * The syntax to use when creating the temporary "place-holder" attribute type.
+ * @return The requested attribute type
*/
- public void deregisterAttributeType(AttributeType attributeType)
+ public AttributeType getAttributeType(String nameOrOid, Syntax syntax)
{
- synchronized (attributeTypes)
+ try
{
- if (attributeTypes.remove(toLowerCase(attributeType.getOID()),
- attributeType))
- {
- // Mark the old attribute type as stale so that caches (such as
- // compressed schema) can detect changes.
- attributeType.setDirty();
- }
-
- for (String name : attributeType.getNormalizedNames())
- {
- attributeTypes.remove(name, attributeType);
- }
-
- AttributeType superiorType = attributeType.getSuperiorType();
- if (superiorType != null)
- {
- deregisterSubordinateType(attributeType, superiorType);
- }
+ return schemaNG.getAttributeType(nameOrOid, syntax);
+ }
+ catch (UnknownSchemaElementException e)
+ {
+ // It should never happen because we only use non-strict schemas
+ throw new RuntimeException(e);
}
}
+ /**
+ * Parses an attribute type from its provided definition.
+ *
+ * @param definition
+ * The definition of the attribute type
+ * @return the attribute type
+ * @throws DirectoryException
+ * If an error occurs
+ */
+ public AttributeType parseAttributeType(final String definition) throws DirectoryException
+ {
+ try
+ {
+ SchemaBuilder builder = new SchemaBuilder(schemaNG);
+ builder.addAttributeType(definition, true);
+ org.forgerock.opendj.ldap.schema.Schema newSchema = builder.toSchema();
+ rejectSchemaWithWarnings(newSchema);
+ return newSchema.getAttributeType(parseAttributeTypeOID(definition));
+ }
+ catch (UnknownSchemaElementException e)
+ {
+ // this should never happen
+ LocalizableMessage msg = ERR_ATTR_TYPE_CANNOT_REGISTER.get(definition);
+ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, msg, e);
+ }
+ catch (LocalizedIllegalArgumentException e)
+ {
+ throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, e.getMessageObject(), e);
+ }
+ }
+
+ /**
+ * Registers a list of attribute types from their provided definitions.
+ * <p>
+ * This method allows to do only one schema change for multiple definitions,
+ * thus avoiding the cost (and the issue of stale schema references) of rebuilding a new schema for each definition.
+ *
+ * @param definitions
+ * The definitions of the attribute types
+ * @param schemaFile
+ * The schema file where these definitions belong, can be {@code null}
+ * @param overwrite
+ * Indicates whether to overwrite the attribute
+ * type if it already exists based on OID or name
+ * @throws DirectoryException
+ * If an error occurs
+ */
+ public void registerAttributeTypes(final List<String> definitions, final String schemaFile, final boolean overwrite)
+ throws DirectoryException
+ {
+ exclusiveLock.lock();
+ try
+ {
+ SchemaBuilder builder = new SchemaBuilder(schemaNG);
+ for (String definition : definitions)
+ {
+ String defWithFile = schemaFile != null ?
+ addSchemaFileToElementDefinitionIfAbsent(definition, schemaFile) : definition;
+ builder.addAttributeType(defWithFile, overwrite);
+ }
+ switchSchema(builder.toSchema());
+
+ for (String definition : definitions)
+ {
+ updateSubordinateTypes(schemaNG.getAttributeType(parseAttributeTypeOID(definition)));
+ }
+ }
+ catch (ConflictingSchemaElementException | UnknownSchemaElementException e)
+ {
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, e.getMessageObject(), e);
+ }
+ catch (LocalizedIllegalArgumentException e)
+ {
+ throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, e.getMessageObject(), e);
+ }
+ finally
+ {
+ exclusiveLock.unlock();
+ }
+ }
+
+ /**
+ * Registers an attribute type from its provided definition.
+ *
+ * @param definition
+ * The definition of the attribute type
+ * @param schemaFile
+ * The schema file where this definition belongs,
+ * maybe {@code null}
+ * @param overwrite
+ * Indicates whether to overwrite the attribute
+ * type if it already exists based on OID or name
+ * @throws DirectoryException
+ * If an error occurs
+ */
+ public void registerAttributeType(final String definition, final String schemaFile, final boolean overwrite)
+ throws DirectoryException
+ {
+ registerAttributeTypes(Arrays.asList(definition), schemaFile, overwrite);
+ }
+
+ /**
+ * 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(final AttributeType attributeType, final boolean overwriteExisting)
+ throws DirectoryException
+ {
+ registerAttributeType(attributeType, null, overwriteExisting);
+ }
+
+ /**
+ * Registers the provided attribute type definition with this schema.
+ *
+ * @param attributeType
+ * The attribute type to register with this schema.
+ * @param schemaFile
+ * The schema file where this definition belongs, maybe {@code null}
+ * @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(final AttributeType attributeType, final String schemaFile,
+ final boolean overwriteExisting) throws DirectoryException
+ {
+ exclusiveLock.lock();
+ try
+ {
+ SchemaBuilder builder = new SchemaBuilder(schemaNG);
+ AttributeType.Builder b = builder.buildAttributeType(attributeType);
+ if (schemaFile != null)
+ {
+ b.removeExtraProperty(SCHEMA_PROPERTY_FILENAME).extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
+ }
+ if (overwriteExisting)
+ {
+ b.addToSchemaOverwrite();
+ }
+ else
+ {
+ b.addToSchema();
+ }
+ switchSchema(builder.toSchema());
+
+ updateSubordinateTypes(attributeType);
+ }
+ catch (LocalizedIllegalArgumentException e)
+ {
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, e.getMessageObject(), e);
+ }
+ finally
+ {
+ exclusiveLock.unlock();
+ }
+ }
+
+ private String parseAttributeTypeOID(String definition) throws DirectoryException
+ {
+ return parseOID(definition, ResultCode.INVALID_ATTRIBUTE_SYNTAX, ERR_ATTR_SYNTAX_ATTRTYPE_EMPTY_VALUE);
+ }
+
+ /**
+ * Returns the OID from the provided attribute type definition, assuming the
+ * definition is valid.
+ * <p>
+ * This method does not perform any check.
+ *
+ * @param definition
+ * The definition, assumed to be valid
+ * @param parsingErrorResultCode the result code to use if a problem occurs while parsing the definition
+ * @param parsingErrorMsg the message to use if a problem occurs while parsing the definition
+ * @return the OID, which is never {@code null}
+ * @throws DirectoryException
+ * If a problem occurs while parsing the definition
+ */
+ public static String parseOID(String definition, ResultCode parsingErrorResultCode, Arg0 parsingErrorMsg)
+ throws DirectoryException
+ {
+ try
+ {
+ int pos = 0;
+ int length = definition.length();
+ // Skip over any leading whitespace.
+ while (pos < length && (definition.charAt(pos) == ' '))
+ {
+ pos++;
+ }
+ // Skip the open parenthesis.
+ pos++;
+ // Skip over any spaces immediately following the opening parenthesis.
+ while (pos < length && definition.charAt(pos) == ' ')
+ {
+ pos++;
+ }
+ // The next set of characters must be the OID.
+ int oidStartPos = pos;
+ while (pos < length && definition.charAt(pos) != ' ' && definition.charAt(pos) != ')')
+ {
+ pos++;
+ }
+ return definition.substring(oidStartPos, pos);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ throw new DirectoryException(parsingErrorResultCode, parsingErrorMsg.get(), e);
+ }
+ }
+
+ /**
+ * Deregisters the provided attribute type definition with this schema.
+ *
+ * @param attributeType The attribute type to deregister with this schema.
+ */
+ public void deregisterAttributeType(final AttributeType attributeType)
+ {
+ exclusiveLock.lock();
+ try
+ {
+ SchemaBuilder builder = new SchemaBuilder(schemaNG);
+ if (builder.removeAttributeType(attributeType.getNameOrOID()))
+ {
+ AttributeType superiorType = attributeType.getSuperiorType();
+ if (superiorType != null)
+ {
+ deregisterSubordinateType(attributeType, superiorType);
+ }
+ setSchemaNG(builder.toSchema());
+ }
+ }
+ finally
+ {
+ exclusiveLock.unlock();
+ }
+ }
+
+ private void setSchemaNG(org.forgerock.opendj.ldap.schema.Schema newSchemaNG)
+ {
+ schemaNG = newSchemaNG.asNonStrictSchema();
+ }
+
+ private void updateSubordinateTypes(AttributeType attributeType)
+ {
+ AttributeType superiorType = attributeType.getSuperiorType();
+ if (superiorType != null)
+ {
+ registerSubordinateType(attributeType, superiorType);
+ }
+ }
/**
* Registers the provided attribute type as a subtype of the given
@@ -378,18 +571,15 @@
* @param superiorType The superior type for which to register
* the given attribute type as a subtype.
*/
- private void registerSubordinateType(AttributeType attributeType,
- AttributeType superiorType)
+ private void registerSubordinateType(AttributeType attributeType, AttributeType superiorType)
{
List<AttributeType> subTypes = subordinateTypes.get(superiorType);
if (subTypes == null)
{
- superiorType.setMayHaveSubordinateTypes();
subordinateTypes.put(superiorType, newLinkedList(attributeType));
}
- else if (! subTypes.contains(attributeType))
+ else if (!subTypes.contains(attributeType))
{
- superiorType.setMayHaveSubordinateTypes();
subTypes.add(attributeType);
AttributeType higherSuperior = superiorType.getSuperiorType();
@@ -400,8 +590,6 @@
}
}
-
-
/**
* Deregisters the provided attribute type as a subtype of the given
* superior attribute type, recursively following any additional
@@ -412,8 +600,7 @@
* @param superiorType The superior type for which to deregister
* the given attribute type as a subtype.
*/
- private void deregisterSubordinateType(AttributeType attributeType,
- AttributeType superiorType)
+ private void deregisterSubordinateType(AttributeType attributeType, AttributeType superiorType)
{
List<AttributeType> subTypes = subordinateTypes.get(superiorType);
if (subTypes != null && subTypes.remove(attributeType))
@@ -426,8 +613,6 @@
}
}
-
-
/**
* Retrieves the set of subtypes registered for the given attribute
* type.
@@ -442,14 +627,7 @@
public List<AttributeType> getSubTypes(AttributeType attributeType)
{
List<AttributeType> subTypes = subordinateTypes.get(attributeType);
- if (subTypes == null)
- {
- return Collections.emptyList();
- }
- else
- {
- return subTypes;
- }
+ return subTypes != null ? subTypes : Collections.<AttributeType> emptyList();
}
@@ -524,7 +702,8 @@
boolean overwriteExisting)
throws DirectoryException
{
- synchronized (objectClasses)
+ exclusiveLock.lock();
+ try
{
if (! overwriteExisting)
{
@@ -569,6 +748,10 @@
objectClasses.put(name, objectClass);
}
}
+ finally
+ {
+ exclusiveLock.unlock();
+ }
}
@@ -600,72 +783,40 @@
/**
- * 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.
+ * Retrieves the attribute syntax definitions for this schema.
*
* @return The attribute syntax definitions for this schema.
*/
- public ConcurrentHashMap<String,Syntax> getSyntaxes()
+ public Collection<Syntax> getSyntaxes()
{
- return syntaxes;
+ return schemaNG.getSyntaxes();
}
/**
* Indicates whether this schema definition includes an attribute
- * syntax with the provided name or OID.
+ * syntax with the provided OID.
*
- * @param lowerName The name or OID for which to make the
- * determination, formatted in all lowercase
- * characters.
- *
+ * @param oid The OID for which to make the determination
* @return {@code true} if this schema contains an attribute syntax
- * with the provided name or OID, or {@code false} if not.
+ * with the provided OID, or {@code false} if not.
*/
- public boolean hasSyntax(String lowerName)
+ public boolean hasSyntax(String oid)
{
- return syntaxes.containsKey(lowerName);
- }
-
- /**
- * Retrieves the requested attribute syntax.
- *
- * @param oid
- * The OID of the syntax to retrieve.
- * @param allowDefault
- * Indicates whether to return the default attribute syntax if the
- * requested syntax is unknown.
- * @return The requested attribute syntax, the default syntax if the requested
- * syntax is unknown and the caller has indicated that the default is
- * acceptable, or <CODE>null</CODE> otherwise.
- */
- public Syntax getSyntax(String oid, boolean allowDefault)
- {
- Syntax syntax = getSyntax(oid);
- if (syntax == null && allowDefault)
- {
- return getDefaultSyntax();
- }
-
- return syntax;
+ return schemaNG.hasSyntax(oid);
}
/**
* 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.
+ * @param oid The OID of the attribute syntax to retrieve.
+ * @return The requested attribute syntax,
+ * or {@code null} if no syntax is registered with the provided OID.
*/
- public Syntax getSyntax(String lowerName)
+ public Syntax getSyntax(String oid)
{
- return syntaxes.get(lowerName);
+ return schemaNG.getSyntax(oid);
}
/**
@@ -677,7 +828,7 @@
*/
public Syntax getDefaultSyntax()
{
- return defaultSyntax;
+ return schemaNG.getSyntax(defaultSyntaxOID);
}
@@ -688,10 +839,9 @@
* @param defaultSyntax
* The defautl syntax to use.
*/
- public void registerDefaultSyntax(
- Syntax defaultSyntax)
+ public void registerDefaultSyntax(Syntax defaultSyntax)
{
- this.defaultSyntax = defaultSyntax;
+ this.defaultSyntaxOID = defaultSyntax.getOID();
}
@@ -711,45 +861,75 @@
* <CODE>overwriteExisting</CODE> flag
* is set to <CODE>false</CODE>
*/
- public void registerSyntax(Syntax syntax,
- boolean overwriteExisting)
- throws DirectoryException
+ public void registerSyntax(final Syntax syntax, final boolean overwriteExisting) throws DirectoryException
{
- synchronized (syntaxes)
+ exclusiveLock.lock();
+ try
{
- if (! overwriteExisting)
+ SchemaBuilder builder = new SchemaBuilder(schemaNG);
+ Syntax.Builder b = builder.buildSyntax(syntax);
+ if (overwriteExisting)
{
- String oid = toLowerCase(syntax.getOID());
- if (syntaxes.containsKey(oid))
- {
- Syntax conflictingSyntax = syntaxes.get(oid);
-
- LocalizableMessage message = ERR_SCHEMA_CONFLICTING_SYNTAX_OID.
- get(syntax.getName(), oid,
- conflictingSyntax.getName());
- throw new DirectoryException(
- ResultCode.CONSTRAINT_VIOLATION, message);
- }
+ b.addToSchemaOverwrite();
}
-
- syntaxes.put(toLowerCase(syntax.getOID()), syntax);
+ else
+ {
+ b.addToSchema();
+ }
+ switchSchema(builder.toSchema());
+ }
+ catch (LocalizedIllegalArgumentException e)
+ {
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, e.getMessageObject(), e);
+ }
+ finally
+ {
+ exclusiveLock.unlock();
}
}
-
+ private void registerSyntax(final String definition, final boolean overwriteExisting) throws DirectoryException
+ {
+ exclusiveLock.lock();
+ try
+ {
+ org.forgerock.opendj.ldap.schema.Schema newSchema =
+ new SchemaBuilder(schemaNG)
+ .addSyntax(definition, overwriteExisting)
+ .toSchema();
+ switchSchema(newSchema);
+ }
+ catch (ConflictingSchemaElementException | UnknownSchemaElementException e)
+ {
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, e.getMessageObject(), e);
+ }
+ catch (LocalizedIllegalArgumentException e)
+ {
+ throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX, e.getMessageObject(), e);
+ }
+ finally
+ {
+ exclusiveLock.unlock();
+ }
+ }
/**
- * Deregisters the provided attribute syntax definition with this
- * schema.
+ * Deregisters the provided attribute syntax definition with this schema.
*
- * @param syntax The attribute syntax to deregister with this
- * schema.
+ * @param syntax The attribute syntax to deregister with this schema.
*/
- public void deregisterSyntax(Syntax syntax)
+ public void deregisterSyntax(final Syntax syntax)
{
- synchronized (syntaxes)
+ exclusiveLock.lock();
+ try
{
- syntaxes.remove(toLowerCase(syntax.getOID()), syntax);
+ SchemaBuilder builder = new SchemaBuilder(schemaNG);
+ builder.removeSyntax(syntax.getOID());
+ setSchemaNG(builder.toSchema());
+ }
+ finally
+ {
+ exclusiveLock.unlock();
}
}
@@ -764,32 +944,11 @@
*
* @return The ldap syntax definitions for this schema.
*/
- public ConcurrentHashMap<String,LDAPSyntaxDescription>
- getLdapSyntaxDescriptions()
+ public ConcurrentHashMap<String,LDAPSyntaxDescription> getLdapSyntaxDescriptions()
{
return ldapSyntaxDescriptions;
}
-
-
- /**
- * Indicates whether this schema definition includes an ldap
- * syntax description with the provided name or OID.
- *
- * @param lowerName The OID for which to make the
- * determination, formatted in all lowercase
- * characters.
- *
- * @return {@code true} if this schema contains an ldap syntax
- * with the provided name or OID, or {@code false} if not.
- */
- public boolean hasLdapSyntaxDescription(String lowerName)
- {
- return ldapSyntaxDescriptions.containsKey(lowerName);
- }
-
-
-
/**
* Retrieves the ldap syntax definition with the OID.
*
@@ -799,33 +958,25 @@
* @return The requested ldap syntax, or <CODE>null</CODE> if
* no syntax is registered with the provided OID.
*/
- public LDAPSyntaxDescription getLdapSyntaxDescription(
- String lowerName)
+ public LDAPSyntaxDescription getLdapSyntaxDescription(String lowerName)
{
return ldapSyntaxDescriptions.get(lowerName);
}
-
-
/**
- * Registers the provided ldap syntax description with this
- * schema.
+ * Registers the provided ldap syntax description with this schema.
*
- * @param syntax The ldap syntax description to register
- * with this schema.
- * @param overwriteExisting Indicates whether to overwrite an
- * existing mapping if there are any
- * conflicts (i.e., another ldap
- * syntax with the same OID).
- *
- * @throws DirectoryException If a conflict is encountered and
- * <CODE>overwriteExisting</CODE> flag
- * is set to <CODE>false</CODE>
+ * @param definition
+ * The ldap syntax definition to register with this schema.
+ * @param overwriteExisting
+ * Indicates whether to overwrite an existing mapping if there are
+ * any conflicts (i.e., another ldap syntax with the same OID).
+ * @throws DirectoryException
+ * If a conflict is encountered and <CODE>overwriteExisting</CODE>
+ * flag is set to <CODE>false</CODE>
*/
- public void registerLdapSyntaxDescription(
- LDAPSyntaxDescription syntax,
- boolean overwriteExisting)
- throws DirectoryException
+ public void registerLdapSyntaxDescription(String definition, boolean overwriteExisting)
+ throws DirectoryException
{
/**
* ldapsyntaxes is part real and part virtual. For any
@@ -835,71 +986,65 @@
* virtual syntax set to make this available through virtual
* ldapsyntaxes attribute.
*/
- synchronized (ldapSyntaxDescriptions)
+ exclusiveLock.lock();
+ try
{
- String oid = toLowerCase(syntax.getSyntax().getOID());
+ String oid = parseAttributeTypeOID(definition);
if (! overwriteExisting && ldapSyntaxDescriptions.containsKey(oid))
{
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
ERR_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_LDAP_SYNTAX.get(oid));
}
- ldapSyntaxDescriptions.put(oid, syntax);
+ // Register the attribute syntax with the schema.
+ // It will ensure syntax is available along with the other virtual values for ldapsyntaxes.
+ registerSyntax(definition, overwriteExisting);
- //Register the attribute syntax with the schema. It will ensure
- // syntax is available along with the other virtual values for
- // ldapsyntaxes.
- registerSyntax(syntax.getSyntax(), overwriteExisting);
+ Syntax syntax = schemaNG.getSyntax(oid);
+ LDAPSyntaxDescription syntaxDesc = new LDAPSyntaxDescription(definition, oid, syntax.getExtraProperties());
+ ldapSyntaxDescriptions.put(oid, syntaxDesc);
}
- }
-
-
-
- /**
- * Deregisters the provided ldap syntax description with this
- * schema.
- *
- * @param syntax The ldap syntax to deregister with this
- * schema.
- */
- public void deregisterLdapSyntaxDescription(
- LDAPSyntaxDescription syntax)
- {
- synchronized (ldapSyntaxDescriptions)
+ finally
{
- //Remove the real value.
- ldapSyntaxDescriptions.remove(
- toLowerCase(syntax.getSyntax().getOID()),
- syntax);
-
- try
- {
- //Get rid of this from the virtual ldapsyntaxes.
- deregisterSyntax(syntax.getSyntax());
- }
- catch (Exception e)
- {
- deregisterSyntax(syntax.getSyntax());
- }
+ exclusiveLock.unlock();
}
}
/**
- * 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.
+ * Deregisters the provided ldap syntax description with this schema.
*
- * @return The matching rule definitions for this schema.
+ * @param syntaxDesc
+ * The ldap syntax to deregister with this schema.
*/
- public ConcurrentHashMap<String,MatchingRule> getMatchingRules()
+ public void deregisterLdapSyntaxDescription(LDAPSyntaxDescription syntaxDesc)
{
- return matchingRules;
+ exclusiveLock.lock();
+ try
+ {
+ // Remove the real value.
+ ldapSyntaxDescriptions.remove(toLowerCase(syntaxDesc.getOID()), syntaxDesc);
+
+ // Get rid of this from the virtual ldapsyntaxes.
+ deregisterSyntax(getSyntax(syntaxDesc.getOID()));
+ }
+ finally
+ {
+ exclusiveLock.unlock();
+ }
+ }
+
+
+
+ /**
+ * Retrieves all matching rule definitions for this schema.
+ *
+ * @return The matching rule definitions for this schema
+ */
+ public Collection<MatchingRule> getMatchingRules()
+ {
+ return schemaNG.getMatchingRules();
}
@@ -908,34 +1053,26 @@
* Indicates whether this schema definition includes a matching rule
* with the provided name or OID.
*
- * @param lowerName The name or OID for which to make the
- * determination, formatted in all lowercase
- * characters.
- *
+ * @param nameOrOid The name or OID for which to make the determination, ignoring case considerations
* @return {@code true} if this schema contains a matching rule
* with the provided name or OID, or {@code false} if not.
*/
- public boolean hasMatchingRule(String lowerName)
+ public boolean hasMatchingRule(String nameOrOid)
{
- return matchingRules.containsKey(lowerName);
+ return schemaNG.hasMatchingRule(nameOrOid);
}
/**
- * Retrieves the matching rule definition with the specified name or
- * OID.
+ * 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.
+ * @param nameOrOid The name or OID of the matching rule to retrieve, ignoring case considerations
+ * @return The requested matching rule, or {@code null} if no rule is registered with the provided name or OID.
*/
- public MatchingRule getMatchingRule(String lowerName)
+ public MatchingRule getMatchingRule(String nameOrOid)
{
- return matchingRules.get(lowerName);
+ return schemaNG.getMatchingRule(nameOrOid);
}
@@ -943,87 +1080,81 @@
/**
* 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>
+ * @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} flag is set to {@code false}
*/
- public void registerMatchingRule(MatchingRule matchingRule, boolean overwriteExisting)
+ public void registerMatchingRule(final MatchingRule matchingRule, final boolean overwriteExisting)
throws DirectoryException
{
- synchronized (matchingRules)
+ exclusiveLock.lock();
+ try
{
if (!overwriteExisting)
{
- String oid = toLowerCase(matchingRule.getOID());
- if (matchingRules.containsKey(oid))
- {
- MatchingRule conflictingRule = matchingRules.get(oid);
-
- LocalizableMessage message =
- ERR_SCHEMA_CONFLICTING_MR_OID.get(matchingRule.getNameOrOID(),
- oid, conflictingRule.getNameOrOID());
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
- }
-
+ // check all names of the matching rules because it is not checked by SDK schema
for (String name : matchingRule.getNames())
{
- if (name != null)
+ if (schemaNG.hasMatchingRule(name))
{
- name = toLowerCase(name);
- if (matchingRules.containsKey(name))
- {
- MatchingRule conflictingRule = matchingRules.get(name);
+ Collection<MatchingRule> conflictingRules = schemaNG.getMatchingRulesWithName(name);
+ // there should be only one
+ MatchingRule conflictingRule = conflictingRules.iterator().next();
- LocalizableMessage message =
- ERR_SCHEMA_CONFLICTING_MR_NAME.get(matchingRule.getOID(),
- name, conflictingRule.getOID());
- throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
- message);
- }
+ LocalizableMessage message =
+ ERR_SCHEMA_CONFLICTING_MR_NAME.get(matchingRule.getOID(), name, conflictingRule.getOID());
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
}
}
- matchingRules.put(toLowerCase(matchingRule.getOID()), matchingRule);
- for (String name : matchingRule.getNames())
+ // now register the matching rule
+ SchemaBuilder builder = new SchemaBuilder(schemaNG);
+ MatchingRule.Builder b = builder.buildMatchingRule(matchingRule);
+ if (overwriteExisting)
{
- if (name != null)
- {
- matchingRules.put(toLowerCase(name), matchingRule);
- }
+ b.addToSchemaOverwrite();
}
+ else
+ {
+ b.addToSchema();
+ }
+ switchSchema(builder.toSchema());
+ }
+ catch (LocalizedIllegalArgumentException e)
+ {
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, e.getMessageObject(), e);
+ }
+ finally
+ {
+ exclusiveLock.unlock();
}
}
-
/**
- * Deregisters the provided matching rule definition with this
- * schema.
+ * Deregisters the provided matching rule definition with this schema.
*
- * @param matchingRule The matching rule to deregister with this
- * schema.
+ * @param matchingRule
+ * The matching rule to deregister with this schema.
*/
- public void deregisterMatchingRule(MatchingRule matchingRule)
+ public void deregisterMatchingRule(final MatchingRule matchingRule)
{
- synchronized (matchingRules)
+ exclusiveLock.lock();
+ try
{
- matchingRules.remove(toLowerCase(matchingRule.getOID()), matchingRule);
-
- for (String name : matchingRule.getNames())
- {
- if (name != null)
- {
- matchingRules.remove(toLowerCase(name), matchingRule);
- }
- }
+ SchemaBuilder builder = new SchemaBuilder(schemaNG);
+ builder.removeMatchingRule(matchingRule.getNameOrOID());
+ setSchemaNG(builder.toSchema());
+ }
+ finally
+ {
+ exclusiveLock.unlock();
}
}
@@ -1047,23 +1178,6 @@
/**
- * Indicates whether this schema definition includes a matching rule
- * use for the provided matching rule.
- *
- * @param matchingRule The matching rule for which to make the
- * determination.
- *
- * @return {@code true} if this schema contains a matching rule use
- * for the provided matching rule, or {@code false} if not.
- */
- public boolean hasMatchingRuleUse(MatchingRule matchingRule)
- {
- return matchingRuleUses.containsKey(matchingRule);
- }
-
-
-
- /**
* Retrieves the matching rule use definition for the specified
* matching rule.
*
@@ -1158,23 +1272,6 @@
/**
- * Indicates whether this schema definition includes a DIT content
- * rule for the provided objectclass.
- *
- * @param objectClass The objectclass for which to make the
- * determination.
- *
- * @return {@code true} if this schema contains a DIT content rule
- * for the provided objectclass, or {@code false} if not.
- */
- public boolean hasDITContentRule(ObjectClass objectClass)
- {
- return ditContentRules.containsKey(objectClass);
- }
-
-
-
- /**
* Retrieves the DIT content rule definition for the specified
* objectclass.
*
@@ -1286,40 +1383,6 @@
/**
- * Indicates whether this schema definition includes a DIT structure
- * rule with the provided rule ID.
- *
- * @param ruleID The rule ID for which to make the determination.
- *
- * @return {@code true} if this schema contains a DIT structure
- * rule with the provided rule ID, or {@code false} if not.
- */
- public boolean hasDITStructureRule(int ruleID)
- {
- return ditStructureRulesByID.containsKey(ruleID);
- }
-
-
-
- /**
- * Indicates whether this schema definition includes a DIT structure
- * rule for the provided name form.
- *
- * @param nameForm The name form for which to make the
- * determination.
- *
- * @return {@code true} if this schema contains a DIT structure
- * rule for the provided name form, or {@code false} if
- * not.
- */
- public boolean hasDITStructureRule(NameForm nameForm)
- {
- return ditStructureRulesByNameForm.containsKey(nameForm);
- }
-
-
-
- /**
* Retrieves the DIT structure rule definition with the provided
* rule ID.
*
@@ -1469,23 +1532,6 @@
/**
- * Indicates whether this schema definition includes a name form for
- * the specified objectclass.
- *
- * @param objectClass The objectclass for which to make the
- * determination.
- *
- * @return {@code true} if this schema contains a name form for the
- * provided objectclass, or {@code false} if not.
- */
- public boolean hasNameForm(ObjectClass objectClass)
- {
- return nameFormsByOC.containsKey(objectClass);
- }
-
-
-
- /**
* Indicates whether this schema definition includes a name form
* with the specified name or OID.
*
@@ -1714,8 +1760,6 @@
this.youngestModificationTime = youngestModificationTime;
}
-
-
/**
* Recursively rebuilds all schema elements that are dependent upon
* the provided element. This must be invoked whenever an existing
@@ -1757,12 +1801,33 @@
* @throws DirectoryException If a problem occurs while rebuilding
* any of the schema elements.
*/
- public void rebuildDependentElements(SchemaFileElement element)
- throws DirectoryException
+ public void rebuildDependentElements(SchemaFileElement element) throws DirectoryException
{
try
{
- rebuildDependentElements(element, 0);
+ // increase the depth for each level of recursion to protect against errors due to circular references.
+ final int depth = 0;
+
+ if (element instanceof SomeSchemaElement)
+ {
+ SomeSchemaElement elt = (SomeSchemaElement) element;
+ if (elt.isAttributeType())
+ {
+ rebuildDependentElements(elt.getAttributeType(), depth);
+ }
+ }
+ else if (element instanceof ObjectClass)
+ {
+ rebuildDependentElements((ObjectClass) element, depth);
+ }
+ else if (element instanceof NameForm)
+ {
+ rebuildDependentElements((NameForm) element, depth);
+ }
+ else if (element instanceof DITStructureRule)
+ {
+ rebuildDependentElements((DITStructureRule) element, depth);
+ }
}
catch (DirectoryException de)
{
@@ -1774,194 +1839,157 @@
{
LocalizableMessage message =
ERR_SCHEMA_CIRCULAR_DEPENDENCY_REFERENCE.get(element);
- throw new DirectoryException(de.getResultCode(), message,
- de);
+ throw new DirectoryException(de.getResultCode(), message, de);
}
-
- // It wasn't a circular reference error, so just re-throw the
- // exception.
+ // It wasn't a circular reference error, so just re-throw the exception.
throw de;
}
}
-
-
- /**
- * Recursively rebuilds all schema elements that are dependent upon
- * the provided element, increasing the depth for each level of
- * recursion to protect against errors due to circular references.
- *
- * @param element The element for which to recursively rebuild all
- * dependent elements.
- * @param depth The current recursion depth.
- *
- * @throws DirectoryException If a problem occurs while rebuilding
- * any of the schema elements.
- */
- private void rebuildDependentElements(SchemaFileElement element,
- int depth)
- throws DirectoryException
+ private void circularityCheck(int depth, SchemaFileElement element) throws DirectoryException
{
if (depth > 20)
{
- // FIXME -- Is this an appropriate maximum depth for detecting
- // circular references?
+ // FIXME use a stack of already traversed elements and verify we're updating them only once instead of depth only
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
ERR_SCHEMA_CIRCULAR_DEPENDENCY_REFERENCE.get(element));
}
+ }
+ private void rebuildDependentElements(AttributeType type, int depth) throws DirectoryException
+ {
+ circularityCheck(depth, null);
- // Figure out what type of element we're dealing with and make the
- // appropriate determinations for that element.
- if (element instanceof AttributeType)
+ for (AttributeType at : schemaNG.getAttributeTypes())
{
- AttributeType t = (AttributeType) element;
-
- for (AttributeType at : attributeTypes.values())
+ if ((at.getSuperiorType() != null) && at.getSuperiorType().equals(type))
{
- if (at.getSuperiorType() != null && at.getSuperiorType().equals(t))
- {
- AttributeType newAT = recreateFromDefinition(at);
- deregisterAttributeType(at);
- registerAttributeType(newAT, true);
- rebuildDependentElements(at, depth+1);
- }
+ deregisterAttributeType(at);
+ registerAttributeType(at.toString(), getSchemaFileName(at), true);
+ rebuildDependentElements(at, depth + 1);
}
+ }
- for (ObjectClass oc : objectClasses.values())
+ for (ObjectClass oc : objectClasses.values())
+ {
+ if (oc.getRequiredAttributes().contains(type) || oc.getOptionalAttributes().contains(type))
{
- if (oc.getRequiredAttributes().contains(t) ||
- oc.getOptionalAttributes().contains(t))
- {
- ObjectClass newOC = recreateFromDefinition(oc);
- deregisterObjectClass(oc);
- registerObjectClass(newOC, true);
- rebuildDependentElements(oc, depth+1);
- }
+ ObjectClass newOC = recreateFromDefinition(oc);
+ deregisterObjectClass(oc);
+ registerObjectClass(newOC, true);
+ rebuildDependentElements(oc, depth + 1);
}
+ }
- for (List<NameForm> mappedForms : nameFormsByOC.values())
+ for (List<NameForm> mappedForms : nameFormsByOC.values())
+ {
+ for (NameForm nf : mappedForms)
{
- for(NameForm nf : mappedForms)
+ if (nf.getRequiredAttributes().contains(type) || nf.getOptionalAttributes().contains(type))
{
- if (nf.getRequiredAttributes().contains(t) ||
- nf.getOptionalAttributes().contains(t))
- {
- NameForm newNF = recreateFromDefinition(nf);
- deregisterNameForm(nf);
- registerNameForm(newNF, true);
- rebuildDependentElements(nf, depth+1);
- }
- }
- }
-
- for (DITContentRule dcr : ditContentRules.values())
- {
- if (dcr.getRequiredAttributes().contains(t) ||
- dcr.getOptionalAttributes().contains(t) ||
- dcr.getProhibitedAttributes().contains(t))
- {
- DITContentRule newDCR = recreateFromDefinition(dcr);
- deregisterDITContentRule(dcr);
- registerDITContentRule(newDCR, true);
- rebuildDependentElements(dcr, depth+1);
- }
- }
-
- for (MatchingRuleUse mru : matchingRuleUses.values())
- {
- if (mru.getAttributes().contains(t))
- {
- MatchingRuleUse newMRU = recreateFromDefinition(mru);
- deregisterMatchingRuleUse(mru);
- registerMatchingRuleUse(newMRU, true);
- rebuildDependentElements(mru, depth+1);
+ NameForm newNF = recreateFromDefinition(nf);
+ deregisterNameForm(nf);
+ registerNameForm(newNF, true);
+ rebuildDependentElements(nf, depth + 1);
}
}
}
- else if (element instanceof ObjectClass)
+
+ for (DITContentRule dcr : ditContentRules.values())
{
- ObjectClass c = (ObjectClass) element;
-
- for (ObjectClass oc : objectClasses.values())
+ if (dcr.getRequiredAttributes().contains(type) || dcr.getOptionalAttributes().contains(type)
+ || dcr.getProhibitedAttributes().contains(type))
{
- if (oc.getSuperiorClasses().contains(c))
- {
- ObjectClass newOC = recreateFromDefinition(oc);
- deregisterObjectClass(oc);
- registerObjectClass(newOC, true);
- rebuildDependentElements(oc, depth+1);
- }
- }
-
- List<NameForm> mappedForms = nameFormsByOC.get(c);
- if(mappedForms != null)
- {
- for(NameForm nf : mappedForms)
- {
- if (nf != null)
- {
- NameForm newNF = recreateFromDefinition(nf);
- deregisterNameForm(nf);
- registerNameForm(newNF, true);
- rebuildDependentElements(nf, depth+1);
- }
- }
- }
-
- for (DITContentRule dcr : ditContentRules.values())
- {
- if (dcr.getStructuralClass().equals(c) ||
- dcr.getAuxiliaryClasses().contains(c))
- {
- DITContentRule newDCR = recreateFromDefinition(dcr);
- deregisterDITContentRule(dcr);
- registerDITContentRule(newDCR, true);
- rebuildDependentElements(dcr, depth+1);
- }
+ DITContentRule newDCR = recreateFromDefinition(dcr);
+ deregisterDITContentRule(dcr);
+ registerDITContentRule(newDCR, true);
}
}
- else if (element instanceof NameForm)
+
+ for (MatchingRuleUse mru : matchingRuleUses.values())
{
- NameForm n = (NameForm) element;
- DITStructureRule dsr = ditStructureRulesByNameForm.get(n);
- if (dsr != null)
+ if (mru.getAttributes().contains(type))
{
- DITStructureRule newDSR = recreateFromDefinition(dsr);
- deregisterDITStructureRule(dsr);
- registerDITStructureRule(newDSR, true);
- rebuildDependentElements(dsr, depth+1);
- }
- }
- else if (element instanceof DITStructureRule)
- {
- DITStructureRule d = (DITStructureRule) element;
- for (DITStructureRule dsr : ditStructureRulesByID.values())
- {
- if (dsr.getSuperiorRules().contains(d))
- {
- DITStructureRule newDSR = recreateFromDefinition(dsr);
- deregisterDITStructureRule(dsr);
- registerDITStructureRule(newDSR, true);
- rebuildDependentElements(dsr, depth+1);
- }
+ MatchingRuleUse newMRU = recreateFromDefinition(mru);
+ deregisterMatchingRuleUse(mru);
+ registerMatchingRuleUse(newMRU, true);
}
}
}
- private AttributeType recreateFromDefinition(AttributeType attrType)
- throws DirectoryException
+ private void rebuildDependentElements(ObjectClass c, int depth) throws DirectoryException
{
- ByteString value = ByteString.valueOfUtf8(attrType.toString());
- AttributeType copy =
- AttributeTypeSyntax.decodeAttributeType(value, this, false);
- setSchemaFile(copy, getSchemaFile(attrType));
- if (attrType.mayHaveSubordinateTypes())
+ circularityCheck(depth, c);
+ for (ObjectClass oc : objectClasses.values())
{
- copy.setMayHaveSubordinateTypes();
+ if (oc.getSuperiorClasses().contains(c))
+ {
+ ObjectClass newOC = recreateFromDefinition(oc);
+ deregisterObjectClass(oc);
+ registerObjectClass(newOC, true);
+ rebuildDependentElements(oc, depth + 1);
+ }
}
- return copy;
+
+ List<NameForm> mappedForms = nameFormsByOC.get(c);
+ if (mappedForms != null)
+ {
+ for (NameForm nf : mappedForms)
+ {
+ if (nf != null)
+ {
+ NameForm newNF = recreateFromDefinition(nf);
+ deregisterNameForm(nf);
+ registerNameForm(newNF, true);
+ rebuildDependentElements(nf, depth + 1);
+ }
+ }
+ }
+
+ for (DITContentRule dcr : ditContentRules.values())
+ {
+ if (dcr.getStructuralClass().equals(c) || dcr.getAuxiliaryClasses().contains(c))
+ {
+ DITContentRule newDCR = recreateFromDefinition(dcr);
+ deregisterDITContentRule(dcr);
+ registerDITContentRule(newDCR, true);
+ }
+ }
+ }
+
+ private void rebuildDependentElements(NameForm n, int depth) throws DirectoryException
+ {
+ circularityCheck(depth, n);
+ DITStructureRule dsr = ditStructureRulesByNameForm.get(n);
+ if (dsr != null)
+ {
+ DITStructureRule newDSR = recreateFromDefinition(dsr);
+ deregisterDITStructureRule(dsr);
+ registerDITStructureRule(newDSR, true);
+ rebuildDependentElements(dsr, depth + 1);
+ }
+ }
+
+ private void rebuildDependentElements(DITStructureRule d, int depth) throws DirectoryException
+ {
+ circularityCheck(depth, d);
+ for (DITStructureRule dsr : ditStructureRulesByID.values())
+ {
+ if (dsr.getSuperiorRules().contains(d))
+ {
+ DITStructureRule newDSR = recreateFromDefinition(dsr);
+ deregisterDITStructureRule(dsr);
+ registerDITStructureRule(newDSR, true);
+ rebuildDependentElements(dsr, depth + 1);
+ }
+ }
+ }
+
+ private String getSchemaFileName(AttributeType attributeType)
+ {
+ List<String> values = attributeType.getExtraProperties().get(ServerConstants.SCHEMA_PROPERTY_FILENAME);
+ return values != null && ! values.isEmpty() ? values.get(0) : null;
}
private DITContentRule recreateFromDefinition(DITContentRule dcr)
@@ -2022,13 +2050,10 @@
*/
public Schema duplicate()
{
- Schema dupSchema = new Schema();
+ Schema dupSchema = new Schema(schemaNG);
- dupSchema.attributeTypes.putAll(attributeTypes);
dupSchema.subordinateTypes.putAll(subordinateTypes);
dupSchema.objectClasses.putAll(objectClasses);
- dupSchema.syntaxes.putAll(syntaxes);
- dupSchema.matchingRules.putAll(matchingRules);
dupSchema.matchingRuleUses.putAll(matchingRuleUses);
dupSchema.ditContentRules.putAll(ditContentRules);
dupSchema.ditStructureRulesByID.putAll(ditStructureRulesByID);
@@ -2104,76 +2129,26 @@
concatFilePath = concatFile.getAbsolutePath();
File tempFile = new File(concatFilePath + ".tmp");
- BufferedWriter writer =
- new BufferedWriter(new FileWriter(tempFile, false));
- writer.write("dn: " + DirectoryServer.getSchemaDN());
- writer.newLine();
- writer.write("objectClass: top");
- writer.newLine();
- writer.write("objectClass: ldapSubentry");
- writer.newLine();
- writer.write("objectClass: subschema");
- writer.newLine();
-
- for (String line : attributeTypes)
+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile, false)))
{
- writer.write(ATTR_ATTRIBUTE_TYPES);
- writer.write(": ");
- writer.write(line);
+ writer.write("dn: " + DirectoryServer.getSchemaDN());
writer.newLine();
- }
-
- for (String line : objectClasses)
- {
- writer.write(ATTR_OBJECTCLASSES);
- writer.write(": ");
- writer.write(line);
+ writer.write("objectClass: top");
writer.newLine();
- }
-
- for (String line : nameForms)
- {
- writer.write(ATTR_NAME_FORMS);
- writer.write(": ");
- writer.write(line);
+ writer.write("objectClass: ldapSubentry");
writer.newLine();
- }
-
- for (String line : ditContentRules)
- {
- writer.write(ATTR_DIT_CONTENT_RULES);
- writer.write(": ");
- writer.write(line);
+ writer.write("objectClass: subschema");
writer.newLine();
+
+ writeLines(writer, ATTR_ATTRIBUTE_TYPES, attributeTypes);
+ writeLines(writer, ATTR_OBJECTCLASSES, objectClasses);
+ writeLines(writer, ATTR_NAME_FORMS, nameForms);
+ writeLines(writer, ATTR_DIT_CONTENT_RULES, ditContentRules);
+ writeLines(writer, ATTR_DIT_STRUCTURE_RULES, ditStructureRules);
+ writeLines(writer, ATTR_MATCHING_RULE_USE, matchingRuleUses);
+ writeLines(writer, ATTR_LDAP_SYNTAXES, ldapSyntaxes);
}
- for (String line : ditStructureRules)
- {
- writer.write(ATTR_DIT_STRUCTURE_RULES);
- writer.write(": ");
- writer.write(line);
- writer.newLine();
- }
-
- for (String line : matchingRuleUses)
- {
- writer.write(ATTR_MATCHING_RULE_USE);
- writer.write(": ");
- writer.write(line);
- writer.newLine();
- }
-
-
- for (String line : ldapSyntaxes)
- {
- writer.write(ATTR_LDAP_SYNTAXES);
- writer.write(": ");
- writer.write(line);
- writer.newLine();
- }
-
- writer.close();
-
if (concatFile.exists())
{
concatFile.delete();
@@ -2193,6 +2168,17 @@
}
}
+ private static void writeLines(BufferedWriter writer, String beforeColumn, Set<String> lines) throws IOException
+ {
+ for (String line : lines)
+ {
+ writer.write(beforeColumn);
+ writer.write(": ");
+ writer.write(line);
+ writer.newLine();
+ }
+ }
+
/**
@@ -2516,10 +2502,9 @@
mayInvoke=true)
public synchronized void destroy()
{
- if (attributeTypes != null)
+ if (schemaNG != null)
{
- attributeTypes.clear();
- attributeTypes = null;
+ schemaNG = null;
}
if (ditContentRules != null)
@@ -2540,12 +2525,6 @@
ditStructureRulesByNameForm = null;
}
- if (matchingRules != null)
- {
- matchingRules.clear();
- matchingRules = null;
- }
-
if (matchingRuleUses != null)
{
matchingRuleUses.clear();
@@ -2582,18 +2561,122 @@
extraAttributes = null;
}
- if (syntaxes != null)
- {
- syntaxes.clear();
- syntaxes = null;
- }
-
if(ldapSyntaxDescriptions != null)
{
ldapSyntaxDescriptions.clear();
ldapSyntaxDescriptions = null;
}
+ }
+ /**
+ * Update the schema using the provided schema updater.
+ * <p>
+ * An implicit lock is performed, so it is in general not necessary
+ * to call the {code lock()} and {code unlock() methods.
+ * However, these method should be used if/when the SchemaBuilder passed
+ * as an argument to the updater is not used to return the schema
+ * (see for example usage in {@code CoreSchemaProvider} class). This
+ * case should remain exceptional.
+ *
+ * @param updater
+ * the updater that returns a new schema
+ * @throws DirectoryException if there is any problem updating the schema
+ */
+ public void updateSchema(SchemaUpdater updater) throws DirectoryException
+ {
+ exclusiveLock.lock();
+ try
+ {
+ switchSchema(updater.update(new SchemaBuilder(schemaNG)));
+ }
+ finally
+ {
+ exclusiveLock.unlock();
+ }
+ }
+
+ /** Interface to update a schema provided a schema builder. */
+ public interface SchemaUpdater
+ {
+ /**
+ * Returns an updated schema.
+ *
+ * @param builder
+ * The builder on the current schema
+ * @return the new schema
+ */
+ org.forgerock.opendj.ldap.schema.Schema update(SchemaBuilder builder);
+ }
+
+ /**
+ * Updates the schema option if the new value differs from the old value.
+ *
+ * @param <T> the schema option's type
+ * @param option the schema option to update
+ * @param newValue the new value for the schema option
+ * @throws DirectoryException if there is any problem updating the schema
+ */
+ public <T> void updateSchemaOption(final Option<T> option, final T newValue) throws DirectoryException
+ {
+ final T oldValue = schemaNG.getOption(option);
+ if (!oldValue.equals(newValue))
+ {
+ updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public org.forgerock.opendj.ldap.schema.Schema update(SchemaBuilder builder)
+ {
+ return builder.setOption(option, newValue).toSchema();
+ }
+ });
+ }
+ }
+
+ /** Takes an exclusive lock on the schema. */
+ public void exclusiveLock()
+ {
+ exclusiveLock.lock();
+ }
+
+ /** Releases an exclusive lock on the schema. */
+ public void exclusiveUnlock()
+ {
+ exclusiveLock.unlock();
+ }
+
+ /**
+ * Adds the provided schema file to the provided schema element definition.
+ *
+ * @param definition
+ * The schema element definition
+ * @param schemaFile
+ * The name of the schema file to include in the definition
+ * @return The definition string of the element
+ * including the X-SCHEMA-FILE extension.
+ */
+ public static String addSchemaFileToElementDefinitionIfAbsent(String definition, String schemaFile)
+ {
+ if (schemaFile != null && !definition.contains(SCHEMA_PROPERTY_FILENAME))
+ {
+ int pos = definition.lastIndexOf(')');
+ return definition.substring(0, pos).trim() + " " + SCHEMA_PROPERTY_FILENAME + " '" + schemaFile + "' )";
+ }
+ return definition;
+ }
+
+ private void switchSchema(org.forgerock.opendj.ldap.schema.Schema newSchema) throws DirectoryException
+ {
+ rejectSchemaWithWarnings(newSchema);
+ setSchemaNG(newSchema);
+ }
+
+ private void rejectSchemaWithWarnings(org.forgerock.opendj.ldap.schema.Schema newSchema) throws DirectoryException
+ {
+ Collection<LocalizableMessage> warnings = newSchema.getWarnings();
+ if (!warnings.isEmpty())
+ {
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
+ ERR_SCHEMA_HAS_WARNINGS.get(warnings.size(), Utils.joinAsString("; ", warnings)));
+ }
}
}
-
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/SearchFilter.java b/opendj-server-legacy/src/main/java/org/opends/server/types/SearchFilter.java
index 014a85e..6fa424b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/SearchFilter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/SearchFilter.java
@@ -22,11 +22,12 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
* Portions Copyright 2013-2014 Manuel Gaupp
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import static org.opends.messages.CoreMessages.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/SortKey.java b/opendj-server-legacy/src/main/java/org/opends/server/types/SortKey.java
index 780b3d6..40a26bd 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/SortKey.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/SortKey.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.schema.MatchingRule;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/SubEntry.java b/opendj-server-legacy/src/main/java/org/opends/server/types/SubEntry.java
index c0e0b66..fe5d72d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/SubEntry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/SubEntry.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttribute.java b/opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttribute.java
index 56da283..900a388 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttribute.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttribute.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttributeRule.java b/opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttributeRule.java
index be524cf..2029c17 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttributeRule.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/VirtualAttributeRule.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.types;
@@ -33,6 +33,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.util.Utils;
import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn;
import org.opends.server.admin.std.server.VirtualAttributeCfg;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationAddOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationAddOperation.java
index 00872e7..e1b2c3c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationAddOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationAddOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types.operation;
@@ -32,7 +32,7 @@
import java.util.Map;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationCompareOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationCompareOperation.java
index 985e24e..03022ab 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationCompareOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostOperationCompareOperation.java
@@ -22,13 +22,13 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types.operation;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseAddOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseAddOperation.java
index e8340de..e15a6aa 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseAddOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseAddOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types.operation;
@@ -31,6 +31,7 @@
import java.util.List;
import java.util.Map;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ByteString;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseCompareOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseCompareOperation.java
index 7400708..746741d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseCompareOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostResponseCompareOperation.java
@@ -22,12 +22,13 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types.operation;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ByteString;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostSynchronizationAddOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostSynchronizationAddOperation.java
index 3c0eefd..94a63fb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostSynchronizationAddOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PostSynchronizationAddOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types.operation;
@@ -32,7 +32,7 @@
import java.util.Map;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationAddOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationAddOperation.java
index 10b68de..9d5d858 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationAddOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationAddOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types.operation;
@@ -32,7 +32,7 @@
import java.util.Map;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationCompareOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationCompareOperation.java
index 94fa900..8b288ad 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationCompareOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/operation/PreOperationCompareOperation.java
@@ -22,13 +22,13 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types.operation;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/util/AddChangeRecordEntry.java b/opendj-server-legacy/src/main/java/org/opends/server/util/AddChangeRecordEntry.java
index dcc170f..fc1e766 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/util/AddChangeRecordEntry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/util/AddChangeRecordEntry.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.util;
@@ -35,7 +35,7 @@
import java.util.Map;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/util/LDIFReader.java b/opendj-server-legacy/src/main/java/org/opends/server/util/LDIFReader.java
index 2776517..ab83cd9 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/util/LDIFReader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/util/LDIFReader.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.util;
@@ -58,7 +58,7 @@
import org.opends.server.types.AcceptRejectWarn;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/util/LDIFWriter.java b/opendj-server-legacy/src/main/java/org/opends/server/util/LDIFWriter.java
index faef2ba..38d142f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/util/LDIFWriter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/util/LDIFWriter.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.util;
@@ -38,6 +38,7 @@
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.tools.makeldif.TemplateEntry;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import static org.forgerock.util.Reject.*;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java b/opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
index ae84ca4..cbf6f19 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.util;
@@ -56,6 +56,7 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import com.forgerock.opendj.cli.Argument;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
index 8772e9d..1003019 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.workflowelement.localbackend;
@@ -58,7 +58,7 @@
import org.opends.server.schema.UserPasswordSyntax;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.CanceledOperationException;
import org.opends.server.types.Control;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendBindOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendBindOperation.java
index 09f695e..280e92f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendBindOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendBindOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.workflowelement.localbackend;
@@ -34,6 +34,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.admin.std.meta.PasswordPolicyCfgDefn;
import org.opends.server.api.AuthenticationPolicyState;
import org.opends.server.api.Backend;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java
index 8fc12f5..9a7060e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.workflowelement.localbackend;
@@ -35,6 +35,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.api.AccessControlHandler;
import org.opends.server.api.Backend;
import org.opends.server.api.ClientConnection;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
index 81e6483..33f280f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.workflowelement.localbackend;
@@ -50,7 +50,7 @@
import org.opends.server.core.ModifyDNOperationWrapper;
import org.opends.server.core.PersistentSearch;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.CanceledOperationException;
import org.opends.server.types.Control;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
index 831d545..f5b6050 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2011 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.workflowelement.localbackend;
@@ -69,7 +69,7 @@
import org.opends.server.types.AccountStatusNotificationType;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.CanceledOperationException;
import org.opends.server.types.Control;
diff --git a/opendj-server-legacy/src/messages/org/opends/messages/schema.properties b/opendj-server-legacy/src/messages/org/opends/messages/schema.properties
index f0c80e2..0382824 100644
--- a/opendj-server-legacy/src/messages/org/opends/messages/schema.properties
+++ b/opendj-server-legacy/src/messages/org/opends/messages/schema.properties
@@ -20,7 +20,7 @@
# CDDL HEADER END
#
# Copyright 2006-2010 Sun Microsystems, Inc.
-# Portions Copyright 2011-2015 ForgeRock AS
+# Portions Copyright 2011-2016 ForgeRock AS
# Portions Copyright 2012-2014 Manuel Gaupp
@@ -906,3 +906,6 @@
characters at the end of the assertion
ERR_CERTIFICATE_MATCH_GSER_INVALID_339=An error occurred while parsing the \
GSER String: "%s"
+ERR_ATTR_TYPE_CANNOT_REGISTER_340=Attribute type could not be registered from definition: %s
+ERR_SCHEMA_HAS_WARNINGS_341=There should be no warnings on the schema, \
+ but instead got %d warnings: %s
\ No newline at end of file
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java b/opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java
index a1d513b..f586df6 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Copyright 2014-2015 ForgeRock AS.
+ * Copyright 2014-2016 ForgeRock AS.
*/
package org.opends.server;
@@ -30,11 +30,8 @@
import java.io.File;
import org.forgerock.opendj.config.server.ServerManagementContext;
-import org.forgerock.opendj.ldap.schema.Schema;
-import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.opends.server.core.ConfigurationBootstrapper;
import org.opends.server.core.ServerContext;
-import org.opends.server.schema.SchemaUpdater;
import org.opends.server.types.DirectoryEnvironmentConfig;
import org.opends.server.types.InitializationException;
@@ -72,9 +69,10 @@
return this;
}
- public ServerContextBuilder schemaNG(Schema schema)
+ public ServerContextBuilder schema(org.opends.server.types.Schema schema)
{
- when(serverContext.getSchemaNG()).thenReturn(schema);
+ when(serverContext.getSchema()).thenReturn(schema);
+ when(serverContext.getSchemaNG()).thenReturn(schema.getSchemaNG());
return this;
}
@@ -85,12 +83,6 @@
return this;
}
- public ServerContextBuilder schemaUpdater(SchemaUpdater updater)
- {
- when(serverContext.getSchemaUpdater()).thenReturn(updater);
- return this;
- }
-
/**
* Ensure that configuration is fully bootstrapped. Only use when necessary as
* it will impact test performance.
@@ -98,38 +90,9 @@
public ServerContextBuilder withConfigurationBootstrapped()
throws InitializationException
{
- if (serverContext.getSchemaUpdater() == null) {
- throw new RuntimeException("You must set a non-null schema updater to bootstrap configuration.");
- }
- final ServerManagementContext serverManagementContext =
- ConfigurationBootstrapper.bootstrap(serverContext);
- when(serverContext.getServerManagementContext()).thenReturn(
- serverManagementContext);
+ final ServerManagementContext serverManagementContext = ConfigurationBootstrapper.bootstrap(serverContext);
+ when(serverContext.getServerManagementContext()).thenReturn(serverManagementContext);
return this;
}
- /** A mock for schema updater. */
- public static final class MockSchemaUpdater implements SchemaUpdater
- {
- private Schema schema;
-
- public MockSchemaUpdater(Schema schema)
- {
- this.schema = schema;
- }
-
- @Override
- public boolean updateSchema(Schema schema)
- {
- this.schema = schema;
- return true;
- }
-
- @Override
- public SchemaBuilder getSchemaBuilder()
- {
- return new SchemaBuilder(schema);
- }
- }
-
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java b/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
index 8dad89a..f0a07fd 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
* Portions Copyright 2013 Manuel Gaupp
*/
package org.opends.server;
@@ -214,16 +214,7 @@
public static void startFakeServer() throws Exception
{
schemaBeforeStartingFakeServer = DirectoryServer.getSchema();
- DirectoryServer.setSchema(initializeInMemory(new Schema()));
- }
-
- private static Schema initializeInMemory(final Schema schema) throws Exception
- {
- for (AttributeType attributeType : AttributeTypeConstants.ALL)
- {
- schema.registerAttributeType(attributeType, true);
- }
- return schema;
+ DirectoryServer.setSchema(new Schema(org.forgerock.opendj.ldap.schema.Schema.getDefaultSchema()));
}
/**
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/AttributeTypePropertyDefinitionTest.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/AttributeTypePropertyDefinitionTest.java
index 34d9d41..2886d76 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/AttributeTypePropertyDefinitionTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/AttributeTypePropertyDefinitionTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2015 ForgeRock AS.
+ * Portions Copyright 2015-2016 ForgeRock AS.
*/
package org.opends.server.admin;
@@ -32,7 +32,7 @@
import org.opends.server.DirectoryServerTestCase;
import org.opends.server.admin.std.meta.RootCfgDefn;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfg.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfg.java
index 489ca7b..85729b1 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfg.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfg.java
@@ -22,19 +22,16 @@
*
*
* Copyright 2007-2008 Sun Microsystems, Inc.
+ * Portions copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.admin;
-
-
import java.util.SortedSet;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
-
-
/**
* A server-side interface for querying Test Child settings.
* <p>
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgClient.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgClient.java
index bff76f4..691bd72 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgClient.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgClient.java
@@ -22,22 +22,19 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
+ * Portions copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.admin;
-
-
import java.util.Collection;
import java.util.SortedSet;
import org.opends.server.admin.ConfigurationClient;
import org.opends.server.admin.PropertyException;
import org.opends.server.admin.ManagedObjectDefinition;
import org.opends.server.admin.TestChildCfg;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
-
-
/**
* A client-side interface for reading and modifying Test Child
* settings.
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgDefn.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgDefn.java
index 6757d1c..af37064 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgDefn.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestChildCfgDefn.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2008 Sun Microsystems, Inc.
- * Portions Copyright 2015 ForgeRock AS.
+ * Portions Copyright 2015-2016 ForgeRock AS.
*/
package org.opends.server.admin;
@@ -56,7 +56,7 @@
import org.opends.server.admin.std.server.ConnectionHandlerCfg;
import org.opends.server.admin.server.ServerManagedObject;
import org.opends.server.admin.TestChildCfg;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfg.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfg.java
index 0474d47..1af5d9b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfg.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfg.java
@@ -22,23 +22,19 @@
*
*
* Copyright 2007-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.admin;
-
-
import java.util.SortedSet;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationAddListener;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.server.ConfigurationDeleteListener;
import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
-
-
/**
* A server-side interface for querying Test Parent settings.
* <p>
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgClient.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgClient.java
index 932b6de..05c7ea3 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgClient.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgClient.java
@@ -22,11 +22,10 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
+ * Portions copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.admin;
-
-
import java.util.Collection;
import java.util.SortedSet;
import org.opends.server.admin.client.AuthorizationException;
@@ -40,11 +39,9 @@
import org.opends.server.admin.DefinitionDecodingException;
import org.opends.server.admin.ManagedObjectDefinition;
import org.opends.server.admin.ManagedObjectNotFoundException;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
-
-
/**
* A client-side interface for reading and modifying Test Parent
* settings.
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgDefn.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgDefn.java
index 49a4f3d..eaca730 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgDefn.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/TestParentCfgDefn.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.admin;
@@ -60,7 +60,7 @@
import org.opends.server.admin.server.ServerManagedObject;
import org.opends.server.admin.UndefinedDefaultBehaviorProvider;
import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/ValidateConfigDefinitionsTest.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/ValidateConfigDefinitionsTest.java
index 86f6010..e2fcfe5 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/ValidateConfigDefinitionsTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/ValidateConfigDefinitionsTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.admin;
@@ -38,7 +38,7 @@
import org.opends.server.DirectoryServerTestCase;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
import org.testng.Assert;
@@ -188,13 +188,14 @@
Schema schema = DirectoryServer.getSchema();
- AttributeType attrType = schema.getAttributeType(ldapAttrName.toLowerCase());
// LDAP attribute exists
- if (attrType == null) {
+ if (!schema.hasAttributeType(ldapAttrName.toLowerCase()))
+ {
errors.append(propName + " property on config object " + objName + " is declared" +
" to use ldap attribute " + ldapAttrName + ", but this attribute is not in the schema ").append(EOL + EOL);
} else {
+ AttributeType attrType = schema.getAttributeType(ldapAttrName.toLowerCase());
// LDAP attribute is multivalued if the property is multivalued
if (propDef.hasOption(PropertyOption.MULTI_VALUED) && attrType.isSingleValue()) {
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/admin/client/spi/PropertySetTest.java b/opendj-server-legacy/src/test/java/org/opends/server/admin/client/spi/PropertySetTest.java
old mode 100755
new mode 100644
index 90ec8a6..3c8a27a
--- a/opendj-server-legacy/src/test/java/org/opends/server/admin/client/spi/PropertySetTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/admin/client/spi/PropertySetTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.admin.client.spi;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/TargetAttrTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/TargetAttrTestCase.java
index 0be9464..1b9581e 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/TargetAttrTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/authorization/dseecompat/TargetAttrTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.authorization.dseecompat;
@@ -33,7 +33,7 @@
import java.util.Map;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
index 11d7bca..d2ec8c8 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.backends;
@@ -43,6 +43,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
@@ -58,7 +59,17 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.schema.SchemaConstants;
import org.opends.server.tools.LDAPModify;
-import org.opends.server.types.*;
+import org.opends.server.types.DITContentRule;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
+import org.opends.server.types.ExistingFileBehavior;
+import org.opends.server.types.InitializationException;
+import org.opends.server.types.LDIFExportConfig;
+import org.opends.server.types.LDIFImportConfig;
+import org.opends.server.types.MatchingRuleUse;
+import org.opends.server.types.ObjectClass;
+import org.opends.server.types.SearchFilter;
import org.opends.server.util.CollectionUtils;
import org.opends.server.util.ServerConstants;
import org.testng.annotations.BeforeClass;
@@ -3169,10 +3180,15 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
int ruleID = 999001;
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
- assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, true);
+ }
+
+ private void assertSchemaHasDITStructureRule(int ruleID, boolean expected)
+ {
+ assertEquals(DirectoryServer.getSchema().getDITStructureRulesByID().containsKey(ruleID), expected);
}
/**
@@ -3215,10 +3231,10 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
int ruleID = 999002;
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
assertEquals(runModify(argsPermissive(), ldif, System.err), 0);
- assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, true);
}
/**
@@ -3255,14 +3271,14 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
int ruleID = 999010;
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
File schemaFile = new File(SchemaConfigManager.getSchemaDirectoryPath(),
"98-schema-test-dsr.ldif");
assertFalse(schemaFile.exists());
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
- assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, true);
assertTrue(schemaFile.exists());
}
@@ -3314,10 +3330,10 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
int ruleID = 999003;
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
- assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, true);
}
/**
@@ -3340,10 +3356,10 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
int ruleID = 999004;
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
}
/**
@@ -3377,10 +3393,10 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
int ruleID = 999005;
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
}
/**
@@ -3499,10 +3515,10 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
int ruleID = 999006;
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
}
/**
@@ -3556,10 +3572,10 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
int ruleID = 999007;
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
- assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, true);
ldif = toLdif(
"dn: cn=schema",
@@ -3575,7 +3591,7 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
- assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+ assertSchemaHasDITStructureRule(ruleID, false);
}
private MatchingRule getMatchingRule(String name, String oid, boolean isObsolete)
@@ -3612,7 +3628,7 @@
"NAME 'testAddMRUSuccessful' APPLIES cn " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
@@ -3644,7 +3660,7 @@
"X-SCHEMA-FILE '98-schema-test-mru.ldif' " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
File schemaFile = new File(SchemaConfigManager.getSchemaDirectoryPath(),
"98-schema-test-mru.ldif");
@@ -3688,7 +3704,7 @@
"NAME 'testReplaceMRUSuccessful' APPLIES ( cn $ sn ) " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertEquals(runModify(argsPermissive(), ldif, System.err), 0);
@@ -3730,7 +3746,7 @@
"NAME 'testRemoveAndAddMRU' APPLIES ( cn $ sn ) " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
@@ -3769,7 +3785,7 @@
"NAME 'testAddMRUMRConflict2' APPLIES sn " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
@@ -3822,7 +3838,7 @@
"APPLIES xxxundefinedxxx " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
}
@@ -3850,11 +3866,16 @@
"APPLIES ( cn $ xxxundefinedxxx ) " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
}
+ private void assertSchemaDoesNotHaveMatchingRuleUse(MatchingRule matchingRule)
+ {
+ assertFalse(DirectoryServer.getSchema().getMatchingRuleUses().containsKey(matchingRule));
+ }
+
/**
* Tests the behavior of the schema backend when attempting to add a new
* matching rule whose matching rule is OBSOLETE.
@@ -3876,7 +3897,7 @@
"NAME 'testAddMatchingRuleUseObsoleteMatchingRule' " +
"APPLIES cn X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
}
@@ -3907,7 +3928,7 @@
"APPLIES testAddMRUObsoleteAT " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
}
@@ -3964,7 +3985,7 @@
"NAME 'testRemoveMRUSuccessful' APPLIES cn " +
"X-ORIGIN 'SchemaBackendTestCase' )");
- assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+ assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
@@ -4236,7 +4257,8 @@
"X-ORIGIN 'SchemaBackendTestCase' )");
String attrName = "testmatchingruleusematchingruleat1";
- assertNull(DirectoryServer.getSchema().getAttributeType(attrName));
+
+ assertFalse(DirectoryServer.getSchema().hasAttributeType(attrName));
assertEquals(runModify(argsNotPermissive(), ldif, System.err), 20);
}
@@ -4272,7 +4294,7 @@
"dn: cn=schema",
"changetype: modify",
"add: objectClasses",
- "objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1' )",
+ "objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1')",
"",
"dn: cn=schema",
"changetype: modify",
@@ -4280,7 +4302,7 @@
"objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1' )",
"-",
"add: attributeTypes",
- "attributeTypes: ( testissue1318at-oid NAME 'testIssue1381AT' )",
+ "attributeTypes: ( testissue1318at-oid NAME 'testIssue1381AT' SUP name)",
"-",
"add: objectClasses",
"objectClasses: ( testissue1318oc2-oid NAME 'testIssue1381OC2' " +
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java
index aa5c52f..2ac8bc0 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Copyright 2015 ForgeRock AS
+ * Copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -79,10 +79,11 @@
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.SearchOperation;
+import org.opends.server.core.ServerContext;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.DN;
@@ -1144,8 +1145,10 @@
when(backendCfg.listBackendIndexes()).thenReturn(new String[0]);
when(backendCfg.listBackendVLVIndexes()).thenReturn(new String[0]);
- final Storage storage = backend.configureStorage(backendCfg, DirectoryServer.getInstance().getServerContext());
- final RootContainer readOnlyContainer = new RootContainer(backend.getBackendID(), storage, backendCfg);
+ ServerContext serverContext = DirectoryServer.getInstance().getServerContext();
+ final Storage storage = backend.configureStorage(backendCfg, serverContext);
+ final RootContainer readOnlyContainer =
+ new RootContainer(backend.getBackendID(), serverContext, storage, backendCfg);
// Put backend offline so that export LDIF open read-only container
backend.finalizeBackend();
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/TestDnKeyFormat.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/TestDnKeyFormat.java
index 923e33d..4e93d13 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/TestDnKeyFormat.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/TestDnKeyFormat.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
@@ -35,6 +35,7 @@
import org.opends.server.DirectoryServerTestCase;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.LDIFReader;
import org.opends.server.util.StaticUtils;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/controls/MatchedValuesControlTest.java b/opendj-server-legacy/src/test/java/org/opends/server/controls/MatchedValuesControlTest.java
index 59727dd..001c1eb 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/controls/MatchedValuesControlTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/controls/MatchedValuesControlTest.java
@@ -23,7 +23,7 @@
*
* Copyright 2006-2008 Sun Microsystems, Inc.
* Portions Copyright 2013-2014 Manuel Gaupp
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.controls;
@@ -31,13 +31,10 @@
import java.util.ArrayList;
import java.util.List;
-import org.opends.server.api.MatchingRuleFactory;
+import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.schema.BooleanEqualityMatchingRuleFactory;
-import org.opends.server.schema.DistinguishedNameEqualityMatchingRuleFactory;
-import org.opends.server.schema.IntegerEqualityMatchingRuleFactory;
-import org.opends.server.types.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.forgerock.opendj.io.ASN1Writer;
@@ -48,11 +45,9 @@
import static org.testng.Assert.*;
-/**
- * Test MatchedValuesControl.
- */
-public class MatchedValuesControlTest
- extends ControlsTestCase
+/** Test MatchedValuesControl. */
+@SuppressWarnings("javadoc")
+public class MatchedValuesControlTest extends ControlsTestCase
{
/**
@@ -673,24 +668,15 @@
}
}
- @DataProvider(name = "extensibleMatchFilterData")
- public Object[][] createExtensibleMatchFilterData() throws Exception
+ @DataProvider
+ public Object[][] extensibleMatchFilterData() throws Exception
{
- MatchingRuleFactory<?> factory = new BooleanEqualityMatchingRuleFactory();
- factory.initializeMatchingRule(null);
- MatchingRule booleanEquality = factory.getMatchingRules().iterator().next();
- factory = new IntegerEqualityMatchingRuleFactory();
- factory.initializeMatchingRule(null);
- MatchingRule integerEquality = factory.getMatchingRules().iterator().next();
- factory = new DistinguishedNameEqualityMatchingRuleFactory();
- factory.initializeMatchingRule(null);
- MatchingRule distinguishedEquality = factory.getMatchingRules().iterator().next();
-
return new Object[][]
{
- { "description", booleanEquality, "description" },
- { "objectclass", integerEquality ,"top" },
- { "fakeobjecttype", distinguishedEquality, "fakevalue" }, };
+ { "description", CoreSchema.getBooleanMatchingRule(), "description" },
+ { "objectclass", CoreSchema.getIntegerMatchingRule(), "top" },
+ { "fakeobjecttype", CoreSchema.getDistinguishedNameMatchingRule(), "fakevalue" },
+ };
}
/**
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/controls/ServerSideSortControlTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/controls/ServerSideSortControlTestCase.java
index 52d156b..01574ff 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/controls/ServerSideSortControlTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/controls/ServerSideSortControlTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.controls;
@@ -38,7 +38,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/controls/VLVControlTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/controls/VLVControlTestCase.java
index 3a37213..5cdc9a2 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/controls/VLVControlTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/controls/VLVControlTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.controls;
@@ -43,6 +43,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.protocols.ldap.LDAPResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/core/AddOperationTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/core/AddOperationTestCase.java
index a133969..b57db32 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/core/AddOperationTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/core/AddOperationTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -50,7 +50,7 @@
import org.opends.server.tools.LDAPReader;
import org.opends.server.tools.LDAPWriter;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/core/PasswordPolicyTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/core/PasswordPolicyTestCase.java
index 8f861e8..e0f2123 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/core/PasswordPolicyTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/core/PasswordPolicyTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -45,6 +45,7 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.schema.UserPasswordSyntax;
import org.opends.server.tools.LDAPModify;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.TimeThread;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java
index d26e2ca..821aa94 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Copyright 2014-2015 ForgeRock AS.
+ * Copyright 2014-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -30,12 +30,8 @@
import java.io.File;
-import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.schema.Schema;
-import org.opends.server.ServerContextBuilder.MockSchemaUpdater;
import org.opends.server.TestCaseUtils;
-import org.opends.server.schema.SchemaUpdater;
-import org.opends.server.types.InitializationException;
import org.testng.annotations.Test;
@SuppressWarnings("javadoc")
@@ -47,12 +43,8 @@
@Test
public void testSchemaInitialization() throws Exception
{
- MockSchemaUpdater schemaUpdater = new MockSchemaUpdater(Schema.getEmptySchema());
- initializeSchemaHandler(schemaUpdater);
-
- assertThat(schemaUpdater.getSchemaBuilder()).isNotNull();
-
- Schema schema = schemaUpdater.getSchemaBuilder().toSchema();
+ org.opends.server.types.Schema schema = new org.opends.server.types.Schema(Schema.getCoreSchema());
+ initializeSchemaHandler(schema);
assertThat(schema.getMatchingRules()).isNotEmpty(); // some matching rules defined
schema.getSyntax(DIRECTORY_STRING_SYNTAX_OID);
@@ -61,15 +53,14 @@
schema.getObjectClass("changeLogEntry"); // from file 03-changelog.ldif
}
-
- private void initializeSchemaHandler(SchemaUpdater updater) throws InitializationException, ConfigException
+ private void initializeSchemaHandler(org.opends.server.types.Schema schema) throws Exception
{
- final ServerContext serverContext = aServerContext().
- schemaDirectory(new File(TestCaseUtils.getBuildRoot(), "resource/schema")).
- configFile(TestCaseUtils.getTestResource("config-small.ldif")).
- schemaUpdater(updater).
- withConfigurationBootstrapped().
- build();
+ final ServerContext serverContext = aServerContext()
+ .schemaDirectory(new File(TestCaseUtils.getBuildRoot(), "resource/schema"))
+ .configFile(TestCaseUtils.getTestResource("config-small.ldif"))
+ .withConfigurationBootstrapped()
+ .schema(schema)
+ .build();
SchemaHandler schemaHandler = new SchemaHandler();
schemaHandler.initialize(serverContext);
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/core/SubentryManagerTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/core/SubentryManagerTestCase.java
index 4f503c1..99860b7 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/core/SubentryManagerTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/core/SubentryManagerTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.core;
@@ -44,7 +44,7 @@
import org.opends.server.tools.LDAPDelete;
import org.opends.server.tools.LDAPModify;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/core/SubentryPasswordPolicyTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/core/SubentryPasswordPolicyTestCase.java
index 1941faf..4b46f92 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/core/SubentryPasswordPolicyTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/core/SubentryPasswordPolicyTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.core;
@@ -34,7 +34,7 @@
import org.opends.server.TestCaseUtils;
import org.opends.server.api.AuthenticationPolicy;
import org.opends.server.api.PasswordValidator;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.util.StaticUtils;
@@ -288,9 +288,7 @@
assertEquals(policy.getLockoutDuration(), 300);
assertEquals(policy.getLockoutFailureCount(), 3);
assertEquals(policy.isForceChangeOnReset(), true);
- assertTrue(policy.getPasswordAttribute(
- ).getPrimaryName().equalsIgnoreCase(
- "authPassword"));
+ assertTrue(policy.getPasswordAttribute().getNameOrOID().equalsIgnoreCase("authPassword"));
assertEquals(policy.getMinPasswordAge(), 600);
assertEquals(policy.getMaxPasswordAge(), 2147483647);
assertEquals(policy.getPasswordHistoryCount(), 5);
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/core/TestModifyDNOperation.java b/opendj-server-legacy/src/test/java/org/opends/server/core/TestModifyDNOperation.java
index 895fa19..c53c927 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/core/TestModifyDNOperation.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/core/TestModifyDNOperation.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
* Portions copyright 2013 Manuel Gaupp
*/
package org.opends.server.core;
@@ -40,6 +40,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.controls.ProxiedAuthV1Control;
import org.opends.server.controls.ProxiedAuthV2Control;
@@ -56,7 +57,6 @@
import org.opends.server.tools.LDAPModify;
import org.opends.server.tools.LDAPWriter;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.CancelRequest;
import org.opends.server.types.CancelResult;
import org.opends.server.types.Control;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntityTagVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntityTagVirtualAttributeProviderTestCase.java
index 0244366..20e7ca8 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntityTagVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntityTagVirtualAttributeProviderTestCase.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -60,7 +60,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPFilter;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java
index fb1f769..9037285 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -33,6 +33,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn;
import org.opends.server.api.VirtualAttributeProvider;
@@ -41,7 +42,6 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java
index 3916712..4008a06 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -32,6 +32,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn;
import org.opends.server.core.DirectoryServer;
@@ -39,7 +40,6 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
index 528cc39..54fa9b1 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -43,6 +43,7 @@
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.protocols.ldap.LDAPModification;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/ExtensionTestUtils.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/ExtensionTestUtils.java
index 25e5bd4..a033191 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/ExtensionTestUtils.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/ExtensionTestUtils.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Copyright 2013-2014 ForgeRock AS
+ * Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -29,7 +29,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.schema.SchemaConstants;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
@@ -37,9 +37,7 @@
import static org.opends.server.protocols.internal.Requests.*;
import static org.testng.Assert.*;
-/**
- * Utility class providing common code for extensions tests.
- */
+/** Utility class providing common code for extensions tests. */
@SuppressWarnings("javadoc")
class ExtensionTestUtils
{
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java
index eebf3c3..5d54de6 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -40,7 +40,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java
index 59a8eed..43d5720 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -39,7 +39,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.testng.annotations.BeforeClass;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProviderTestCase.java
index 71b3827..9998a80 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/IsMemberOfVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -42,7 +42,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyTestCase.java
index 7dd212d..3a57c15 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyTestCase.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.extensions;
@@ -57,6 +57,7 @@
import org.opends.server.schema.UserPasswordSyntax;
import org.opends.server.tools.LDAPReader;
import org.opends.server.tools.LDAPWriter;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.StaticUtils;
import org.opends.server.util.TimeThread;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java
index d986f3c..733b9d6 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -37,7 +37,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.testng.annotations.BeforeClass;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java
index 6260361..e1aac3a 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/PasswordModifyExtendedOperationTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.extensions;
@@ -43,6 +43,7 @@
import org.opends.server.core.*;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.tools.LDAPPasswordModify;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java
index e80b829..72ed39c 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -38,7 +38,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapperTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapperTestCase.java
index b348f1b..3e7eb5b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapperTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapperTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
* Portions Copyright 2013 Manuel Gaupp
*/
package org.opends.server.extensions;
@@ -49,7 +49,7 @@
import org.opends.server.tools.LDAPSearch;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapperTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapperTestCase.java
index 9e99feb..4b92dd7 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapperTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapperTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -48,7 +48,7 @@
import org.opends.server.tools.LDAPSearch;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java
index f850466..09f26a3 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -38,7 +38,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/UserDefinedVirtualAttributeProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/UserDefinedVirtualAttributeProviderTestCase.java
index d4714c3..42a234a 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/UserDefinedVirtualAttributeProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/UserDefinedVirtualAttributeProviderTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -40,7 +40,7 @@
import org.opends.server.protocols.internal.SearchRequest;
import org.opends.server.tools.LDAPModify;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.VirtualAttributeRule;
import org.testng.annotations.BeforeClass;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/extensions/VirtualStaticGroupTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/extensions/VirtualStaticGroupTestCase.java
index 9529b5d..3cb7e62 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/extensions/VirtualStaticGroupTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/extensions/VirtualStaticGroupTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.extensions;
@@ -41,6 +41,7 @@
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/plugins/DelayPreOpPlugin.java b/opendj-server-legacy/src/test/java/org/opends/server/plugins/DelayPreOpPlugin.java
index 5753743..49d6450 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/plugins/DelayPreOpPlugin.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/plugins/DelayPreOpPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -37,8 +37,8 @@
import org.forgerock.opendj.io.ASN1;
import org.forgerock.opendj.io.ASN1Reader;
import org.forgerock.opendj.io.ASN1Writer;
-import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.admin.std.server.PluginCfg;
import org.opends.server.api.plugin.DirectoryServerPlugin;
import org.opends.server.api.plugin.PluginResult;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java
index ccf090d..092bf75 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/plugins/EntryUUIDPluginTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -41,7 +41,7 @@
import org.opends.server.admin.std.server.EntryUUIDPluginCfg;
import org.opends.server.api.plugin.PluginType;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LDIFImportConfig;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java
index 81f6e2d..8e3010a 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/plugins/LastModPluginTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -46,7 +46,7 @@
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.ModifyOperation;
import org.opends.server.protocols.internal.InternalClientConnection;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryConfig;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java
index 400c131..781e68b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java
@@ -23,7 +23,7 @@
*
* Copyright 2008-2010 Sun Microsystems, Inc.
* Portions copyright 2011 profiq s.r.o.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -36,6 +36,7 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.admin.server.AdminTestCaseUtils;
import org.opends.server.admin.std.meta.ReferentialIntegrityPluginCfgDefn;
@@ -47,7 +48,6 @@
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/plugins/UniqueAttributePluginTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/plugins/UniqueAttributePluginTestCase.java
index f83cd1b..11973e9 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/plugins/UniqueAttributePluginTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/plugins/UniqueAttributePluginTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -42,6 +42,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.ModifyOperation;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.testng.annotations.*;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/plugins/UpdatePreOpPlugin.java b/opendj-server-legacy/src/test/java/org/opends/server/plugins/UpdatePreOpPlugin.java
index 837bf7a..1f31b01 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/plugins/UpdatePreOpPlugin.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/plugins/UpdatePreOpPlugin.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.plugins;
@@ -38,7 +38,7 @@
import org.opends.server.api.plugin.PluginResult;
import org.opends.server.api.plugin.PluginType;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Modification;
import org.opends.server.types.ObjectClass;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java
index 0048747..23acddc 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.protocols.ldap;
@@ -43,7 +43,7 @@
import org.opends.server.DirectoryServerTestCase;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.LDAPException;
import org.opends.server.types.RDN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java
index 5029687..ba2acb1 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.protocols.ldap;
@@ -36,9 +36,9 @@
import org.forgerock.opendj.io.ASN1Writer;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.LDAPException;
import org.opends.server.types.RDN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java
index bbd725d..ce3af1e 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.protocols.ldap;
@@ -36,9 +36,9 @@
import org.forgerock.opendj.io.ASN1Writer;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.LDAPException;
import org.opends.server.types.RDN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestLDAPConnectionHandler.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestLDAPConnectionHandler.java
index 7b21726..0a9490b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestLDAPConnectionHandler.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestLDAPConnectionHandler.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.protocols.ldap;
@@ -41,7 +41,7 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java
index 9640a24..b70a0da 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.protocols.ldap;
@@ -43,7 +43,7 @@
import org.opends.server.DirectoryServerTestCase;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.LDAPException;
import org.opends.server.types.RDN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java
index 23444d0..d01e700 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.protocols.ldap;
@@ -36,9 +36,9 @@
import org.forgerock.opendj.io.ASN1Writer;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.LDAPException;
import org.opends.server.types.RDN;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/GenerationIdTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/GenerationIdTest.java
index 76aa3c3..9aa3970 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/GenerationIdTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/GenerationIdTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication;
@@ -66,7 +66,7 @@
import org.opends.server.replication.service.ReplicationBroker;
import org.opends.server.tasks.LdifFileWriter;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/SchemaReplicationTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/SchemaReplicationTest.java
index d4d93dd..c530349 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/SchemaReplicationTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/SchemaReplicationTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
*/
package org.opends.server.replication;
@@ -130,7 +130,7 @@
{
// Modify the schema
Attribute attr = Attributes.create("attributetypes",
- "( 2.5.44.77.33 NAME 'dummy' )");
+ "( 2.5.44.77.33 NAME 'dummy' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )");
Modification mod = new Modification(ADD, attr);
processModify(baseDN, mod);
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/UpdateOperationTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/UpdateOperationTest.java
index a615d4d..1f5135b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/UpdateOperationTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/UpdateOperationTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication;
@@ -48,6 +48,7 @@
import org.opends.server.replication.common.CSNGenerator;
import org.opends.server.replication.protocol.*;
import org.opends.server.replication.service.ReplicationBroker;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.TestTimer;
import org.opends.server.util.TimeThread;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrHistoricalMultipleTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrHistoricalMultipleTest.java
index 5b27a08..a48afb3 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrHistoricalMultipleTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrHistoricalMultipleTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.replication.plugin;
@@ -40,13 +40,13 @@
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
import org.opends.server.replication.ReplicationTestCase;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.common.CSNGenerator;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.Entry;
import org.opends.server.types.Modification;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/FractionalReplicationTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/FractionalReplicationTest.java
index fbe6bf3..222c5ca 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/FractionalReplicationTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/FractionalReplicationTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -45,6 +45,7 @@
import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.replication.service.FakeReplicationDomain;
import org.opends.server.replication.service.ReplicationDomain;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
index ccf6518..29c45fd 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -50,6 +50,7 @@
import org.opends.server.replication.server.ReplServerFakeConfiguration;
import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.replication.service.ReplicationBroker;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.TimeThread;
import org.testng.annotations.Test;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalTest.java
index 2bf9192..1a4d0fa 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/HistoricalTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -33,6 +33,7 @@
import org.assertj.core.api.Assertions;
import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.internal.InternalClientConnection;
@@ -341,7 +342,7 @@
private static void publishModify(ReplicationBroker broker, CSN changeNum,
DN dn, String entryuuid, AttributeType attrType, String newValue)
{
- Attribute attr = Attributes.create(attrType.getNameOrOID(), newValue);
+ Attribute attr = Attributes.create(attrType.getNormalizedNameOrOID(), newValue);
List<Modification> mods = newArrayList(new Modification(ModificationType.ADD, attr));
broker.publish(new ModifyMsg(changeNum, dn, mods, entryuuid));
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyConflictTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyConflictTest.java
index db48a96..af5640d 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyConflictTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyConflictTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -42,6 +42,7 @@
import org.opends.server.replication.protocol.LDAPUpdateMsg;
import org.opends.server.replication.protocol.ModifyContext;
import org.opends.server.replication.protocol.ReplicationMsg;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.workflowelement.localbackend.LocalBackendModifyOperation;
import org.testng.annotations.Test;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyReplaySingleValuedAttributeTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyReplaySingleValuedAttributeTest.java
index d2798e3..90d2237 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyReplaySingleValuedAttributeTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/ModifyReplaySingleValuedAttributeTest.java
@@ -20,7 +20,7 @@
*
* CDDL HEADER END
*
- * Copyright 2015 ForgeRock AS
+ * Copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -37,13 +37,13 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.replication.ReplicationTestCase;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.protocol.ModifyContext;
import org.opends.server.replication.protocol.OperationContext;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/ProtocolCompatibilityTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/ProtocolCompatibilityTest.java
index de428de..be224d4 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/ProtocolCompatibilityTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/ProtocolCompatibilityTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.protocol;
@@ -42,6 +42,7 @@
import org.opends.server.core.ModifyOperationBasis;
import org.opends.server.replication.ReplicationTestCase;
import org.opends.server.replication.common.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.TimeThread;
import org.testng.annotations.AfterClass;
@@ -1299,7 +1300,7 @@
assertEquals(msg.getDetails().toString(), errorDetails);
}
- @DataProvider(name = "initializeTargetMsgV3")
+ @DataProvider
public Object[][] createInitializeTargetMsgV3()
{
return new Object[][] {
@@ -1320,7 +1321,7 @@
assertEquals(msg.getEntryCount(), entryCount);
}
- @DataProvider(name = "initializeRequestMsgV3")
+ @DataProvider
public Object[][] createInitializeRequestMsgV3()
{
return new Object[][] {
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/SynchronizationMsgTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/SynchronizationMsgTest.java
index 8e4e981..12f262f 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/SynchronizationMsgTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/SynchronizationMsgTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.replication.protocol;
@@ -37,6 +37,7 @@
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.replication.ReplicationTestCase;
import org.opends.server.replication.common.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.opends.server.util.TimeThread;
import org.opends.server.workflowelement.localbackend.LocalBackendAddOperation;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeSyntaxTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeSyntaxTest.java
index 7930fa6..2e75ed3 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeSyntaxTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeSyntaxTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -39,6 +39,7 @@
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
+@SuppressWarnings("javadoc")
@RemoveOnceSDKSchemaIsUsed
public abstract class AttributeSyntaxTest extends SchemaTestCase
{
@@ -57,12 +58,12 @@
* Get an instance of the attribute syntax that must be tested.
*
* @return An instance of the attribute syntax that must be tested.
+ * @throws Exception
+ * if a problem occurs
*/
- protected abstract AttributeSyntax<?> getRule();
+ protected abstract AttributeSyntax<?> getRule() throws Exception;
- /**
- * Test the normalization and the approximate comparison.
- */
+ /** Test the normalization and the approximate comparison. */
@Test(dataProvider= "acceptableValues")
public void testAcceptableValues(String value, Boolean result) throws Exception
{
@@ -75,7 +76,7 @@
LocalizableMessageBuilder reason = new LocalizableMessageBuilder();
// test the valueIsAcceptable method
- Boolean liveResult =
+ boolean liveResult =
syntax.valueIsAcceptable(ByteString.valueOfUtf8(value), reason);
assertSame(liveResult, result, syntax + ".valueIsAcceptable gave bad result for " + value + " reason : " + reason);
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java
index 8f937e6..587761b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -30,15 +30,15 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
-import org.forgerock.opendj.ldap.schema.MatchingRule;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.Schema;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.TestCaseUtils;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
-import org.opends.server.types.AttributeType;
import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -47,21 +47,16 @@
import static org.opends.server.protocols.internal.Requests.*;
import static org.testng.Assert.*;
-/**
- * Test the AttributeTypeSyntax.
- */
+/** Test the AttributeTypeSyntax. */
@RemoveOnceSDKSchemaIsUsed
public class AttributeTypeSyntaxTest extends AttributeSyntaxTest
{
-
- /** {@inheritDoc} */
@Override
protected AttributeSyntax getRule()
{
return new AttributeTypeSyntax();
}
- /** {@inheritDoc} */
@Override
@DataProvider(name="acceptableValues")
public Object[][] createAcceptableValues()
@@ -127,37 +122,29 @@
@Test
public void testXAPPROXExtension() throws Exception
{
- MatchingRule mrule = Schema.getCoreSchema().getMatchingRule("ds-mr-double-metaphone-approx");
-
- // Get a reference to the attribute type syntax implementation in the
- // server.
- Syntax attrTypeSyntax = DirectoryServer.getSchema().getSyntax("1.3.6.1.4.1.1466.115.121.1.3", false);
+ org.opends.server.types.Schema schema = DirectoryServer.getSchema();
+ Syntax attrTypeSyntax = schema.getSyntax("1.3.6.1.4.1.1466.115.121.1.3");
assertNotNull(attrTypeSyntax);
-
// Create an attribute type definition and verify that it is acceptable.
ByteString definition = ByteString.valueOfUtf8(
"( testxapproxtype-oid NAME 'testXApproxType' " +
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 " +
"X-APPROX 'ds-mr-double-metaphone-approx' )");
LocalizableMessageBuilder invalidReason = new LocalizableMessageBuilder();
- assertTrue(attrTypeSyntax.valueIsAcceptable(definition, invalidReason),
- invalidReason.toString());
-
+ assertTrue(attrTypeSyntax.valueIsAcceptable(definition, invalidReason), invalidReason.toString());
// Verify that we can decode the attribute type and that it has the
// correct approximate matching rule.
- AttributeType attrType =
- AttributeTypeSyntax.decodeAttributeType(definition,
- DirectoryServer.getSchema(),
- false);
- assertNotNull(attrType);
+ Schema newSchema = new SchemaBuilder(schema.getSchemaNG())
+ .addAttributeType(definition.toString(), false)
+ .toSchema();
+
+ AttributeType attrType = newSchema.getAttributeType("testXApproxType");
assertNotNull(attrType.getApproximateMatchingRule());
- assertEquals(attrType.getApproximateMatchingRule(), mrule);
+ assertEquals(attrType.getApproximateMatchingRule(), schema.getMatchingRule("ds-mr-double-metaphone-approx"));
}
-
-
/**
* Tests a situation when two radically different equality and substring
* matching rules (such as Case Ignore and Case Exact) are used to define an
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/BinaryAttributeSyntaxTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/BinaryAttributeSyntaxTest.java
index fd6e400..c181fdc 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/BinaryAttributeSyntaxTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/BinaryAttributeSyntaxTest.java
@@ -22,23 +22,24 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.schema;
import static org.testng.Assert.*;
-import org.opends.server.api.AttributeSyntax;
-import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
+import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.SchemaOptions;
import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.opends.server.api.AttributeSyntax;
+import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
+@SuppressWarnings("javadoc")
@RemoveOnceSDKSchemaIsUsed
public abstract class BinaryAttributeSyntaxTest extends SchemaTestCase
{
@@ -57,8 +58,9 @@
* Get an instance of the attribute syntax that must be tested.
*
* @return An instance of the attribute syntax that must be tested.
+ * @throws Exception if a problem occurs
*/
- protected abstract AttributeSyntax getRule();
+ protected abstract AttributeSyntax<?> getRule() throws Exception;
/**
* Test the normalization and the approximate comparison.
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java
index 1e264b1..37e8ac9 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java
@@ -22,36 +22,32 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.schema;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.Schema;
import org.opends.server.ServerContextBuilder;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.admin.std.server.CertificateAttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.schema.Schema;
import org.opends.server.types.DN;
import org.opends.server.util.Base64;
import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
-/**
- * Test the CertificateSyntax.
- */
+/** Test the CertificateSyntax. */
@RemoveOnceSDKSchemaIsUsed
@Test
public class CertificateSyntaxTest extends BinaryAttributeSyntaxTest
{
- /** {@inheritDoc} */
@Override
- protected AttributeSyntax<?> getRule()
+ protected AttributeSyntax<?> getRule() throws Exception
{
CertificateSyntax syntax = new CertificateSyntax();
CertificateAttributeSyntaxCfg cfg = new CertificateAttributeSyntaxCfg()
@@ -132,24 +128,13 @@
}
};
- try
- {
- Schema schema = Schema.getCoreSchema();
- ServerContext serverContext = ServerContextBuilder.aServerContext()
- .schemaNG(schema)
- .schemaUpdater(new ServerContextBuilder.MockSchemaUpdater(schema)).build();
- syntax.initializeSyntax(cfg, serverContext);
- }
- catch (ConfigException e)
- {
- // Should never happen.
- throw new RuntimeException(e);
- }
-
+ ServerContext serverContext = ServerContextBuilder.aServerContext()
+ .schema(new org.opends.server.types.Schema(Schema.getCoreSchema()))
+ .build();
+ syntax.initializeSyntax(cfg, serverContext);
return syntax;
}
- /** {@inheritDoc} */
@Override
@DataProvider(name="acceptableValues")
public Object[][] createAcceptableValues()
@@ -205,6 +190,4 @@
return new Object[][] {};
}
}
-
-
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java
index 6696e11..38bd45d 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java
@@ -21,7 +21,7 @@
* CDDL HEADER END
*
*
- * Copyright 2014-2015 ForgeRock AS.
+ * Copyright 2014-2016 ForgeRock AS.
*/
package org.opends.server.schema;
@@ -29,14 +29,19 @@
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.server.config.server.CoreSchemaCfg;
import org.opends.server.ConfigurationMock;
+import org.opends.server.TestCaseUtils;
import org.opends.server.core.CoreTestCase;
+import org.opends.server.core.ServerContext;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.*;
import static org.forgerock.opendj.ldap.schema.SchemaOptions.*;
import static org.mockito.Mockito.*;
+import static org.opends.server.ServerContextBuilder.*;
import static org.opends.server.util.CollectionUtils.*;
+import java.io.File;
+
@SuppressWarnings("javadoc")
public class CoreSchemaProviderTestCase extends CoreTestCase
{
@@ -49,11 +54,23 @@
CoreSchemaCfg coreSchemaCfg = ConfigurationMock.mockCfg(CoreSchemaCfg.class);
CoreSchemaProvider provider = new CoreSchemaProvider();
- provider.initialize(coreSchemaCfg, new SchemaBuilder(), mock(SchemaUpdater.class));
+
+ org.opends.server.types.Schema schema = new org.opends.server.types.Schema( Schema.getCoreSchema());
+ provider.initialize(getServerContext(schema), coreSchemaCfg, new SchemaBuilder());
verify(coreSchemaCfg).addCoreSchemaChangeListener(provider);
}
+ private ServerContext getServerContext(org.opends.server.types.Schema schema) throws Exception
+ {
+ return aServerContext()
+ .schemaDirectory(new File(TestCaseUtils.getBuildRoot(), "resource/schema"))
+ .configFile(TestCaseUtils.getTestResource("config-small.ldif"))
+ .withConfigurationBootstrapped()
+ .schema(schema)
+ .build();
+ }
+
@Test
public void testEnableZeroLengthDirectoryStrings() throws Exception
{
@@ -62,7 +79,8 @@
SchemaBuilder schemaBuilder = new SchemaBuilder();
CoreSchemaProvider provider = new CoreSchemaProvider();
- provider.initialize(coreSchemaCfg, schemaBuilder, mock(SchemaUpdater.class));
+ org.opends.server.types.Schema schema = new org.opends.server.types.Schema( Schema.getCoreSchema());
+ provider.initialize(getServerContext(schema), coreSchemaCfg, schemaBuilder);
assertThat(schemaBuilder.toSchema().getOption(ALLOW_ZERO_LENGTH_DIRECTORY_STRINGS)).isTrue();
}
@@ -75,7 +93,8 @@
SchemaBuilder schemaBuilder = new SchemaBuilder(Schema.getCoreSchema());
CoreSchemaProvider provider = new CoreSchemaProvider();
- provider.initialize(coreSchemaCfg, schemaBuilder, mock(SchemaUpdater.class));
+ org.opends.server.types.Schema schema = new org.opends.server.types.Schema( Schema.getCoreSchema());
+ provider.initialize(getServerContext(schema), coreSchemaCfg, schemaBuilder);
assertThat(schemaBuilder.toSchema().hasSyntax(DIRECTORY_STRING_SYNTAX_OID)).isFalse();
}
@@ -88,7 +107,8 @@
SchemaBuilder schemaBuilder = new SchemaBuilder(Schema.getCoreSchema());
CoreSchemaProvider provider = new CoreSchemaProvider();
- provider.initialize(coreSchemaCfg, schemaBuilder, mock(SchemaUpdater.class));
+ org.opends.server.types.Schema schema = new org.opends.server.types.Schema( Schema.getCoreSchema());
+ provider.initialize(getServerContext(schema), coreSchemaCfg, schemaBuilder);
assertThat(schemaBuilder.toSchema().hasMatchingRule(DIRECTORY_STRING_SYNTAX_OID)).isFalse();
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java
index cc9ee5c..fdb22ee 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java
@@ -22,35 +22,31 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
* Portions Copyright 2012 Manuel Gaupp
*/
package org.opends.server.schema;
+import org.forgerock.opendj.ldap.schema.Schema;
import org.opends.server.ServerContextBuilder;
-import org.opends.server.api.AttributeSyntax;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.admin.std.server.CountryStringAttributeSyntaxCfg;
+import org.opends.server.api.AttributeSyntax;
import org.opends.server.core.ServerContext;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.schema.Schema;
import org.opends.server.types.DN;
import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-/**
- * Test the CountryStringSyntax.
- */
+/** Test the CountryStringSyntax. */
@RemoveOnceSDKSchemaIsUsed
@Test
public class CountryStringSyntaxTest extends AttributeSyntaxTest
{
- /** {@inheritDoc} */
@Override
- protected AttributeSyntax getRule()
+ protected AttributeSyntax<?> getRule() throws Exception
{
CountryStringSyntax syntax = new CountryStringSyntax();
CountryStringAttributeSyntaxCfg cfg = new CountryStringAttributeSyntaxCfg()
@@ -132,24 +128,13 @@
}
};
- try
- {
- Schema schema = Schema.getCoreSchema();
- ServerContext serverContext = ServerContextBuilder.aServerContext()
- .schemaNG(schema)
- .schemaUpdater(new ServerContextBuilder.MockSchemaUpdater(schema)).build();
- syntax.initializeSyntax(cfg, serverContext);
- }
- catch (ConfigException e)
- {
- // Should never happen.
- throw new RuntimeException(e);
- }
-
+ ServerContext serverContext = ServerContextBuilder.aServerContext()
+ .schema(new org.opends.server.types.Schema(Schema.getCoreSchema()))
+ .build();
+ syntax.initializeSyntax(cfg, serverContext);
return syntax;
}
- /** {@inheritDoc} */
@Override
@DataProvider(name="acceptableValues")
public Object[][] createAcceptableValues()
@@ -164,5 +149,4 @@
{"\u00D6\u00C4", false},
};
}
-
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/FakeEntryIndex.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/FakeEntryIndex.java
index f4e8d0a..4b3c7de 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/FakeEntryIndex.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/FakeEntryIndex.java
@@ -20,7 +20,7 @@
*
* CDDL HEADER END
*
- * Copyright 2015 ForgeRock AS
+ * Copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.schema;
@@ -40,13 +40,13 @@
import org.forgerock.opendj.ldap.Assertion;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DecodeException;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.spi.Indexer;
import org.forgerock.opendj.ldap.spi.IndexingOptions;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.SearchFilter;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
index 0da929f..a155e61 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS.
+ * Portions Copyright 2014-2016 ForgeRock AS.
*
*/
package org.opends.server.schema;
@@ -33,12 +33,12 @@
import java.util.TreeSet;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.Entry;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.NameForm;
@@ -83,7 +83,7 @@
TreeSet<String> invalidOIDs = new TreeSet<>();
Schema schema = DirectoryServer.getSchema();
- for (Syntax as : schema.getSyntaxes().values())
+ for (Syntax as : schema.getSyntaxes())
{
if (! isNumericOID(as.getOID()))
{
@@ -117,7 +117,7 @@
TreeSet<String> invalidOIDs = new TreeSet<>();
Schema schema = DirectoryServer.getSchema();
- for (MatchingRule mr : schema.getMatchingRules().values())
+ for (MatchingRule mr : schema.getMatchingRules())
{
if (! isNumericOID(mr.getOID()))
{
@@ -190,8 +190,7 @@
{
for (ByteString v : a)
{
- AttributeType at = AttributeTypeSyntax.decodeAttributeType(
- v, DirectoryServer.getSchema(),true);
+ AttributeType at = DirectoryServer.getSchema().parseAttributeType(v.toString());
if (! isNumericOID(at.getOID()))
{
invalidOIDs.add(at.getNameOrOID());
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/TimeBasedMatchingRuleTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/TimeBasedMatchingRuleTest.java
index b17c96e..2bac0c5 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/TimeBasedMatchingRuleTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/TimeBasedMatchingRuleTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2010-2015 ForgeRock AS.
+ * Portions Copyright 2010-2016 ForgeRock AS.
*/
package org.opends.server.schema;
@@ -40,11 +40,11 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.DecodeException;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.FilterType;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
index 9c26801..0a8881b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
*/
package org.opends.server.tasks;
@@ -108,7 +108,7 @@
"objectClass: ldapSubentry",
"objectClass: subschema",
"attributeTypes: ( testaddvalidschemafileat-oid " +
- "NAME 'testAddValidSchemaFileAT' )",
+ "NAME 'testAddValidSchemaFileAT' SUP name)",
"objectClasses: ( testaddvalidschemafileoc-oid " +
"NAME 'testAddValidSchemaFileOC' STRUCTURAL " +
"MUST testAddValidSchemaFileAT )",
@@ -179,7 +179,7 @@
"objectClass: ldapSubentry",
"objectClass: subschema",
"attributeTypes: ( testaddmultiplevalidschemafiles1at-oid " +
- "NAME 'testAddMultipleValidSchemaFiles1AT' )",
+ "NAME 'testAddMultipleValidSchemaFiles1AT' SUP name)",
"objectClasses: ( testaddmultiplevalidschemafiles1oc-oid " +
"NAME 'testAddMultipleValidSchemaFiles1OC' STRUCTURAL " +
"MUST testAddMultipleValidSchemaFiles1AT )",
@@ -212,7 +212,7 @@
"objectClass: ldapSubentry",
"objectClass: subschema",
"attributeTypes: ( testaddmultiplevalidschemafiles2at-oid " +
- "NAME 'testAddMultipleValidSchemaFiles2AT' )",
+ "NAME 'testAddMultipleValidSchemaFiles2AT' SUP name)",
"objectClasses: ( testaddmultiplevalidschemafiles2oc-oid " +
"NAME 'testAddMultipleValidSchemaFiles2OC' STRUCTURAL " +
"MUST testAddMultipleValidSchemaFiles2AT )",
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeBuilderTest.java b/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeBuilderTest.java
index 2c0a752..2d06741 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeBuilderTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeBuilderTest.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS.
+ * Portions Copyright 2011-2016 ForgeRock AS.
*/
package org.opends.server.types;
@@ -30,9 +30,16 @@
import static org.opends.server.util.CollectionUtils.*;
import static org.testng.Assert.*;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Set;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
import org.testng.Assert;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeTypeConstants.java b/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeTypeConstants.java
deleted file mode 100644
index d24836c..0000000
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeTypeConstants.java
+++ /dev/null
@@ -1,81 +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 legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * 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 legal-notices/CDDLv1_0.txt.
- * 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
- *
- *
- * Copyright 2013-2015 ForgeRock AS
- */
-package org.opends.server.types;
-
-import java.util.Arrays;
-
-import org.forgerock.opendj.ldap.schema.AttributeUsage;
-import org.forgerock.opendj.ldap.schema.CoreSchema;
-import org.forgerock.opendj.ldap.schema.Syntax;
-import org.opends.server.schema.OIDSyntax;
-
-/**
- * Holds in-memory constants representing the AttributeTypes. This allows to not
- * start the whole server for simple unit tests.
- */
-@SuppressWarnings("javadoc")
-public interface AttributeTypeConstants
-{
-
- Syntax OID_SYNTAX = new OIDSyntax().getSDKSyntax(CoreSchema.getInstance());
-
- AttributeType OBJECT_CLASS = new AttributeType(
- "( 2.5.4.0 NAME 'objectClass' EQUALITY objectIdentifierMatch "
- + "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 X-ORIGIN 'RFC 2256' )",
- "objectClass", Arrays.asList("objectClass"), "2.5.4.0",
- null, null, OID_SYNTAX, AttributeUsage.USER_APPLICATIONS,
- false, false, false, false);
-
- AttributeType COMMON_NAME = new AttributeType(
- "( 2.5.4.3 NAME ( 'cn' 'commonName' ) SUP name X-ORIGIN 'RFC 4519' )",
- "commonName", Arrays.asList("cn", "commonName"), "2.5.4.3",
- null, null, OID_SYNTAX, AttributeUsage.USER_APPLICATIONS,
- false, false, false, false);
-
- AttributeType ORGANIZATION_NAME = new AttributeType(
- "( 2.5.4.10 NAME ( 'o' 'organizationName' ) SUP name X-ORIGIN 'RFC 4519' )",
- "organizationName", Arrays.asList("o", "organizationName"), "2.5.4.10",
- null, null, OID_SYNTAX, AttributeUsage.USER_APPLICATIONS,
- false, false, false, false);
-
- AttributeType ORGANIZATIONAL_UNIT_NAME = new AttributeType(
- "( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' ) SUP name X-ORIGIN 'RFC 4519' )",
- "organizationalUnitName", Arrays.asList("ou", "organizationalUnitName"), "2.5.4.11",
- null, null, OID_SYNTAX, AttributeUsage.USER_APPLICATIONS,
- false, false, false, false);
-
- AttributeType DOMAIN_COMPONENT = new AttributeType(
- "( 0.9.2342.19200300.100.1.25 NAME ( 'dc' 'domainComponent' ) "
- + "EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch"
- + "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE X-ORIGIN 'RFC 4519' )",
- "domainComponent", Arrays.asList("dc", "domainComponent"), "0.9.2342.19200300.100.1.25",
- null, null, OID_SYNTAX, AttributeUsage.USER_APPLICATIONS,
- false, false, false, false);
-
- AttributeType[] ALL = { OBJECT_CLASS, COMMON_NAME, ORGANIZATION_NAME,
- ORGANIZATIONAL_UNIT_NAME, DOMAIN_COMPONENT, };
-
-}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeTypeTest.java b/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeTypeTest.java
index 8599cb7..56adb3e 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeTypeTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/AttributeTypeTest.java
@@ -20,12 +20,13 @@
*
* CDDL HEADER END
*
- * Copyright 2015 ForgeRock AS
+ * Copyright 2015-2016 ForgeRock AS
*/
package org.opends.server.types;
import static org.opends.server.core.DirectoryServer.*;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.DirectoryServerTestCase;
import org.opends.server.TestCaseUtils;
import org.testng.Assert;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/EntrySchemaCheckingTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/types/EntrySchemaCheckingTestCase.java
index 15f0740..f55efdb 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/EntrySchemaCheckingTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/EntrySchemaCheckingTestCase.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import static org.opends.server.types.AcceptRejectWarn.*;
import static org.testng.Assert.*;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java
index c071dcb..cc3fa58 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/PrivilegeTestCase.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2007-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.types;
@@ -43,6 +43,7 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.admin.std.meta.GlobalCfgDefn.DisabledPrivilege;
import org.opends.server.admin.std.meta.RootDNCfgDefn;
@@ -951,18 +952,20 @@
"objectClass: top",
"objectClass: ldapSubentry",
"objectClass: subschema",
- "attributeTypes: ( " + identifier.toLowerCase() + "-oid " +
- "NAME '" + identifier + "' )"
+ "attributeTypes: ( " + identifier.toLowerCase() + "-oid"
+ + " NAME '" + identifier + "'"
+ + " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )"
};
File validFile = new File(schemaDirectory, "05-" + identifier + ".ldif");
- BufferedWriter writer = new BufferedWriter(new FileWriter(validFile));
- for (String line : fileLines)
+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(validFile)))
{
- writer.write(line);
- writer.newLine();
+ for (String line : fileLines)
+ {
+ writer.write(line);
+ writer.newLine();
+ }
}
- writer.close();
assertPrivilege(conn, hasPrivilege,
"dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
@@ -2278,8 +2281,7 @@
// We won't use an internal connection here because these are not notified
// of dynamic changes to authentication info.
- Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
- try
+ try (Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort()))
{
TestCaseUtils.configureSocket(s);
LDAPReader r = new LDAPReader(s);
@@ -2331,10 +2333,6 @@
DeleteOperation deleteOperation = rootConnection.processDelete("cn=Test User,o=test");
assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
}
- finally
- {
- s.close();
- }
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/SearchFilterTests.java b/opendj-server-legacy/src/test/java/org/opends/server/types/SearchFilterTests.java
index 3934b8e..374662a 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/SearchFilterTests.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/SearchFilterTests.java
@@ -23,10 +23,12 @@
*
* Copyright 2008 Sun Microsystems, Inc.
* Portions Copyright 2013-2014 Manuel Gaupp
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/TestAttributeType.java b/opendj-server-legacy/src/test/java/org/opends/server/types/TestAttributeType.java
deleted file mode 100644
index 8c11d31..0000000
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/TestAttributeType.java
+++ /dev/null
@@ -1,770 +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 legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * 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 legal-notices/CDDLv1_0.txt.
- * 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
- *
- *
- * Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
- */
-package org.opends.server.types;
-
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-
-import org.forgerock.opendj.ldap.schema.AttributeUsage;
-import org.forgerock.opendj.ldap.schema.MatchingRule;
-import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.util.Utils;
-import org.opends.server.core.DirectoryServer;
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-/**
- * This class defines a set of tests for the
- * {@link org.opends.server.types.AttributeType} class.
- */
-public final class TestAttributeType extends TestCommonSchemaElements {
- /**
- * Internal class to simplify construction of attribute types.
- */
- private static final class AttributeTypeBuilder extends
- SchemaDefinitionBuilder<AttributeType> {
- /** The superior attribute type from which this attribute type inherits. */
- private AttributeType superiorType;
-
- /** The syntax for this attribute type. */
- private Syntax syntax;
-
- /** The approximate matching rule for this attribute type. */
- private MatchingRule approximateMatchingRule;
- /** The equality matching rule for this attribute type. */
- private MatchingRule equalityMatchingRule;
- /** The ordering matching rule for this attribute type. */
- private MatchingRule orderingMatchingRule;
- /** The substring matching rule for this attribute type. */
- private MatchingRule substringMatchingRule;
-
- /** The attribute usage for this attribute type. */
- private AttributeUsage attributeUsage;
-
- /** Indicates whether this attribute type is declared "collective". */
- private boolean isCollective;
-
- /**
- * Indicates whether this attribute type is declared "no-user-modification".
- */
- private boolean isNoUserModification;
- /**
- * Indicates whether this attribute type is declared "single-value".
- */
- private boolean isSingleValue;
-
-
-
- /** {@inheritDoc} */
- @Override
- protected void resetBuilder() {
- this.superiorType = null;
- this.syntax = null;
- this.approximateMatchingRule = null;
- this.equalityMatchingRule = null;
- this.orderingMatchingRule = null;
- this.substringMatchingRule = null;
- this.attributeUsage = AttributeUsage.USER_APPLICATIONS;
- this.isCollective = false;
- this.isNoUserModification = false;
- this.isSingleValue = false;
- }
-
-
-
- /**
- * Create a new attribute type builder.
- */
- public AttributeTypeBuilder() {
- super();
- }
-
-
-
- /**
- * Create a new attribute type builder.
- *
- * @param primaryName
- * The attribute type primary name.
- * @param oid
- * The attribute type OID.
- */
- public AttributeTypeBuilder(String primaryName, String oid) {
- super(primaryName, oid);
- }
-
-
-
- /** {@inheritDoc} */
- @Override
- protected AttributeType buildInstance(String primaryName,
- Collection<String> names, String oid, String description,
- boolean isObsolete, Map<String, List<String>> extraProperties) {
-
- StringBuilder definition = new StringBuilder();
- definition.append("( ");
- definition.append(oid);
-
- LinkedHashSet<String> nameSet = new LinkedHashSet<>();
- if (primaryName != null)
- {
- nameSet.add(primaryName);
- }
-
- if (names != null)
- {
- nameSet.addAll(names);
- }
-
- if (! nameSet.isEmpty())
- {
- definition.append(" NAME ");
- if (nameSet.size() == 1)
- {
- definition.append("'");
- definition.append(nameSet.iterator().next());
- definition.append("'");
- }
- else
- {
- definition.append("( '");
- Utils.joinAsString(definition, "' '", nameSet);
- definition.append("' )");
- }
- }
-
- if (description != null)
- {
- definition.append(" DESC '");
- definition.append(description);
- definition.append("'");
- }
-
- if (isObsolete)
- {
- definition.append(" OBSOLETE");
- }
-
- if (superiorType != null)
- {
- definition.append(" SUP ");
- definition.append(superiorType.getNameOrOID());
- }
-
- if (equalityMatchingRule != null)
- {
- definition.append(" EQUALITY ");
- definition.append(equalityMatchingRule.getNameOrOID());
- }
-
- if (orderingMatchingRule != null)
- {
- definition.append(" ORDERING ");
- definition.append(orderingMatchingRule.getNameOrOID());
- }
-
- if (substringMatchingRule != null)
- {
- definition.append(" SUBSTR ");
- definition.append(substringMatchingRule.getNameOrOID());
- }
-
- if (syntax != null)
- {
- definition.append(" SYNTAX ");
- definition.append(syntax.getOID());
- }
-
- if (isSingleValue)
- {
- definition.append(" SINGLE-VALUE");
- }
-
- if (isCollective)
- {
- definition.append(" COLLECTIVE");
- }
-
- if (isNoUserModification)
- {
- definition.append(" NO-USER-MODIFICATIOn");
- }
-
- if (attributeUsage != null)
- {
- definition.append(" USAGE ");
- definition.append(attributeUsage);
- }
-
- if (extraProperties != null)
- {
- for (String property : extraProperties.keySet())
- {
- List<String> values = extraProperties.get(property);
- if (values == null || values.isEmpty())
- {
- continue;
- }
- else if (values.size() == 1)
- {
- definition.append(" ");
- definition.append(property);
- definition.append(" '");
- definition.append(values.get(0));
- definition.append("'");
- }
- else
- {
- definition.append(" ");
- definition.append(property);
- definition.append(" (");
- for (String value : values)
- {
- definition.append(" '");
- definition.append(value);
- definition.append("'");
- }
-
- definition.append(" )");
- }
- }
- }
-
- definition.append(" )");
-
-
- return new AttributeType(definition.toString(), primaryName, names, oid,
- description, superiorType, syntax,
- approximateMatchingRule, equalityMatchingRule,
- orderingMatchingRule, substringMatchingRule,
- attributeUsage, isCollective,
- isNoUserModification, isObsolete, isSingleValue,
- extraProperties);
- }
-
-
-
- /**
- * Set the approximateMatchingRule.
- *
- * @param approximateMatchingRule
- * The approximateMatchingRule.
- */
- public void setApproximateMatchingRule(MatchingRule approximateMatchingRule) {
- this.approximateMatchingRule = approximateMatchingRule;
- }
-
-
-
- /**
- * Set the attributeUsage.
- *
- * @param attributeUsage
- * The attributeUsage.
- */
- public void setAttributeUsage(AttributeUsage attributeUsage) {
- this.attributeUsage = attributeUsage;
- }
-
-
-
- /**
- * Set the equalityMatchingRule.
- *
- * @param equalityMatchingRule
- * The equalityMatchingRule.
- */
- public void setEqualityMatchingRule(
- MatchingRule equalityMatchingRule) {
- this.equalityMatchingRule = equalityMatchingRule;
- }
-
-
-
- /**
- * Set the isCollective.
- *
- * @param isCollective
- * The isCollective.
- */
- public void setCollective(boolean isCollective) {
- this.isCollective = isCollective;
- }
-
-
-
- /**
- * Set the isNoUserModification.
- *
- * @param isNoUserModification
- * The isNoUserModification.
- */
- public void setNoUserModification(boolean isNoUserModification) {
- this.isNoUserModification = isNoUserModification;
- }
-
-
-
- /**
- * Set the isSingleValue.
- *
- * @param isSingleValue
- * The isSingleValue.
- */
- public void setSingleValue(boolean isSingleValue) {
- this.isSingleValue = isSingleValue;
- }
-
-
-
- /**
- * Set the orderingMatchingRule.
- *
- * @param orderingMatchingRule
- * The orderingMatchingRule.
- */
- public void setOrderingMatchingRule(
- MatchingRule orderingMatchingRule) {
- this.orderingMatchingRule = orderingMatchingRule;
- }
-
-
-
- /**
- * Set the substringMatchingRule.
- *
- * @param substringMatchingRule
- * The substringMatchingRule.
- */
- public void setSubstringMatchingRule(
- MatchingRule substringMatchingRule) {
- this.substringMatchingRule = substringMatchingRule;
- }
-
-
-
- /**
- * Set the superiorType.
- *
- * @param superiorType
- * The superiorType.
- */
- public void setSuperiorType(AttributeType superiorType) {
- this.superiorType = superiorType;
- }
-
-
-
- /**
- * Set the syntax.
- *
- * @param syntax
- * The syntax.
- */
- public void setSyntax(Syntax syntax) {
- this.syntax = syntax;
- }
- }
-
-
-
- /**
- * Check that the simple constructor throws an NPE when mandatory
- * parameters are not specified.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void testSimpleConstructorNPE() throws Exception {
- new AttributeType(null, null, null, null, null, null, null, null,
- false, false, false, false);
- }
-
-
-
- /**
- * Check that the complex constructor throws an NPE when mandatory
- * parameters are not specified.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void testComplexConstructorNPE() throws Exception {
- new AttributeType(null, null, null, null, null, null, null, null, null,
- null, null, null, false, false, false, false, null);
- }
-
-
-
- /**
- * Check that the complex constructor does not throw an exception
- * when all optional parameters are not specified.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testComplexConstructorDefault() throws Exception {
- AttributeType type = new AttributeType("", null, null, "1.2.3", null,
- null, null, null, null, null, null, null, false, false,
- false, false, null);
-
- Assert.assertNull(type.getPrimaryName());
- }
-
-
-
- /**
- * Check constructor sets the default usage correctly.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testConstructorDefaultUsage() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- AttributeType type = builder.getInstance();
-
- Assert.assertEquals(type.getUsage(),
- AttributeUsage.USER_APPLICATIONS);
- }
-
-
-
- /**
- * Check constructor sets the default syntax correctly.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testConstructorDefaultSyntax() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- AttributeType type = builder.getInstance();
-
- Assert.assertEquals(type.getSyntax(), DirectoryServer
- .getDefaultAttributeSyntax());
- }
-
-
-
- /**
- * Check constructor sets the syntax correctly.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testConstructorSyntax() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- builder.setSyntax(DirectoryServer.getDefaultIntegerSyntax());
- AttributeType type = builder.getInstance();
-
- Assert.assertEquals(type.getSyntax(), DirectoryServer
- .getDefaultIntegerSyntax());
- }
-
-
-
- /**
- * Check constructor inherits the syntax from the parent type when
- * required.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test(dependsOnMethods = "testConstructorSyntax")
- public void testConstructorInheritsSyntax() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "parentType", "1.2.3");
- builder.setSyntax(DirectoryServer.getDefaultIntegerSyntax());
- AttributeType parent = builder.getInstance();
-
- builder.setPrimaryName("childType");
- builder.setOid("4.5.6");
- builder.setSuperiorType(parent);
- AttributeType child = builder.getInstance();
-
- Assert.assertEquals(parent.getSyntax(), child.getSyntax());
- }
-
-
-
- /**
- * Check constructor sets the default matching rules correctly.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testConstructorDefaultMatchingRules() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- AttributeType type = builder.getInstance();
-
- Syntax syntax = DirectoryServer
- .getDefaultAttributeSyntax();
- Assert.assertEquals(type.getApproximateMatchingRule(), syntax
- .getApproximateMatchingRule());
- Assert.assertEquals(type.getEqualityMatchingRule(), syntax
- .getEqualityMatchingRule());
- Assert.assertEquals(type.getOrderingMatchingRule(), syntax
- .getOrderingMatchingRule());
- Assert.assertEquals(type.getSubstringMatchingRule(), syntax
- .getSubstringMatchingRule());
- }
-
-
-
- /**
- * Check constructor sets the matching rules correctly.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testConstructorMatchingRules() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- Syntax syntax = DirectoryServer.getDefaultStringSyntax();
- builder.setApproximateMatchingRule(syntax
- .getApproximateMatchingRule());
- builder.setEqualityMatchingRule(syntax.getEqualityMatchingRule());
- builder.setOrderingMatchingRule(syntax.getOrderingMatchingRule());
- builder.setSubstringMatchingRule(syntax
- .getSubstringMatchingRule());
- AttributeType type = builder.getInstance();
-
- Assert.assertEquals(type.getApproximateMatchingRule(), syntax
- .getApproximateMatchingRule());
- Assert.assertEquals(type.getEqualityMatchingRule(), syntax
- .getEqualityMatchingRule());
- Assert.assertEquals(type.getOrderingMatchingRule(), syntax
- .getOrderingMatchingRule());
- Assert.assertEquals(type.getSubstringMatchingRule(), syntax
- .getSubstringMatchingRule());
- }
-
-
-
- /**
- * Check constructor inherits the matching rules from the parent
- * type when required.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test(dependsOnMethods = "testConstructorMatchingRules")
- public void testConstructorInheritsMatchingRules() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "parentType", "1.2.3");
- Syntax syntax = DirectoryServer.getDefaultStringSyntax();
- builder.setApproximateMatchingRule(syntax
- .getApproximateMatchingRule());
- builder.setEqualityMatchingRule(syntax.getEqualityMatchingRule());
- builder.setOrderingMatchingRule(syntax.getOrderingMatchingRule());
- builder.setSubstringMatchingRule(syntax
- .getSubstringMatchingRule());
-
- AttributeType parent = builder.getInstance();
-
- builder.setPrimaryName("childType");
- builder.setOid("4.5.6");
- builder.setSuperiorType(parent);
- AttributeType child = builder.getInstance();
-
- Assert.assertEquals(parent.getApproximateMatchingRule(), child
- .getApproximateMatchingRule());
- Assert.assertEquals(parent.getEqualityMatchingRule(), child
- .getEqualityMatchingRule());
- Assert.assertEquals(parent.getOrderingMatchingRule(), child
- .getOrderingMatchingRule());
- Assert.assertEquals(parent.getSubstringMatchingRule(), child
- .getSubstringMatchingRule());
- }
-
-
-
- /**
- * Create test data for testing the
- * {@link AttributeType#isObjectClass()} method.
- *
- * @return Returns the array of test data.
- */
- @DataProvider(name = "isObjectClassTypeTestData")
- public Object[][] createIsObjectClassTypeTestData() {
- return new Object[][] { { "testType", false },
- { "objectclass", true }, { "objectClass", true },
- { "OBJECTCLASS", true } };
- }
-
-
-
- /**
- * Check that the objectClass attribute type is correctly
- * identified.
- *
- * @param name
- * The primary name.
- * @param result
- * The expected result.
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test(dataProvider = "isObjectClassTypeTestData")
- public void testIsObjectClassType(String name, boolean result)
- throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(name,
- "1.2.3");
- AttributeType type = builder.getInstance();
-
- Assert.assertEquals(type.isObjectClass(), result);
- }
-
-
-
- /**
- * Check that the {@link AttributeType#isCollective()} method.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testIsCollective() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- AttributeType type = builder.getInstance();
-
- Assert.assertFalse(type.isCollective());
-
- builder = new AttributeTypeBuilder("testType", "1.2.3");
- builder.setCollective(true);
- type = builder.getInstance();
-
- Assert.assertTrue(type.isCollective());
- }
-
-
-
- /**
- * Check that the {@link AttributeType#isNoUserModification()}
- * method.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testIsNoUserModification() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- AttributeType type = builder.getInstance();
-
- Assert.assertFalse(type.isNoUserModification());
-
- builder = new AttributeTypeBuilder("testType", "1.2.3");
- builder.setNoUserModification(true);
- type = builder.getInstance();
-
- Assert.assertTrue(type.isNoUserModification());
- }
-
-
-
- /**
- * Check that the {@link AttributeType#isSingleValue()} method.
- *
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test
- public void testIsSingleValue() throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- AttributeType type = builder.getInstance();
-
- Assert.assertFalse(type.isSingleValue());
-
- builder = new AttributeTypeBuilder("testType", "1.2.3");
- builder.setSingleValue(true);
- type = builder.getInstance();
-
- Assert.assertTrue(type.isSingleValue());
- }
-
-
-
- /**
- * Create test data for testing the
- * {@link AttributeType#isOperational()} method.
- *
- * @return Returns the array of test data.
- */
- @DataProvider(name = "isOperationalTestData")
- public Object[][] createIsOperationalTestData() {
- return new Object[][] { { null, false },
- { AttributeUsage.USER_APPLICATIONS, false },
- { AttributeUsage.DIRECTORY_OPERATION, true },
- { AttributeUsage.DISTRIBUTED_OPERATION, true },
- { AttributeUsage.DSA_OPERATION, true } };
- }
-
-
-
- /**
- * Check that the {@link AttributeType#isOperational()} method.
- *
- * @param usage
- * The attribute usage.
- * @param result
- * Expected result.
- * @throws Exception
- * If the test failed unexpectedly.
- */
- @Test(dataProvider = "isOperationalTestData")
- public void testIsOperational(AttributeUsage usage, boolean result)
- throws Exception {
- AttributeTypeBuilder builder = new AttributeTypeBuilder(
- "testType", "1.2.3");
- builder.setAttributeUsage(usage);
- AttributeType type = builder.getInstance();
- Assert.assertEquals(type.isOperational(), result);
- }
-
- /** {@inheritDoc} */
- @Override
- protected SchemaDefinitionBuilder getBuilder(String name, String oid) {
- return new AttributeTypeBuilder(name, oid);
- }
-}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/TestDN.java b/opendj-server-legacy/src/test/java/org/opends/server/types/TestDN.java
index eb920e1..7b630d0 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/TestDN.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/TestDN.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS
+ * Portions Copyright 2012-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import static org.assertj.core.api.Assertions.*;
import static org.opends.server.TestCaseUtils.*;
import static org.opends.server.core.DirectoryServer.*;
@@ -1152,10 +1154,11 @@
DN dn1 = DN.valueOf(first);
DN dn2 = DN.valueOf(second);
+ String msg = "DN equality for <" + first + "> and <" + second + ">";
if (result == 0) {
- assertEquals (dn1, dn2, "DN equality for <" + first + "> and <" + second + ">");
+ assertEquals (dn1, dn2, msg);
} else {
- assertNotEquals(dn1, dn2, "DN equality for <" + first + "> and <" + second + ">");
+ assertNotEquals(dn1, dn2, msg);
}
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java b/opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java
index 51f404e..f38ac02 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.types;
@@ -40,9 +40,9 @@
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.schema.AttributeTypeSyntax;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -226,9 +226,7 @@
String string = "( 2.5.18.6 NAME 'subtreeSpecification' "
+ "SYNTAX 1.3.6.1.4.1.1466.115.121.1.45 )";
- AttributeType type = AttributeTypeSyntax.decodeAttributeType(
- ByteString.valueOfUtf8(string),
- DirectoryServer.getSchema(), false);
+ AttributeType type = DirectoryServer.getSchema().parseAttributeType(string);
// Test values.
String[] values = new String[] { "{ }",
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/TestObjectClass.java b/opendj-server-legacy/src/test/java/org/opends/server/types/TestObjectClass.java
index 77afee3..503652a 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/TestObjectClass.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/TestObjectClass.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS
+ * Portions Copyright 2013-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java b/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
index fd6b30f..4289c6b 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.types;
@@ -33,6 +33,7 @@
import java.util.ArrayList;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
import org.testng.annotations.BeforeClass;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeRuleTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeRuleTestCase.java
index a953d36..3e0203e 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeRuleTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeRuleTestCase.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.Collections;
import java.util.LinkedHashSet;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeTestCase.java
index 165961a..bdd103d 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/VirtualAttributeTestCase.java
@@ -22,10 +22,12 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2015 ForgeRock AS
+ * Portions Copyright 2011-2016 ForgeRock AS
*/
package org.opends.server.types;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+
import java.util.Collections;
import java.util.LinkedHashSet;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/util/TestAddChangeRecordEntry.java b/opendj-server-legacy/src/test/java/org/opends/server/util/TestAddChangeRecordEntry.java
index ff2ee6a..20809c2 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/util/TestAddChangeRecordEntry.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/util/TestAddChangeRecordEntry.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.util;
@@ -35,7 +35,7 @@
import org.opends.server.TestCaseUtils;
import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.testng.Assert;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/util/TestLDIFReader.java b/opendj-server-legacy/src/test/java/org/opends/server/util/TestLDIFReader.java
index 3bbda26..8ea0135 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/util/TestLDIFReader.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/util/TestLDIFReader.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS
+ * Portions Copyright 2014-2016 ForgeRock AS
*/
package org.opends.server.util;
@@ -39,6 +39,7 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
+import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.*;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
--
Gitblit v1.10.0