You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2017/08/23 15:33:41 UTC
[directory-ldap-api] branch shared-value updated: A space after a
':' wasn't discarded and the null value was not considered as null. That
led to some bug when converting the config(DIRSERVER-2077)
This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a commit to branch shared-value
in repository https://gitbox.apache.org/repos/asf/directory-ldap-api.git
The following commit(s) were added to refs/heads/shared-value by this push:
new d81e587 A space after a ':' wasn't discarded and the null value was not considered as null. That led to some bug when converting the config(DIRSERVER-2077)
d81e587 is described below
commit d81e587885309f1f5b5e5efbf30220e8c7c61b1d
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Wed Aug 23 17:31:23 2017 +0200
A space after a ':' wasn't discarded and the null value was not
considered as null. That led to some bug when converting the
config(DIRSERVER-2077)
---
.../directory/api/ldap/model/ldif/LdifReader.java | 5 +-
.../api/ldap/model/ldif/LdifReaderTest.java | 180 +++++++++++++--------
2 files changed, 113 insertions(+), 72 deletions(-)
diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/LdifReader.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/LdifReader.java
index b3a1165..ff6f3c1 100644
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/LdifReader.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/ldif/LdifReader.java
@@ -764,7 +764,10 @@ public class LdifReader implements Iterable<LdifEntry>, Closeable
String result = null;
- result = value.substring( 0, end );
+ if ( end > 0 )
+ {
+ result = value.substring( 0, end );
+ }
return result;
}
diff --git a/ldap/model/src/test/java/org/apache/directory/api/ldap/model/ldif/LdifReaderTest.java b/ldap/model/src/test/java/org/apache/directory/api/ldap/model/ldif/LdifReaderTest.java
index 8eb9015..8770b90 100644
--- a/ldap/model/src/test/java/org/apache/directory/api/ldap/model/ldif/LdifReaderTest.java
+++ b/ldap/model/src/test/java/org/apache/directory/api/ldap/model/ldif/LdifReaderTest.java
@@ -2249,59 +2249,60 @@ public class LdifReaderTest
"changetype: delete\n" +
"attr1: test";
- LdifReader reader = new LdifReader();
-
- try
- {
- reader.parseLdif( ldif );
- fail();
- }
- catch ( Exception e )
+ try ( LdifReader reader = new LdifReader() )
{
+ try
+ {
+ reader.parseLdif( ldif );
+ fail();
+ }
+ catch ( Exception e )
+ {
+ }
+
+ assertEquals( 1, reader.getLineNumber() );
}
-
- assertEquals( 1, reader.getLineNumber() );
-
- reader.close();
ldif =
"version: 1\n" +
"d n: dc=example,dc=com\n" + // wrong name "d n"
"changetype: delete\n" +
"attr1: test";
- reader = new LdifReader();
- try
- {
- reader.parseLdif( ldif );
- fail();
- }
- catch ( Exception e )
+ try ( LdifReader reader = new LdifReader() )
{
+ try
+ {
+ reader.parseLdif( ldif );
+ fail();
+ }
+ catch ( Exception e )
+ {
+ }
+
+ assertEquals( 2, reader.getLineNumber() );
}
- assertEquals( 2, reader.getLineNumber() );
-
- reader.close();
-
// wrong changetype
ldif =
"version: 1\n" +
"dn: dc=example,dc=com\n" +
"changetype: delete\n" +
"attr1: test";
- reader = new LdifReader();
-
- try
- {
- reader.parseLdif( ldif );
- fail();
- }
- catch ( Exception e )
+
+ try ( LdifReader reader = new LdifReader() )
{
+ try
+ {
+ reader.parseLdif( ldif );
+ fail();
+ }
+ catch ( Exception e )
+ {
+ }
+
+ assertEquals( 4, reader.getLineNumber() );
}
-
- assertEquals( 4, reader.getLineNumber() );
ldif =
"version: 1\n" +
@@ -2320,19 +2321,19 @@ public class LdifReaderTest
"dependencies:\n" +
"envVars:";
- reader = new LdifReader();
-
- try
- {
- reader.parseLdif( ldif );
- fail( "shouldn't be parsed" );
- }
- catch ( Exception e )
+ try ( LdifReader reader = new LdifReader() )
{
+ try
+ {
+ reader.parseLdif( ldif );
+ fail( "shouldn't be parsed" );
+ }
+ catch ( Exception e )
+ {
+ }
+
+ assertEquals( 10, reader.getLineNumber() );
}
-
- assertEquals( 10, reader.getLineNumber() );
- reader.close();
}
@@ -2349,32 +2350,33 @@ public class LdifReaderTest
"dependencies:\n" +
"envVars:";
- LdifReader reader = new LdifReader();
- List<LdifEntry> entries = reader.parseLdif( ldif );
- reader.close();
-
- assertNotNull( entries );
-
- LdifEntry entry = entries.get( 0 );
- assertTrue( entry.isLdifContent() );
-
- assertEquals( "", entry.getDn().getName() );
-
- Attribute attr = entry.get( "cn" );
- assertTrue( attr.contains( "app1" ) );
-
- attr = entry.get( "objectclass" );
- assertTrue( attr.contains( "top" ) );
- assertTrue( attr.contains( "apApplication" ) );
-
- attr = entry.get( "displayname" );
- assertTrue( attr.contains( "app1" ) );
-
- attr = entry.get( "dependencies" );
- assertEquals( "", attr.get().getValue() );
-
- attr = entry.get( "envvars" );
- assertEquals( "", attr.get().getValue() );
+ try ( LdifReader reader = new LdifReader() )
+ {
+ List<LdifEntry> entries = reader.parseLdif( ldif );
+
+ assertNotNull( entries );
+
+ LdifEntry entry = entries.get( 0 );
+ assertTrue( entry.isLdifContent() );
+
+ assertEquals( "", entry.getDn().getName() );
+
+ Attribute attr = entry.get( "cn" );
+ assertTrue( attr.contains( "app1" ) );
+
+ attr = entry.get( "objectclass" );
+ assertTrue( attr.contains( "top" ) );
+ assertTrue( attr.contains( "apApplication" ) );
+
+ attr = entry.get( "displayname" );
+ assertTrue( attr.contains( "app1" ) );
+
+ attr = entry.get( "dependencies" );
+ assertEquals( "", attr.get().getValue() );
+
+ attr = entry.get( "envvars" );
+ assertEquals( "", attr.get().getValue() );
+ }
}
@@ -2500,7 +2502,6 @@ public class LdifReaderTest
}
-
@Test
public void testLdifParserWithReplaceEmptyValue() throws Exception, Exception
{
@@ -2526,4 +2527,41 @@ public class LdifReaderTest
assertEquals( ldif, entry.toString() );
reader.close();
}
+
+
+ @Test
+ public void testLdifParserWithNullDn() throws Exception, Exception
+ {
+ String ldif1 =
+ "dn: ads-authenticatorid=anonymousauthenticator,ou=authenticators,ads-interceptorId=authenticationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config\n" +
+ "ads-authenticatorid: anonymousauthenticator\n" +
+ "objectclass: top\n" +
+ "objectclass: ads-base\n" +
+ "objectClass: ads-authenticator\n" +
+ "objectClass: ads-authenticatorImpl\n" +
+ "ads-authenticatorClass: org.apache.directory.server.core.authn.AnonymousAuthenticator\n" +
+ "ads-baseDn: \n" +
+ "ads-enabled: TRUE";
+
+ String ldif2 =
+ "dn: ads-authenticatorid=anonymousauthenticator,ou=authenticators,ads-interceptorId=authenticationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config\n" +
+ "ads-authenticatorid: anonymousauthenticator\n" +
+ "objectclass: top\n" +
+ "objectclass: ads-base\n" +
+ "objectClass: ads-authenticator\n" +
+ "objectClass: ads-authenticatorImpl\n" +
+ "ads-authenticatorClass: org.apache.directory.server.core.authn.AnonymousAuthenticator\n" +
+ "ads-baseDn:\n" +
+ "ads-enabled: TRUE";
+
+ try ( LdifReader reader = new LdifReader() )
+ {
+ List<LdifEntry> entries1 = reader.parseLdif( ldif1 );
+ LdifEntry entry1 = entries1.get( 0 );
+
+ List<LdifEntry> entries2 = reader.parseLdif( ldif2 );
+ LdifEntry entry2 = entries2.get( 0 );
+ assertEquals( entry1, entry2 );
+ }
+ }
}
--
To stop receiving notification emails like this one, please contact
['"commits@directory.apache.org" <co...@directory.apache.org>'].