From 73394f670965893f1d728f7be6f326e0f696e73f Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Mon, 31 Oct 2016 13:59:39 +0000
Subject: [PATCH] OPENDJ-2750 Remove server make-ldif tool
---
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java | 98 ++++++++++++++++++++++++++++++++++--------------
1 files changed, 69 insertions(+), 29 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java
index d96a65e..0011ec2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewBaseDNPanel.java
@@ -18,6 +18,8 @@
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.messages.QuickSetupMessages.*;
+import static org.opends.messages.ToolMessages.ERR_MAKELDIF_CANNOT_WRITE_ENTRY;
+import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
import java.awt.Component;
import java.awt.GridBagConstraints;
@@ -33,6 +35,7 @@
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Random;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -84,8 +87,16 @@
import org.opends.server.tools.BackendTypeHelper.BackendTypeUIAdapter;
import org.opends.server.tools.ImportLDIF;
import org.opends.server.tools.LDAPModify;
-import org.opends.server.tools.makeldif.MakeLDIF;
+import org.opends.server.tools.makeldif.EntryWriter;
+import org.opends.server.tools.makeldif.MakeLDIFException;
+import org.opends.server.tools.makeldif.TemplateEntry;
+import org.opends.server.tools.makeldif.TemplateFile;
+import org.opends.server.types.ExistingFileBehavior;
+import org.opends.server.types.InitializationException;
+import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.OpenDsException;
+import org.opends.server.util.LDIFException;
+import org.opends.server.util.LDIFWriter;
import org.opends.server.util.SetupUtils;
import com.forgerock.opendj.cli.CommandBuilder;
@@ -1153,41 +1164,26 @@
}
});
- File f = SetupUtils.createTemplateFile(newBaseDN, Integer.parseInt(nEntries));
+ final File templateFile = SetupUtils.createTemplateFile(newBaseDN, Integer.parseInt(nEntries));
if (!isLocal())
{
- File tempFile = File.createTempFile("opendj-control-panel", ".ldif");
- tempFile.deleteOnExit();
- ldifFile = tempFile.getAbsolutePath();
-
- // Create the LDIF file locally using make-ldif
- List<String> makeLDIFArgs = new ArrayList<>();
- makeLDIFArgs.add("--templateFile");
- makeLDIFArgs.add(f.getAbsolutePath());
- makeLDIFArgs.add("--ldifFile");
- makeLDIFArgs.add(ldifFile);
- makeLDIFArgs.add("--randomSeed");
- makeLDIFArgs.add("0");
- makeLDIFArgs.add("--resourcePath");
-
- File makeLDIFPath = new File(Installation.getLocal().getConfigurationDirectory(), "MakeLDIF");
- makeLDIFArgs.add(makeLDIFPath.getAbsolutePath());
- makeLDIFArgs.addAll(getConfigCommandLineArguments());
-
- MakeLDIF makeLDIF = new MakeLDIF();
- String[] array = new String[makeLDIFArgs.size()];
- makeLDIFArgs.toArray(array);
- returnCode = makeLDIF.makeLDIFMain(array, false, false, outPrintStream, errorPrintStream);
- f.delete();
-
- if (returnCode != 0)
+ try
{
- throw new OnlineUpdateException(ERR_CTRL_PANEL_ERROR_CREATING_NEW_DATA_LDIF.get(returnCode), null);
+ ldifFile = generateLdifFile(templateFile);
+ }
+ catch (IOException | OnlineUpdateException | InitializationException | MakeLDIFException e)
+ {
+ throw new OnlineUpdateException(
+ ERR_CTRL_PANEL_ERROR_CREATING_NEW_DATA_LDIF.get(e.getLocalizedMessage()), null);
+ }
+ finally
+ {
+ templateFile.delete();
}
}
else
{
- ldifFile = f.getAbsolutePath();
+ ldifFile = templateFile.getAbsolutePath();
}
}
@@ -1245,6 +1241,50 @@
}
}
+ private String generateLdifFile(final File templateFile)
+ throws IOException, OnlineUpdateException, MakeLDIFException, InitializationException
+ {
+ final File resourceDir = new File(Installation.getLocal().getConfigurationDirectory(), "MakeLDIF");
+ final TemplateFile generator = new TemplateFile(resourceDir.getAbsolutePath(), new Random(0));
+ generator.parse(templateFile.getAbsolutePath(), Collections.<LocalizableMessage>emptyList());
+
+ final File tempFile = File.createTempFile("opendj-control-panel", ".ldif");
+ tempFile.deleteOnExit();
+ final String generatedLdifFilePath = tempFile.getAbsolutePath();
+
+
+ try (final LDIFWriter ldifWriter = new LDIFWriter(
+ new LDIFExportConfig(generatedLdifFilePath, ExistingFileBehavior.OVERWRITE));)
+ {
+ generator.generateLDIF(new EntryWriter()
+ {
+ @Override
+ public boolean writeEntry(final TemplateEntry entry) throws IOException, MakeLDIFException
+ {
+ try
+ {
+ if (entry.getDN() != null)
+ {
+ return ldifWriter.writeTemplateEntry(entry);
+ }
+ return true;
+ }
+ catch (final LDIFException e)
+ {
+ throw new MakeLDIFException(
+ ERR_MAKELDIF_CANNOT_WRITE_ENTRY.get(entry.getDN(), stackTraceToSingleLineString(e)), e);
+ }
+ }
+
+ @Override public void closeEntryWriter()
+ {
+ // Nothing to do in this implementation.
+ }
+ });
+ }
+ return generatedLdifFilePath;
+ }
+
@Override
protected String getCommandLinePath()
{
--
Gitblit v1.10.0