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 2009/08/26 17:49:44 UTC

svn commit: r808063 - in /directory/shared/branches/shared-schema/ldap/src: main/java/org/apache/directory/shared/ldap/schema/parsers/OpenLdapSchemaParser.java test/java/org/apache/directory/shared/ldap/schema/parser/OpenLdapSchemaParserTest.java

Author: elecharny
Date: Wed Aug 26 15:49:44 2009
New Revision: 808063

URL: http://svn.apache.org/viewvc?rev=808063&view=rev
Log:
Fixed the OpenLdapSchema parser and tests

Modified:
    directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/parsers/OpenLdapSchemaParser.java
    directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/parser/OpenLdapSchemaParserTest.java

Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/parsers/OpenLdapSchemaParser.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/parsers/OpenLdapSchemaParser.java?rev=808063&r1=808062&r2=808063&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/parsers/OpenLdapSchemaParser.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/parsers/OpenLdapSchemaParser.java Wed Aug 26 15:49:44 2009
@@ -32,6 +32,7 @@
 import java.util.Map;
 
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.ObjectClass;
 import org.apache.directory.shared.ldap.schema.SchemaObject;
 import org.apache.directory.shared.ldap.schema.syntaxChecker.OpenLdapObjectIdentifierMacro;
 import org.apache.directory.shared.ldap.util.ExceptionUtils;
@@ -55,8 +56,8 @@
     /** The list of attribute type, initialized by splitParsedSchemaDescriptions() */
     private List<AttributeType> attributeTypes;
 
-    /** The list of object class literals, initialized by splitParsedSchemaDescriptions()*/
-    private List<ObjectClassLiteral> objectClassLiterals;
+    /** The list of object classes, initialized by splitParsedSchemaDescriptions()*/
+    private List<ObjectClass> objectClasses;
 
     /** The map of object identifier macros, initialized by splitParsedSchemaDescriptions()*/
     private Map<String, OpenLdapObjectIdentifierMacro> objectIdentifierMacros;
@@ -101,9 +102,9 @@
      * 
      * @return the object class types
      */
-    public List<ObjectClassLiteral> getObjectClassTypes()
+    public List<ObjectClass> getObjectClassTypes()
     {
-        return objectClassLiterals;
+        return objectClasses;
     }
 
 
@@ -126,7 +127,7 @@
      */
     private void afterParse() throws ParseException
     {
-        objectClassLiterals = new ArrayList<ObjectClassLiteral>();
+        objectClasses = new ArrayList<ObjectClass>();
         attributeTypes = new ArrayList<AttributeType>();
         objectIdentifierMacros = new HashMap<String, OpenLdapObjectIdentifierMacro>();
 
@@ -144,19 +145,11 @@
 
                 attributeTypes.add( attributeType );
             }
-            else if ( obj instanceof ObjectClassDescription )
+            else if ( obj instanceof ObjectClass )
             {
-                ObjectClassDescription ocd = ( ObjectClassDescription ) obj;
-                ObjectClassLiteral literal = new ObjectClassLiteral( ocd.getNumericOid() );
-                literal.setNames( ocd.getNames().toArray( new String[ocd.getNames().size()] ) );
-                literal.setDescription( ocd.getDescription() );
-                literal.setSuperiors( ocd.getSuperiorObjectClasses().toArray(
-                    new String[ocd.getSuperiorObjectClasses().size()] ) );
-                literal.setMay( ocd.getMayAttributeTypes().toArray( new String[ocd.getMayAttributeTypes().size()] ) );
-                literal.setMust( ocd.getMustAttributeTypes().toArray( new String[ocd.getMustAttributeTypes().size()] ) );
-                literal.setClassType( ocd.getKind() );
-                literal.setObsolete( ocd.isObsolete() );
-                objectClassLiterals.add( literal );
+                ObjectClass objectClass = ( ObjectClass ) obj;
+
+                objectClasses.add( objectClass );
             }
         }
 
@@ -169,9 +162,9 @@
             }
 
             // apply object identifier macros to object classes
