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; opendj-server-legacy/src/main/java/org/opends/server/types/LDIFImportConfig.java
@@ -16,6 +16,8 @@ */ package org.opends.server.types; import static java.lang.Boolean.*; import static org.opends.messages.UtilityMessages.*; import java.io.BufferedReader; @@ -38,9 +40,11 @@ import java.util.Set; import java.util.zip.GZIPInputStream; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1; import org.forgerock.opendj.ldap.DN; import org.forgerock.opendj.ldap.schema.AttributeType; import org.forgerock.util.Pair; import org.opends.server.tools.makeldif.MakeLDIFInputStream; import org.opends.server.tools.makeldif.TemplateFile; import org.opends.server.util.CollectionUtils; @@ -58,7 +62,6 @@ public final class LDIFImportConfig extends OperationConfig implements Closeable { /** The default buffer size that will be used when reading LDIF data. */ private static final int DEFAULT_BUFFER_SIZE = 8192; @@ -646,17 +649,16 @@ } /** * Indicates whether to include the entry with the specified DN in * the import. * Indicates whether to include the entry with the specified DN in the import. * * @param dn The DN of the entry for which to make the * determination. * * @return <CODE>true</CODE> if the entry with the specified DN * should be included in the import, or <CODE>false</CODE> * if not. * @param dn * The DN of the entry for which to make the determination. * @return a pair where the first element is a boolean indicating whether the entry with the * specified DN should be included in the import, and the second element is a message with * the reason why an entry is not included in the import (it is {@code null} when the * entry is included in the import). */ public boolean includeEntry(DN dn) public Pair<Boolean, LocalizableMessage> includeEntry(DN dn) { if (! excludeBranches.isEmpty()) { @@ -664,7 +666,7 @@ { if (excludeBranch.isSuperiorOrEqualTo(dn)) { return false; return Pair.of(FALSE, ERR_LDIF_SKIP_EXCLUDE_BRANCH.get(dn, excludeBranch)); } } } @@ -675,14 +677,14 @@ { if (includeBranch.isSuperiorOrEqualTo(dn)) { return true; return Pair.of(TRUE, null); } } return false; return Pair.of(FALSE, ERR_LDIF_SKIP_NOT_IN_INCLUDED_BRANCHES.get(dn)); } return true; return Pair.of(TRUE, null); } @@ -881,46 +883,45 @@ /** * Indicates whether the specified entry should be included in the * import based on the configured set of include and exclude * filters. * import based on the configured set of include and exclude filters. * * @param entry The entry for which to make the determination. * * @return <CODE>true</CODE> if the specified entry should be * included in the import, or <CODE>false</CODE> if not. * * @return a pair where the first element is a boolean indicating whether * the entry with the specified DN should be included in the import, * and the second element is a message with the reason why an entry * is not included in the import (it is {@code null} when the entry * is included in the import). * @throws DirectoryException If there is a problem with any of * the search filters used to make the * determination. */ public boolean includeEntry(Entry entry) throws DirectoryException public Pair<Boolean, LocalizableMessage> includeEntry(Entry entry) throws DirectoryException { if (! excludeFilters.isEmpty()) { for (SearchFilter filter : excludeFilters) for (SearchFilter excludeFilter : excludeFilters) { if (filter.matchesEntry(entry)) if (excludeFilter.matchesEntry(entry)) { return false; return Pair.of(FALSE, ERR_LDIF_SKIP_EXCLUDE_FILTER.get(entry.getName(), excludeFilter)); } } } if (! includeFilters.isEmpty()) { for (SearchFilter filter : includeFilters) for (SearchFilter includeFilter : includeFilters) { if (filter.matchesEntry(entry)) if (includeFilter.matchesEntry(entry)) { return true; return Pair.of(TRUE, null); } } return false; return Pair.of(FALSE, ERR_LDIF_SKIP_NOT_IN_INCLUDED_FILTERS.get(entry.getName())); } return true; return Pair.of(TRUE, null); } opendj-server-legacy/src/main/java/org/opends/server/util/LDIFReader.java
@@ -46,6 +46,8 @@ import org.forgerock.opendj.ldap.RDN; import org.forgerock.opendj.ldap.schema.AttributeType; import org.forgerock.opendj.ldap.schema.CoreSchema; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.forgerock.util.Pair; import org.opends.server.api.plugin.PluginResult; import org.opends.server.core.DirectoryServer; import org.opends.server.core.PluginConfigManager; @@ -57,7 +59,6 @@ import org.opends.server.types.Attributes; import org.opends.server.types.Entry; import org.opends.server.types.LDIFImportConfig; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.opends.server.types.RawModification; /** @@ -200,29 +201,24 @@ // read and return the next entry. continue; } else if (!importConfig.includeEntry(entryDN)) entriesRead.incrementAndGet(); 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; } else { entriesRead.incrementAndGet(); } // Create the entry and see if it is one that should be included in the import. final Entry entry = createEntry(entryDN, lines, checkSchema); if (!isIncludedInImport(entry,lines) || !invokeImportPlugins(entry, lines)) { continue; } validateAgainstSchemaIfNeeded(checkSchema, entry, lines); // The entry should be included in the import, so return it. validateAgainstSchemaIfNeeded(checkSchema, entry, lines); return entry; } } @@ -247,12 +243,10 @@ { try { if (!importConfig.includeEntry(entry)) Pair<Boolean, LocalizableMessage> includeResult = importConfig.includeEntry(entry); if (!includeResult.getFirst()) { final DN entryDN = entry.getName(); logger.trace("Skipping entry %s because the DN is not one that " + "should be included based on the include and exclude filters.", entryDN); logToSkipWriter(lines, ERR_LDIF_SKIP.get(entryDN)); logToSkipWriter(lines, includeResult.getSecond()); return false; } return true; opendj-server-legacy/src/messages/org/opends/messages/utility.properties
@@ -209,7 +209,7 @@ the import configuration indicates that no attempt should be made to append \ to or replace the file ERR_LDIF_SKIP_165=Skipping entry %s because the DN is not one that \ should be included based on the include and exclude branches should be included based on the include and exclude branches/filters ERR_EMBEDUTILS_SERVER_ALREADY_RUNNING_167=The Directory Server cannot \ be started because it is already running INFO_EMAIL_TOOL_DESCRIPTION_171=Send an e-mail message via SMTP @@ -259,6 +259,12 @@ ERR_BASE64_CANNOT_WRITE_RAW_DATA_199=An error occurred while \ attempting to write the decoded data: %s ERR_BASE64_UNKNOWN_SUBCOMMAND_200=Unknown subcommand %s ERR_LDIF_SKIP_EXCLUDE_BRANCH_201=Skipping entry %s because the DN is excluded by the exclude branch "%s" ERR_LDIF_SKIP_EXCLUDE_FILTER_202=Skipping entry %s because the DN is excluded by the exclude filter "%s" ERR_LDIF_SKIP_NOT_IN_INCLUDED_BRANCHES_203=Skipping entry %s because the DN \ is not included by any include branches ERR_LDIF_SKIP_NOT_IN_INCLUDED_FILTERS_204=Skipping entry %s because the DN \ is not included by any include filters ERR_LDIF_REJECTED_BY_PLUGIN_NOMESSAGE_224=Rejecting entry %s because \ it was rejected by a plugin ERR_LDIF_REJECTED_BY_PLUGIN_225=Rejecting entry %s because it was \