[jboss-svn-commits] JBL Code SVN: r15093 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/lang/dsl and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Sep 13 14:32:32 EDT 2007
Author: tirelli
Date: 2007-09-13 14:32:31 -0400 (Thu, 13 Sep 2007)
New Revision: 15093
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMappingFile.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DSLMappingFileTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultDSLMappingEntryTest.java
Log:
JBRULES-1190: fixing DSL parsing to allow escaped = in the key of a DSL mapping
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMappingFile.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMappingFile.java 2007-09-13 17:01:26 UTC (rev 15092)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMappingFile.java 2007-09-13 18:32:31 UTC (rev 15093)
@@ -38,7 +38,7 @@
// the following pattern will be used to parse dsl mapping entries in the DSL file.
// It is capable of parsing entries that follows the pattern:
// [<section>][<metadata>]?<key>=<value>
- private static final Pattern pattern = Pattern.compile( "((\\[[^\\[]*\\])\\s*(\\[([^\\[]*)\\])?)?\\s*([^=]*)=(.*)" );
+ private static final Pattern pattern = Pattern.compile( "((\\[[^\\[]*\\])\\s*(\\[([^\\[]*)\\])?)?\\s*((\\\\=|[^=])*)=(.*)" );
private static final String KEYWORD = "[keyword]";
private static final String CONDITION = "[condition]";
private static final String CONSEQUENCE = "[consequence]";
@@ -97,8 +97,8 @@
if ( mat.matches() ) {
final String sectionStr = mat.group( 2 );
final String metadataStr = mat.group( 4 );
- final String key = mat.group( 5 );
- final String value = mat.group( 6 );
+ final String key = mat.group( 5 ).replaceAll( "\\\\=", "=" );
+ final String value = mat.group( 7 );
DSLMappingEntry.Section section = DSLMappingEntry.ANY;
if ( KEYWORD.equals( sectionStr ) ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DSLMappingFileTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DSLMappingFileTest.java 2007-09-13 17:01:26 UTC (rev 15092)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DSLMappingFileTest.java 2007-09-13 18:32:31 UTC (rev 15093)
@@ -107,4 +107,37 @@
}
+ public void testParseFileWithEscaptedEquals() {
+ String file = "[when][]something:\\={value}=Attribute( something == \"{value}\" )";
+ try {
+ final Reader reader = new StringReader( file );
+ this.file = new DSLMappingFile();
+
+ final boolean parsingResult = this.file.parseAndLoad( reader );
+ reader.close();
+
+ assertTrue( this.file.getErrors().toString(),
+ parsingResult );
+ assertTrue( this.file.getErrors().isEmpty() );
+
+ assertEquals( 1,
+ this.file.getMapping().getEntries().size() );
+
+ DSLMappingEntry entry = (DSLMappingEntry) this.file.getMapping().getEntries().get( 0 );
+
+ assertEquals( DSLMappingEntry.CONDITION,
+ entry.getSection() );
+ assertEquals( DSLMappingEntry.EMPTY_METADATA,
+ entry.getMetaData() );
+ assertEquals( "something:={value}",
+ entry.getMappingKey() );
+ assertEquals( "Attribute( something == \"{value}\" )",
+ entry.getMappingValue() );
+
+ } catch ( final IOException e ) {
+ e.printStackTrace();
+ fail( "Should not raise exception " );
+ }
+
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultDSLMappingEntryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultDSLMappingEntryTest.java 2007-09-13 17:01:26 UTC (rev 15092)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultDSLMappingEntryTest.java 2007-09-13 18:32:31 UTC (rev 15093)
@@ -8,6 +8,10 @@
protected void setUp() throws Exception {
super.setUp();
+ setupEntry();
+ }
+
+ private void setupEntry() {
final String inputKey = "String is \"{value}\"";
final String inputValue = "SomeFact(value==\"{value}\")";
@@ -91,6 +95,7 @@
}
public void testExpandNoSpaces() {
+ this.setupEntry();
final String result = this.entry.getKeyPattern().matcher( "String is \"blah\"" ).replaceAll( this.entry.getValuePattern() );
assertEquals( "SomeFact(value==\"blah\")",
@@ -98,6 +103,7 @@
}
public void testExpandWithLeadingSpace() {
+ this.setupEntry();
final String result = this.entry.getKeyPattern().matcher( "String is \" blah\"" ).replaceAll( this.entry.getValuePattern() );
assertEquals( "SomeFact(value==\" blah\")",
@@ -105,30 +111,35 @@
}
public void testExpandWithMultipleLeadingSpaces() {
+ this.setupEntry();
final String result = this.entry.getKeyPattern().matcher( "String is \" blah\"" ).replaceAll( this.entry.getValuePattern() );
assertEquals( "SomeFact(value==\" blah\")",
result );
}
public void testExpandWithTrailingSpace() {
+ this.setupEntry();
final String result = this.entry.getKeyPattern().matcher( "String is \"blah \"" ).replaceAll( this.entry.getValuePattern() );
assertEquals( "SomeFact(value==\"blah \")",
result );
}
public void testExpandWithMultipleTrailingSpaces() {
+ this.setupEntry();
final String result = this.entry.getKeyPattern().matcher( "String is \"blah \"" ).replaceAll( this.entry.getValuePattern() );
assertEquals( "SomeFact(value==\"blah \")",
result );
}
public void testExpandWithInternalSpace() {
+ this.setupEntry();
final String result = this.entry.getKeyPattern().matcher( "String is \"bl ah\"" ).replaceAll( this.entry.getValuePattern() );
assertEquals( "SomeFact(value==\"bl ah\")",
result );
}
public void testExpandWithMultipleSpaces() {
+ this.setupEntry();
final String result = this.entry.getKeyPattern().matcher( "String is \" bl ah \"" ).replaceAll( this.entry.getValuePattern() );
assertEquals( "SomeFact(value==\" bl ah \")",
result );
More information about the jboss-svn-commits
mailing list