-            for ( ObjectClassLiteral ocl : objectClassLiterals )
+            for ( ObjectClass objectClass : objectClasses )
             {
-                ocl.setOid( getResolveOid( ocl.getOid() ) );
+                objectClass.changeOid( getResolveOid( objectClass.getOid() ) );
             }
             
             // apply object identifier macros to attribute types
@@ -263,7 +256,7 @@
         {
             for ( Object obj : schemaDescriptions )
             {
-                if ( obj instanceof AbstractSchemaDescription )
+                if ( obj instanceof SchemaObject )
                 {
                     return ( SchemaObject ) obj;
                 }

Modified: directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/parser/OpenLdapSchemaParserTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/parser/OpenLdapSchemaParserTest.java?rev=808063&r1=808062&r2=808063&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/parser/OpenLdapSchemaParserTest.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/test/java/org/apache/directory/shared/ldap/schema/parser/OpenLdapSchemaParserTest.java Wed Aug 26 15:49:44 2009
@@ -21,14 +21,13 @@
 
 
 import java.io.InputStream;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.ObjectClass;
 import org.apache.directory.shared.ldap.schema.ObjectClassTypeEnum;
-import org.apache.directory.shared.ldap.schema.parsers.ObjectClassLiteral;
 import org.apache.directory.shared.ldap.schema.parsers.OpenLdapSchemaParser;
 import org.apache.directory.shared.ldap.schema.syntaxChecker.OpenLdapObjectIdentifierMacro;
 import org.junit.After;
@@ -160,13 +159,13 @@
     }
 
 
-    private Map<String, ObjectClassLiteral> mapObjectClasses( List<ObjectClassLiteral> objectClassList )
+    private Map<String, ObjectClass> mapObjectClasses( List<ObjectClass> objectClassList )
     {
-        Map<String, ObjectClassLiteral> m = new HashMap<String, ObjectClassLiteral>();
+        Map<String, ObjectClass> m = new HashMap<String, ObjectClass>();
 
-        for ( ObjectClassLiteral objectClassLiteral : objectClassList )
+        for ( ObjectClass objectClass : objectClassList )
         {
-            m.put( objectClassLiteral.getOid(), objectClassLiteral );
+            m.put( objectClass.getOid(), objectClass );
         }
 
         return m;
@@ -180,21 +179,21 @@
             + "        SUP top STRUCTURAL\n" + "        MUST ( sn $ cn )\n"
             + "        MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )";
         parser.parse( objectClassData );
-        List<ObjectClassLiteral> objectClassesList = parser.getObjectClassTypes();
-        Map<String, ObjectClassLiteral> objectClasses = mapObjectClasses( objectClassesList );
-        ObjectClassLiteral objectClass = objectClasses.get( "2.5.6.6" );
+        List<ObjectClass> objectClassesList = parser.getObjectClassTypes();
+        Map<String, ObjectClass> objectClasses = mapObjectClasses( objectClassesList );
+        ObjectClass objectClass = objectClasses.get( "2.5.6.6" );
 
         assertNotNull( objectClass );
         assertEquals( "2.5.6.6", objectClass.getOid() );
-        assertEquals( "person", objectClass.getNames()[0] );
+        assertEquals( "person", objectClass.getName() );
         assertEquals( "RFC2256: a person", objectClass.getDescription() );
-        assertEquals( ObjectClassTypeEnum.STRUCTURAL, objectClass.getClassType() );
-        assertEquals( "sn", objectClass.getMust()[0] );
-        assertEquals( "cn", objectClass.getMust()[1] );
-        assertEquals( "userPassword", objectClass.getMay()[0] );
-        assertEquals( "telephoneNumber", objectClass.getMay()[1] );
-        assertEquals( "seeAlso", objectClass.getMay()[2] );
-        assertEquals( "description", objectClass.getMay()[3] );
+        assertEquals( ObjectClassTypeEnum.STRUCTURAL, objectClass.getType() );
+        assertEquals( "sn", objectClass.getMustAttributeTypeOids().get(0) );
+        assertEquals( "cn", objectClass.getMustAttributeTypeOids().get(1) );
+        assertEquals( "userPassword", objectClass.getMayAttributeTypeOids().get(0) );
+        assertEquals( "telephoneNumber", objectClass.getMayAttributeTypeOids().get(1) );
+        assertEquals( "seeAlso", objectClass.getMayAttributeTypeOids().get(2) );
+        assertEquals( "description", objectClass.getMayAttributeTypeOids().get(3) );
     }
 
 
@@ -211,36 +210,36 @@
             + "\t\tpagerTelephoneNumber $ organizationalStatus $\n"
             + "\t\tmailPreferenceOption $ personalSignature )\n" + "\t)";
         parser.parse( objectClassData );
-        List<ObjectClassLiteral> objectClassesList = parser.getObjectClassTypes();
-        Map<String, ObjectClassLiteral> objectClasses = mapObjectClasses( objectClassesList );
-        ObjectClassLiteral objectClass = objectClasses.get( "0.9.2342.19200300.100.4.4" );
+        List<ObjectClass> objectClassesList = parser.getObjectClassTypes();
+        Map<String, ObjectClass> objectClasses = mapObjectClasses( objectClassesList );
+        ObjectClass objectClass = objectClasses.get( "0.9.2342.19200300.100.4.4" );
 
         assertNotNull( objectClass );
         assertEquals( "0.9.2342.19200300.100.4.4", objectClass.getOid() );
-        assertEquals( "pilotPerson", objectClass.getNames()[0] );
-        assertEquals( "newPilotPerson", objectClass.getNames()[1] );
-        assertEquals( ObjectClassTypeEnum.STRUCTURAL, objectClass.getClassType() );
-        assertEquals( "person", objectClass.getSuperiors()[0] );
-
-        assertEquals( "userid", objectClass.getMay()[0] );
-        assertEquals( "textEncodedORAddress", objectClass.getMay()[1] );
-        assertEquals( "rfc822Mailbox", objectClass.getMay()[2] );
-        assertEquals( "favouriteDrink", objectClass.getMay()[3] );
-        assertEquals( "roomNumber", objectClass.getMay()[4] );
-        assertEquals( "userClass", objectClass.getMay()[5] );
-        assertEquals( "homeTelephoneNumber", objectClass.getMay()[6] );
-        assertEquals( "homePostalAddress", objectClass.getMay()[7] );
-        assertEquals( "secretary", objectClass.getMay()[8] );
-        assertEquals( "personalTitle", objectClass.getMay()[9] );
-        assertEquals( "preferredDeliveryMethod", objectClass.getMay()[10] );
-        assertEquals( "businessCategory", objectClass.getMay()[11] );
-        assertEquals( "janetMailbox", objectClass.getMay()[12] );
-        assertEquals( "otherMailbox", objectClass.getMay()[13] );
-        assertEquals( "mobileTelephoneNumber", objectClass.getMay()[14] );
-        assertEquals( "pagerTelephoneNumber", objectClass.getMay()[15] );
-        assertEquals( "organizationalStatus", objectClass.getMay()[16] );
-        assertEquals( "mailPreferenceOption", objectClass.getMay()[17] );
-        assertEquals( "personalSignature", objectClass.getMay()[18] );
+        assertEquals( "pilotPerson", objectClass.getName() );
+        assertEquals( "newPilotPerson", objectClass.getNames().get(1) );
+        assertEquals( ObjectClassTypeEnum.STRUCTURAL, objectClass.getType() );
+        assertEquals( "person", objectClass.getSuperiorOids().get(0) );
+
+        assertEquals( "userid", objectClass.getMayAttributeTypeOids().get(0) );
+        assertEquals( "textEncodedORAddress", objectClass.getMayAttributeTypeOids().get(1) );
+        assertEquals( "rfc822Mailbox", objectClass.getMayAttributeTypeOids().get(2) );
+        assertEquals( "favouriteDrink", objectClass.getMayAttributeTypeOids().get(3) );
+        assertEquals( "roomNumber", objectClass.getMayAttributeTypeOids().get(4) );
+        assertEquals( "userClass", objectClass.getMayAttributeTypeOids().get(5) );
+        assertEquals( "homeTelephoneNumber", objectClass.getMayAttributeTypeOids().get(6) );
+        assertEquals( "homePostalAddress", objectClass.getMayAttributeTypeOids().get(7) );
+        assertEquals( "secretary", objectClass.getMayAttributeTypeOids().get(8) );
+        assertEquals( "personalTitle", objectClass.getMayAttributeTypeOids().get(9) );
+        assertEquals( "preferredDeliveryMethod", objectClass.getMayAttributeTypeOids().get(10) );
+        assertEquals( "businessCategory", objectClass.getMayAttributeTypeOids().get(11) );
+        assertEquals( "janetMailbox", objectClass.getMayAttributeTypeOids().get(12) );
+        assertEquals( "otherMailbox", objectClass.getMayAttributeTypeOids().get(13) );
+        assertEquals( "mobileTelephoneNumber", objectClass.getMayAttributeTypeOids().get(14) );
+        assertEquals( "pagerTelephoneNumber", objectClass.getMayAttributeTypeOids().get(15) );
+        assertEquals( "organizationalStatus", objectClass.getMayAttributeTypeOids().get(16) );
+        assertEquals( "mailPreferenceOption", objectClass.getMayAttributeTypeOids().get(17) );
+        assertEquals( "personalSignature", objectClass.getMayAttributeTypeOids().get(18) );
     }
 
 
