From fc2267b6e73ca9707f8eaaf37f3c6d730944f1ae Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 22 Sep 2014 13:26:33 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1206 : Create a new ReplicationBackend/ChangelogBackend to support cn=changelog CR-4036
---
opendj3-server-dev/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java | 42 ++--------
opendj3-server-dev/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java | 40 ++-------
opendj3-server-dev/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java | 40 ++-------
opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java | 61 ++++++++------
opendj3-server-dev/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java | 20 -----
5 files changed, 63 insertions(+), 140 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java
index d86a685..8d68dac 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java
@@ -26,11 +26,8 @@
*/
package org.opends.server.replication.common;
-import java.util.List;
-
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ResultCode;
-import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
import org.opends.server.api.VirtualAttributeProvider;
import org.opends.server.core.SearchOperation;
@@ -45,7 +42,6 @@
*/
public class ChangelogBaseDNVirtualAttributeProvider
extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
- implements ConfigurationChangeListener<UserDefinedVirtualAttributeCfg>
{
/**
@@ -104,21 +100,5 @@
searchOperation.appendErrorMessage(message);
}
- /** {@inheritDoc} */
- @Override
- public boolean isConfigurationChangeAcceptable(
- UserDefinedVirtualAttributeCfg configuration,
- List<LocalizableMessage> unacceptableReasons)
- {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- public ConfigChangeResult applyConfigurationChange(
- UserDefinedVirtualAttributeCfg configuration)
- {
- return new ConfigChangeResult(ResultCode.OTHER, false);
- }
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
index 2a870a1..4b46bcc 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
@@ -26,19 +26,14 @@
*/
package org.opends.server.replication.common;
-import java.util.List;
-
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ResultCode;
-import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
import org.opends.server.api.VirtualAttributeProvider;
-import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.types.*;
-import org.opends.server.workflowelement.externalchangelog.ECLWorkflowElement;
import static org.opends.messages.ExtensionMessages.*;
@@ -47,20 +42,22 @@
*/
public class FirstChangeNumberVirtualAttributeProvider
extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
- implements ConfigurationChangeListener<UserDefinedVirtualAttributeCfg>
{
/** The tracer object for the debug logger. */
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
+ private final ReplicationServer replicationServer;
+
/**
* Creates a new instance of this member virtual attribute provider.
+ *
+ * @param replicationServer
+ * The replication server.
*/
- public FirstChangeNumberVirtualAttributeProvider()
+ public FirstChangeNumberVirtualAttributeProvider(ReplicationServer replicationServer)
{
super();
-
- // All initialization should be performed in the
- // initializeVirtualAttributeProvider method.
+ this.replicationServer = replicationServer;
}
/** {@inheritDoc} */
@@ -85,12 +82,9 @@
String value = "0";
try
{
- ECLWorkflowElement eclwe = (ECLWorkflowElement)
- DirectoryServer.getWorkflowElement("EXTERNAL CHANGE LOG");
- if (eclwe != null)
+ if (replicationServer != null)
{
- final ReplicationServer rs = eclwe.getReplicationServer();
- final long[] limits = rs.getECLChangeNumberLimits();
+ final long[] limits = replicationServer.getECLChangeNumberLimits();
value = String.valueOf(limits[0]);
}
}
@@ -127,21 +121,5 @@
searchOperation.appendErrorMessage(message);
}
- /** {@inheritDoc} */
- @Override
- public boolean isConfigurationChangeAcceptable(
- UserDefinedVirtualAttributeCfg configuration,
- List<LocalizableMessage> unacceptableReasons)
- {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- public ConfigChangeResult applyConfigurationChange(
- UserDefinedVirtualAttributeCfg configuration)
- {
- return new ConfigChangeResult(ResultCode.OTHER, false);
- }
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
index e9af32f..04e30f8 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
@@ -26,19 +26,14 @@
*/
package org.opends.server.replication.common;
-import java.util.List;
-
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ResultCode;
-import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
import org.opends.server.api.VirtualAttributeProvider;
-import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.types.*;
-import org.opends.server.workflowelement.externalchangelog.ECLWorkflowElement;
import static org.opends.messages.ExtensionMessages.*;
@@ -47,20 +42,22 @@
*/
public class LastChangeNumberVirtualAttributeProvider
extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
- implements ConfigurationChangeListener<UserDefinedVirtualAttributeCfg>
{
/** The tracer object for the debug logger. */
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
+ private final ReplicationServer replicationServer;
+
/**
* Creates a new instance of this member virtual attribute provider.
+ *
+ * @param replicationServer
+ * The replication server.
*/
- public LastChangeNumberVirtualAttributeProvider()
+ public LastChangeNumberVirtualAttributeProvider(ReplicationServer replicationServer)
{
super();
-
- // All initialization should be performed in the
- // initializeVirtualAttributeProvider method.
+ this.replicationServer = replicationServer;
}
/** {@inheritDoc} */
@@ -85,12 +82,9 @@
String value = "0";
try
{
- ECLWorkflowElement eclwe = (ECLWorkflowElement)
- DirectoryServer.getWorkflowElement("EXTERNAL CHANGE LOG");
- if (eclwe != null)
+ if (replicationServer != null)
{
- final ReplicationServer rs = eclwe.getReplicationServer();
- final long[] limits = rs.getECLChangeNumberLimits();
+ final long[] limits = replicationServer.getECLChangeNumberLimits();
value = String.valueOf(limits[1]);
}
}
@@ -127,21 +121,5 @@
searchOperation.appendErrorMessage(message);
}
- /** {@inheritDoc} */
- @Override
- public boolean isConfigurationChangeAcceptable(
- UserDefinedVirtualAttributeCfg configuration,
- List<LocalizableMessage> unacceptableReasons)
- {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- public ConfigChangeResult applyConfigurationChange(
- UserDefinedVirtualAttributeCfg configuration)
- {
- return new ConfigChangeResult(ResultCode.OTHER, false);
- }
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java b/opendj3-server-dev/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
index 7f0f109..a711dd2 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
@@ -26,22 +26,18 @@
*/
package org.opends.server.replication.common;
-import java.util.List;
import java.util.Set;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ResultCode;
-import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
import org.opends.server.api.VirtualAttributeProvider;
-import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
import org.opends.server.replication.plugin.MultimasterReplication;
import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.types.*;
import org.opends.server.util.ServerConstants;
-import org.opends.server.workflowelement.externalchangelog.ECLWorkflowElement;
import static org.opends.messages.ExtensionMessages.*;
@@ -52,19 +48,21 @@
*/
public class LastCookieVirtualProvider
extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
- implements ConfigurationChangeListener<UserDefinedVirtualAttributeCfg>
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
+ private final ReplicationServer replicationServer;
+
/**
* Creates a new instance of this member virtual attribute provider.
+ *
+ * @param replicationServer
+ * The replication server.
*/
- public LastCookieVirtualProvider()
+ public LastCookieVirtualProvider(ReplicationServer replicationServer)
{
super();
-
- // All initialization should be performed in the
- // initializeVirtualAttributeProvider method.
+ this.replicationServer = replicationServer;
}
/** {@inheritDoc} */
@@ -89,17 +87,13 @@
{
try
{
- ECLWorkflowElement eclwe = (ECLWorkflowElement)
- DirectoryServer.getWorkflowElement("EXTERNAL CHANGE LOG");
- if (eclwe!=null)
+ if (replicationServer != null)
{
// Set a list of excluded domains (also exclude 'cn=changelog' itself)
- Set<String> excludedDomains =
- MultimasterReplication.getECLDisabledDomains();
+ Set<String> excludedDomains = MultimasterReplication.getECLDisabledDomains();
excludedDomains.add(ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT);
- final ReplicationServer rs = eclwe.getReplicationServer();
- String newestCookie = rs.getNewestECLCookie(excludedDomains).toString();
+ String newestCookie = replicationServer.getNewestECLCookie(excludedDomains).toString();
return Attributes.create(rule.getAttributeType(), newestCookie);
}
}
@@ -132,20 +126,4 @@
searchOperation.appendErrorMessage(message);
}
- /** {@inheritDoc} */
- @Override
- public boolean isConfigurationChangeAcceptable(
- UserDefinedVirtualAttributeCfg configuration,
- List<LocalizableMessage> unacceptableReasons)
- {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- public ConfigChangeResult applyConfigurationChange(
- UserDefinedVirtualAttributeCfg configuration)
- {
- return new ConfigChangeResult(ResultCode.OTHER, false);
- }
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
index 957d470..c1f52c6 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -490,14 +490,40 @@
NetworkGroup.getAdminNetworkGroup().registerWorkflow(workflowImpl);
NetworkGroup.getInternalNetworkGroup().registerWorkflow(workflowImpl);
- DirectoryServer.registerVirtualAttribute(buildVirtualAttributeRule(
- "lastexternalchangelogcookie", new LastCookieVirtualProvider()));
- DirectoryServer.registerVirtualAttribute(buildVirtualAttributeRule(
- "firstchangenumber", new FirstChangeNumberVirtualAttributeProvider()));
- DirectoryServer.registerVirtualAttribute(buildVirtualAttributeRule(
- "lastchangenumber", new LastChangeNumberVirtualAttributeProvider()));
- DirectoryServer.registerVirtualAttribute(buildVirtualAttributeRule(
- "changelog", new ChangelogBaseDNVirtualAttributeProvider()));
+ registerVirtualAttributeRules();
+ }
+
+ private List<VirtualAttributeRule> getVirtualAttributesRules() throws DirectoryException
+ {
+ final List<VirtualAttributeRule> rules = new ArrayList<VirtualAttributeRule>();
+ rules.add(buildVirtualAttributeRule("lastexternalchangelogcookie", new LastCookieVirtualProvider(this)));
+ rules.add(buildVirtualAttributeRule("firstchangenumber", new FirstChangeNumberVirtualAttributeProvider(this)));
+ rules.add(buildVirtualAttributeRule("lastchangenumber", new LastChangeNumberVirtualAttributeProvider(this)));
+ rules.add(buildVirtualAttributeRule("changelog", new ChangelogBaseDNVirtualAttributeProvider()));
+ return rules;
+ }
+
+ private void registerVirtualAttributeRules() throws DirectoryException {
+ for (VirtualAttributeRule rule : getVirtualAttributesRules())
+ {
+ DirectoryServer.registerVirtualAttribute(rule);
+ }
+ }
+
+ private void deregisterVirtualAttributeRules()
+ {
+ try
+ {
+ for (VirtualAttributeRule rule : getVirtualAttributesRules())
+ {
+ DirectoryServer.deregisterVirtualAttribute(rule);
+ }
+ }
+ catch (DirectoryException e)
+ {
+ // Should never happen
+ throw new RuntimeException(e);
+ }
}
private static VirtualAttributeRule buildVirtualAttributeRule(String attrName,
@@ -545,24 +571,7 @@
NetworkGroup.getDefaultNetworkGroup().deregisterWorkflow(eclWorkflowID);
- try
- {
- DirectoryServer.deregisterVirtualAttribute(buildVirtualAttributeRule(
- "lastexternalchangelogcookie", new LastCookieVirtualProvider()));
- DirectoryServer.deregisterVirtualAttribute(buildVirtualAttributeRule(
- "firstchangenumber",
- new FirstChangeNumberVirtualAttributeProvider()));
- DirectoryServer.deregisterVirtualAttribute(buildVirtualAttributeRule(
- "lastchangenumber",
- new LastChangeNumberVirtualAttributeProvider()));
- DirectoryServer.deregisterVirtualAttribute(buildVirtualAttributeRule(
- "changelog", new ChangelogBaseDNVirtualAttributeProvider()));
- }
- catch (DirectoryException e)
- {
- // Should never happen
- throw new RuntimeException(e);
- }
+ deregisterVirtualAttributeRules();
eclwf.deregister();
eclwf.finalizeWorkflow();
--
Gitblit v1.10.0