From 410b7d0592ba0e1dc2f3d9c745523fee430bcabe Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 10 Jun 2011 10:25:31 +0000
Subject: [PATCH] Partial fix for OPENDJ-194: Minor improvements to change log content and configuration
---
opends/src/server/org/opends/server/replication/protocol/StartSessionMsg.java | 75 ++++++++++++++++++++++++++++++-------
1 files changed, 61 insertions(+), 14 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/protocol/StartSessionMsg.java b/opends/src/server/org/opends/server/replication/protocol/StartSessionMsg.java
index 3f22529..39aa36e 100644
--- a/opends/src/server/org/opends/server/replication/protocol/StartSessionMsg.java
+++ b/opends/src/server/org/opends/server/replication/protocol/StartSessionMsg.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
*/
package org.opends.server.replication.protocol;
@@ -73,6 +74,8 @@
private Set<String> eclIncludes = new HashSet<String>();
+ private Set<String> eclIncludesForDeletes = new HashSet<String>();
+
/**
* The protocolVersion that should be used when serializing this message.
*/
@@ -95,7 +98,7 @@
}
else
{
- decode_V4(in);
+ decode_V4(in, version);
}
}
@@ -188,7 +191,7 @@
}
else
{
- return getBytes_V4();
+ return getBytes_V4(protocolVersion);
}
}
@@ -205,11 +208,11 @@
}
else
{
- return getBytes_V4();
+ return getBytes_V4(reqProtocolVersion);
}
}
- private byte[] getBytes_V4()
+ private byte[] getBytes_V4(short version)
{
try
{
@@ -229,14 +232,23 @@
writer.writeStartSequence();
for (String attrDef : eclIncludes)
+ {
writer.writeOctetString(attrDef);
+ }
+ writer.writeEndSequence();
+
+ writer.writeStartSequence();
+ for (String attrDef : eclIncludesForDeletes)
+ {
+ writer.writeOctetString(attrDef);
+ }
writer.writeEndSequence();
return byteBuilder.toByteArray();
}
catch (Exception e)
{
- return null;
+ throw new RuntimeException(e);
}
}
@@ -290,7 +302,7 @@
// Msg decoding
// ============
- private void decode_V4(byte[] in)
+ private void decode_V4(byte[] in, short version)
throws DataFormatException
{
ByteSequenceReader reader = ByteString.wrap(in).asReader();
@@ -328,6 +340,14 @@
this.eclIncludes.add(s);
}
asn1Reader.readEndSequence();
+
+ asn1Reader.readStartSequence();
+ while (asn1Reader.hasNextElement())
+ {
+ String s = asn1Reader.readOctetStringAsString();
+ this.eclIncludesForDeletes.add(s);
+ }
+ asn1Reader.readEndSequence();
}
catch (Exception e)
{
@@ -428,7 +448,8 @@
"\nassuredMode: " + assuredMode +
"\nsafeDataLevel: " + safeDataLevel +
"\nreferralsURLs: " + urls +
- "\nEclIncludes: " + eclIncludes);
+ "\nEclIncludes " + eclIncludes +
+ "\nEclIncludeForDeletes: " + eclIncludesForDeletes);
}
/**
@@ -459,22 +480,48 @@
}
/**
- * Set the list of entry attributes to include in the ECL.
- * @param eclIncludes The list of attributes.
+ * Set the attributes configured on a server to be included in the ECL.
+ *
+ * @param includeAttributes
+ * attributes to be included with all change records.
+ * @param includeAttributesForDeletes
+ * additional attributes to be included with delete change records.
*/
- public void setEclIncludes(Set<String> eclIncludes)
+ public void setEclIncludes(
+ Set<String> includeAttributes,
+ Set<String> includeAttributesForDeletes)
{
- if (eclIncludes != null)
- this.eclIncludes = eclIncludes;
+ if (includeAttributes != null)
+ {
+ eclIncludes = includeAttributes;
+ }
+
+ if (includeAttributesForDeletes != null)
+ {
+ eclIncludesForDeletes = includeAttributesForDeletes;
+ }
}
/**
- * Get the list of entry attributes to include in the ECL..
- * @return The list of entry attributes to include in the ECL.
+ * Get the attributes to include in each change for the ECL.
+ *
+ * @return The attributes to include in each change for the ECL.
*/
public Set<String> getEclIncludes()
{
return eclIncludes;
}
+
+
+ /**
+ * Get the attributes to include in each delete change for the ECL.
+ *
+ * @return The attributes to include in each delete change for the ECL.
+ */
+ public Set<String> getEclIncludesForDeletes()
+ {
+ return eclIncludesForDeletes;
+ }
+
}
--
Gitblit v1.10.0