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 2010/01/04 04:44:38 UTC

svn commit: r895544 - in /directory/shared/branches/shared-schema/ldap/src: main/antlr/ main/java/org/apache/directory/shared/ldap/schema/normalizers/ test/java/org/apache/directory/shared/ldap/name/

Author: seelmann
Date: Mon Jan  4 03:44:13 2010
New Revision: 895544

URL: http://svn.apache.org/viewvc?rev=895544&view=rev
Log:
o Fixed issues with trailing spaces
o Fixed some tests
o It is no longer necessary to unescape values during DN normalization, the values were already unescaped by the DN parser. So removed the decode and unescape code from DefaultStringNormalizer.

Modified:
    directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g
    directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/DefaultStringNormalizer.java
    directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java

Modified: directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g?rev=895544&r1=895543&r2=895544&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/antlr/distinguishedName.g Mon Jan  4 03:44:13 2010
@@ -148,10 +148,8 @@
     }
     static class UpAndNormValue
     {
-        String name = "";
-        String upValue = "";
-        Object normValue = "";
-        String trailingSpaces = "";
+        Object value = "";
+        String rawValue = "";
     }
 }
 
@@ -300,16 +298,16 @@
         {
             try
             {
-                upName += value.name;
+                upName += value.rawValue;
                 AttributeTypeAndValue ava = null;
             
-                if ( value.normValue instanceof String )
+                if ( value.value instanceof String )
                 {
                     ava = new AttributeTypeAndValue(
                         type,
                         type,
-                        new ClientStringValue( value.upValue ), 
-                        new ClientStringValue( (String)value.normValue ),
+                        new ClientStringValue( (String)value.value ), 
+                        new ClientStringValue( (String)value.value ),
                         upName
                     );
                 }
@@ -318,8 +316,8 @@
                     ava = new AttributeTypeAndValue(
                         type,
                         type,
-                        new ClientStringValue( value.upValue ), 
-                        new ClientBinaryValue( (byte[])value.normValue ),
+                        new ClientBinaryValue( (byte[])value.value ), 
+                        new ClientBinaryValue( (byte[])value.value ),
                         upName
                     );
                 }
@@ -416,14 +414,14 @@
     (
         (
             quotestring [value]
-            ( SPACE { value.trailingSpaces += " "; } )*
+            ( SPACE { value.rawValue += " "; } )*
         )
         |
         string [value]
         |
         (
             hexstring [value]
-            ( SPACE { value.trailingSpaces += " "; } )*
+            ( SPACE { value.rawValue += " "; } )*
         )
     )?
     ;
@@ -443,25 +441,23 @@
     }
     :
     (
-        dq1:DQUOTE { value.upValue += dq1.getText(); }
+        dq1:DQUOTE { value.rawValue += dq1.getText(); }
         (
             (
                 s:~(DQUOTE|ESC|ESCESC|ESCSHARP|HEXPAIR) 
                 {
-                    value.upValue += s.getText();
+                    value.rawValue += s.getText();
                     bb.append( StringTools.getBytesUtf8( s.getText() ) ); 
                 }
             )
             |
             bytes = pair[value] { bb.append( bytes ); }
         )*
-        dq2:DQUOTE { value.upValue += dq2.getText(); }
+        dq2:DQUOTE { value.rawValue += dq2.getText(); }
     )
     {
-        // TODO: pair / s
         String string = StringTools.utf8ToString( bb.copyOfUsedBytes() );
-        string = string.replace("\\ ", " ");
-        value.normValue = string;
+        value.value = string;
     }
     ;
 
@@ -484,8 +480,8 @@
     hexValue:HEXVALUE
     {
         // convert to byte[]
-        value.upValue = "#" + hexValue.getText();
-        value.normValue = StringTools.toByteArray( hexValue.getText() ); 
+        value.rawValue = "#" + hexValue.getText();
+        value.value = StringTools.toByteArray( hexValue.getText() ); 
     }
     ;
 
@@ -499,8 +495,6 @@
      * string =   [ ( leadchar / pair ) [ *( stringchar / pair )
      *    ( trailchar / pair ) ] ]
      *
