From 6685d9b8c8a17cfadc82faf414ee1019e9ee8f68 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Mon, 31 Oct 2016 14:00:38 +0000
Subject: [PATCH] OPENDJ-2772 Fix bug in ldapmodify

---
 opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties |    1 +
 opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java       |   24 ++++++++++++++----------
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java b/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java
index 9f5f8b9..ec6d630 100644
--- a/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java
+++ b/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java
@@ -19,6 +19,7 @@
 import static com.forgerock.opendj.cli.ArgumentConstants.*;
 import static com.forgerock.opendj.cli.CliMessages.INFO_FILE_PLACEHOLDER;
 import static com.forgerock.opendj.cli.ToolVersionHandler.newSdkVersionHandler;
+import static com.forgerock.opendj.ldap.tools.LDAPToolException.newToolException;
 import static com.forgerock.opendj.ldap.tools.LDAPToolException.newToolParamException;
 import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
 import static com.forgerock.opendj.cli.Utils.filterExitCode;
@@ -39,7 +40,6 @@
 import java.util.List;
 import java.util.StringTokenizer;
 
-import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.ldap.Connection;
 import org.forgerock.opendj.ldap.DecodeException;
 import org.forgerock.opendj.ldap.DecodeOptions;
@@ -364,17 +364,21 @@
             reader = createLDIFChangeRecordReader(filename, argParser.getTrailingArguments());
 
             final VisitorImpl visitor = new VisitorImpl(connection);
-            try {
-                while (reader.hasNext()) {
-                    final ChangeRecord cr = reader.readChangeRecord();
-                    final int result = cr.accept(visitor, null);
-                    if (result != 0 && !continueOnError.isPresent()) {
-                        return result;
+            try (final EntryWriter w = writer) {
+                try {
+                    while (reader.hasNext()) {
+                        final ChangeRecord cr = reader.readChangeRecord();
+                        final int result = cr.accept(visitor, null);
+                        if (result != 0 && !continueOnError.isPresent()) {
+                            return result;
+                        }
                     }
+                } catch (final IOException ioe) {
+                    throw newToolParamException(
+                            ioe, ERR_LDIF_FILE_READ_ERROR.get(filename.getValue(), ioe.getLocalizedMessage()));
                 }
-            } catch (final IOException ioe) {
-                throw newToolParamException(
-                        ioe, ERR_LDIF_FILE_READ_ERROR.get(filename.getValue(), ioe.getLocalizedMessage()));
+            } catch (final IOException e) {
+                throw newToolException(e, ResultCode.UNDEFINED, ERR_LDAP_MODIFY_WRITTING_ENTRIES.get(e.getMessage()));
             }
         } finally {
             closeSilently(reader);
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties
index 79f12a2..d50ae23 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties
@@ -290,6 +290,7 @@
 as an exit code for the LDAP compare operations
 INFO_LDIFDIFF_NO_DIFFERENCES=No differences were detected between the \
  source and target LDIF files
+ERR_LDAP_MODIFY_WRITTING_ENTRIES=Unable to write entries on the output because '%s'
  #
  # MakeLDIF tool
  #

--
Gitblit v1.10.0