From d7418840f8a6532acfa46dd7f3c13eb9c2b46aa5 Mon Sep 17 00:00:00 2001
From: mrossign <mrossign@localhost>
Date: Tue, 22 Sep 2009 12:35:52 +0000
Subject: [PATCH] Fix for issue 4239 setup on Windows 2008 set LDAP ds-cfg-listen-port to 389 

---
 opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java                                         |   32 ++++++++++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java |    6 ++
 opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginConfiguration.xml                                 |    5 +
 opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java                                                  |   20 ++++++
 opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml                             |   29 +++++++++
 opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java                                 |   16 +++++
 opendj-sdk/opends/src/server/org/opends/server/api/plugin/PluginType.java                                            |    8 ++
 opendj-sdk/opends/resource/schema/02-config.ldif                                                                     |    6 ++
 8 files changed, 119 insertions(+), 3 deletions(-)

diff --git a/opendj-sdk/opends/resource/schema/02-config.ldif b/opendj-sdk/opends/resource/schema/02-config.ldif
index 5886eec..d88de33 100644
--- a/opendj-sdk/opends/resource/schema/02-config.ldif
+++ b/opendj-sdk/opends/resource/schema/02-config.ldif
@@ -2444,6 +2444,11 @@
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
   SINGLE-VALUE
   X-ORIGIN 'OpenDS Directory Server' )
+attributeTypes: ( 1.3.6.1.4.1.26027.1.1.600
+  NAME 'ds-cfg-plugin-order-ldif-import-begin'
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+  SINGLE-VALUE
+  X-ORIGIN 'OpenDS Directory Server' )
 objectClasses: ( 1.3.6.1.4.1.26027.1.2.1
   NAME 'ds-cfg-access-control-handler'
   SUP top
@@ -3502,6 +3507,7 @@
         ds-cfg-plugin-order-post-disconnect $
         ds-cfg-plugin-order-ldif-import $
         ds-cfg-plugin-order-ldif-import-end $
+        ds-cfg-plugin-order-ldif-import-begin $
         ds-cfg-plugin-order-ldif-export $
         ds-cfg-plugin-order-pre-parse-abandon $
         ds-cfg-plugin-order-pre-parse-add $
diff --git a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginConfiguration.xml b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginConfiguration.xml
index f1ae106..de91736 100644
--- a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginConfiguration.xml
+++ b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginConfiguration.xml
@@ -121,6 +121,11 @@
             Invoked at the end of an LDIF import session.
           </adm:synopsis>
         </adm:value>
+        <adm:value name="ldifimportbegin">
+          <adm:synopsis>
+            Invoked at the beginning of an LDIF import session.
+          </adm:synopsis>
+        </adm:value>
         <adm:value name="ldifexport">
           <adm:synopsis>
             Invoked for each operation to be written during an LDIF
diff --git a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml
index 45e8c9e..5eb8892 100644
--- a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml
+++ b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/PluginRootConfiguration.xml
@@ -233,6 +233,35 @@
       </ldap:attribute>
     </adm:profile>
   </adm:property>
+  <adm:property name="plugin-order-ldif-import-begin">
+    <adm:synopsis>
+      Specifies the order in which LDIF import begin plug-ins are to be loaded
+      and invoked.
+    </adm:synopsis>
+    <adm:description>
+      The value is a comma-delimited list of plug-in
+      names (where the plug-in name is the RDN value from the plug-in
+      configuration entry DN). The list can include at most one asterisk
+      to indicate the position of any unspecified plug-in (and the
+      relative order of those unspecified plug-ins is undefined).
+    </adm:description>
+    <adm:default-behavior>
+      <adm:alias>
+        <adm:synopsis>
+          The order in which LDIF import begin plug-ins are loaded and invoked
+          is undefined.
+        </adm:synopsis>
+      </adm:alias>
+    </adm:default-behavior>
+    <adm:syntax>
+      <adm:string />
+    </adm:syntax>
+    <adm:profile name="ldap">
+      <ldap:attribute>
+        <ldap:name>ds-cfg-plugin-order-ldif-import-begin</ldap:name>
+      </ldap:attribute>
+    </adm:profile>
+  </adm:property>
   <adm:property name="plugin-order-ldif-export">
     <adm:synopsis>
       Specifies the order in which LDIF export plug-ins are to be loaded
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java b/opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java
index 2f6653d..7c92f13 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/api/plugin/DirectoryServerPlugin.java
@@ -348,6 +348,22 @@
   }
 
   /**
+   * Starts an import session.
+   * Performs any necessary processing that should be done at the
+   * beginning of an LDIF import session based on the provided
+   * configuration.
+   *
+   * @param  importConfig  The configuration used for the LDIF import.
+   */
+  public void doLDIFImportBegin(LDIFImportConfig importConfig)
+  {
+    Message message = ERR_PLUGIN_TYPE_NOT_SUPPORTED.get(
+        String.valueOf(pluginDN),
+        PluginType.LDIF_IMPORT_BEGIN.getName());
+    throw new UnsupportedOperationException(message.toString());
+  }
+
+  /**
    * Performs any necessary processing that should be done during an
    * LDIF export operation immediately after determining that the
    * provided entry should be included in the export.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/plugin/PluginType.java b/opendj-sdk/opends/src/server/org/opends/server/api/plugin/PluginType.java
index 23bf480..76033a9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/plugin/PluginType.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/api/plugin/PluginType.java
@@ -94,6 +94,14 @@
 
 
   /**
+   * The plugin type for plugins that are to be invoked for each
+   * import session beginning.
+   */
+  LDIF_IMPORT_BEGIN("ldifimportbegin"),
+
+
+
+  /**
    * The plugin type for plugins that are to be invoked for each entry
    * written during an LDIF export.
    */
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java
index 92cd78e..3213d0e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java
@@ -91,6 +91,7 @@
   private DirectoryServerPlugin[] postDisconnectPlugins;
   private DirectoryServerPlugin[] ldifImportPlugins;
   private DirectoryServerPlugin[] ldifImportEndPlugins;
