[jboss-svn-commits] JBL Code SVN: r13828 - labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jul 29 19:24:18 EDT 2007


Author: KrisVerlaenen
Date: 2007-07-29 19:24:18 -0400 (Sun, 29 Jul 2007)
New Revision: 13828

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
Log:
JBRULES-1043: Enhanced Java completion proposals
 - reuse of standard Java completion proposals
JBRULES-981: Milestone
 - end of impl. in core + integrated into Eclipse IDE
JBRULES-1041: Subflow
 - impl. in core + eclipse IDE
JBRULES-1038: addRuleFlow throws Exceptions
 - ruleflows are checking before parsing
JBRULES-1042: Integrate ruleflows in drools build

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-07-29 15:35:24 UTC (rev 13827)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-07-29 23:24:18 UTC (rev 13828)
@@ -208,6 +208,9 @@
         if ( this.processBuilder == null ) {
             this.processBuilder = new ProcessBuilder( this );
         }
+        if ( this.pkg == null) {
+        	this.pkg = new Package();
+        }
         try {
             this.processBuilder.addProcessFromFile( processSource );
         } catch ( Exception e ) {
@@ -443,12 +446,10 @@
      * Compiled packages are serializable.
      */
     public Package getPackage() {
+        addRuleFlowsToPackage( this.processBuilder, pkg );
         if ( hasErrors() ) {
             this.pkg.setError( getErrors().toString() );
         }
-        addRuleFlowsToPackage( this.processBuilder,
-                               pkg );
-
         return this.pkg;
     }
     
@@ -468,6 +469,7 @@
             for ( int i = 0; i < processes.length; i++ ) {
                 pkg.addRuleFlow( processes[i] );
             }
+            this.results.addAll(processBuilder.getErrors());
         }
     }
 

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-07-29 15:35:24 UTC (rev 13827)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-07-29 23:24:18 UTC (rev 13828)
@@ -27,8 +27,11 @@
 import org.drools.ruleflow.core.MilestoneNode;
 import org.drools.ruleflow.core.Node;
 import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.ruleflow.core.RuleFlowProcessValidationError;
+import org.drools.ruleflow.core.RuleFlowProcessValidator;
 import org.drools.ruleflow.core.Split;
 import org.drools.ruleflow.core.impl.RuleFlowProcessImpl;
+import org.drools.ruleflow.core.impl.RuleFlowProcessValidatorImpl;
 
 import com.thoughtworks.xstream.XStream;
 
@@ -41,28 +44,42 @@
 public class ProcessBuilder {
 	
 	private PackageBuilder packageBuilder;
+    private final List processes = new ArrayList();
+	private final List errors = new ArrayList(); 
 	
 	public ProcessBuilder(PackageBuilder packageBuilder) {
 		this.packageBuilder = packageBuilder;
 	}
 
-    private final List processes = new ArrayList();
-
     public Process[] getProcesses() {
         return (Process[]) this.processes.toArray( new Process[this.processes.size()] );
     }
+    
+    public List getErrors() {
+    	return errors;
+    }
 
     public void addProcess(final Process process) {
-        this.processes.add( process );
-        // generate and add rule for process
-        String rules = generateRules( process );
-        if (rules != null && rules.length() != 0) {
-        	try {
-        		packageBuilder.addPackageFromDrl(new StringReader(rules));
-        	} catch (Throwable t) {
-        		// should never occur
-        	}
-        }
+    	if (process instanceof RuleFlowProcess) {
+    		RuleFlowProcessValidator validator = RuleFlowProcessValidatorImpl.getInstance();
+    		RuleFlowProcessValidationError[] errors = validator.validateProcess((RuleFlowProcess) process);
+    		if (errors.length != 0) {
+    			for (int i = 0; i < errors.length; i++) {
+    				this.errors.add(new ParserError(errors[i].toString(), -1, -1));
+    			}
+    		} else {
+	            this.processes.add( process );
+	            // generate and add rule for process
+	            String rules = generateRules( process );
+	            if (rules != null && rules.length() != 0) {
+	            	try {
+	            		packageBuilder.addPackageFromDrl(new StringReader(rules));
+	            	} catch (Throwable t) {
+	            		// should never occur
+	            	}
+	            }
+    		}
+    	}
     }
 
     public void addProcessFromFile(final Reader reader) throws Exception {




More information about the jboss-svn-commits mailing list