From 610d2d3ad1e5b3dd9ff82201ce7e6aae8b9887d7 Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Thu, 02 Apr 2009 03:21:47 +0000
Subject: [PATCH] Issue 3251: LDIFReader rejectLastEntry prints wrong entry
---
opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java | 34 ++++++++++++++++++++++++++++++++++
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/WorkThread.java | 4 ++--
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/WorkThread.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/WorkThread.java
index 651134e..8fc414b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/WorkThread.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/WorkThread.java
@@ -424,7 +424,7 @@
dn2id.remove(null, entryDN);
Message msg =
ERR_JEB_IMPORT_PARENT_NOT_FOUND.get(parentDN.toString());
- context.getLDIFReader().rejectLastEntry(msg);
+ context.getLDIFReader().rejectEntry(entry, msg);
return false;
}
}
@@ -503,7 +503,7 @@
element.setExistingEntry(existingEntry);
} else {
Message msg = WARN_JEB_IMPORT_ENTRY_EXISTS.get();
- context.getLDIFReader().rejectLastEntry(msg);
+ context.getLDIFReader().rejectEntry(entry, msg);
entryID = null;
}
} else {
diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java b/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
index ef7b3c2..e157b49 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
@@ -1148,6 +1148,40 @@
}
}
+ /**
+ * Log the specified entry and messages in the reject writer. The method is
+ * intended to be used in a threaded environment, where individual import
+ * threads need to log an entry and message to the reject file.
+ *
+ * @param e The entry to log.
+ * @param message The message to log.
+ */
+ public synchronized void rejectEntry(Entry e, Message message) {
+ BufferedWriter rejectWriter = importConfig.getRejectWriter();
+ entriesRejected++;
+ if (rejectWriter != null) {
+ try {
+ if ((message != null) && (message.length() > 0)) {
+ rejectWriter.write("# ");
+ rejectWriter.write(message.toString());
+ rejectWriter.newLine();
+ }
+ String dnStr = e.getDN().toString();
+ rejectWriter.write(dnStr);
+ rejectWriter.newLine();
+ List<StringBuilder> eLDIF = e.toLDIF();
+ for(StringBuilder l : eLDIF) {
+ rejectWriter.write(l.toString());
+ rejectWriter.newLine();
+ }
+ rejectWriter.newLine();
+ } catch (IOException ex) {
+ if (debugEnabled())
+ TRACER.debugCaught(DebugLogLevel.ERROR, ex);
+ }
+ }
+ }
+
/**
--
Gitblit v1.10.0