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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Nov 27 15:22:20 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-11-27 15:22:20 -0500 (Tue, 27 Nov 2007)
New Revision: 16866

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ActionDialects.rf
Log:
JBRULES-1197 Extends actions support to include other dialects and callback
-general  clean ups to make tests pass
-possible double dialect initialisation removed

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-11-27 19:36:07 UTC (rev 16865)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-11-27 20:22:20 UTC (rev 16866)
@@ -154,9 +154,9 @@
 
         this.dialect = this.dialectRegistry.getDialect( this.configuration.getDefaultDialect() );
 
-        this.dialectRegistry.initAll( this );
+        
         if ( this.pkg != null ) {
-            initDialectPackage( pkg );
+            this.dialectRegistry.initAll( this );
         }
 
     }
@@ -222,6 +222,7 @@
      */
     public void addRuleFlow(Reader processSource) {
         ProcessBuilder processBuilder = new ProcessBuilder( this );
+        
         try {
             processBuilder.addProcessFromFile( processSource );
             Process[] processes = processBuilder.getProcesses();
@@ -238,12 +239,17 @@
                                                      e ) );
         }
         
-        this.dialectRegistry.compileAll();
-
-        // some of the rules and functions may have been redefined
-        if ( this.pkg.getPackageCompilationData().isDirty() ) {
-            this.pkg.getPackageCompilationData().reload();
+        if ( this.pkg  != null ) {
+            // we can only do this is this.pkg != null, as otherwise the dialects won't be properly initialised
+            // as the dialects are initialised when the pkg is  first created
+            this.dialectRegistry.compileAll();
+            
+            // some of the rules and functions may have been redefined
+            if ( this.pkg.getPackageCompilationData().isDirty() ) {
+                this.pkg.getPackageCompilationData().reload();
+            }            
         }
+
         this.results = this.dialectRegistry.addResults( this.results );        
     }
 
@@ -309,11 +315,9 @@
         }
 
         if ( this.pkg != null ) {
-            // mergePackage( packageDescr ) ;
-            mergePackage( this.pkg,
-                          packageDescr );
+            mergePackage( packageDescr );
         } else {
-            this.pkg = newPackage( packageDescr );
+            newPackage( packageDescr );
         }
 
         this.ruleBuilder = new RuleBuilder();
@@ -387,38 +391,22 @@
         }
     }
 
