mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Matthew Swift
11.58.2016 857de821105b9b5ba0ecb221d2a6b9fb5992059a
OPENDJ-2858 Allow first attribute in LDIF change records to be empty

Thanks to Matthew Stevenson for the contribution!
3 files modified
31 ■■■■■ changed files
opendj-core/src/main/java/org/forgerock/opendj/ldif/AbstractLDIFReader.java 5 ●●●●● patch | view | raw | blame | history
opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordReader.java 3 ●●●● patch | view | raw | blame | history
opendj-core/src/test/java/org/forgerock/opendj/ldif/LDIFChangeRecordReaderTestCase.java 23 ●●●●● patch | view | raw | blame | history
opendj-core/src/main/java/org/forgerock/opendj/ldif/AbstractLDIFReader.java
@@ -13,6 +13,7 @@
 *
 * Copyright 2009-2010 Sun Microsystems, Inc.
 * Portions copyright 2011-2015 ForgeRock AS.
 * Portions copyright 2016 Matthew Stevenson
 */
package org.forgerock.opendj.ldif;
@@ -637,11 +638,11 @@
        /*
         * Look at the character immediately after the colon. If there is none,
         * then no value was specified. Throw an exception
         * then no value was specified. Then return an empty value.
         */
        final int length = ldifLine.length();
        if (colonPos == length - 1) {
            pair.key = null;
            pair.value = "";
            return ldifLine;
        }
opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordReader.java
@@ -13,6 +13,7 @@
 *
 * Copyright 2009-2010 Sun Microsystems, Inc.
 * Portions copyright 2011-2016 ForgeRock AS.
 * Portions copyright 2016 Matthew Stevenson
 */
package org.forgerock.opendj.ldif;
@@ -719,7 +720,7 @@
        // Parse the newsuperior if present.
        if (record.iterator.hasNext()) {
            ldifLine = readLDIFRecordKeyValuePair(record, pair, true);
            if (pair.key == null || !"newsuperior".equals(toLowerCase(pair.key))) {
            if (pair.key == null || !"newsuperior".equals(toLowerCase(pair.key)) || "".equals(pair.value)) {
                throw DecodeException.error(
                        ERR_LDIF_MALFORMED_NEW_SUPERIOR.get(record.lineNumber, entryDN, ldifLine));
            }
opendj-core/src/test/java/org/forgerock/opendj/ldif/LDIFChangeRecordReaderTestCase.java
@@ -13,6 +13,7 @@
 *
 * Copyright 2011-2016 ForgeRock AS.
 * Portions Copyright 2014 Manuel Gaupp
 * Portions copyright 2016 Matthew Stevenson
 */
package org.forgerock.opendj.ldif;
@@ -2486,4 +2487,26 @@
        assertThat(addRequest.getAttributeCount()).isEqualTo(10);
    }
    /**
     * Try to read a LDIF record with a empty first attribute
     */
    @Test
    public void testValueOfLDIFRecordEmptyFirstAttrLDIF() {
        // @formatter:off
        LDIFChangeRecordReader.valueOfLDIFChangeRecord(
                "version: 1",
                "# Add a new entry",
                "dn: cn=Fiona Jensen, ou=Marketing, dc=airius, dc=com",
                "description:",
                "objectclass: top",
                "objectclass: person",
                "objectclass: organizationalPerson",
                "cn: Fiona Jensen",
                "sn: Jensen",
                "uid: fiona",
                "telephonenumber: +1 408 555 1212"
        );
        // @formatter:on
    }
}