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 2005/12/09 08:21:46 UTC
svn commit: r355399 - in /directory/shared/ldap: branches/DN-refactoring/
branches/DN-refactoring/apache-provider/
branches/DN-refactoring/apache-provider/src/test/org/apache/ldap/common/berlib/asn1/decoder/compare/
branches/DN-refactoring/apache2-prov...
Author: elecharny
Date: Thu Dec 8 23:21:16 2005
New Revision: 355399
URL: http://svn.apache.org/viewcvs?rev=355399&view=rev
Log:
Creating a branch to work on a refactored DN
Added:
directory/shared/ldap/branches/DN-refactoring/
- copied from r354930, directory/shared/ldap/trunk/
directory/shared/ldap/branches/DN-refactoring/apache-provider/
- copied from r355143, directory/shared/ldap/trunk/apache-provider/
directory/shared/ldap/branches/DN-refactoring/apache-provider/src/test/org/apache/ldap/common/berlib/asn1/decoder/compare/CompareRequestRuleTest.java
- copied unchanged from r355237, directory/shared/ldap/trunk/apache-provider/src/test/org/apache/ldap/common/berlib/asn1/decoder/compare/CompareRequestRuleTest.java
directory/shared/ldap/branches/DN-refactoring/apache2-provider/
- copied from r355143, directory/shared/ldap/trunk/apache2-provider/
directory/shared/ldap/branches/DN-refactoring/common/
- copied from r355144, directory/shared/ldap/trunk/common/
directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/message/CompareRequest.java
- copied unchanged from r355235, directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/message/CompareRequest.java
directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/message/CompareRequestImpl.java
- copied unchanged from r355235, directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/message/CompareRequestImpl.java
directory/shared/ldap/branches/DN-refactoring/common/src/test/org/apache/ldap/common/message/CompareRequestImplTest.java
- copied unchanged from r355236, directory/shared/ldap/trunk/common/src/test/org/apache/ldap/common/message/CompareRequestImplTest.java
directory/shared/ldap/branches/DN-refactoring/snacc-provider/
- copied from r355144, directory/shared/ldap/trunk/snacc-provider/
directory/shared/ldap/branches/DN-refactoring/snacc-provider/src/main/java/org/apache/ldap/common/berlib/snacc/CompareRequestTransform.java
- copied unchanged from r355238, directory/shared/ldap/trunk/snacc-provider/src/main/java/org/apache/ldap/common/berlib/snacc/CompareRequestTransform.java
Modified:
directory/shared/ldap/branches/DN-refactoring/common/src/antlr/dnparser.g
directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapName.java
directory/shared/ldap/branches/DN-refactoring/common/src/test/org/apache/ldap/common/name/LdapNameTest.java
directory/shared/ldap/trunk/common/src/antlr/dnparser.g
directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/name/LdapName.java
directory/shared/ldap/trunk/common/src/test/org/apache/ldap/common/name/LdapNameTest.java
Modified: directory/shared/ldap/branches/DN-refactoring/common/src/antlr/dnparser.g
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/DN-refactoring/common/src/antlr/dnparser.g?rev=355399&r1=355144&r2=355399&view=diff
==============================================================================
--- directory/shared/ldap/branches/DN-refactoring/common/src/antlr/dnparser.g (original)
+++ directory/shared/ldap/branches/DN-refactoring/common/src/antlr/dnparser.g Thu Dec 8 23:21:16 2005
@@ -82,32 +82,39 @@
;
-attributeTypeAndValue returns [String l_tav]
+attributeTypeAndValue returns [String tav]
{
- l_tav = null ;
- StringBuffer l_buf = new StringBuffer() ;
- String l_lhs = null ;
+ tav = null ;
+ StringBuffer buf = new StringBuffer() ;
+ String lhs = null ;
}
- : ( l_attr:ATTRIBUTE
+ : ( attr:ATTRIBUTE
{
- l_lhs = l_attr.getText() ;
- m_valueParser.setOid(false) ;
+ lhs = attr.getText() ;
+ Object oidName = DnOidContainer.getOidByName( lhs );
+
+ if ( oidName != null )
+ {
+ lhs = (java.lang.String) oidName;
+ }
+
+ m_valueParser.setOid(false) ;
}
- | l_oiddn:OIDDN
+ | oiddn:OIDDN
{
- l_lhs = l_oiddn.getText().substring( "OID.".length() ) ;
+ lhs = oiddn.getText().substring( "OID.".length() ) ;
m_valueParser.setOid(true) ;
}
- | l_oid:OID
+ | oid:OID
{
- l_lhs = l_oid.getText() ;
+ lhs = oid.getText() ;
m_valueParser.setOid(true) ;
}
) EQUAL
{
- m_valueParser.setLhs(l_lhs) ;
- l_buf.append(l_lhs) ;
- l_buf.append('=').append(m_valueParser.value()) ;
- l_tav = l_buf.toString() ;
+ m_valueParser.setLhs(lhs) ;
+ buf.append(lhs) ;
+ buf.append('=').append(m_valueParser.value()) ;
+ tav = buf.toString() ;
}
;
Modified: directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapName.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapName.java?rev=355399&r1=355144&r2=355399&view=diff
==============================================================================
--- directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapName.java (original)
+++ directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/name/LdapName.java Thu Dec 8 23:21:16 2005
@@ -27,6 +27,7 @@
package org.apache.ldap.common.name ;
+import org.apache.asn1.codec.util.StringUtils;
import org.apache.ldap.common.util.NamespaceTools;
import javax.naming.InvalidNameException;
@@ -57,7 +58,20 @@
private String m_name ;
/** Dirty bit used to determine whether the cached m_name is up to date */
private boolean m_isClean = false ;
-
+
+ public static LdapName EMPTY_LDAP_NAME = null;
+
+ static
+ {
+ try
+ {
+ EMPTY_LDAP_NAME = new LdapName( "" );
+ }
+ catch ( NamingException ne )
+ {
+ // Nothing to do...
+ }
+ }
// ------------------------------------------------------------------------
// Constructors
@@ -905,6 +919,68 @@
}
return a_dn.get( a_dn.size() - 1 ) ;
+ }
+
+ private static String getRdn( String nameComponent, int start )
+ {
+ return "";
+ }
+
+ public static LdapName toOidName( LdapName dn, Map oids ) throws InvalidNameException
+ {
+ if ( ( dn == null ) || ( dn.size() == 0 ) )
+ {
+ return dn;
+ }
+
+ LdapName newDn = new LdapName();
+
+ Enumeration rdns = dn.getAll();
+
+ while ( rdns.hasMoreElements() )
+ {
+ String rdn = (String)rdns.nextElement();
+
+ if ( rdn.indexOf( '+' ) != -1 )
+ {
+
+ }
+ else
+ {
+ int posEqual = rdn.indexOf( '=' );
+
+ if ( posEqual > 0 )
+ {
+ String name = StringUtils.trim( rdn.substring( 0, posEqual ) );
+
+ if ( StringUtils.isEmpty( StringUtils.lowerCase( name ) ) == false )
+ {
+ String oid = (String)oids.get( name );
+
+ if ( oid != null )
+ {
+ String newRdn = oid + rdn.substring( posEqual );
+ newDn.add( newRdn );
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ return null;
+ }
+
+ }
+ }
+
+ return newDn;
}
}
Modified: directory/shared/ldap/branches/DN-refactoring/common/src/test/org/apache/ldap/common/name/LdapNameTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/DN-refactoring/common/src/test/org/apache/ldap/common/name/LdapNameTest.java?rev=355399&r1=355144&r2=355399&view=diff
==============================================================================
--- directory/shared/ldap/branches/DN-refactoring/common/src/test/org/apache/ldap/common/name/LdapNameTest.java (original)
+++ directory/shared/ldap/branches/DN-refactoring/common/src/test/org/apache/ldap/common/name/LdapNameTest.java Thu Dec 8 23:21:16 2005
@@ -21,6 +21,8 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
import javax.naming.Name;
@@ -1067,4 +1069,42 @@
assertEquals( cn, name.toString() );
}
+
+ /**
+ * Class to test for toOid( Name, Map)
+ */
+ public void testLdapNameToOid() throws Exception
+ {
+ ArrayList list = new ArrayList() ;
+ list.add( "ou=People" ) ;
+ list.add( "dc=example" ) ;
+ list.add( "dc=com" ) ;
+ LdapName name = new LdapName( list.iterator() ) ;
+
+ Map oids = new HashMap();
+
+ oids.put( "dc", "0.9.2342.19200300.100.1.25" );
+ oids.put( "ou", "2.5.4.11" );
+
+ LdapName result = LdapName.toOidName( name, oids );
+ assertTrue( result.toString().equals(
+ "2.5.4.11=People,0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com" ) ) ;
+ }
+
+ /**
+ * Class to test for toOid( Name, Map)
+ */
+ public void testLdapNameToOidEmpty() throws Exception
+ {
+ LdapName name = new LdapName() ;
+
+ Map oids = new HashMap();
+
+ oids.put( "dc", "0.9.2342.19200300.100.1.25" );
+ oids.put( "ou", "2.5.4.11" );
+
+ LdapName result = LdapName.toOidName( name, oids );
+ assertTrue( result.toString().equals( "" ) ) ;
+ }
+
}
Modified: directory/shared/ldap/trunk/common/src/antlr/dnparser.g
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/common/src/antlr/dnparser.g?rev=355399&r1=355398&r2=355399&view=diff
==============================================================================
--- directory/shared/ldap/trunk/common/src/antlr/dnparser.g (original)
+++ directory/shared/ldap/trunk/common/src/antlr/dnparser.g Thu Dec 8 23:21:16 2005
@@ -82,32 +82,39 @@
;
-attributeTypeAndValue returns [String l_tav]
+attributeTypeAndValue returns [String tav]
{
- l_tav = null ;
- StringBuffer l_buf = new StringBuffer() ;
- String l_lhs = null ;
+ tav = null ;
+ StringBuffer buf = new StringBuffer() ;
+ String lhs = null ;
}
- : ( l_attr:ATTRIBUTE
+ : ( attr:ATTRIBUTE
{
- l_lhs = l_attr.getText() ;
- m_valueParser.setOid(false) ;
+ lhs = attr.getText() ;
+ Object oidName = DnOidContainer.getOidByName( lhs );
+
+ if ( oidName != null )
+ {
+ lhs = (java.lang.String) oidName;
+ }
+
+ m_valueParser.setOid(false) ;
}
- | l_oiddn:OIDDN
+ | oiddn:OIDDN
{
- l_lhs = l_oiddn.getText().substring( "OID.".length() ) ;
+ lhs = oiddn.getText().substring( "OID.".length() ) ;
m_valueParser.setOid(true) ;
}
- | l_oid:OID
+ | oid:OID
{
- l_lhs = l_oid.getText() ;
+ lhs = oid.getText() ;
m_valueParser.setOid(true) ;
}
) EQUAL
{
- m_valueParser.setLhs(l_lhs) ;
- l_buf.append(l_lhs) ;
- l_buf.append('=').append(m_valueParser.value()) ;
- l_tav = l_buf.toString() ;
+ m_valueParser.setLhs(lhs) ;
+ buf.append(lhs) ;
+ buf.append('=').append(m_valueParser.value()) ;
+ tav = buf.toString() ;
}
;
Modified: directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/name/LdapName.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/name/LdapName.java?rev=355399&r1=355398&r2=355399&view=diff
==============================================================================
--- directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/name/LdapName.java (original)
+++ directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/name/LdapName.java Thu Dec 8 23:21:16 2005
@@ -27,6 +27,7 @@
package org.apache.ldap.common.name ;
+import org.apache.asn1.codec.util.StringUtils;
import org.apache.ldap.common.util.NamespaceTools;
import javax.naming.InvalidNameException;
@@ -57,7 +58,20 @@
private String m_name ;
/** Dirty bit used to determine whether the cached m_name is up to date */
private boolean m_isClean = false ;
-
+
+ public static LdapName EMPTY_LDAP_NAME = null;
+
+ static
+ {
+ try
+ {
+ EMPTY_LDAP_NAME = new LdapName( "" );
+ }
+ catch ( NamingException ne )
+ {
+ // Nothing to do...
+ }
+ }
// ------------------------------------------------------------------------
// Constructors
@@ -905,6 +919,68 @@
}
return a_dn.get( a_dn.size() - 1 ) ;
+ }
+
+ private static String getRdn( String nameComponent, int start )
+ {
+ return "";
+ }
+
+ public static LdapName toOidName( LdapName dn, Map oids ) throws InvalidNameException
+ {
+ if ( ( dn == null ) || ( dn.size() == 0 ) )
+ {
+ return dn;
+ }
+
+ LdapName newDn = new LdapName();
+
+ Enumeration rdns = dn.getAll();
+
+ while ( rdns.hasMoreElements() )
+ {
+ String rdn = (String)rdns.nextElement();
+
+ if ( rdn.indexOf( '+' ) != -1 )
+ {
+
+ }
+ else
+ {
+ int posEqual = rdn.indexOf( '=' );
+
+ if ( posEqual > 0 )
+ {
+ String name = StringUtils.trim( rdn.substring( 0, posEqual ) );
+
+ if ( StringUtils.isEmpty( StringUtils.lowerCase( name ) ) == false )
+ {
+ String oid = (String)oids.get( name );
+
+ if ( oid != null )
+ {
+ String newRdn = oid + rdn.substring( posEqual );
+ newDn.add( newRdn );
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ return null;
+ }
+
+ }
+ }
+
+ return newDn;
}
}
Modified: directory/shared/ldap/trunk/common/src/test/org/apache/ldap/common/name/LdapNameTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/common/src/test/org/apache/ldap/common/name/LdapNameTest.java?rev=355399&r1=355398&r2=355399&view=diff
==============================================================================
--- directory/shared/ldap/trunk/common/src/test/org/apache/ldap/common/name/LdapNameTest.java (original)
+++ directory/shared/ldap/trunk/common/src/test/org/apache/ldap/common/name/LdapNameTest.java Thu Dec 8 23:21:16 2005
@@ -21,6 +21,8 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
import javax.naming.Name;
@@ -1067,4 +1069,42 @@
assertEquals( cn, name.toString() );
}
+
+ /**
+ * Class to test for toOid( Name, Map)
+ */
+ public void testLdapNameToOid() throws Exception
+ {
+ ArrayList list = new ArrayList() ;
+ list.add( "ou=People" ) ;
+ list.add( "dc=example" ) ;
+ list.add( "dc=com" ) ;
+ LdapName name = new LdapName( list.iterator() ) ;
+
+ Map oids = new HashMap();
+
+ oids.put( "dc", "0.9.2342.19200300.100.1.25" );
+ oids.put( "ou", "2.5.4.11" );
+
+ LdapName result = LdapName.toOidName( name, oids );
+ assertTrue( result.toString().equals(
+ "2.5.4.11=People,0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com" ) ) ;
+ }
+
+ /**
+ * Class to test for toOid( Name, Map)
+ */
+ public void testLdapNameToOidEmpty() throws Exception
+ {
+ LdapName name = new LdapName() ;
+
+ Map oids = new HashMap();
+
+ oids.put( "dc", "0.9.2342.19200300.100.1.25" );
+ oids.put( "ou", "2.5.4.11" );
+
+ LdapName result = LdapName.toOidName( name, oids );
+ assertTrue( result.toString().equals( "" ) ) ;
+ }
+
}