[jboss-svn-commits] JBL Code SVN: r18518 - in labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools: rule/builder/dialect/java and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Feb 19 15:58:34 EST 2008


Author: tirelli
Date: 2008-02-19 15:58:34 -0500 (Tue, 19 Feb 2008)
New Revision: 18518

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java
Log:
JBRULES-1473: adding configuration parameter to dump source generated source code

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java	2008-02-19 20:48:08 UTC (rev 18517)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java	2008-02-19 20:58:34 UTC (rev 18518)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import java.io.File;
 import java.net.URL;
 import java.util.Collections;
 import java.util.HashMap;
@@ -55,6 +56,7 @@
  * drools.dialect.default = <String>
  * drools.accumulate.function.<function name> = <qualified class>
  * drools.evaluator.<ident> = <qualified class>
+ * drools.dump.dir = <String>
  * 
  * default dialect is java.
  * Available preconfigured Accumulate functions are:
@@ -86,6 +88,8 @@
 
     private ProcessNodeBuilderRegistry nodeBuilderRegistry;
 
+    private File                       dumpDirectory;
+
     /**
      * Constructor that sets the parent class loader for the package being built/compiled
      * @param classLoader
@@ -144,6 +148,8 @@
         buildAccumulateFunctionsMap();
 
         buildEvaluatorRegistry();
+
+        buildDumpDirectory();
     }
 
     public ChainedProperties getChainedProperties() {
@@ -471,4 +477,27 @@
         this.evaluatorRegistry.addEvaluatorDefinition( def );
     }
 
+    private void buildDumpDirectory() {
+        String dumpStr = this.chainedProperties.getProperty( "drools.dump.dir",
+                                                             null );
+        if ( dumpStr != null ) {
+            this.dumpDirectory = new File( dumpStr );
+            if ( !dumpDirectory.isDirectory() || !dumpDirectory.canWrite() || !dumpDirectory.canRead() ) {
+                this.dumpDirectory = null;
+                throw new RuntimeDroolsException( "Drools dump directory is not accessible: " + dumpStr );
+            }
+        }
+    }
+
+    public File getDumpDir() {
+        return this.dumpDirectory;
+    }
+
+    public void setDumpDir(File dumpDir) {
+        if ( !dumpDir.isDirectory() || !dumpDir.canWrite() || !dumpDir.canRead() ) {
+            throw new RuntimeDroolsException( "Drools dump directory is not accessible: " + dumpDir.toString() );
+        }
+        this.dumpDirectory = dumpDir;
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2008-02-19 20:48:08 UTC (rev 18517)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2008-02-19 20:58:34 UTC (rev 18518)
@@ -1,5 +1,9 @@
 package org.drools.rule.builder.dialect.java;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -121,7 +125,7 @@
 
     // a map of registered builders
     private static Map                               builders;
-
+    
     public JavaDialect() {
 
     }
@@ -381,14 +385,11 @@
         final String[] classes = new String[this.generatedClassList.size()];
         this.generatedClassList.toArray( classes );
         
-//        if( true ) {
-//            for( int i = 0; i < classes.length; i++ ) {
-//                System.out.println("CLASS: "+classes[i]);
-//                System.out.println("---------------------------");
-//                System.out.println(new String( this.src.getBytes( classes[i] )));
-//                System.out.println("===========================");
-//            }
-//        }
+        File dumpDir = this.configuration.getPackageBuilderConfiguration().getDumpDir(); 
+        if(  dumpDir != null ) {
+            dumpResources( classes,
+                           dumpDir );
+        }
 
         final CompilationResult result = this.compiler.compile( classes,
                                                                 this.src,
@@ -432,6 +433,35 @@
     }
 
     /**
+     * @param classes
+     * @param dumpDir
+     * @throws IOException
+     * @throws FileNotFoundException
+     */
+    private void dumpResources(final String[] classes,
+                               File dumpDir) {
+        for( int i = 0; i < classes.length; i++ ) {
+            File target = new File( dumpDir, classes[i] );
+            FileOutputStream out = null;
+            try {
+                File parent = target.getParentFile();
+                if( parent != null && ! parent.exists() ) {
+                    parent.mkdirs();
+                }
+                target.createNewFile();
+                out = new FileOutputStream( target );
+                out.write( this.src.getBytes( classes[i] ) );
+            } catch ( FileNotFoundException e ) {
+                e.printStackTrace();
+            } catch ( IOException e ) {
+                e.printStackTrace();
+            } finally {
+                if( out != null ) try { out.close(); } catch (Exception e) {}
+            }
+        }
+    }
+
+    /**
      * This will add the rule for compiling later on.
      * It will not actually call the compiler
      */

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java	2008-02-19 20:48:08 UTC (rev 18517)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java	2008-02-19 20:58:34 UTC (rev 18518)
@@ -1,12 +1,10 @@
 package org.drools.rule.builder.dialect.java;
 
 import java.util.Arrays;
-import java.util.Properties;
 
 import org.drools.RuntimeDroolsException;
 import org.drools.compiler.Dialect;
 import org.drools.compiler.DialectConfiguration;
-import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 
 /**




More information about the jboss-svn-commits mailing list