From 3d94e093e647c30331f5ad701e1251df46ffe5cc Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Fri, 27 Feb 2009 15:25:04 +0000
Subject: [PATCH] Fix for issue #3765 (Root for relative paths in export-ldif depends on the path where we started the server)

---
 opends/src/server/org/opends/server/tasks/ExportTask.java |    9 ++++++++-
 opends/src/messages/messages/tools.properties             |    1 +
 opends/src/server/org/opends/server/tasks/ImportTask.java |   27 +++++++++++++++++++++++++--
 3 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/opends/src/messages/messages/tools.properties b/opends/src/messages/messages/tools.properties
index 72980f0..d0d3105 100644
--- a/opends/src/messages/messages/tools.properties
+++ b/opends/src/messages/messages/tools.properties
@@ -2450,6 +2450,7 @@
 FATAL_ERR_INSTANCE_ROOT_NOT_SPECIFIED_1660=INSTANCE_ROOT property not specified
 FATAL_ERR_CONFIG_LDIF_NOT_FOUND_1661=The "config.ldif" file is not present in \
 the instance directory %s.\nInstance directory is referenced by %s
+INFO_LDIFEXPORT_PATH_TO_LDIF_FILE_1662=Exporting to %s
 
 
 
diff --git a/opends/src/server/org/opends/server/tasks/ExportTask.java b/opends/src/server/org/opends/server/tasks/ExportTask.java
index 0f39887..b96a75f 100644
--- a/opends/src/server/org/opends/server/tasks/ExportTask.java
+++ b/opends/src/server/org/opends/server/tasks/ExportTask.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.tasks;
 import org.opends.messages.Message;
@@ -227,6 +227,12 @@
 
     attrList = taskEntry.getAttribute(typeLdifFile);
     ldifFile = TaskUtils.getSingleValueString(attrList);
+    File f = new File (ldifFile);
+    if (! f.isAbsolute())
+    {
+      ldifFile = new File(DirectoryServer.getInstanceRoot(), ldifFile)
+          .getAbsolutePath();
+    }
 
     attrList = taskEntry.getAttribute(typeBackendID);
     backendID = TaskUtils.getSingleValueString(attrList);
@@ -572,6 +578,7 @@
         try
         {
           DirectoryServer.notifyExportBeginning(backend, exportConfig);
+          addLogMessage(INFO_LDIFEXPORT_PATH_TO_LDIF_FILE.get(ldifFile));
           backend.exportLDIF(exportConfig);
           DirectoryServer.notifyExportEnded(backend, exportConfig, true);
         }
diff --git a/opends/src/server/org/opends/server/tasks/ImportTask.java b/opends/src/server/org/opends/server/tasks/ImportTask.java
index b7174c2..c8a9833 100644
--- a/opends/src/server/org/opends/server/tasks/ImportTask.java
+++ b/opends/src/server/org/opends/server/tasks/ImportTask.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.tasks;
 import org.opends.messages.Message;
@@ -283,10 +283,33 @@
     List<Attribute> attrList;
 
     attrList = taskEntry.getAttribute(typeLdifFile);
-    ldifFiles = TaskUtils.getMultiValueString(attrList);
+    ArrayList<String> ldifFilestmp = TaskUtils.getMultiValueString(attrList);
+    ldifFiles = new ArrayList<String>(ldifFilestmp.size());
+    for (String s : ldifFilestmp)
+    {
+      File f = new File (s);
+      if (!f.isAbsolute())
+      {
+        ldifFiles.add(new File(DirectoryServer.getInstanceRoot(), s)
+            .getAbsolutePath());
+      }
+      else
+      {
+        ldifFiles.add(s);
+      }
+    }
 
     attrList = taskEntry.getAttribute(typeTemplateFile);
     templateFile = TaskUtils.getSingleValueString(attrList);
+    if (templateFile != null)
+    {
+      File f = new File(templateFile);
+      if (!f.isAbsolute())
+      {
+        templateFile = new File(DirectoryServer.getInstanceRoot(), templateFile)
+            .getAbsolutePath();
+      }
+    }
 
     attrList = taskEntry.getAttribute(typeAppend);
     append = TaskUtils.getBoolean(attrList, false);

--
Gitblit v1.10.0