[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