[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