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