From 9969e4092753602a028b9c7763afcc8544ae2879 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 21 Jul 2014 08:02:43 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1206 : Create a new ReplicationBackend/ChangelogBackend to support cn=changelog CR-4036
---
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java | 61 ++++++++------
opendj-sdk/opends/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java | 21 -----
opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java | 41 ++-------
opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java | 41 ++-------
opendj-sdk/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java | 44 ++--------
5 files changed, 67 insertions(+), 141 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java
index 885bcc9..f75fd21 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java
@@ -22,16 +22,14 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2013 ForgeRock AS
+ * Portions Copyright 2011-2014 ForgeRock AS
*/
package org.opends.server.replication.common;
import java.util.Collections;
-import java.util.List;
import java.util.Set;
import org.opends.messages.Message;
-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;
@@ -46,7 +44,6 @@
*/
public class ChangelogBaseDNVirtualAttributeProvider
extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
- implements ConfigurationChangeListener<UserDefinedVirtualAttributeCfg>
{
/**
@@ -104,21 +101,5 @@
searchOperation.appendErrorMessage(message);
}
- /** {@inheritDoc} */
- @Override
- public boolean isConfigurationChangeAcceptable(
- UserDefinedVirtualAttributeCfg configuration,
- List<Message> unacceptableReasons)
- {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- public ConfigChangeResult applyConfigurationChange(
- UserDefinedVirtualAttributeCfg configuration)
- {
- return new ConfigChangeResult(ResultCode.OTHER, false);
- }
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
index 99b144e..1f242f0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
@@ -22,24 +22,20 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2013 ForgeRock AS
+ * Portions Copyright 2011-2014 ForgeRock AS
*/
package org.opends.server.replication.common;
import java.util.Collections;
-import java.util.List;
import java.util.Set;
import org.opends.messages.Message;
-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.loggers.debug.DebugTracer;
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.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -49,20 +45,22 @@
*/
public class FirstChangeNumberVirtualAttributeProvider
extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
- implements ConfigurationChangeListener<UserDefinedVirtualAttributeCfg>
{
/** The tracer object for the debug logger. */
private static final DebugTracer TRACER = getTracer();
+ 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} */
@@ -87,12 +85,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]);
}
}
@@ -130,21 +125,5 @@
searchOperation.appendErrorMessage(message);
}
- /** {@inheritDoc} */
- @Override
- public boolean isConfigurationChangeAcceptable(
- UserDefinedVirtualAttributeCfg configuration,
- List<Message> unacceptableReasons)
- {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- public ConfigChangeResult applyConfigurationChange(
- UserDefinedVirtualAttributeCfg configuration)
- {
- return new ConfigChangeResult(ResultCode.OTHER, false);
- }
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
index 5479d1a..edd7af2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
@@ -22,24 +22,20 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2013 ForgeRock AS
+ * Portions Copyright 2011-2014 ForgeRock AS
*/
package org.opends.server.replication.common;
import java.util.Collections;
-import java.util.List;
import java.util.Set;
import org.opends.messages.Message;
-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.loggers.debug.DebugTracer;
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.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -49,20 +45,22 @@
*/
public class LastChangeNumberVirtualAttributeProvider
extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
- implements ConfigurationChangeListener<UserDefinedVirtualAttributeCfg>
{
/** The tracer object for the debug logger. */
private static final DebugTracer TRACER = getTracer();
+ 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} */
@@ -87,12 +85,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]);
}
}
@@ -130,21 +125,5 @@
searchOperation.appendErrorMessage(message);
}
- /** {@inheritDoc} */
- @Override
- public boolean isConfigurationChangeAcceptable(
- UserDefinedVirtualAttributeCfg configuration,
- List<Message> unacceptableReasons)
- {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- public ConfigChangeResult applyConfigurationChange(
- UserDefinedVirtualAttributeCfg configuration)
- {
- return new ConfigChangeResult(ResultCode.OTHER, false);
- }
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
index dc95096..c3e0ff7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
@@ -22,26 +22,22 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2013 ForgeRock AS
+ * Portions Copyright 2011-2014 ForgeRock AS
*/
package org.opends.server.replication.common;
import java.util.Collections;
-import java.util.List;
import java.util.Set;
import org.opends.messages.Message;
-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.loggers.debug.DebugTracer;
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.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -53,7 +49,6 @@
*/
public class LastCookieVirtualProvider
extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
- implements ConfigurationChangeListener<UserDefinedVirtualAttributeCfg>
{
/**
@@ -61,15 +56,18 @@
*/
private static final DebugTracer TRACER = getTracer();
+ 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} */
@@ -94,17 +92,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();
final ByteString cookie = ByteString.valueOf(newestCookie);
return Collections.singleton(AttributeValues.create(cookie, cookie));
}
@@ -138,20 +132,4 @@
searchOperation.appendErrorMessage(message);
}
- /** {@inheritDoc} */
- @Override
- public boolean isConfigurationChangeAcceptable(
- UserDefinedVirtualAttributeCfg configuration,
- List<Message> unacceptableReasons)
- {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- public ConfigChangeResult applyConfigurationChange(
- UserDefinedVirtualAttributeCfg configuration)
- {
- return new ConfigChangeResult(ResultCode.OTHER, false);
- }
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index 9f013a8..652ce4f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -498,14 +498,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,
@@ -553,24 +579,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