From ebf96a30d0122d35e271bad15f1f31a0a9100842 Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Sun, 24 Oct 2010 20:47:53 +0000
Subject: [PATCH] Sync commits from OpenDS by matthew_swift

---
 sdk/src/org/opends/sdk/requests/UnmodifiableModifyRequestImpl.java |   32 ++++++++++++++++++++++++++------
 1 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/sdk/src/org/opends/sdk/requests/UnmodifiableModifyRequestImpl.java b/sdk/src/org/opends/sdk/requests/UnmodifiableModifyRequestImpl.java
index 5b143d6..f871a40 100644
--- a/sdk/src/org/opends/sdk/requests/UnmodifiableModifyRequestImpl.java
+++ b/sdk/src/org/opends/sdk/requests/UnmodifiableModifyRequestImpl.java
@@ -27,12 +27,13 @@
 
 package org.opends.sdk.requests;
 
-import org.opends.sdk.DN;
-import org.opends.sdk.LocalizedIllegalArgumentException;
-import org.opends.sdk.Modification;
-import org.opends.sdk.ModificationType;
+import org.opends.sdk.*;
 import org.opends.sdk.ldif.ChangeRecordVisitor;
 
+import com.sun.opends.sdk.util.Collections2;
+import com.sun.opends.sdk.util.Function;
+import com.sun.opends.sdk.util.Functions;
+
 import java.util.Collections;
 import java.util.List;
 
@@ -64,8 +65,27 @@
     throw new UnsupportedOperationException();
   }
 
-  public List<Modification> getModifications() {
-    return Collections.unmodifiableList(impl.getModifications());
+  public List<Modification> getModifications()
+  {
+    // We need to make all attributes unmodifiable as well.
+    Function<Modification, Modification, Void> function =
+      new Function<Modification, Modification, Void>()
+    {
+
+      public Modification apply(Modification value, Void p)
+      {
+        ModificationType type = value.getModificationType();
+        Attribute attribute = Attributes.unmodifiableAttribute(value
+            .getAttribute());
+        return new Modification(type, attribute);
+      }
+
+    };
+
+    List<Modification> unmodifiableModifications = Collections2.transformedList(
+        impl.getModifications(), function,
+        Functions.<Modification> identityFunction());
+    return Collections.unmodifiableList(unmodifiableModifications);
   }
 
   public DN getName() {

--
Gitblit v1.10.0