-     * TODO: Trailing SPACE is manually removed. This needs review! 
-     * TODO: ESC SPACE is replaced by a simgle SPACE. This needs review! 
      */ 
 string [UpAndNormValue value]
     {
@@ -514,15 +508,13 @@
         (
             tmp = lutf1 
             { 
-                value.upValue += tmp;
-                value.name += tmp;
+                value.rawValue += tmp;
                 bb.append( StringTools.getBytesUtf8( tmp ) ); 
             }
             |
             tmp = utfmb 
             {
-                value.upValue += tmp;
-                value.name += tmp;
+                value.rawValue += tmp;
                 bb.append( StringTools.getBytesUtf8( tmp ) );
             }
             |
@@ -531,15 +523,13 @@
         ( 
             tmp = sutf1
             {
-                value.upValue += tmp;
-                value.name += tmp;
+                value.rawValue += tmp;
                 bb.append( StringTools.getBytesUtf8( tmp ) ); 
             }
             |
             tmp = utfmb 
             {
-                value.upValue += tmp;
-                value.name += tmp;
+                value.rawValue += tmp;
                 bb.append( StringTools.getBytesUtf8( tmp ) ); 
             }
             |
@@ -551,16 +541,16 @@
         
         // trim trailing space characters manually
         // don't know how to tell antlr that the last char mustn't be a space.
-        while ( string.length() > 0 && value.upValue.length() > 1 
-            && value.upValue.charAt( value.upValue.length() - 1 ) == ' ' 
-            && value.upValue.charAt( value.upValue.length() - 2 ) != '\\' )
+        int rawIndex = value.rawValue.length();
+        while ( string.length() > 0 && rawIndex > 1 
+            && value.rawValue.charAt( rawIndex - 1 ) == ' ' 
+            && value.rawValue.charAt( rawIndex - 2 ) != '\\' )
         {
             string = string.substring( 0, string.length() - 1 );
-            value.upValue = value.upValue.substring( 0, value.upValue.length() - 1 );
-            value.trailingSpaces += " ";
+            rawIndex--;
         }
         
-        value.normValue = string;
+        value.value = string;
     }
     ;
 
@@ -664,7 +654,6 @@
      * <special> ::= "," | "=" | <CR> | "+" | "<" |  ">"
      *           | "#" | ";"
      * 
-     * TODO: The ESC is removed from the norm value. This needs review! 
      */ 
 pair [UpAndNormValue value] returns [byte[] pair]
     {
@@ -675,8 +664,7 @@
     (
         ESCESC 
         { 
-            value.upValue += "\\";
-            value.name += "\\\\";
+            value.rawValue += "\\\\";
             pair = StringTools.getBytesUtf8( "\\" );
         } 
     )
@@ -684,8 +672,7 @@
     (
         ESCSHARP 
         { 
-            value.upValue += "#";
-            value.name += "\\#";
+            value.rawValue += "\\#";
             pair = StringTools.getBytesUtf8( "#" );
         } 
     )
@@ -694,8 +681,7 @@
         ESC
         tmp = special 
         { 
-            value.upValue += tmp;
-            value.name += "\\" + tmp;
+            value.rawValue += "\\" + tmp;
             pair = StringTools.getBytesUtf8( tmp ); 
         }
     )
@@ -703,8 +689,7 @@
     ( 
         hexpair:HEXPAIR 
         { 
-            value.upValue += hexpair.getText();
-            value.name += "\\" + hexpair.getText();
+            value.rawValue += "\\" + hexpair.getText();
             pair = StringTools.toByteArray( hexpair.getText() ); 
         } 
     )
@@ -717,7 +702,6 @@
      * special = escaped / SPACE / SHARP / EQUALS
      * escaped = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE
      *
-     * TODO: For space an ESC is manually added. This needs review! 
      */ 
 special returns [String special]
     {

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/DefaultStringNormalizer.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/DefaultStringNormalizer.java?rev=895544&r1=895543&r2=895544&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/DefaultStringNormalizer.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/normalizers/DefaultStringNormalizer.java Mon Jan  4 03:44:13 2010
@@ -64,16 +64,6 @@
             return new ClientStringValue( str );
         }
         
-        if ( str.charAt( 0 ) == '#' )
-        {
-            return new ClientStringValue( StringTools.decodeHexString( str ) );
-        }
-        
-        if ( str.indexOf( '\\' ) != -1 )
-        {
-            return new ClientStringValue( StringTools.decodeEscapedHex( str ) );
-        }
-        
         return new ClientStringValue( str );
     }
 
@@ -88,16 +78,6 @@
             return value;
         }
         
-        if ( value.charAt( 0 ) == '#' )
-        {
-            return StringTools.decodeHexString( value );
-        }
-        
-        if ( value.indexOf( '\\' ) != -1 )
-        {
-            return StringTools.decodeEscapedHex( value );
-        }
-        
         return value;
     }
 

Modified: directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java?rev=895544&r1=895543&r2=895544&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/name/LdapDNTest.java Mon Jan  4 03:44:13 2010
@@ -3407,7 +3407,7 @@
         assertEquals( " cn = #414243 ", dn3.getRdn().getUpName() );
         AttributeTypeAndValue atav3 = dn3.getRdn().getAtav();
         assertEquals( "cn", atav3.getUpType() );
-        assertEquals( "#414243", atav3.getUpValue().getString() );
+        assertEquals( "ABC", atav3.getUpValue().getString() );
         assertTrue( Arrays.equals( StringTools.getBytesUtf8( "ABC" ),atav3.getNormValue().getBytes() ) );
 
         // antlr parser: 
@@ -3415,7 +3415,7 @@
         assertEquals( " cn = \\41\\42\\43 ", dn4.getRdn().getUpName() );
         AttributeTypeAndValue atav4 = dn4.getRdn().getAtav();
         assertEquals( "cn", atav4.getUpType() );
-        assertEquals( "\\41\\42\\43", atav4.getUpValue().getString() );
+        assertEquals( "ABC", atav4.getUpValue().getString() );
         assertEquals( "ABC", atav4.getNormValue().getString() );
 
         // antlr parser: quotestring with trailing spaces
@@ -3423,7 +3423,7 @@
         assertEquals( " cn = \"ABC\" ", dn5.getRdn().getUpName() );
         AttributeTypeAndValue atav5 = dn5.getRdn().getAtav();
         assertEquals( "cn", atav5.getUpType() );
-        assertEquals( "\"ABC\"", atav5.getUpValue().getString() );
+        assertEquals( "ABC", atav5.getUpValue().getString() );
         assertEquals( "ABC", atav5.getNormValue().getString() );
 
         // fast parser: string value with trailing spaces 
@@ -3613,8 +3613,7 @@
         assertEquals( "ou", atav.getUpType() );
         assertEquals( "Ex+mple", atav.getUpValue().get() );
         
-        // Wrong !!! TODO : fix me
-        assertEquals( "ou  =  Ex\\+mple", atav.getUpName() );
+        assertEquals( "  ou  =  Ex\\+mple ", atav.getUpName() );
     }