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

neil_a_wilson
03.52.2007 09dc131d36b33e58f728316c3d445dfc3b865be4
refs
author neil_a_wilson <neil_a_wilson@localhost>
Tuesday, April 3, 2007 20:52 +0200
committer neil_a_wilson <neil_a_wilson@localhost>
Tuesday, April 3, 2007 20:52 +0200
commit09dc131d36b33e58f728316c3d445dfc3b865be4
tree d9d2a114e3b64c1594eed3e2dee3d6d7356548d5 tree | zip | gz
parent 58feba98f2906308e48f2a34ba3d9c4889202281 view | diff
Add initial support for a virtual attribute subsystem, and implement a few
different kinds of virtual attributes. This commit addresses the following
issues:

- Issue #1475 -- General virtual attribute support
- Issue #539 -- Support for the isMemberOf virtual attribute
- Issue #544 -- Support for the entryDN virtual attribute
- Issue #1056 -- Support for the subschemaSubentry virtual attribute
- Issue #85 -- Support for the real attributes only control
- Issue #86 -- Support for the virutal attributes only control

In general, virtual attribute support consists of three parts:

- An implementation of the org.opends.server.api.VirtualAttributeProvider
class, which provides the logic for actually generating the values, providing
support for various kinds of matching, and potentially the ability to process
search operations involving the virtual attribute that might not otherwise be
indexed.

- The org.opends.server.types.VirtualAttribute class, which is a subclass of
org.opends.server.types.Attribute and uses the virtual attribute provider to
generate its values.

- The org.opends.server.types.VirtualAttributeRule class, which associates a
virtual attribute provider with a given attribute type, and also with a set
of criteria that controls which entries should have the attribute.


The virtual attribute rule currently supports the following criteria that can
be used to decide whether an entry should have a given virtual attribute:

- Zero or more base DNs. If any base DNs are provided, then any entry which
falls below one of those base DNs will be a candidate to get the virtual
attribute. If no base DNs are provided, then DIT location will not be taken
into account when determining eligibility.

- Zero or more group DNs. If any group DNs are provided, then any entry that
belongs to one of the specified groups will be a candidate to get the virtual
attribute. If no group DNs are provided, then group membership will not be
taken into account when determining eligibility.

- Zero or more search filters. If any filters are provided, then any entry
that matches one of the specified filters will be a candidate to get the
virtual attribute. If no filters are provided, then the contents of the
entry will not be taken into account when determining eligibility.


In addition to that criteria, virtual attribute rules define a conflict
behavior, which controls how to behave when the entry already has one or more
real values for the attribute. The conflict behavior can be
"real-overrides-virtual" (to only show the real values),
"virtual-overrides-real" (to only show the virtual values), or
"merge-real-and-virtual" (to show both real and virtual values).

The virtual attribute implementation has been designed so that there should be
virtually no performance impact unless the attribute needs to be returned to
the client or it is referenced in a search filter, and you can completely
disable virtual attributes if you don't need them.
1 files deleted
13 files added
40 files modified
8277 ■■■■■ changed files
opendj-sdk/opends/resource/config/config.ldif 28 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/resource/schema/00-core.ldif 4 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/resource/schema/02-config.ldif 28 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml 8 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/VirtualAttributeConfiguration.xml 183 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/api/ClientConnection.java 9 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/api/Group.java 3 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/api/VirtualAttribute.java 141 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/api/VirtualAttributeProvider.java 637 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/BackupBackend.java 15 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/MemoryBackend.java 31 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/MonitorBackend.java 17 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/RootDSEBackend.java 35 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java 5 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ID2Entry.java 12 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JebFormat.java 8 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskBackend.java 13 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskScheduler.java 14 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/config/ConfigEntry.java 2 ●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java 2 ●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java 2 ●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java 125 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java 6 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java 6 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java 32 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/VirtualAttributeConfigManager.java 578 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java 22 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProvider.java 399 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java 437 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProvider.java 210 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/interop/LazyDN.java 23 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/messages/ConfigMessages.java 63 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/messages/ExtensionsMessages.java 15 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java 50 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/tools/LDAPToolUtils.java 10 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/Attribute.java 54 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/DN.java 58 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/Entry.java 444 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/LDIFExportConfig.java 38 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/VirtualAttribute.java 258 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/VirtualAttributeRule.java 408 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/util/LDIFWriter.java 2 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/util/ServerConstants.java 15 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/core/SearchOperationTestCase.java 2 ●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java 1116 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProviderTestCase.java 1277 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java 848 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/interop/LazyDNTestCase.java 39 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java 2 ●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java 2 ●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationTestCase.java 10 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java 2 ●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/VirtualAttributeRuleTestCase.java 337 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/types/VirtualAttributeTestCase.java 192 ●●●●● diff | view | raw | blame | history