From 7d230eabe0c6192a7c6a74d176048ac9c91bc2d2 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 28 Feb 2013 16:20:30 +0000
Subject: [PATCH] OPENDJ-778 (CR-1341) ldif-diff should exit with different values w.r.t files are identical or not
---
opendj-sdk/opends/src/server/org/opends/server/tools/LDIFDiff.java | 54 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/LDIFDiff.java b/opendj-sdk/opends/src/server/org/opends/server/tools/LDIFDiff.java
index 5406f7b..9f63284 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/LDIFDiff.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/LDIFDiff.java
@@ -43,7 +43,21 @@
import org.opends.messages.Message;
import org.opends.server.core.DirectoryServer;
import org.opends.server.extensions.ConfigFileHandler;
-import org.opends.server.types.*;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.AttributeBuilder;
+import org.opends.server.types.AttributeType;
+import org.opends.server.types.AttributeValue;
+import org.opends.server.types.AttributeValues;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
+import org.opends.server.types.ExistingFileBehavior;
+import org.opends.server.types.LDIFExportConfig;
+import org.opends.server.types.LDIFImportConfig;
+import org.opends.server.types.Modification;
+import org.opends.server.types.ModificationType;
+import org.opends.server.types.NullOutputStream;
+import org.opends.server.types.ObjectClass;
import org.opends.server.util.LDIFReader;
import org.opends.server.util.LDIFWriter;
import org.opends.server.util.args.ArgumentException;
@@ -153,6 +167,7 @@
BooleanArgument overwriteExisting;
BooleanArgument showUsage;
+ BooleanArgument useCompareResultCode;
BooleanArgument singleValueChanges;
BooleanArgument doCheckSchema;
StringArgument configClass;
@@ -238,11 +253,17 @@
OPTION_LONG_HELP,
INFO_DESCRIPTION_USAGE.get());
argParser.addArgument(showUsage);
+
+ useCompareResultCode =
+ new BooleanArgument("usecompareresultcode", 'r',
+ "useCompareResultCode", INFO_ENCPW_DESCRIPTION_USE_COMPARE_RESULT
+ .get());
+ argParser.addArgument(useCompareResultCode);
+
argParser.setUsageArgument(showUsage);
}
catch (ArgumentException ae)
{
-
Message message = ERR_CANNOT_INITIALIZE_ARGS.get(ae.getMessage());
err.println(message);
return OPERATIONS_ERROR;
@@ -256,9 +277,7 @@
}
catch (ArgumentException ae)
{
-
Message message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
-
err.println(message);
err.println(argParser.getUsage());
return CLIENT_SIDE_PARAM_ERROR;
@@ -550,15 +569,15 @@
try
{
+ boolean differenceFound;
+
// Check to see if either or both of the source and target maps are empty.
if (sourceMap.isEmpty())
{
if (targetMap.isEmpty())
{
// They're both empty, so there are no differences.
- Message message = INFO_LDIFDIFF_NO_DIFFERENCES.get();
- writer.writeComment(message, 0);
- return SUCCESS;
+ differenceFound = false;
}
else
{
@@ -568,7 +587,7 @@
{
writeAdd(writer, targetMap.get(targetIterator.next()));
}
- return SUCCESS;
+ differenceFound = true;
}
}
else if (targetMap.isEmpty())
@@ -579,10 +598,11 @@
{
writeDelete(writer, sourceMap.get(sourceIterator.next()));
}
- return SUCCESS;
+ differenceFound = true;
}
else
{
+ differenceFound = false;
// Iterate through all the entries in the source and target maps and
// identify the differences.
Iterator<DN> sourceIterator = sourceMap.keySet().iterator();
@@ -591,7 +611,6 @@
DN targetDN = targetIterator.next();
Entry sourceEntry = sourceMap.get(sourceDN);
Entry targetEntry = targetMap.get(targetDN);
- boolean differenceFound = false;
while (true)
{
@@ -705,13 +724,16 @@
}
}
}
+ }
-
- if (! differenceFound)
- {
- Message message = INFO_LDIFDIFF_NO_DIFFERENCES.get();
- writer.writeComment(message, 0);
- }
+ if (!differenceFound)
+ {
+ Message message = INFO_LDIFDIFF_NO_DIFFERENCES.get();
+ writer.writeComment(message, 0);
+ }
+ if (useCompareResultCode.isPresent())
+ {
+ return !differenceFound ? COMPARE_TRUE : COMPARE_FALSE;
}
}
catch (IOException e)
--
Gitblit v1.10.0