From 073380a9f77e33bc51ce4bc49d9948c06aa73110 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 06 Dec 2011 09:45:46 +0000
Subject: [PATCH] OPENDJ-370: Implement an example Sun DSEE -> OpenDJ change log based synchronization daemon.
---
opendj3/opendj-ldap-sync/src/main/java/org/forgerock/opendj/sync/filters/Transforms.java | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/opendj3/opendj-ldap-sync/src/main/java/org/forgerock/opendj/sync/filters/Transforms.java b/opendj3/opendj-ldap-sync/src/main/java/org/forgerock/opendj/sync/filters/Transforms.java
index ad10087..c33187e 100644
--- a/opendj3/opendj-ldap-sync/src/main/java/org/forgerock/opendj/sync/filters/Transforms.java
+++ b/opendj3/opendj-ldap-sync/src/main/java/org/forgerock/opendj/sync/filters/Transforms.java
@@ -498,6 +498,32 @@
final ModifyDNRequest change)
{
change.setName(change.getName().rename(from, to));
+
+ // Rename the new superior or the new RDN if needed.
+ final DN newSuperior = change.getNewSuperior();
+ if (newSuperior != null && newSuperior.isSubordinateOrEqualTo(from))
+ {
+ // The new superior is in scope so rename.
+ change.setNewSuperior(newSuperior.rename(from, to));
+ }
+ else
+ {
+ // The new superior is not in scope, but perhaps the new DN matches
+ // "from".
+ final DN newDN;
+ if (newSuperior != null)
+ {
+ newDN = newSuperior.child(change.getNewRDN());
+ }
+ else
+ {
+ newDN = change.getName().parent().child(change.getNewRDN());
+ }
+ if (newDN.equals(from))
+ {
+ change.setNewRDN(to.rdn());
+ }
+ }
return FilterResult.next();
}
--
Gitblit v1.10.0