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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 25 15:32:06 EDT 2009


Author: tirelli
Date: 2009-06-25 15:32:06 -0400 (Thu, 25 Jun 2009)
New Revision: 27136

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRules2140.drl
Modified:
   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/integrationtests/MiscTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectRuntimeRegistry.java
Log:
JBRULES-2140: Fixing dialect runtime data rewiring

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	2009-06-25 17:19:13 UTC (rev 27135)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2009-06-25 19:32:06 UTC (rev 27136)
@@ -335,7 +335,7 @@
     public void addFunction(FunctionDescr functionDescr,
                             TypeResolver typeResolver,
                             Resource resource) {
-        Serializable s1 = compile( (String) functionDescr.getContent(),
+        Serializable s1 = compile( (String) functionDescr.getText(),
                                    null,
                                    null,
                                    null,

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2009-06-25 17:19:13 UTC (rev 27135)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2009-06-25 19:32:06 UTC (rev 27136)
@@ -6806,4 +6806,30 @@
         }
     }
 
+    public void testJBRules2140() {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_JBRules2140.drl",
+                                                            getClass() ),
+                      ResourceType.DRL );
+        KnowledgeBuilderErrors errors = kbuilder.getErrors();
+        if ( errors.size() > 0 ) {
+            for ( KnowledgeBuilderError error : errors ) {
+                System.err.println( error );
+            }
+            throw new IllegalArgumentException( "Could not parse knowledge." );
+        }
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List<String> results = new ArrayList<String>();
+        ksession.setGlobal( "results",
+                            results );
+        ksession.fireAllRules();
+        assertEquals( 2,
+                      results.size() );
+        assertTrue( results.contains( "java" ) );
+        assertTrue( results.contains( "mvel" ) );
+
+    }
+
 }

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRules2140.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRules2140.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRules2140.drl	2009-06-25 19:32:06 UTC (rev 27136)
@@ -0,0 +1,39 @@
+package org.drools
+ 
+global java.util.List results;
+
+function void aaa() { 
+   // just a dummy function to force java dialect recompilation
+}
+
+declare SomeBean
+    prop : String
+end
+ 
+rule "setup 1"
+    dialect "mvel" 
+when
+    eval(true)
+then
+    SomeBean someBean = new SomeBean();
+    someBean.setProp("mvel");
+    insert(someBean);
+end
+
+rule "setup 2"
+    dialect "java" 
+when
+    eval(true)
+then
+    SomeBean someBean = new SomeBean();
+    someBean.setProp("java");
+    insert(someBean);
+end
+
+rule "match"
+    salience -20
+when
+    $bean : SomeBean()
+then
+    results.add( $bean.getProp() );
+end 
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectRuntimeRegistry.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectRuntimeRegistry.java	2009-06-25 17:19:13 UTC (rev 27135)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectRuntimeRegistry.java	2009-06-25 19:32:06 UTC (rev 27136)
@@ -108,27 +108,18 @@
     }
 
     public void onBeforeExecute() {
-        for ( Iterator it = this.dialects.values().iterator(); it.hasNext(); ) {
-            DialectRuntimeData data = (DialectRuntimeData) it.next();
+        // Java dialect MUST be the first to be processed.
+        DialectRuntimeData data = this.dialects.get( "java" );
+        if( data != null ) {
             data.onBeforeExecute();
         }
-        //        // detect if any dialect is dirty, if so reload() them all
-        //        boolean isDirty = false;
-        //        for ( Iterator it = this.dialects.values().iterator(); it.hasNext(); ) {
-        //            DialectRuntimeData data = (DialectRuntimeData) it.next();
-        //            if ( data.isDirty() ) {
-        //                isDirty = true;
-        //                break;
-        //            }
-        //        }
-        //
-        //        //if ( isDirty ) {
-        //        this.classLoader = new CompositeClassLoader();
-        //        for ( Iterator it = this.dialects.values().iterator(); it.hasNext(); ) {
-        //            DialectRuntimeData data = (DialectRuntimeData) it.next();
-        //            data.reload();
-        //        }
-        //        //}
+        
+        // then, all others
+        for ( Map.Entry<String, DialectRuntimeData> entry : this.dialects.entrySet() ) {
+            if( ! "java".equals( entry.getKey() ) ) {
+                entry.getValue().onBeforeExecute();
+            }
+        }
     }
 
     public void clear() {




More information about the jboss-svn-commits mailing list