From d8dce8f240d91d100414149c3fa0cdb272487477 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 28 Feb 2013 09:41:12 +0000
Subject: [PATCH] OPENDJ-776 ldapmodify with a non-existing file exits with wrong return code
---
opendj-sdk/opends/src/server/org/opends/server/tools/LDAPModify.java | 64 +++++++++++++------------------
1 files changed, 27 insertions(+), 37 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPModify.java b/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPModify.java
index 214cbc8..aa9d019 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPModify.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPModify.java
@@ -39,12 +39,18 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
+import org.opends.server.controls.*;
+import org.opends.server.controls.ProxiedAuthV2Control;
+import org.opends.server.loggers.debug.DebugTracer;
+import org.opends.server.plugins.ChangeNumberControlPlugin;
import org.opends.server.protocols.asn1.ASN1Exception;
import org.opends.server.protocols.ldap.AddRequestProtocolOp;
import org.opends.server.protocols.ldap.AddResponseProtocolOp;
import org.opends.server.protocols.ldap.DeleteRequestProtocolOp;
import org.opends.server.protocols.ldap.DeleteResponseProtocolOp;
+import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
import org.opends.server.protocols.ldap.LDAPAttribute;
+import org.opends.server.protocols.ldap.LDAPConstants;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.protocols.ldap.LDAPFilter;
import org.opends.server.protocols.ldap.LDAPMessage;
@@ -69,18 +75,12 @@
import org.opends.server.util.args.IntegerArgument;
import org.opends.server.util.args.StringArgument;
-import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
import static org.opends.messages.ToolMessages.*;
+import static org.opends.server.loggers.debug.DebugLogger.*;
import static org.opends.server.protocols.ldap.LDAPResultCode.*;
+import static org.opends.server.tools.ToolConstants.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
-import static org.opends.server.tools.ToolConstants.*;
-
-import org.opends.server.controls.*;
-import org.opends.server.plugins.ChangeNumberControlPlugin;
-import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
-import org.opends.server.protocols.ldap.LDAPConstants;
@@ -100,38 +100,25 @@
*/
private static final String CLASS_NAME = "org.opends.server.tools.LDAPModify";
- // The message ID counter to use for requests.
+ /** The message ID counter to use for requests. */
private final AtomicInteger nextMessageID;
- // The print stream to use for standard error.
+ /** The print stream to use for standard error. */
private final PrintStream err;
- // The print stream to use for standard output.
+ /** The print stream to use for standard output. */
private final PrintStream out;
- // The LDIF file name.
- private String fileName = null;
-
/**
* Constructor for the LDAPModify object.
*
- * @param fileName The name of the file containing the LDIF data to use
- * for the modifications.
* @param nextMessageID The message ID counter to use for requests.
* @param out The print stream to use for standard output.
* @param err The print stream to use for standard error.
*/
- public LDAPModify(String fileName, AtomicInteger nextMessageID,
- PrintStream out, PrintStream err)
+ public LDAPModify(AtomicInteger nextMessageID, PrintStream out,
+ PrintStream err)
{
- if(fileName == null)
- {
- this.fileName = "Console";
- } else
- {
- this.fileName = fileName;
- }
-
this.nextMessageID = nextMessageID;
this.out = out;
this.err = err;
@@ -184,6 +171,12 @@
throw new FileNotFoundException(message.toString());
}
+ // Set this for error messages
+ if (fileNameValue == null)
+ {
+ fileNameValue = "Console";
+ }
+
while (true)
{
ChangeRecordEntry entry = null;
@@ -212,13 +205,13 @@
}
Message message = ERR_LDIF_FILE_INVALID_LDIF_ENTRY.get(
- le.getLineNumber(), fileName, String.valueOf(le));
+ le.getLineNumber(), fileNameValue, String.valueOf(le));
throw new IOException(message.toString());
}
else
{
Message message = ERR_LDIF_FILE_INVALID_LDIF_ENTRY.get(
- le.getLineNumber(), fileName, String.valueOf(le));
+ le.getLineNumber(), fileNameValue, String.valueOf(le));
err.println(wrapText(message, MAX_LINE_WIDTH));
continue;
}
@@ -244,13 +237,13 @@
}
Message message =
- ERR_LDIF_FILE_READ_ERROR.get(fileName, String.valueOf(e));
+ ERR_LDIF_FILE_READ_ERROR.get(fileNameValue, String.valueOf(e));
throw new IOException(message.toString());
}
else
{
Message message = ERR_LDIF_FILE_READ_ERROR.get(
- fileName, String.valueOf(e));
+ fileNameValue, String.valueOf(e));
err.println(wrapText(message, MAX_LINE_WIDTH));
continue;
}
@@ -480,7 +473,6 @@
// Control needs to be decoded
prrc = LDAPPreReadResponseControl.DECODER.decode(
c.isCritical(), ((LDAPControl) c).getValue());
-
}
else
{
@@ -490,7 +482,6 @@
}
catch (DirectoryException de)
{
-
err.println(wrapText(
ERR_LDAPMODIFY_PREREAD_CANNOT_DECODE_VALUE.get(
de.getMessage()),
@@ -514,7 +505,6 @@
// Control needs to be decoded
pprc = LDAPPostReadResponseControl.DECODER.decode(c
.isCritical(), ((LDAPControl) c).getValue());
-
}
else
{
@@ -973,7 +963,7 @@
// then print it and exit.
if (argParser.usageOrVersionDisplayed())
{
- return 0;
+ return SUCCESS;
}
if(bindPassword.isPresent() && bindPasswordFile.isPresent())
@@ -1248,7 +1238,7 @@
connection.connectToHost(bindDNValue, bindPasswordValue, nextMessageID,
timeout);
- ldapModify = new LDAPModify(fileNameValue, nextMessageID, out, err);
+ ldapModify = new LDAPModify(nextMessageID, out, err);
ldapModify.readAndExecute(connection, fileNameValue, modifyOptions);
} catch(LDAPException le)
{
@@ -1288,7 +1278,7 @@
TRACER.debugCaught(DebugLogLevel.ERROR, e);
}
err.println(wrapText(e.getMessage(), MAX_LINE_WIDTH));
- return 1;
+ return OPERATIONS_ERROR;
} finally
{
if(connection != null)
@@ -1303,7 +1293,7 @@
}
}
}
- return 0;
+ return SUCCESS;
}
}
--
Gitblit v1.10.0