-    private Package newPackage(final PackageDescr packageDescr) {
-        final Package pkg = new Package( packageDescr.getName(),
-                                         this.configuration.getClassLoader() );
+    private void newPackage(final PackageDescr packageDescr) {
+        this.pkg = new Package( packageDescr.getName(),
+                                this.configuration.getClassLoader() );
+        
+        this.typeResolver.addImport( this.pkg.getName() + ".*" );
 
-        initDialectPackage( pkg );
+        this.dialectRegistry.initAll( this );
 
-        mergePackage( pkg,
-                      packageDescr );
-
-        return pkg;
+        mergePackage( packageDescr );
     }
 
-    private void initDialectPackage(Package pkg) {
-        for ( Iterator it = this.dialectRegistry.iterator(); it.hasNext(); ) {
-            Dialect dialect = (Dialect) it.next();
-            dialect.init( pkg );
-        }
-
-    }
-
-    private void mergePackage(final Package pkg,
-                              final PackageDescr packageDescr) {
-
-        // make sure we have initialised this typeResolver with "default" imports
-        if ( this.typeResolver.getImports().isEmpty() ) {
-            this.typeResolver.addImport( pkg.getName() + ".*" );
-        }
-
+    private void mergePackage(final PackageDescr packageDescr) {
         final List imports = packageDescr.getImports();
         for ( final Iterator it = imports.iterator(); it.hasNext(); ) {
             String importEntry = ((ImportDescr) it.next()).getTarget();
-            pkg.addImport( importEntry );
+            this.pkg.addImport( importEntry );
             this.typeResolver.addImport( importEntry );
             this.dialectRegistry.addImport( importEntry );
         }
@@ -426,11 +414,9 @@
         for ( final Iterator it = packageDescr.getFunctionImports().iterator(); it.hasNext(); ) {
             String importEntry = ((FunctionImportDescr) it.next()).getTarget();
             this.dialectRegistry.addStaticImport( importEntry );
-            pkg.addStaticImport( importEntry );
+            this.pkg.addStaticImport( importEntry );
         }
 
-        ((ClassTypeResolver) this.typeResolver).setClassLoader( pkg.getPackageCompilationData().getClassLoader() );
-
         final List globals = packageDescr.getGlobals();
         for ( final Iterator it = globals.iterator(); it.hasNext(); ) {
             final GlobalDescr global = (GlobalDescr) it.next();
@@ -440,7 +426,7 @@
             Class clazz;
             try {
                 clazz = typeResolver.resolveType( className );
-                pkg.addGlobal( identifier,
+                this.pkg.addGlobal( identifier,
                                clazz );
             } catch ( final ClassNotFoundException e ) {
                 this.results.add( new GlobalError( identifier,

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-11-27 19:36:07 UTC (rev 16865)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-11-27 20:22:20 UTC (rev 16866)
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.drools.lang.descr.PackageDescr;
 import org.drools.ruleflow.common.core.Process;
 import org.drools.ruleflow.core.Connection;
 import org.drools.ruleflow.core.MilestoneNode;
@@ -93,7 +94,8 @@
         final ClassLoader newLoader = this.getClass().getClassLoader();
         try {
             Thread.currentThread().setContextClassLoader( newLoader );
-            final RuleFlowProcess process = (RuleFlowProcess) stream.fromXML( reader );
+            final RuleFlowProcess process = (RuleFlowProcess) stream.fromXML( reader );            
+            
             addProcess( process );
         } finally {
             Thread.currentThread().setContextClassLoader( oldLoader );
@@ -102,21 +104,22 @@
     }
     
     private String generateRules(final Process process) {
-    	String result = "";
+        StringBuilder builder = new StringBuilder();
+        
     	if (process instanceof RuleFlowProcessImpl) {
     		RuleFlowProcessImpl ruleFlow = (RuleFlowProcessImpl) process;
-    		result = "package " + ruleFlow.getPackageName() + "\n" + result;
+    		builder.append( "package " + ruleFlow.getPackageName() + "\n" );
     		List imports = ruleFlow.getImports();
     		if (imports != null) {
     			for (Iterator iterator = imports.iterator(); iterator.hasNext(); ) {
-    				result += "import " + iterator.next() + ";\n";
+    			    builder.append( "import " + iterator.next() + ";\n" );
     			}
     		}
     		Map globals = ruleFlow.getGlobals();
     		if (globals != null) {
     			for (Iterator iterator = globals.entrySet().iterator(); iterator.hasNext(); ) {
     				Map.Entry entry = (Map.Entry) iterator.next();
-    				result += "global " + entry.getValue() + " " + entry.getKey() + ";\n";
+    				builder.append( "global " + entry.getValue() + " " + entry.getKey() + ";\n" );
     			}
     		}
 
@@ -127,16 +130,16 @@
     				 if (split.getType() == Split.TYPE_XOR || split.getType() == Split.TYPE_OR) {
     					 for (Iterator iterator = split.getOutgoingConnections().iterator(); iterator.hasNext(); ) {
     						 Connection connection = (Connection) iterator.next();
-    						 result += createSplitRule(process, connection, split.getConstraint(connection).getConstraint());
+    						 builder.append( createSplitRule(process, connection, split.getConstraint(connection).getConstraint()) );
     					 }
     				 }
     			 } else if (nodes[i] instanceof MilestoneNode) {
     				 MilestoneNode milestone = (MilestoneNode) nodes[i];
-    				 result += createMilestoneRule(process, milestone);
+    				 builder.append( createMilestoneRule(process, milestone) );
     			 }
     		}
     	}
-    	return result;
+    	return builder.toString();
     }
     
     private String createSplitRule(Process process, Connection connection, String constraint) {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java	2007-11-27 19:36:07 UTC (rev 16865)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java	2007-11-27 20:22:20 UTC (rev 16866)
@@ -253,6 +253,7 @@
 
         public void init(PackageBuilder builder) {
             this.builder = builder;
+            this.pkg = builder.getPackage();
 
         }
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-11-27 19:36:07 UTC (rev 16865)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-11-27 20:22:20 UTC (rev 16866)
@@ -1001,6 +1001,9 @@
     public void testCompilerConfiguration() throws Exception {
         // test default is eclipse jdt core
         PackageBuilder builder = new PackageBuilder();
+        PackageDescr pkgDescr = new PackageDescr( "org.test" );
+        builder.addPackage( pkgDescr );
+        
         final Field dialectField = builder.getClass().getDeclaredField( "dialect" );
         dialectField.setAccessible( true );
         JavaDialect dialect = (JavaDialect) dialectField.get( builder );
@@ -1016,6 +1019,8 @@
         JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
         javaConf.setCompiler( JavaDialectConfiguration.JANINO );
         builder = new PackageBuilder( conf );
+        builder.addPackage( pkgDescr );
+        
         dialect = (JavaDialect) dialectField.get( builder );
         compiler = (JavaCompiler) compilerField.get( dialect );
         assertSame( JaninoJavaCompiler.class,
@@ -1026,6 +1031,8 @@
         javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
         javaConf.setCompiler( JavaDialectConfiguration.ECLIPSE );
         builder = new PackageBuilder( conf );
+        builder.addPackage( pkgDescr );
+        
         dialect = (JavaDialect) dialectField.get( builder );
         compiler = (JavaCompiler) compilerField.get( dialect );
         assertSame( EclipseJavaCompiler.class,

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2007-11-27 19:36:07 UTC (rev 16865)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2007-11-27 20:22:20 UTC (rev 16866)
@@ -735,7 +735,7 @@
     
     public void testActionDialects() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
-        builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "test_ActionDialects.rfm" ) ) );      
+        builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "test_ActionDialects.rfm" ) ) ); 
         
         RuleBase ruleBase = RuleBaseFactory.newRuleBase();
         ruleBase.addPackage( builder.getPackage() );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ActionDialects.rf
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ActionDialects.rf	2007-11-27 19:36:07 UTC (rev 16865)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ActionDialects.rf	2007-11-27 20:22:20 UTC (rev 16866)
@@ -8,8 +8,8 @@
             <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
               <default>
                 <constraint id="4">
-                  <x>67</x>
-                  <y>82</y>
+                  <x>105</x>
+                  <y>78</y>
                   <width>80</width>
                   <height>40</height>
                 </constraint>
@@ -76,8 +76,8 @@
                           <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
                             <default>
                               <constraint id="26">
-                                <x>67</x>
-                                <y>21</y>
+                                <x>105</x>
+                                <y>17</y>
                                 <width>80</width>
                                 <height>40</height>
                               </constraint>
@@ -110,8 +110,8 @@
                           <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
                             <default>
                               <constraint id="33">
-                                <x>67</x>
-                                <y>153</y>
+                                <x>105</x>
+                                <y>149</y>
                                 <width>80</width>
                                 <height>40</height>
                               </constraint>
@@ -130,8 +130,8 @@
                                         <org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper>
                                           <default>
                                             <constraint id="39">
-                                              <x>67</x>
-                                              <y>213</y>
+                                              <x>104</x>
+                                              <y>217</y>
                                               <width>80</width>
                                               <height>40</height>
                                             </constraint>




More information about the jboss-svn-commits mailing list