+  private DirectoryServerPlugin[] ldifImportBeginPlugins;
   private DirectoryServerPlugin[] ldifExportPlugins;
   private DirectoryServerPlugin[] preParseAbandonPlugins;
   private DirectoryServerPlugin[] preParseAddPlugins;
@@ -176,6 +177,7 @@
     postDisconnectPlugins              = new DirectoryServerPlugin[0];
     ldifImportPlugins                  = new DirectoryServerPlugin[0];
     ldifImportEndPlugins               = new DirectoryServerPlugin[0];
+    ldifImportBeginPlugins             = new DirectoryServerPlugin[0];
     ldifExportPlugins                  = new DirectoryServerPlugin[0];
     preParseAbandonPlugins             = new DirectoryServerPlugin[0];
     preParseAddPlugins                 = new DirectoryServerPlugin[0];
@@ -426,6 +428,7 @@
       case POSTDISCONNECT:         return PluginType.POST_DISCONNECT;
       case LDIFIMPORT:             return PluginType.LDIF_IMPORT;
       case LDIFIMPORTEND:          return PluginType.LDIF_IMPORT_END;
+      case LDIFIMPORTBEGIN:        return PluginType.LDIF_IMPORT_BEGIN;
       case LDIFEXPORT:             return PluginType.LDIF_EXPORT;
       case PREPARSEABANDON:        return PluginType.PRE_PARSE_ABANDON;
       case PREPARSEADD:            return PluginType.PRE_PARSE_ADD;
@@ -603,6 +606,11 @@
                  addPlugin(ldifImportEndPlugins, plugin, t,
                            pluginRootConfig.getPluginOrderLDIFImportEnd());
             break;
