[jboss-svn-commits] JBL Code SVN: r11254 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/lang and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Apr 23 15:39:04 EDT 2007


Author: tirelli
Date: 2007-04-23 15:39:04 -0400 (Mon, 23 Apr 2007)
New Revision: 11254

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultDSLMappingEntry.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
   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/DefaultExpanderTest.java
Log:
JBRULES-808: restricting matches to full tokens only

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultDSLMappingEntry.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultDSLMappingEntry.java	2007-04-23 19:35:56 UTC (rev 11253)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DefaultDSLMappingEntry.java	2007-04-23 19:39:04 UTC (rev 11254)
@@ -106,11 +106,21 @@
         this.key = key;
 
         if ( key != null ) {
-            // retrieving variables list and creating key pattern 
+            int substr = 0;
+            // escape '$' to avoid errors  
             final Matcher m = varFinder.matcher( key.replaceAll( "\\$",
                                                            "\\\\\\$" ) );
+            // retrieving variables list and creating key pattern 
             final StringBuffer buf = new StringBuffer();
+
             int counter = 1;
+            if( ! key.startsWith( "^" ) ) {
+                // making it start with a space char or a line start
+                buf.append( "(\\W|^)" );
+                substr += buf.length();
+                counter++;
+            }
+            
             while ( m.find() ) {
                 if ( this.variables == Collections.EMPTY_MAP ) {
                     this.variables = new HashMap( 2 );
@@ -121,14 +131,18 @@
                                      m.group( 1 ) + "(.*?)" );
             }
             m.appendTail( buf );
+            
+            // if pattern ends with a variable, append a line end to avoid multiple line matching
             if ( buf.toString().endsWith( "(.*?)" ) ) {
                 buf.append( "$" );
+            } else {
+                buf.append( "(\\W|$)" );
             }
 
             // setting the key pattern and making it space insensitive
             String pat = buf.toString().replaceAll( "\\s+",
                                                     "\\\\s*" );
-            if ( pat.trim().startsWith( "-" ) && (!pat.trim().startsWith( "-\\s*" )) ) {
+            if ( pat.substring( substr ).trim().startsWith( "-" ) && (!pat.substring( substr ).trim().startsWith( "-\\s*" )) ) {
                 pat = pat.substring( 0,
                                      pat.indexOf( '-' ) + 1 ) + "\\s*" + pat.substring( pat.indexOf( '-' ) + 1 );
             }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2007-04-23 19:35:56 UTC (rev 11253)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2007-04-23 19:39:04 UTC (rev 11254)
@@ -1257,7 +1257,7 @@
         assertEquals( 1,
                       parser.getErrors().size() );
 
-        assertEquals( 6,
+        assertEquals( 5,
                       err.line );
     }
 

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-04-23 19:35:56 UTC (rev 11253)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultDSLMappingEntryTest.java	2007-04-23 19:39:04 UTC (rev 11254)
@@ -25,8 +25,8 @@
         final String inputKey = "The Customer name is {name} and surname is {surname} and it has US$ 50,00 on his {pocket}";
         final String inputValue = "Customer( name == \"{name}\", surname == \"{surname}\", money > $money )";
 
-        final String expectedKeyP = "The\\s*Customer\\s*name\\s*is\\s*(.*?)\\s*and\\s*surname\\s*is\\s*(.*?)\\s*and\\s*it\\s*has\\s*US\\$\\s*50,00\\s*on\\s*his\\s*(.*?)$";
-        final String expectedValP = "Customer( name == \"$1\", surname == \"$2\", money > \\$money )";
+        final String expectedKeyP = "(\\W|^)The\\s*Customer\\s*name\\s*is\\s*(.*?)\\s*and\\s*surname\\s*is\\s*(.*?)\\s*and\\s*it\\s*has\\s*US\\$\\s*50,00\\s*on\\s*his\\s*(.*?)$";
+        final String expectedValP = "Customer( name == \"$2\", surname == \"$3\", money > \\$money )";
 
         final DSLMappingEntry entry = new DefaultDSLMappingEntry( DSLMappingEntry.CONDITION,
                                                             null,
@@ -48,8 +48,8 @@
         final String inputKey = "-name is {name}";
         final String inputValue = "name == \"{name}\"";
 
-        final String expectedKeyP = "-\\s*name\\s*is\\s*(.*?)$";
-        final String expectedValP = "name == \"$1\"";
+        final String expectedKeyP = "(\\W|^)-\\s*name\\s*is\\s*(.*?)$";
+        final String expectedValP = "name == \"$2\"";
 
         final DSLMappingEntry entry = new DefaultDSLMappingEntry( DSLMappingEntry.CONDITION,
                                                             null,
@@ -71,8 +71,8 @@
         final String inputKey = "- name is {name}";
         final String inputValue = "name == \"{name}\"";
 
-        final String expectedKeyP = "-\\s*name\\s*is\\s*(.*?)$";
-        final String expectedValP = "name == \"$1\"";
+        final String expectedKeyP = "(\\W|^)-\\s*name\\s*is\\s*(.*?)$";
+        final String expectedValP = "name == \"$2\"";
 
         final DSLMappingEntry entry = new DefaultDSLMappingEntry( DSLMappingEntry.CONDITION,
                                                             null,

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java	2007-04-23 19:35:56 UTC (rev 11253)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java	2007-04-23 19:39:04 UTC (rev 11254)
@@ -41,7 +41,7 @@
         final String result = this.expander.expand( rules );
     }
 
-    public void FIXME_testExpandFailure() throws Exception {
+    public void testExpandFailure() throws Exception {
 
         DSLMappingFile file = new DSLMappingFile();
         String dsl = "[when]foo=Foo()\n[then]bar {num}=baz({num});";
@@ -59,10 +59,10 @@
 
         source = "rule 'q' agenda-group 'x'\nwhen\n    foos \nthen\n    bar 42\n end";
         drl = ex.expand( source );
-        System.out.println( drl );
+        //System.out.println( drl );
         assertTrue( ex.hasErrors() );
         assertEquals( 1, ex.getErrors().size() );
-        System.err.println(( (ExpanderException) ex.getErrors().get( 0 )).getMessage());
+        //System.err.println(( (ExpanderException) ex.getErrors().get( 0 )).getMessage());
 
     }
     




More information about the jboss-svn-commits mailing list