From 263d085885df024dca9250cc03c807912b0a7662 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 24 Apr 2012 22:33:21 +0000
Subject: [PATCH] Reformat to comply with new Checkstyle rules.
---
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java | 823 ++++++++++++++++++++++++++--------------------------------
1 files changed, 370 insertions(+), 453 deletions(-)
diff --git a/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java b/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java
index 00fd04a..3cd1a7d 100644
--- a/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java
+++ b/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java
@@ -6,17 +6,16 @@
* (the "License"). You may not use this file except in compliance
* with the License.
*
- * You can obtain a copy of the license at
- * trunk/opendj3/legal-notices/CDDLv1_0.txt
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
* or http://forgerock.org/license/CDDLv1.0.html.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at
- * trunk/opendj3/legal-notices/CDDLv1_0.txt. If applicable,
- * add the following below this CDDL HEADER, with the fields enclosed
- * by brackets "[]" replaced with your own identifying information:
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
@@ -28,8 +27,6 @@
package org.forgerock.opendj.ldif;
-
-
import static org.forgerock.opendj.ldap.CoreMessages.*;
import java.io.IOException;
@@ -41,14 +38,17 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizedIllegalArgumentException;
-import org.forgerock.opendj.ldap.*;
+import org.forgerock.opendj.ldap.AttributeDescription;
+import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.DecodeException;
+import org.forgerock.opendj.ldap.Entry;
+import org.forgerock.opendj.ldap.LinkedHashMapEntry;
+import org.forgerock.opendj.ldap.Matcher;
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaValidationPolicy;
import com.forgerock.opendj.util.Validator;
-
-
/**
* An LDIF entry reader reads attribute value records (entries) using the LDAP
* Data Interchange Format (LDIF) from a user defined source.
@@ -56,456 +56,373 @@
* @see <a href="http://tools.ietf.org/html/rfc2849">RFC 2849 - The LDAP Data
* Interchange Format (LDIF) - Technical Specification </a>
*/
-public final class LDIFEntryReader extends AbstractLDIFReader implements
- EntryReader
-{
- // Poison used to indicate end of LDIF.
- private static final Entry EOF = new LinkedHashMapEntry();
+public final class LDIFEntryReader extends AbstractLDIFReader implements EntryReader {
+ // Poison used to indicate end of LDIF.
+ private static final Entry EOF = new LinkedHashMapEntry();
+ /**
+ * Parses the provided array of LDIF lines as a single LDIF entry.
+ *
+ * @param ldifLines
+ * The lines of LDIF to be parsed.
+ * @return The parsed LDIF entry.
+ * @throws LocalizedIllegalArgumentException
+ * If {@code ldifLines} did not contain an LDIF entry, if it
+ * contained multiple entries, if contained malformed LDIF, or
+ * if the entry could not be decoded using the default schema.
+ * @throws NullPointerException
+ * If {@code ldifLines} was {@code null}.
+ */
+ public static Entry valueOfLDIFEntry(final String... ldifLines) {
+ final LDIFEntryReader reader = new LDIFEntryReader(ldifLines);
+ try {
+ if (!reader.hasNext()) {
+ // No change record found.
+ final LocalizableMessage message =
+ WARN_READ_LDIF_RECORD_NO_CHANGE_RECORD_FOUND.get();
+ throw new LocalizedIllegalArgumentException(message);
+ }
+ final Entry entry = reader.readEntry();
- /**
- * Parses the provided array of LDIF lines as a single LDIF entry.
- *
- * @param ldifLines
- * The lines of LDIF to be parsed.
- * @return The parsed LDIF entry.
- * @throws LocalizedIllegalArgumentException
- * If {@code ldifLines} did not contain an LDIF entry, if it
- * contained multiple entries, if contained malformed LDIF, or if
- * the entry could not be decoded using the default schema.
- * @throws NullPointerException
- * If {@code ldifLines} was {@code null}.
- */
- public static Entry valueOfLDIFEntry(final String... ldifLines)
- {
- final LDIFEntryReader reader = new LDIFEntryReader(ldifLines);
- try
- {
- if (!reader.hasNext())
- {
- // No change record found.
- final LocalizableMessage message = WARN_READ_LDIF_RECORD_NO_CHANGE_RECORD_FOUND
- .get();
- throw new LocalizedIllegalArgumentException(message);
- }
+ if (reader.hasNext()) {
+ // Multiple change records found.
+ final LocalizableMessage message =
+ WARN_READ_LDIF_RECORD_MULTIPLE_CHANGE_RECORDS_FOUND.get();
+ throw new LocalizedIllegalArgumentException(message);
+ }
- final Entry entry = reader.readEntry();
-
- if (reader.hasNext())
- {
- // Multiple change records found.
- final LocalizableMessage message = WARN_READ_LDIF_RECORD_MULTIPLE_CHANGE_RECORDS_FOUND
- .get();
- throw new LocalizedIllegalArgumentException(message);
- }
-
- return entry;
- }
- catch (final DecodeException e)
- {
- // Badly formed LDIF.
- throw new LocalizedIllegalArgumentException(e.getMessageObject());
- }
- catch (final IOException e)
- {
- // This should never happen for a String based reader.
- final LocalizableMessage message = WARN_READ_LDIF_RECORD_UNEXPECTED_IO_ERROR
- .get(e.getMessage());
- throw new LocalizedIllegalArgumentException(message);
- }
- }
-
-
-
- private Entry nextEntry = null;
-
-
-
- /**
- * Creates a new LDIF entry reader whose source is the provided input stream.
- *
- * @param in
- * The input stream to use.
- * @throws NullPointerException
- * If {@code in} was {@code null}.
- */
- public LDIFEntryReader(final InputStream in)
- {
- super(in);
- }
-
-
-
- /**
- * Creates a new LDIF entry reader which will read lines of LDIF from the
- * provided list of LDIF lines.
- *
- * @param ldifLines
- * The lines of LDIF to be read.
- * @throws NullPointerException
- * If {@code ldifLines} was {@code null}.
- */
- public LDIFEntryReader(final List<String> ldifLines)
- {
- super(ldifLines);
- }
-
-
-
- /**
- * Creates a new LDIF entry reader which will read lines of LDIF from the
- * provided array of LDIF lines.
- *
- * @param ldifLines
- * The lines of LDIF to be read.
- * @throws NullPointerException
- * If {@code ldifLines} was {@code null}.
- */
- public LDIFEntryReader(final String... ldifLines)
- {
- super(Arrays.asList(ldifLines));
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void close() throws IOException
- {
- close0();
- }
-
-
-
- /**
- * {@inheritDoc}
- *
- * @throws DecodeException
- * If the entry could not be decoded because it was malformed.
- */
- @Override
- public boolean hasNext() throws DecodeException, IOException
- {
- return getNextEntry() != EOF;
- }
-
-
-
- /**
- * {@inheritDoc}
- *
- * @throws DecodeException
- * If the entry could not be decoded because it was malformed.
- */
- @Override
- public Entry readEntry() throws DecodeException, IOException
- {
- if (!hasNext())
- {
- // LDIF reader has completed successfully.
- throw new NoSuchElementException();
+ return entry;
+ } catch (final DecodeException e) {
+ // Badly formed LDIF.
+ throw new LocalizedIllegalArgumentException(e.getMessageObject());
+ } catch (final IOException e) {
+ // This should never happen for a String based reader.
+ final LocalizableMessage message =
+ WARN_READ_LDIF_RECORD_UNEXPECTED_IO_ERROR.get(e.getMessage());
+ throw new LocalizedIllegalArgumentException(message);
+ }
}
- final Entry entry = nextEntry;
- nextEntry = null;
- return entry;
- }
+ private Entry nextEntry = null;
-
-
- /**
- * Specifies whether or not all operational attributes should be excluded from
- * any entries that are read from LDIF. The default is {@code false}.
- *
- * @param excludeOperationalAttributes
- * {@code true} if all operational attributes should be excluded, or
- * {@code false} otherwise.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setExcludeAllOperationalAttributes(
- final boolean excludeOperationalAttributes)
- {
- this.excludeOperationalAttributes = excludeOperationalAttributes;
- return this;
- }
-
-
-
- /**
- * Specifies whether or not all user attributes should be excluded from any
- * entries that are read from LDIF. The default is {@code false}.
- *
- * @param excludeUserAttributes
- * {@code true} if all user attributes should be excluded, or
- * {@code false} otherwise.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setExcludeAllUserAttributes(
- final boolean excludeUserAttributes)
- {
- this.excludeUserAttributes = excludeUserAttributes;
- return this;
- }
-
-
-
- /**
- * Excludes the named attribute from any entries that are read from LDIF. By
- * default all attributes are included unless explicitly excluded.
- *
- * @param attributeDescription
- * The name of the attribute to be excluded.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setExcludeAttribute(
- final AttributeDescription attributeDescription)
- {
- Validator.ensureNotNull(attributeDescription);
- excludeAttributes.add(attributeDescription);
- return this;
- }
-
-
-
- /**
- * Excludes all entries beneath the named entry (inclusive) from being read
- * from LDIF. By default all entries are written unless explicitly excluded or
- * included by branches or filters.
- *
- * @param excludeBranch
- * The distinguished name of the branch to be excluded.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setExcludeBranch(final DN excludeBranch)
- {
- Validator.ensureNotNull(excludeBranch);
- excludeBranches.add(excludeBranch);
- return this;
- }
-
-
-
- /**
- * Excludes all entries which match the provided filter matcher from being
- * read from LDIF. By default all entries are read unless explicitly excluded
- * or included by branches or filters.
- *
- * @param excludeFilter
- * The filter matcher.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setExcludeFilter(final Matcher excludeFilter)
- {
- Validator.ensureNotNull(excludeFilter);
- excludeFilters.add(excludeFilter);
- return this;
- }
-
-
-
- /**
- * Ensures that the named attribute is not excluded from any entries that are
- * read from LDIF. By default all attributes are included unless explicitly
- * excluded.
- *
- * @param attributeDescription
- * The name of the attribute to be included.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setIncludeAttribute(
- final AttributeDescription attributeDescription)
- {
- Validator.ensureNotNull(attributeDescription);
- includeAttributes.add(attributeDescription);
- return this;
- }
-
-
-
- /**
- * Ensures that all entries beneath the named entry (inclusive) are read from
- * LDIF. By default all entries are written unless explicitly excluded or
- * included by branches or filters.
- *
- * @param includeBranch
- * The distinguished name of the branch to be included.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setIncludeBranch(final DN includeBranch)
- {
- Validator.ensureNotNull(includeBranch);
- includeBranches.add(includeBranch);
- return this;
- }
-
-
-
- /**
- * Ensures that all entries which match the provided filter matcher are read
- * from LDIF. By default all entries are read unless explicitly excluded or
- * included by branches or filters.
- *
- * @param includeFilter
- * The filter matcher.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setIncludeFilter(final Matcher includeFilter)
- {
- Validator.ensureNotNull(includeFilter);
- includeFilters.add(includeFilter);
- return this;
- }
-
-
-
- /**
- * Sets the rejected record listener which should be notified whenever an LDIF
- * record is skipped, malformed, or fails schema validation.
- * <p>
- * By default the {@link RejectedLDIFListener#FAIL_FAST} listener is used.
- *
- * @param listener
- * The rejected record listener.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setRejectedLDIFListener(
- final RejectedLDIFListener listener)
- {
- this.rejectedRecordListener = listener;
- return this;
- }
-
-
-
- /**
- * Sets the schema which should be used for decoding entries that are read
- * from LDIF. The default schema is used if no other is specified.
- *
- * @param schema
- * The schema which should be used for decoding entries that are read
- * from LDIF.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setSchema(final Schema schema)
- {
- Validator.ensureNotNull(schema);
- this.schema = schemaValidationPolicy.checkAttributesAndObjectClasses()
- .needsChecking() ? schema.asStrictSchema() : schema.asNonStrictSchema();
- return this;
- }
-
-
-
- /**
- * Specifies the schema validation which should be used when reading LDIF
- * entry records. If attribute value validation is enabled then all checks
- * will be performed.
- * <p>
- * Schema validation is disabled by default.
- * <p>
- * <b>NOTE:</b> this method copies the provided policy so changes made to it
- * after this method has been called will have no effect.
- *
- * @param policy
- * The schema validation which should be used when reading LDIF entry
- * records.
- * @return A reference to this {@code LDIFEntryReader}.
- */
- public LDIFEntryReader setSchemaValidationPolicy(
- final SchemaValidationPolicy policy)
- {
- this.schemaValidationPolicy = SchemaValidationPolicy.copyOf(policy);
- this.schema = schemaValidationPolicy.checkAttributesAndObjectClasses()
- .needsChecking() ? schema.asStrictSchema() : schema.asNonStrictSchema();
- return this;
- }
-
-
-
- private Entry getNextEntry() throws DecodeException, IOException
- {
- while (nextEntry == null)
- {
- // Read the set of lines that make up the next entry.
- final LDIFRecord record = readLDIFRecord();
- if (record == null)
- {
- nextEntry = EOF;
- break;
- }
-
- try
- {
- // Read the DN of the entry and see if it is one that should be
- // included in the import.
- final DN entryDN = readLDIFRecordDN(record);
- if (entryDN == null)
- {
- // Skip version record.
- continue;
- }
-
- // Skip if branch containing the entry DN is excluded.
- if (isBranchExcluded(entryDN))
- {
- final LocalizableMessage message = ERR_LDIF_ENTRY_EXCLUDED_BY_DN.get(
- record.lineNumber, entryDN.toString());
- handleSkippedRecord(record, message);
- continue;
- }
-
- // Use an Entry for the AttributeSequence.
- final Entry entry = new LinkedHashMapEntry(entryDN);
- boolean schemaValidationFailure = false;
- final List<LocalizableMessage> schemaErrors = new LinkedList<LocalizableMessage>();
- while (record.iterator.hasNext())
- {
- final String ldifLine = record.iterator.next();
- if (!readLDIFRecordAttributeValue(record, ldifLine, entry,
- schemaErrors))
- {
- schemaValidationFailure = true;
- }
- }
-
- // Skip if the entry is excluded by any filters.
- if (isEntryExcluded(entry))
- {
- final LocalizableMessage message = ERR_LDIF_ENTRY_EXCLUDED_BY_FILTER
- .get(record.lineNumber, entryDN.toString());
- handleSkippedRecord(record, message);
- continue;
- }
-
- if (!schema.validateEntry(entry, schemaValidationPolicy, schemaErrors))
- {
- schemaValidationFailure = true;
- }
-
- if (schemaValidationFailure)
- {
- handleSchemaValidationFailure(record, schemaErrors);
- continue;
- }
-
- if (!schemaErrors.isEmpty())
- {
- handleSchemaValidationWarning(record, schemaErrors);
- }
-
- nextEntry = entry;
- }
- catch (final DecodeException e)
- {
- handleMalformedRecord(record, e.getMessageObject());
- continue;
- }
+ /**
+ * Creates a new LDIF entry reader whose source is the provided input
+ * stream.
+ *
+ * @param in
+ * The input stream to use.
+ * @throws NullPointerException
+ * If {@code in} was {@code null}.
+ */
+ public LDIFEntryReader(final InputStream in) {
+ super(in);
}
- return nextEntry;
- }
+ /**
+ * Creates a new LDIF entry reader which will read lines of LDIF from the
+ * provided list of LDIF lines.
+ *
+ * @param ldifLines
+ * The lines of LDIF to be read.
+ * @throws NullPointerException
+ * If {@code ldifLines} was {@code null}.
+ */
+ public LDIFEntryReader(final List<String> ldifLines) {
+ super(ldifLines);
+ }
+
+ /**
+ * Creates a new LDIF entry reader which will read lines of LDIF from the
+ * provided array of LDIF lines.
+ *
+ * @param ldifLines
+ * The lines of LDIF to be read.
+ * @throws NullPointerException
+ * If {@code ldifLines} was {@code null}.
+ */
+ public LDIFEntryReader(final String... ldifLines) {
+ super(Arrays.asList(ldifLines));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void close() throws IOException {
+ close0();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws DecodeException
+ * If the entry could not be decoded because it was malformed.
+ */
+ @Override
+ public boolean hasNext() throws DecodeException, IOException {
+ return getNextEntry() != EOF;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @throws DecodeException
+ * If the entry could not be decoded because it was malformed.
+ */
+ @Override
+ public Entry readEntry() throws DecodeException, IOException {
+ if (!hasNext()) {
+ // LDIF reader has completed successfully.
+ throw new NoSuchElementException();
+ }
+
+ final Entry entry = nextEntry;
+ nextEntry = null;
+ return entry;
+ }
+
+ /**
+ * Specifies whether or not all operational attributes should be excluded
+ * from any entries that are read from LDIF. The default is {@code false}.
+ *
+ * @param excludeOperationalAttributes
+ * {@code true} if all operational attributes should be excluded,
+ * or {@code false} otherwise.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setExcludeAllOperationalAttributes(
+ final boolean excludeOperationalAttributes) {
+ this.excludeOperationalAttributes = excludeOperationalAttributes;
+ return this;
+ }
+
+ /**
+ * Specifies whether or not all user attributes should be excluded from any
+ * entries that are read from LDIF. The default is {@code false}.
+ *
+ * @param excludeUserAttributes
+ * {@code true} if all user attributes should be excluded, or
+ * {@code false} otherwise.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setExcludeAllUserAttributes(final boolean excludeUserAttributes) {
+ this.excludeUserAttributes = excludeUserAttributes;
+ return this;
+ }
+
+ /**
+ * Excludes the named attribute from any entries that are read from LDIF. By
+ * default all attributes are included unless explicitly excluded.
+ *
+ * @param attributeDescription
+ * The name of the attribute to be excluded.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setExcludeAttribute(final AttributeDescription attributeDescription) {
+ Validator.ensureNotNull(attributeDescription);
+ excludeAttributes.add(attributeDescription);
+ return this;
+ }
+
+ /**
+ * Excludes all entries beneath the named entry (inclusive) from being read
+ * from LDIF. By default all entries are written unless explicitly excluded
+ * or included by branches or filters.
+ *
+ * @param excludeBranch
+ * The distinguished name of the branch to be excluded.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setExcludeBranch(final DN excludeBranch) {
+ Validator.ensureNotNull(excludeBranch);
+ excludeBranches.add(excludeBranch);
+ return this;
+ }
+
+ /**
+ * Excludes all entries which match the provided filter matcher from being
+ * read from LDIF. By default all entries are read unless explicitly
+ * excluded or included by branches or filters.
+ *
+ * @param excludeFilter
+ * The filter matcher.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setExcludeFilter(final Matcher excludeFilter) {
+ Validator.ensureNotNull(excludeFilter);
+ excludeFilters.add(excludeFilter);
+ return this;
+ }
+
+ /**
+ * Ensures that the named attribute is not excluded from any entries that
+ * are read from LDIF. By default all attributes are included unless
+ * explicitly excluded.
+ *
+ * @param attributeDescription
+ * The name of the attribute to be included.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setIncludeAttribute(final AttributeDescription attributeDescription) {
+ Validator.ensureNotNull(attributeDescription);
+ includeAttributes.add(attributeDescription);
+ return this;
+ }
+
+ /**
+ * Ensures that all entries beneath the named entry (inclusive) are read
+ * from LDIF. By default all entries are written unless explicitly excluded
+ * or included by branches or filters.
+ *
+ * @param includeBranch
+ * The distinguished name of the branch to be included.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setIncludeBranch(final DN includeBranch) {
+ Validator.ensureNotNull(includeBranch);
+ includeBranches.add(includeBranch);
+ return this;
+ }
+
+ /**
+ * Ensures that all entries which match the provided filter matcher are read
+ * from LDIF. By default all entries are read unless explicitly excluded or
+ * included by branches or filters.
+ *
+ * @param includeFilter
+ * The filter matcher.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setIncludeFilter(final Matcher includeFilter) {
+ Validator.ensureNotNull(includeFilter);
+ includeFilters.add(includeFilter);
+ return this;
+ }
+
+ /**
+ * Sets the rejected record listener which should be notified whenever an
+ * LDIF record is skipped, malformed, or fails schema validation.
+ * <p>
+ * By default the {@link RejectedLDIFListener#FAIL_FAST} listener is used.
+ *
+ * @param listener
+ * The rejected record listener.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setRejectedLDIFListener(final RejectedLDIFListener listener) {
+ this.rejectedRecordListener = listener;
+ return this;
+ }
+
+ /**
+ * Sets the schema which should be used for decoding entries that are read
+ * from LDIF. The default schema is used if no other is specified.
+ *
+ * @param schema
+ * The schema which should be used for decoding entries that are
+ * read from LDIF.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setSchema(final Schema schema) {
+ Validator.ensureNotNull(schema);
+ this.schema =
+ schemaValidationPolicy.checkAttributesAndObjectClasses().needsChecking() ? schema
+ .asStrictSchema() : schema.asNonStrictSchema();
+ return this;
+ }
+
+ /**
+ * Specifies the schema validation which should be used when reading LDIF
+ * entry records. If attribute value validation is enabled then all checks
+ * will be performed.
+ * <p>
+ * Schema validation is disabled by default.
+ * <p>
+ * <b>NOTE:</b> this method copies the provided policy so changes made to it
+ * after this method has been called will have no effect.
+ *
+ * @param policy
+ * The schema validation which should be used when reading LDIF
+ * entry records.
+ * @return A reference to this {@code LDIFEntryReader}.
+ */
+ public LDIFEntryReader setSchemaValidationPolicy(final SchemaValidationPolicy policy) {
+ this.schemaValidationPolicy = SchemaValidationPolicy.copyOf(policy);
+ this.schema =
+ schemaValidationPolicy.checkAttributesAndObjectClasses().needsChecking() ? schema
+ .asStrictSchema() : schema.asNonStrictSchema();
+ return this;
+ }
+
+ private Entry getNextEntry() throws DecodeException, IOException {
+ while (nextEntry == null) {
+ // Read the set of lines that make up the next entry.
+ final LDIFRecord record = readLDIFRecord();
+ if (record == null) {
+ nextEntry = EOF;
+ break;
+ }
+
+ try {
+ // Read the DN of the entry and see if it is one that should be
+ // included in the import.
+ final DN entryDN = readLDIFRecordDN(record);
+ if (entryDN == null) {
+ // Skip version record.
+ continue;
+ }
+
+ // Skip if branch containing the entry DN is excluded.
+ if (isBranchExcluded(entryDN)) {
+ final LocalizableMessage message =
+ ERR_LDIF_ENTRY_EXCLUDED_BY_DN
+ .get(record.lineNumber, entryDN.toString());
+ handleSkippedRecord(record, message);
+ continue;
+ }
+
+ // Use an Entry for the AttributeSequence.
+ final Entry entry = new LinkedHashMapEntry(entryDN);
+ boolean schemaValidationFailure = false;
+ final List<LocalizableMessage> schemaErrors = new LinkedList<LocalizableMessage>();
+ while (record.iterator.hasNext()) {
+ final String ldifLine = record.iterator.next();
+ if (!readLDIFRecordAttributeValue(record, ldifLine, entry, schemaErrors)) {
+ schemaValidationFailure = true;
+ }
+ }
+
+ // Skip if the entry is excluded by any filters.
+ if (isEntryExcluded(entry)) {
+ final LocalizableMessage message =
+ ERR_LDIF_ENTRY_EXCLUDED_BY_FILTER.get(record.lineNumber, entryDN
+ .toString());
+ handleSkippedRecord(record, message);
+ continue;
+ }
+
+ if (!schema.validateEntry(entry, schemaValidationPolicy, schemaErrors)) {
+ schemaValidationFailure = true;
+ }
+
+ if (schemaValidationFailure) {
+ handleSchemaValidationFailure(record, schemaErrors);
+ continue;
+ }
+
+ if (!schemaErrors.isEmpty()) {
+ handleSchemaValidationWarning(record, schemaErrors);
+ }
+
+ nextEntry = entry;
+ } catch (final DecodeException e) {
+ handleMalformedRecord(record, e.getMessageObject());
+ continue;
+ }
+ }
+
+ return nextEntry;
+ }
}
--
Gitblit v1.10.0