From 1e53194379b3b80e4d2a026865c0dde59bbf6ed1 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 28 Jun 2016 13:17:43 +0000
Subject: [PATCH] OPENDJ-2715 Incorrect "exclude" message when importing entries with an exclude filter

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java |   25 ++++++++++++-------------
 1 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java
index f519be6..2773c71 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportLDIFReader.java
@@ -29,15 +29,16 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.ObjectClass;
+import org.forgerock.util.Pair;
 import org.forgerock.util.Reject;
 import org.opends.server.api.plugin.PluginResult;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.AttributeBuilder;
-import org.forgerock.opendj.ldap.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.LDIFImportConfig;
-import org.forgerock.opendj.ldap.schema.ObjectClass;
 import org.opends.server.util.LDIFException;
 import org.opends.server.util.LDIFReader;
 
@@ -151,12 +152,13 @@
           // read and return the next entry.
           continue;
         }
-        if (!importConfig.includeEntry(entryDN))
+
+        entriesRead.incrementAndGet();
+
+        final Pair<Boolean, LocalizableMessage> includeResult = importConfig.includeEntry(entryDN);
+        if (!includeResult.getFirst())
         {
-          logger.trace("Skipping entry %s because the DN is not one that "
-              + "should be included based on the include and exclude branches.", entryDN);
-          entriesRead.incrementAndGet();
-          logToSkipWriter(lines, ERR_LDIF_SKIP.get(entryDN));
+          logToSkipWriter(lines, includeResult.getSecond());
           continue;
         }
         entryContainer = getEntryContainer(entryDN, suffixesMap);
@@ -164,11 +166,9 @@
         {
           logger.trace("Skipping entry %s because the DN is not one that "
               + "should be included based on a suffix match check.", entryDN);
-          entriesRead.incrementAndGet();
           logToSkipWriter(lines, ERR_LDIF_SKIP.get(entryDN));
           continue;
         }
-        entriesRead.incrementAndGet();
         entryID = rootContainer.getNextEntryID();
 
         if (!addPending(entryDN))
@@ -227,11 +227,10 @@
     final DN entryDN = entry.getName();
     try
     {
-      if (!importConfig.includeEntry(entry))
+      final Pair<Boolean, LocalizableMessage> includeResult = importConfig.includeEntry(entry);
+      if (!includeResult.getFirst())
       {
-        logger.trace("Skipping entry %s because the DN is not one that "
-            + "should be included based on the include and exclude filters.", entryDN);
-        logToSkipWriter(entryLines, ERR_LDIF_SKIP.get(entryDN));
+        logToSkipWriter(entryLines, includeResult.getSecond());
         return false;
       }
       return true;

--
Gitblit v1.10.0