From 9ba239d1a7f3caf0be1a02f01b00762ec3f01397 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Tue, 29 May 2007 11:59:21 +0000
Subject: [PATCH] Fix issue 1580: support overriding of property default values.

---
 opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java b/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java
index a0a5bfc..5931ba3 100644
--- a/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java
+++ b/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java
@@ -424,7 +424,8 @@
 
     for (PropertyDefinition<?> pd : definition.getAllPropertyDefinitions()) {
       Property<?> p = properties.getProperty(pd);
-      if (pd.hasOption(PropertyOption.MANDATORY) && p.isEmpty()) {
+      if (pd.hasOption(PropertyOption.MANDATORY)
+          && p.getEffectiveValues().isEmpty()) {
         exceptions.add(new PropertyIsMandatoryException(pd));
       }
     }
@@ -941,8 +942,17 @@
   private <T> void encodeProperty(Attribute attribute,
       PropertyDefinition<T> pd, PropertySet properties) {
     Property<T> p = properties.getProperty(pd);
-    for (T value : p.getPendingValues()) {
-      attribute.add(pd.encodeValue(value));
+    if (pd.hasOption(PropertyOption.MANDATORY)) {
+      // For mandatory properties we fall-back to the default values
+      // if defined which can sometimes be the case e.g when a
+      // mandatory property is overridden.
+      for (T value : p.getEffectiveValues()) {
+        attribute.add(pd.encodeValue(value));
+      }
+    } else {
+      for (T value : p.getPendingValues()) {
+        attribute.add(pd.encodeValue(value));
+      }
     }
   }
 

--
Gitblit v1.10.0