+          case LDIF_IMPORT_BEGIN:
+            ldifImportBeginPlugins =
+                 addPlugin(ldifImportBeginPlugins, plugin, t,
+                           pluginRootConfig.getPluginOrderLDIFImportBegin());
+            break;
           case LDIF_EXPORT:
             ldifExportPlugins =
                  addPlugin(ldifExportPlugins, plugin, t,
@@ -1099,6 +1107,10 @@
           case LDIF_IMPORT_END:
             ldifImportEndPlugins = removePlugin(ldifImportEndPlugins, plugin);
             break;
+          case LDIF_IMPORT_BEGIN:
+            ldifImportBeginPlugins =
+              removePlugin(ldifImportBeginPlugins, plugin);
+            break;
           case LDIF_EXPORT:
             ldifExportPlugins = removePlugin(ldifExportPlugins, plugin);
             break;
@@ -1569,7 +1581,7 @@
 
 
 
-/**
+  /**
    * Invokes the set of LDIF import plugins that have been configured in the
    * Directory Server.
    *
@@ -1651,6 +1663,24 @@
 
 
   /**
+   * Invokes the LDIF import session initialization of LDIF import plugins that
+   * have been configured in the Directory Server.
+   *
+   * @param  importConfig  The LDIF import configuration used for the LDIF
+   *                       import session.
+   */
+  public void invokeLDIFImportBeginPlugins(
+      LDIFImportConfig importConfig)
+  {
+    for (DirectoryServerPlugin p : ldifImportBeginPlugins)
+    {
+      p.doLDIFImportBegin(importConfig);
+    }
+  }
+
+
+
+  /**
    * Invokes the set of LDIF export plugins that have been configured in the
    * Directory Server.
    *
diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java b/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
index cc13a74..48a32ba 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
@@ -144,6 +144,12 @@
     lastEntryBodyLines   = new LinkedList<StringBuilder>();
     lastEntryHeaderLines = new LinkedList<StringBuilder>();
     pluginConfigManager  = DirectoryServer.getPluginConfigManager();
+    // If we should invoke import plugins, then do so.
+    if (importConfig.invokeImportPlugins())
+    {
+      // Inform LDIF import plugins that an import session is ending
+      pluginConfigManager.invokeLDIFImportBeginPlugins(importConfig);
+    }
   }
 
 
@@ -175,6 +181,12 @@
     this.pluginConfigManager  = DirectoryServer.getPluginConfigManager();
     this.buffer        = new byte[size];
     this.rootContainer = rootContainer;
+    // If we should invoke import plugins, then do so.
+    if (importConfig.invokeImportPlugins())
+    {
+      // Inform LDIF import plugins that an import session is ending
+      this.pluginConfigManager.invokeLDIFImportBeginPlugins(importConfig);
+    }
   }
 
 
@@ -1477,8 +1489,12 @@
    */
   public void close()
   {
-    // Inform LDIF import plugins that an import session is ending
-    pluginConfigManager.invokeLDIFImportEndPlugins(importConfig);
+    // If we should invoke import plugins, then do so.
+    if (importConfig.invokeImportPlugins())
+    {
+      // Inform LDIF import plugins that an import session is ending
+      pluginConfigManager.invokeLDIFImportEndPlugins(importConfig);
+    }
     importConfig.close();
   }
 
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java
index 97701fe..c72f2c7 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java
@@ -231,6 +231,12 @@
     expectedPublicMethods.add(sigList);
 
     sigList = new LinkedList<String>();
+    sigList.add("doLDIFImportBegin");
+    sigList.add("void");
+    sigList.add("org.opends.server.types.LDIFImportConfig");
+    expectedPublicMethods.add(sigList);
+
+    sigList = new LinkedList<String>();
     sigList.add("doLDIFExport");
     sigList.add("org.opends.server.api.plugin.PluginResult$ImportLDIF");
     sigList.add("org.opends.server.types.LDIFExportConfig");

--
Gitblit v1.10.0