@@ -251,7 +250,7 @@
         parser.parse( input );
 
         List<AttributeType> attributeTypes = parser.getAttributeTypes();
-        List<ObjectClassLiteral> objectClassTypes = parser.getObjectClassTypes();
+        List<ObjectClass> objectClassTypes = parser.getObjectClassTypes();
         Map<String, OpenLdapObjectIdentifierMacro> objectIdentifierMacros = parser.getObjectIdentifierMacros();
 
         assertEquals( 52, attributeTypes.size() );
@@ -267,7 +266,7 @@
         parser.parse( input );
 
         List<AttributeType> attributeTypes = parser.getAttributeTypes();
-        List<ObjectClassLiteral> objectClassTypes = parser.getObjectClassTypes();
+        List<ObjectClass> objectClassTypes = parser.getObjectClassTypes();
         Map<String, OpenLdapObjectIdentifierMacro> objectIdentifierMacros = parser.getObjectIdentifierMacros();
 
         assertEquals( 9, attributeTypes.size() );
@@ -283,7 +282,7 @@
         parser.parse( input );
 
         List<AttributeType> attributeTypes = parser.getAttributeTypes();
-        List<ObjectClassLiteral> objectClassTypes = parser.getObjectClassTypes();
+        List<ObjectClass> objectClassTypes = parser.getObjectClassTypes();
         Map<String, OpenLdapObjectIdentifierMacro> objectIdentifierMacros = parser.getObjectIdentifierMacros();
 
         assertEquals( 13, attributeTypes.size() );
