From d04fb0f282e0fd9a4bc80d3f9d5ee15506a3b83b Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Mon, 08 Dec 2008 08:03:33 +0000
Subject: [PATCH] Merge the replication-service branch with the OpenDS trunk
---
opends/src/server/org/opends/server/replication/server/ReplicationBackend.java | 280 ++++++++++++++++++++++++++++---------------------------
1 files changed, 144 insertions(+), 136 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java b/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
index c56863a..053d3aa 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
@@ -34,6 +34,8 @@
import static org.opends.server.loggers.debug.DebugLogger.getTracer;
import static org.opends.server.util.StaticUtils.*;
+import org.opends.server.replication.protocol.LDAPUpdateMsg;
+
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -858,7 +860,7 @@
/**
* Export one change.
*/
- private void processChange(UpdateMsg msg,
+ private void processChange(UpdateMsg updateMsg,
LDIFExportConfig exportConfig, LDIFWriter ldifWriter,
SearchOperation searchOperation, String baseDN)
{
@@ -873,159 +875,165 @@
try
{
- if (msg instanceof AddMsg)
+ if (updateMsg instanceof LDAPUpdateMsg)
{
- AddMsg addMsg = (AddMsg)msg;
- AddOperation addOperation = (AddOperation)msg.createOperation(conn);
+ LDAPUpdateMsg msg = (LDAPUpdateMsg) updateMsg;
- dn = DN.decode("puid=" + addMsg.getParentUid() + "+" +
- CHANGE_NUMBER + "=" + msg.getChangeNumber().toString() + "+" +
- msg.getDn() + "," + BASE_DN);
-
- Map<AttributeType,List<Attribute>> attributes =
- new HashMap<AttributeType,List<Attribute>>();
- Map<ObjectClass, String> objectclasses =
- new HashMap<ObjectClass, String>();
-
- for (RawAttribute a : addOperation.getRawAttributes())
+ if (msg instanceof AddMsg)
{
- Attribute attr = a.toAttribute();
- if (attr.getAttributeType().isObjectClassType())
- {
- for (ByteString os : a.getValues())
- {
- String ocName = os.toString();
- ObjectClass oc =
- DirectoryServer.getObjectClass(toLowerCase(ocName));
- if (oc == null)
- {
- oc = DirectoryServer.getDefaultObjectClass(ocName);
- }
+ AddMsg addMsg = (AddMsg)msg;
+ AddOperation addOperation = (AddOperation)msg.createOperation(conn);
- objectclasses.put(oc,ocName);
+ dn = DN.decode("puid=" + addMsg.getParentUid() + "+" +
+ CHANGE_NUMBER + "=" + msg.getChangeNumber().toString() + "+" +
+ msg.getDn() + "," + BASE_DN);
+
+ Map<AttributeType,List<Attribute>> attributes =
+ new HashMap<AttributeType,List<Attribute>>();
+ Map<ObjectClass, String> objectclasses =
+ new HashMap<ObjectClass, String>();
+
+ for (RawAttribute a : addOperation.getRawAttributes())
+ {
+ Attribute attr = a.toAttribute();
+ if (attr.getAttributeType().isObjectClassType())
+ {
+ for (ByteString os : a.getValues())
+ {
+ String ocName = os.toString();
+ ObjectClass oc =
+ DirectoryServer.getObjectClass(toLowerCase(ocName));
+ if (oc == null)
+ {
+ oc = DirectoryServer.getDefaultObjectClass(ocName);
+ }
+
+ objectclasses.put(oc,ocName);
+ }
}
+ else
+ {
+ addAttribute(attributes, attr);
+ }
+ }
+
+ Attribute changetype = Attributes.create("changetype", "add");
+ addAttribute(attributes, changetype);
+
+ if (exportConfig != null)
+ {
+ AddChangeRecordEntry changeRecord =
+ new AddChangeRecordEntry(dn, attributes);
+ ldifWriter.writeChangeRecord(changeRecord);
}
else
{
- addAttribute(attributes, attr);
+ entry = new Entry(dn, objectclasses, attributes, null);
+ }
+ }
+ else if (msg instanceof DeleteMsg)
+ {
+ DeleteMsg delMsg = (DeleteMsg)msg;
+
+ dn = DN.decode("uuid=" + msg.getUniqueId() + "," +
+ CHANGE_NUMBER + "=" + delMsg.getChangeNumber().toString()+ "," +
+ msg.getDn() +","+ BASE_DN);
+
+ DeleteChangeRecordEntry changeRecord =
+ new DeleteChangeRecordEntry(dn);
+ if (exportConfig != null)
+ {
+ ldifWriter.writeChangeRecord(changeRecord);
+ }
+ else
+ {
+ Writer writer = new Writer();
+ LDIFWriter ldifWriter2 = writer.getLDIFWriter();
+ ldifWriter2.writeChangeRecord(changeRecord);
+ LDIFReader reader = writer.getLDIFReader();
+ entry = reader.readEntry();
+ }
+ }
+ else if (msg instanceof ModifyMsg)
+ {
+ ModifyOperation op = (ModifyOperation)msg.createOperation(conn);
+
+ dn = DN.decode("uuid=" + msg.getUniqueId() + "," +
+ CHANGE_NUMBER + "=" + msg.getChangeNumber().toString()+ "," +
+ msg.getDn() +","+ BASE_DN);
+ op.setInternalOperation(true);
+
+ ModifyChangeRecordEntry changeRecord =
+ new ModifyChangeRecordEntry(dn, op.getRawModifications());
+ if (exportConfig != null)
+ {
+ ldifWriter.writeChangeRecord(changeRecord);
+ }
+ else
+ {
+ Writer writer = new Writer();
+ LDIFWriter ldifWriter2 = writer.getLDIFWriter();
+ ldifWriter2.writeChangeRecord(changeRecord);
+ LDIFReader reader = writer.getLDIFReader();
+ entry = reader.readEntry();
+ }
+ }
+ else if (msg instanceof ModifyDNMsg)
+ {
+ ModifyDNOperation op = (ModifyDNOperation)msg.createOperation(conn);
+
+ dn = DN.decode("uuid=" + msg.getUniqueId() + "," +
+ CHANGE_NUMBER + "=" + msg.getChangeNumber().toString()+ "," +
+ msg.getDn() +","+ BASE_DN);
+ op.setInternalOperation(true);
+
+ ModifyDNChangeRecordEntry changeRecord =
+ new ModifyDNChangeRecordEntry(dn, op.getNewRDN(), op.deleteOldRDN(),
+ op.getNewSuperior());
+
+ if (exportConfig != null)
+ {
+ ldifWriter.writeChangeRecord(changeRecord);
+ }
+ else
+ {
+ Writer writer = new Writer();
+ LDIFWriter ldifWriter2 = writer.getLDIFWriter();
+ ldifWriter2.writeChangeRecord(changeRecord);
+ LDIFReader reader = writer.getLDIFReader();
+ Entry modDNEntry = reader.readEntry();
+ entry = modDNEntry;
}
}
- Attribute changetype = Attributes.create("changetype", "add");
- addAttribute(attributes, changetype);
-
if (exportConfig != null)
{
- AddChangeRecordEntry changeRecord =
- new AddChangeRecordEntry(dn, attributes);
- ldifWriter.writeChangeRecord(changeRecord);
+ this.exportedCount++;
}
else
{
- entry = new Entry(dn, objectclasses, attributes, null);
- }
- }
- else if (msg instanceof DeleteMsg)
- {
- DeleteMsg delMsg = (DeleteMsg)msg;
+ // Add extensibleObject objectclass and the ChangeNumber
+ // in the entry.
+ if (!entry.getObjectClasses().containsKey(objectclass))
+ entry.addObjectClass(objectclass);
+ Attribute changeNumber =
+ Attributes.create(CHANGE_NUMBER,
+ msg.getChangeNumber().toStringUI());
+ addAttribute(entry.getUserAttributes(), changeNumber);
+ Attribute domain = Attributes.create("replicationDomain", baseDN);
+ addAttribute(entry.getUserAttributes(), domain);
- dn = DN.decode("uuid=" + msg.getUniqueId() + "," +
- CHANGE_NUMBER + "=" + delMsg.getChangeNumber().toString()+ "," +
- msg.getDn() +","+ BASE_DN);
+ // Get the base DN, scope, and filter for the search.
+ DN searchBaseDN = searchOperation.getBaseDN();
+ SearchScope scope = searchOperation.getScope();
+ SearchFilter filter = searchOperation.getFilter();
- DeleteChangeRecordEntry changeRecord =
- new DeleteChangeRecordEntry(dn);
- if (exportConfig != null)
- {
- ldifWriter.writeChangeRecord(changeRecord);
- }
- else
- {
- Writer writer = new Writer();
- LDIFWriter ldifWriter2 = writer.getLDIFWriter();
- ldifWriter2.writeChangeRecord(changeRecord);
- LDIFReader reader = writer.getLDIFReader();
- entry = reader.readEntry();
- }
- }
- else if (msg instanceof ModifyMsg)
- {
- ModifyOperation op = (ModifyOperation)msg.createOperation(conn);
-
- dn = DN.decode("uuid=" + msg.getUniqueId() + "," +
- CHANGE_NUMBER + "=" + msg.getChangeNumber().toString()+ "," +
- msg.getDn() +","+ BASE_DN);
- op.setInternalOperation(true);
-
- ModifyChangeRecordEntry changeRecord =
- new ModifyChangeRecordEntry(dn, op.getRawModifications());
- if (exportConfig != null)
- {
- ldifWriter.writeChangeRecord(changeRecord);
- }
- else
- {
- Writer writer = new Writer();
- LDIFWriter ldifWriter2 = writer.getLDIFWriter();
- ldifWriter2.writeChangeRecord(changeRecord);
- LDIFReader reader = writer.getLDIFReader();
- entry = reader.readEntry();
- }
- }
- else if (msg instanceof ModifyDNMsg)
- {
- ModifyDNOperation op = (ModifyDNOperation)msg.createOperation(conn);
-
- dn = DN.decode("uuid=" + msg.getUniqueId() + "," +
- CHANGE_NUMBER + "=" + msg.getChangeNumber().toString()+ "," +
- msg.getDn() +","+ BASE_DN);
- op.setInternalOperation(true);
-
- ModifyDNChangeRecordEntry changeRecord =
- new ModifyDNChangeRecordEntry(dn, op.getNewRDN(), op.deleteOldRDN(),
- op.getNewSuperior());
-
- if (exportConfig != null)
- {
- ldifWriter.writeChangeRecord(changeRecord);
- }
- else
- {
- Writer writer = new Writer();
- LDIFWriter ldifWriter2 = writer.getLDIFWriter();
- ldifWriter2.writeChangeRecord(changeRecord);
- LDIFReader reader = writer.getLDIFReader();
- Entry modDNEntry = reader.readEntry();
- entry = modDNEntry;
- }
- }
-
- if (exportConfig != null)
- {
- this.exportedCount++;
- }
- else
- {
- // Add extensibleObject objectclass and the ChangeNumber
- // in the entry.
- if (!entry.getObjectClasses().containsKey(objectclass))
- entry.addObjectClass(objectclass);
- Attribute changeNumber =
- Attributes.create(CHANGE_NUMBER, msg.getChangeNumber().toStringUI());
- addAttribute(entry.getUserAttributes(), changeNumber);
- Attribute domain = Attributes.create("replicationDomain", baseDN);
- addAttribute(entry.getUserAttributes(), domain);
-
- // Get the base DN, scope, and filter for the search.
- DN searchBaseDN = searchOperation.getBaseDN();
- SearchScope scope = searchOperation.getScope();
- SearchFilter filter = searchOperation.getFilter();
-
- boolean ms = entry.matchesBaseAndScope(searchBaseDN, scope);
- boolean mf = filter.matchesEntry(entry);
- if ( ms && mf )
- {
- searchOperation.returnEntry(entry, new LinkedList<Control>());
+ boolean ms = entry.matchesBaseAndScope(searchBaseDN, scope);
+ boolean mf = filter.matchesEntry(entry);
+ if ( ms && mf )
+ {
+ searchOperation.returnEntry(entry, new LinkedList<Control>());
+ }
}
}
}
--
Gitblit v1.10.0