From c916bb774987f75f48ffb2bbf40b22bec35130f4 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Wed, 07 Mar 2007 14:36:48 +0000
Subject: [PATCH] Fix for issue 1150 : Take attribute usage into account when synchronizing entries

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java |    6 ++++++
 opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java                                      |   13 +++++++++++++
 2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java b/opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java
index eeb0f78..2a6b7f2 100644
--- a/opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java
+++ b/opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java
@@ -40,9 +40,12 @@
 import org.opends.server.synchronization.common.ChangeNumber;
 import org.opends.server.synchronization.plugin.Historical;
 import org.opends.server.types.Attribute;
+import org.opends.server.types.AttributeType;
+import org.opends.server.types.AttributeUsage;
 import org.opends.server.types.DN;
 import org.opends.server.types.Modification;
 
+
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.List;
@@ -204,6 +207,16 @@
     for (Modification mod : mods)
     {
       Attribute attr = mod.getAttribute();
+      AttributeType type = attr.getAttributeType();
+      if (type != null )
+      {
+        if (AttributeUsage.DSA_OPERATION.equals(type.getUsage()))
+        {
+          // Attributes with a dsaOperation usage should not be synchronized.
+          // skip them.
+          continue;
+        }
+      }
       if (!attr.getAttributeType().equals(Historical.historicalAttrType))
       {
         LDAPModification ldapmod = new LDAPModification(
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java
index d59a5f0..20e8a20 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java
@@ -109,6 +109,11 @@
       mods4.add(mod);
     }
 
+    Attribute attr5 = new Attribute("namingcontexts", "dc=example");
+    Modification mod5 = new Modification(ModificationType.REPLACE, attr5);
+    List<Modification> mods5 = new ArrayList<Modification>();
+    mods5.add(mod5);
+
     return new Object[][] {
         { cn1, "dc=test", mods1},
         { cn2, "dc=cn2", mods1},
@@ -119,6 +124,7 @@
         { cn2, "dc=test with several mod", mods2},
         { cn2, "dc=test with several values", mods3},
         { cn2, "dc=test with long mod", mods4},
+        { cn2, "dc=testDsaOperation", mods5},
         };
   }
 

--
Gitblit v1.10.0