From b892b0038d7dc619ee4fac7058189736d2d73f0d Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Thu, 07 Apr 2011 12:41:00 +0000
Subject: [PATCH] Fix OPENDJ-112 - The Changelog virtual attribute appears in al entries, should only apply to rootDSE. The changes introduce a scope in the VirtualAttributeRule. The default is Whole_Subtree. The changelog virtual attributes are now registered with a BASE_OBJECT scope and "" base DNs, meaning the rootDSE only. Also each virtual attribute provider override the hasValue() method for optimization and avoiding computing the values and throwing them away.
---
opends/src/server/org/opends/server/core/VirtualAttributeConfigManager.java | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/VirtualAttributeConfigManager.java b/opends/src/server/org/opends/server/core/VirtualAttributeConfigManager.java
index ee6da9a..325cc0b 100644
--- a/opends/src/server/org/opends/server/core/VirtualAttributeConfigManager.java
+++ b/opends/src/server/org/opends/server/core/VirtualAttributeConfigManager.java
@@ -23,8 +23,10 @@
*
*
* Copyright 2007-2009 Sun Microsystems, Inc.
+ * Portions Copyright 2011 ForgeRock AS
*/
package org.opends.server.core;
+import org.opends.server.types.SearchScope;
import org.opends.messages.Message;
@@ -188,8 +190,10 @@
VirtualAttributeRule rule =
new VirtualAttributeRule(cfg.getAttributeType(), provider,
- cfg.getBaseDN(), cfg.getGroupDN(),
- filters, cfg.getConflictBehavior());
+ cfg.getBaseDN(),
+ SearchScope.valueOf(cfg.getScope().name()),
+ cfg.getGroupDN(),
+ filters, cfg.getConflictBehavior());
rules.put(cfg.dn(), rule);
DirectoryServer.registerVirtualAttribute(rule);
}
@@ -324,10 +328,11 @@
{
VirtualAttributeRule rule =
new VirtualAttributeRule(configuration.getAttributeType(), provider,
- configuration.getBaseDN(),
- configuration.getGroupDN(),
- filters,
- configuration.getConflictBehavior());
+ configuration.getBaseDN(),
+ SearchScope.valueOf(configuration.getScope().name()),
+ configuration.getGroupDN(),
+ filters,
+ configuration.getConflictBehavior());
rules.put(configuration.dn(), rule);
DirectoryServer.registerVirtualAttribute(rule);
@@ -506,10 +511,11 @@
{
VirtualAttributeRule rule =
new VirtualAttributeRule(configuration.getAttributeType(), provider,
- configuration.getBaseDN(),
- configuration.getGroupDN(),
- filters,
- configuration.getConflictBehavior());
+ configuration.getBaseDN(),
+ SearchScope.valueOf(configuration.getScope().name()),
+ configuration.getGroupDN(),
+ filters,
+ configuration.getConflictBehavior());
rules.put(configuration.dn(), rule);
if (existingRule == null)
--
Gitblit v1.10.0