[jboss-svn-commits] JBL Code SVN: r12906 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/compiler and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jun 27 22:29:01 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-06-27 22:29:01 -0400 (Wed, 27 Jun 2007)
New Revision: 12906
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/DrlParserTest.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
Log:
JBRULES-955
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java 2007-06-28 01:49:41 UTC (rev 12905)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java 2007-06-28 02:29:01 UTC (rev 12906)
@@ -29,6 +29,7 @@
import org.drools.lang.DRLLexer;
import org.drools.lang.DRLParser;
import org.drools.lang.Expander;
+import org.drools.lang.ExpanderException;
import org.drools.lang.Location;
import org.drools.lang.descr.PackageDescr;
import org.drools.lang.dsl.DefaultExpanderResolver;
@@ -109,6 +110,37 @@
return this.parse( expanded );
}
+ /**
+ * This will expand the DRL.
+ * useful for debugging.
+ * @param source - the source which use a DSL
+ * @param dsl - the DSL itself.
+ * @throws DroolsParserException If unable to expand in any way.
+ */
+ public String getExpandedDRL(final String source, final Reader dsl) throws DroolsParserException {
+ DefaultExpanderResolver resolver;
+ try {
+ resolver = new DefaultExpanderResolver( dsl );
+ } catch ( final IOException e ) {
+ throw new DroolsParserException( "Error parsing the DSL.",
+ e );
+ }
+ final Expander expander = resolver.get( "*",
+ null );
+ final String expanded = expander.expand( source );
+
+ if ( expander.hasErrors() ) {
+ String err = "";
+ for ( Iterator iter = expander.getErrors().iterator(); iter.hasNext(); ) {
+ ExpanderException ex = (ExpanderException) iter.next();
+ err = err + "\n Line:[" + ex.getLine() + "] " + ex.getMessage();
+
+ }
+ throw new DroolsParserException(err);
+ }
+ return expanded;
+ }
+
private StringBuffer getDRLText(final Reader reader) throws IOException {
final StringBuffer text = new StringBuffer();
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/DrlParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/DrlParserTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/DrlParserTest.java 2007-06-28 02:29:01 UTC (rev 12906)
@@ -0,0 +1,29 @@
+package org.drools.compiler;
+
+import java.io.StringReader;
+
+import junit.framework.TestCase;
+
+public class DrlParserTest extends TestCase {
+
+ public void testExpandDRL() throws Exception {
+ String dsl = "[condition]Something=Something()\n[then]another=another();";
+ String drl = "rule 'foo' \n when \n Something \n then \n another \nend";
+
+ DrlParser parser = new DrlParser();
+ String result = parser.getExpandedDRL( drl, new StringReader(dsl));
+ assertEqualsIgnoreWhitespace( "rule 'foo' \n when \n Something() \n then \n another(); \nend", result );
+ }
+
+
+ private void assertEqualsIgnoreWhitespace(final String expected,
+ final String actual) {
+ final String cleanExpected = expected.replaceAll( "\\s+",
+ "" );
+ final String cleanActual = actual.replaceAll( "\\s+",
+ "" );
+
+ assertEquals( cleanExpected,
+ cleanActual );
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/DrlParserTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list