Author: akarasulu Date: Tue Dec 28 13:28:01 2004 New Revision: 123561 URL: http://svn.apache.org/viewcvs?view=rev&rev=123561 Log: Changes ...
o found bug where schema DESC feilds with quotes were causing the parser to bomb: we fixed this using some weird code because we could not get replaceAll on string working for some reason o add test case to test changes o cleaned up the velocity template a bit Modified: incubator/directory/eve/trunk/plugin/src/antlr/openldap.g incubator/directory/eve/trunk/plugin/src/java/org/apache/eve/tools/schema/AttributeTypes.template incubator/directory/eve/trunk/plugin/src/test/org/apache/eve/tools/schema/OpenLdapSchemaParserTest.java Modified: incubator/directory/eve/trunk/plugin/src/antlr/openldap.g Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/plugin/src/antlr/openldap.g?view=diff&rev=123561&p1=incubator/directory/eve/trunk/plugin/src/antlr/openldap.g&r1=123560&p2=incubator/directory/eve/trunk/plugin/src/antlr/openldap.g&r2=123561 ============================================================================== --- incubator/directory/eve/trunk/plugin/src/antlr/openldap.g (original) +++ incubator/directory/eve/trunk/plugin/src/antlr/openldap.g Tue Dec 28 13:28:01 2004 @@ -290,7 +290,30 @@ } : d:DESC { - objectClass.setDescription( d.getText().split( "'" )[1] ); + String desc = d.getText().split( "'" )[1]; + String[] quoted = desc.split( "\"" ); + + if ( quoted.length == 1 ) + { + objectClass.setDescription( desc ); + } + else + { + StringBuffer buf = new StringBuffer(); + for ( int ii = 0; ii < quoted.length; ii++ ) + { + if ( ii < quoted.length - 1 ) + { + buf.append( quoted[ii] ).append( "\\" ).append( "\"" ); + } + else + { + buf.append( quoted[ii] ); + } + } + + objectClass.setDescription( buf.toString() ); + } } ; @@ -366,7 +389,30 @@ } : d:DESC { - type.setDescription( d.getText().split( "'" )[1] ); + String desc = d.getText().split( "'" )[1]; + String[] quoted = desc.split( "\"" ); + + if ( quoted.length == 1 ) + { + type.setDescription( desc ); + } + else + { + StringBuffer buf = new StringBuffer(); + for ( int ii = 0; ii < quoted.length; ii++ ) + { + if ( ii < quoted.length - 1 ) + { + buf.append( quoted[ii] ).append( "\\" ).append( "\"" ); + } + else + { + buf.append( quoted[ii] ); + } + } + + type.setDescription( buf.toString() ); + } } ; Modified: incubator/directory/eve/trunk/plugin/src/java/org/apache/eve/tools/schema/AttributeTypes.template Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/plugin/src/java/org/apache/eve/tools/schema/AttributeTypes.template?view=diff&rev=123561&p1=incubator/directory/eve/trunk/plugin/src/java/org/apache/eve/tools/schema/AttributeTypes.template&r1=123560&p2=incubator/directory/eve/trunk/plugin/src/java/org/apache/eve/tools/schema/AttributeTypes.template&r2=123561 ============================================================================== --- incubator/directory/eve/trunk/plugin/src/java/org/apache/eve/tools/schema/AttributeTypes.template (original) +++ incubator/directory/eve/trunk/plugin/src/java/org/apache/eve/tools/schema/AttributeTypes.template Tue Dec 28 13:28:01 2004 @@ -65,7 +65,8 @@ // -------------------------------------------------------------------- attributeType = newAttributeType( "$attrType.getOid()", registries ); -#if ( $attrType.getDescription() ) attributeType.setDescription( "$attrType.getDescription()" );#end +#if ( $attrType.getDescription() ) attributeType.setDescription( "$attrType.getDescription()" ); +#end attributeType.setCanUserModify( ! $attrType.isNoUserModification() ); attributeType.setSingleValue( $attrType.isSingleValue() ); attributeType.setCollective( $attrType.isCollective() ); @@ -73,7 +74,8 @@ attributeType.setLength( $attrType.getLength() ); attributeType.setUsage( UsageEnum.getUsage( "$attrType.getUsage().getName()" ) ); #if ( $attrType.getSuperior() ) attributeType.setSuperiorId( "$attrType.getSuperior()" ); #end -#if ( $attrType.getEquality() ) attributeType.setEqualityId( "$attrType.getEquality()" );#end +#if ( $attrType.getEquality() ) attributeType.setEqualityId( "$attrType.getEquality()" ); +#end #if ( $attrType.getSubstr() ) attributeType.setSubstrId( "$attrType.getSubstr()" );#end #if ( $attrType.getOrdering() ) attributeType.setOrderingId( "$attrType.getOrdering()" );#end #if ( $attrType.getSyntax() ) attributeType.setSyntaxId( "$attrType.getSyntax()" );#end Modified: incubator/directory/eve/trunk/plugin/src/test/org/apache/eve/tools/schema/OpenLdapSchemaParserTest.java Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/plugin/src/test/org/apache/eve/tools/schema/OpenLdapSchemaParserTest.java?view=diff&rev=123561&p1=incubator/directory/eve/trunk/plugin/src/test/org/apache/eve/tools/schema/OpenLdapSchemaParserTest.java&r1=123560&p2=incubator/directory/eve/trunk/plugin/src/test/org/apache/eve/tools/schema/OpenLdapSchemaParserTest.java&r2=123561 ============================================================================== --- incubator/directory/eve/trunk/plugin/src/test/org/apache/eve/tools/schema/OpenLdapSchemaParserTest.java (original) +++ incubator/directory/eve/trunk/plugin/src/test/org/apache/eve/tools/schema/OpenLdapSchemaParserTest.java Tue Dec 28 13:28:01 2004 @@ -89,6 +89,26 @@ } + public void testAttributeTypeParseWithDescQuotes() throws Exception + { + String attributeTypeData = "# adding a comment \n" + + "attributetype ( 2.5.4.2 NAME 'knowledgeInformation'\n" + + " DESC 'RFC2256: \"knowledge\" information'\n" + + " EQUALITY caseIgnoreMatch\n" + + " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )"; + parser.parse( attributeTypeData ); + Map attributeTypes = parser.getAttributeTypes(); + AttributeTypeLiteral type = ( AttributeTypeLiteral ) attributeTypes.get( "2.5.4.2" ); + + assertNotNull( type ); + assertEquals( "2.5.4.2", type.getOid() ); + assertEquals( "knowledgeInformation", type.getNames()[0] ); + assertEquals( "RFC2256: \\\"knowledge\\\" information", type.getDescription() ); + assertEquals( "1.3.6.1.4.1.1466.115.121.1.15", type.getSyntax() ); + assertEquals( 32768, type.getLength() ); + } + + public void testComplexAttributeTypeParse() throws Exception { String attributeTypeData = "# adding a comment \n" +
