[jboss-svn-commits] JBL Code SVN: r12843 - in labs/jbossrules/trunk/drools-compiler: src/main/java/org/drools/rule/builder/dialect/mvel and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 25 20:38:17 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-06-25 20:38:17 -0400 (Mon, 25 Jun 2007)
New Revision: 12843

Modified:
   labs/jbossrules/trunk/drools-compiler/.classpath
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
Log:
-updated to MVEL beta27, which adds language levels.

Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath	2007-06-26 00:36:25 UTC (rev 12842)
+++ labs/jbossrules/trunk/drools-compiler/.classpath	2007-06-26 00:38:17 UTC (rev 12843)
@@ -1,19 +1,18 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
-	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta26/mvel14-1.2beta26.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
-	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
-	<classpathentry kind="src" path="/drools-core"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<classpath>
+  <classpathentry kind="src" path="src/main/java"/>
+  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+  <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
+  <classpathentry kind="output" path="target/classes"/>
+  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta27/mvel14-1.2beta27.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
+  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
+  <classpathentry kind="src" path="/drools-core"/>
+</classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2007-06-26 00:36:25 UTC (rev 12842)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2007-06-26 00:38:17 UTC (rev 12843)
@@ -39,6 +39,7 @@
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.RuleClassBuilder;
 import org.drools.rule.builder.SalienceBuilder;
+import org.mvel.AbstractParser;
 import org.mvel.integration.impl.ClassImportResolverFactory;
 import org.mvel.integration.impl.StaticMethodImportResolverFactory;
 
@@ -81,6 +82,8 @@
     private Map builders;
 
     public MVELDialect(final PackageBuilder builder) {
+        AbstractParser.setLanguageLevel(4); 
+        
         this.pkg = builder.getPackage();
         this.configuration = builder.getPackageBuilderConfiguration();
         this.typeResolver = builder.getTypeResolver();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java	2007-06-26 00:36:25 UTC (rev 12842)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/server/rules/SuggestionCompletionLoaderTest.java	2007-06-26 00:38:17 UTC (rev 12843)
@@ -8,7 +8,7 @@
 
 import junit.framework.TestCase;
 
-public class SuggestionCompletionLoaderTest extends TestCase {
+public class SuggestionCompletionLoaderTest extends TestCase {    
 
     public void testSuggestionCompLoader() throws Exception {
         SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
@@ -35,6 +35,6 @@
             return Object.class;
         }
         
-    }
+    }    
     
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2007-06-26 00:36:25 UTC (rev 12842)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2007-06-26 00:38:17 UTC (rev 12843)
@@ -98,7 +98,73 @@
     public void testKnowledgeHelper() {
         
     }
+    
+    public void testImperativeCodeError() throws Exception {
+        final Package pkg = new Package( "pkg1" );
+        final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
+        ruleDescr.setConsequence( "if (cheese.price == 10) { cheese.price = 5; }" );
 
+        MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
+        DialectRegistry registry = new DialectRegistry();
+        registry.addDialect( "default",
+                             mvelDialect );
+        final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+
+        final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
+                                                                               pkg,
+                                                                               ruleDescr,
+                                                                               registry,
+                                                                               mvelDialect );
+
+        final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
+
+        final ObjectType cheeseObjeectType = new ClassObjectType( Cheese.class );
+
+        final Pattern pattern = new Pattern( 0,
+                                             cheeseObjeectType );
+
+        final PatternExtractor extractor = new PatternExtractor( cheeseObjeectType );
+
+        final Declaration declaration = new Declaration( "cheese",
+                                                         extractor,
+                                                         pattern );
+        final Map map = new HashMap();
+        map.put( "cheese",
+                 declaration );
+        declarationResolver.setDeclarations( map );
+        context.setDeclarationResolver( declarationResolver );
+
+        final MVELConsequenceBuilder builder = new MVELConsequenceBuilder();
+        builder.build( context );
+
+        final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+        final WorkingMemory wm = ruleBase.newStatefulSession();
+
+        final Cheese cheddar = new Cheese( "cheddar",
+                                           10 );
+        final InternalFactHandle f0 = (InternalFactHandle) wm.insert( cheddar );
+        final ReteTuple tuple = new ReteTuple( f0 );
+
+        final AgendaItem item = new AgendaItem( 0,
+                                                tuple,
+                                                10,
+                                                null,
+                                                context.getRule(),
+                                                null );
+        final DefaultKnowledgeHelper kbHelper = new DefaultKnowledgeHelper( wm );
+        kbHelper.setActivation( item );
+        try {
+        context.getRule().getConsequence().evaluate( kbHelper,
+                                                     wm );
+            fail( "should throw an exception, as 'if' is not allowed" );
+        } catch ( Exception e) {
+            
+        }
+        
+        assertEquals( 10,
+                      cheddar.getPrice() );
+    }
+
     /**
      * Just like MVEL command line, we can allow expressions to span lines, with optional ";"
      * seperating expressions. If its needed a ";" can be thrown in, but if not, a new line is fine.




More information about the jboss-svn-commits mailing list