You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2007/07/23 23:17:58 UTC

svn commit: r558863 - in /directory/shared/trunk/ldap/src: main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java

Author: seelmann
Date: Mon Jul 23 14:17:57 2007
New Revision: 558863

URL: http://svn.apache.org/viewvc?view=rev&rev=558863
Log:
DIRSERVER-1005: Forced UTF-8 encoding

Modified:
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java
    directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java

Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java?view=diff&rev=558863&r1=558862&r2=558863
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java Mon Jul 23 14:17:57 2007
@@ -19,6 +19,8 @@
  */
 package org.apache.directory.shared.ldap.ldif;
 
+import java.io.UnsupportedEncodingException;
+
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
 import javax.naming.directory.Attribute;
@@ -168,9 +170,18 @@
             	String str = (String) value;
             	if ( !LdifUtils.isLDIFSafe( str ) )
             	{
-            		char[] encoded = Base64.encode( ( ( String ) value ).getBytes() );
-            		
-            		lineBuffer.append( ":: " + new String( encoded ) );
+            		char[] encoded;
+                    try
+                    {
+                        // force encoding using UTF-8 charset, as required in RFC2849 note 7
+                        encoded = Base64.encode( ( ( String ) value ).getBytes( "UTF-8" ) );
+                    }
+                    catch ( UnsupportedEncodingException e )
+                    {
+                        encoded = Base64.encode( ( ( String ) value ).getBytes() );
+                    }
+
+                    lineBuffer.append( ":: " + new String( encoded ) );
             	}
             	else
             	{

Modified: directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java?view=diff&rev=558863&r1=558862&r2=558863
==============================================================================
--- directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java (original)
+++ directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java Mon Jul 23 14:17:57 2007
@@ -19,6 +19,10 @@
  */
 package org.apache.directory.shared.ldap.ldif;
 
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+import javax.naming.directory.BasicAttributes;
+
 import junit.framework.TestCase;
 
 public class LdifUtilsTest extends TestCase
@@ -224,5 +228,18 @@
         assertEquals( "abcde\n fghi\n jklm\n n", LdifUtils.stripLineToNChars( "abcdefghijklmn", 5 ) );
         assertEquals( "abcde\n fghi\n jklm\n no", LdifUtils.stripLineToNChars( "abcdefghijklmno", 5 ) );
         assertEquals( "abcde\n fghi\n jklm\n nop", LdifUtils.stripLineToNChars( "abcdefghijklmnop", 5 ) );
+    }
+    
+    
+    /**
+     * Tests that unsave characters are encoded using UTF-8 charset. 
+     * 
+     * @throws NamingException
+     */
+    public void testConvertToLdifEncoding() throws NamingException
+    {
+        Attributes attributes = new BasicAttributes( "cn", "Saarbr\u00FCcken" );
+        String ldif = LdifUtils.convertToLdif( attributes );
+        assertEquals( "cn:: U2FhcmJyw7xja2Vu\n", ldif );
     }
 }