From aaff8bbe83e02bba861c5cf1c6645dedc4e0ac1d Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 07 Aug 2007 21:45:40 +0000
Subject: [PATCH] Add support for a new type of plugin which can be used to detect changes and take some action whenever a subordinate entry is modified as a result of a modify DN operation that targets an entry that has one or more children (i.e., a subtree move or subtree rename operation).  At present, subordinate modify DN plugins are not allowed to change the contents of the entry as it is being moved/renamed, but an appropriate API is in place if we decide to add this functionality in the future.

---
 opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml |  208 +++++++++++++++++++++++++++++----------------------
 1 files changed, 118 insertions(+), 90 deletions(-)

diff --git a/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml b/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml
index af834ca..7d2e93b 100644
--- a/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml
+++ b/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml
@@ -64,8 +64,8 @@
       The value should be a comma-delimited list of plugin names (where the
       plugin name is the RDN value from the plugin configuration entry DN).
       The list may include at most one asterisk to indicate the position of any
-      unnamed plugin (and the relative order of those unnamed plugins will be
-      undefined).
+      unspecified plugin (and the relative order of those unspecified plugins
+      will  be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -92,8 +92,8 @@
       invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -120,8 +120,8 @@
       invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -148,8 +148,8 @@
       invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -176,8 +176,8 @@
       invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -204,8 +204,8 @@
       invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -232,8 +232,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -260,8 +260,8 @@
       invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -288,8 +288,8 @@
       invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -316,8 +316,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -344,8 +344,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -372,8 +372,8 @@
       be loaded and invoked.  The value should be a comma-delimited list of
       plugin names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -400,8 +400,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -428,8 +428,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -456,8 +456,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -484,8 +484,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -512,8 +512,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -540,8 +540,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -568,8 +568,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -596,8 +596,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -624,8 +624,8 @@
       should be loaded and invoked.  The value should be a comma-delimited list
       of plugin names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -652,8 +652,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -680,8 +680,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -708,8 +708,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -736,8 +736,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -764,8 +764,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -792,8 +792,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -820,8 +820,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -848,8 +848,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -876,8 +876,8 @@
       should be loaded and invoked.  The value should be a comma-delimited list
       of plugin names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -904,8 +904,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -932,8 +932,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -960,8 +960,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -988,8 +988,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1016,8 +1016,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1044,8 +1044,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1072,8 +1072,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1100,8 +1100,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1128,8 +1128,8 @@
       should be loaded and invoked.  The value should be a comma-delimited list
       of plugin names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1156,8 +1156,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1184,8 +1184,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1212,8 +1212,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1240,8 +1240,8 @@
       and invoked.  The value should be a comma-delimited list of plugin names
       (where the plugin name is the RDN value from the plugin configuration
       entry DN).  The list may include at most one asterisk to indicate the
-      position of any unnamed plugin (and the relative order of those unnamed
-      plugins will be undefined).
+      position of any unspecified plugin (and the relative order of those
+      unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1268,8 +1268,8 @@
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>
@@ -1290,14 +1290,42 @@
     </adm:profile>
   </adm:property>
 
+  <adm:property name="plugin-order-subordinate-modify-dn" mandatory="false">
+    <adm:synopsis>
+      Specifies the order in which subordinate modify DN plugins should be
+      loaded and invoked.  The value should be a comma-delimited list of plugin
+      names (where the plugin name is the RDN value from the plugin
+      configuration entry DN).  The list may include at most one asterisk to
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
+    </adm:synopsis>
+    <adm:default-behavior>
+      <adm:alias>
+        <adm:synopsis>
+          The order in which subordinate modify DN plugins are loaded and
+          invoked will be undefined.
+        </adm:synopsis>
+      </adm:alias>
+    </adm:default-behavior>
+    <adm:syntax>
+      <adm:string />
+    </adm:syntax>
+    <adm:profile name="ldap">
+      <ldap:attribute>
+        <ldap:oid>1.3.6.1.4.1.26027.1.1.466</ldap:oid>
+        <ldap:name>ds-cfg-plugin-order-subordinate-modify-dn</ldap:name>
+      </ldap:attribute>
+    </adm:profile>
+  </adm:property>
+
   <adm:property name="plugin-order-intermediate-response" mandatory="false">
     <adm:synopsis>
       Specifies the order in which intermediate response plugins should be
       loaded and invoked.  The value should be a comma-delimited list of plugin
       names (where the plugin name is the RDN value from the plugin
       configuration entry DN).  The list may include at most one asterisk to
-      indicate the position of any unnamed plugin (and the relative order of
-      those unnamed plugins will be undefined).
+      indicate the position of any unspecified plugin (and the relative order of
+      those unspecified plugins will be undefined).
     </adm:synopsis>
     <adm:default-behavior>
       <adm:alias>

--
Gitblit v1.10.0