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

neil_a_wilson
03.52.2007 e1ea3e0d8999105f144d2be98e0286928b8319ed
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
commite1ea3e0d8999105f144d2be98e0286928b8319ed
tree 0bd13e1062da005f69ec8a15a1b21f61b992e75f tree | zip | gz
parent 89d796bbd8272e36e586437c91ec71a4fb1bb632 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
opends/resource/config/config.ldif 28 ●●●●● diff | view | raw | blame | history
opends/resource/schema/00-core.ldif 4 ●●●● diff | view | raw | blame | history
opends/resource/schema/02-config.ldif 28 ●●●●● diff | view | raw | blame | history
opends/src/admin/defn/org/opends/server/admin/std/RootConfiguration.xml 8 ●●●●● diff | view | raw | blame | history
opends/src/admin/defn/org/opends/server/admin/std/VirtualAttributeConfiguration.xml 183 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/api/ClientConnection.java 9 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/api/Group.java 3 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/api/VirtualAttribute.java 141 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/api/VirtualAttributeProvider.java 637 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/BackupBackend.java 15 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/MemoryBackend.java 31 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/MonitorBackend.java 17 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/RootDSEBackend.java 35 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/SchemaBackend.java 5 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/ID2Entry.java 12 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/JebFormat.java 8 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/task/TaskBackend.java 13 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/backends/task/TaskScheduler.java 14 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/config/ConfigEntry.java 2 ●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/core/AddOperation.java 2 ●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/core/DeleteOperation.java 2 ●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/core/DirectoryServer.java 125 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/core/ModifyDNOperation.java 6 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/core/ModifyOperation.java 6 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/core/SearchOperation.java 32 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/core/VirtualAttributeConfigManager.java 578 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/extensions/ConfigFileHandler.java 22 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProvider.java 399 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProvider.java 437 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProvider.java 210 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/interop/LazyDN.java 23 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/messages/ConfigMessages.java 63 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/messages/ExtensionsMessages.java 15 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java 50 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPToolUtils.java 10 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/types/Attribute.java 54 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/types/DN.java 58 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/types/Entry.java 444 ●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/types/LDIFExportConfig.java 38 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/types/VirtualAttribute.java 258 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/types/VirtualAttributeRule.java 408 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/util/LDIFWriter.java 2 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/util/ServerConstants.java 15 ●●●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/SearchOperationTestCase.java 2 ●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java 1116 ●●●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/IsMemberOfVirtualAttributeProviderTestCase.java 1277 ●●●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java 848 ●●●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/interop/LazyDNTestCase.java 39 ●●●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java 2 ●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java 2 ●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationTestCase.java 10 ●●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java 2 ●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/types/VirtualAttributeRuleTestCase.java 337 ●●●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/types/VirtualAttributeTestCase.java 192 ●●●●● diff | view | raw | blame | history