[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