@@ -303,7 +302,7 @@
         parser.parse( input );
 
         List<AttributeType> attributeTypes = parser.getAttributeTypes();
-        List<ObjectClassLiteral> objectClassTypes = parser.getObjectClassTypes();
+        List<ObjectClass> objectClassTypes = parser.getObjectClassTypes();
         Map<String, OpenLdapObjectIdentifierMacro> objectIdentifierMacros = parser.getObjectIdentifierMacros();
 
         assertEquals( 2, attributeTypes.size() );
@@ -319,16 +318,16 @@
         }
 
         // check that OIDs in attribute types and object classes are resolved
-        for ( ObjectClassLiteral objectClassLiteral : objectClassTypes )
+        for ( ObjectClass objectClass : objectClassTypes )
         {
-            List<String> asList = Arrays.asList( objectClassLiteral.getNames() );
+            List<String> asList = objectClass.getNames();
             if ( asList.contains( "groupOfURLs" ) )
             {
-                assertEquals( "2.16.840.1.113730.3.2.33", objectClassLiteral.getOid() );
+                assertEquals( "2.16.840.1.113730.3.2.33", objectClass.getOid() );
             }
             else if ( asList.contains( "dgIdentityAux" ) )
             {
-                assertEquals( "1.3.6.1.4.1.4203.666.11.8.2.1", objectClassLiteral.getOid() );
+                assertEquals( "1.3.6.1.4.1.4203.666.11.8.2.1", objectClass.getOid() );
             }
             else
             {