[jboss-svn-commits] JBL Code SVN: r14533 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/base/mvel and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Aug 24 13:36:13 EDT 2007
Author: ahtik
Date: 2007-08-24 13:36:13 -0400 (Fri, 24 Aug 2007)
New Revision: 14533
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDebugHandler.java
Log:
JBRULES-1120: Improved MVELDebugHandler to allow debug mode change at runtime. Fixed MVELConsequenceBuilderTest to use this.
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java 2007-08-24 15:32:43 UTC (rev 14532)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java 2007-08-24 17:36:13 UTC (rev 14533)
@@ -16,6 +16,7 @@
import org.drools.base.ClassObjectType;
import org.drools.base.DefaultKnowledgeHelper;
import org.drools.base.mvel.MVELConsequence;
+import org.drools.base.mvel.MVELDebugHandler;
import org.drools.common.AgendaItem;
import org.drools.common.InternalFactHandle;
import org.drools.common.PropagationContextImpl;
@@ -209,42 +210,54 @@
public void testMVELDebugSymbols() throws DroolsParserException {
- final DrlParser parser = new DrlParser();
- final PackageDescr pkgDescr = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "mvel_rule.drl" ) ) );
+ MVELDebugHandler.setDebugMode( true );
+
+ try {
+ final DrlParser parser = new DrlParser();
+ final PackageDescr pkgDescr = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "mvel_rule.drl" ) ) );
- // just checking there is no parsing errors
- Assert.assertFalse( parser.getErrors().toString(),
- parser.hasErrors() );
+ // just checking there is no parsing errors
+ Assert.assertFalse( parser.getErrors().toString(),
+ parser.hasErrors() );
- final Package pkg = new Package( "org.drools" );
+ final Package pkg = new Package( "org.drools" );
- final RuleDescr ruleDescr = (RuleDescr) pkgDescr.getRules().get( 0 );
+ final RuleDescr ruleDescr = (RuleDescr) pkgDescr.getRules().get( 0 );
- final RuleBuilder builder = new RuleBuilder( );
-
- final PackageBuilder pkgBuilder = new PackageBuilder(pkg);
- final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
- Dialect dialect = pkgBuilder.getPackageBuilderConfiguration().getDialectRegistry().getDialectConfiguration( "mvel" ).getDialect();
-
- RuleBuildContext context = new RuleBuildContext(conf, pkg, ruleDescr, conf.getDialectRegistry(), dialect);
-
- builder.build( context );
+ final RuleBuilder builder = new RuleBuilder();
- Assert.assertTrue( context.getErrors().toString(),
- context.getErrors().isEmpty() );
+ final PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+ final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+ Dialect dialect = pkgBuilder.getPackageBuilderConfiguration().getDialectRegistry().getDialectConfiguration( "mvel" ).getDialect();
- final Rule rule = context.getRule();
+ RuleBuildContext context = new RuleBuildContext( conf,
+ pkg,
+ ruleDescr,
+ conf.getDialectRegistry(),
+ dialect );
- MVELConsequence mvelCons = (MVELConsequence) rule.getConsequence();
- String s = org.mvel.debug.DebugTools.decompile(mvelCons.getCompExpr());
+ builder.build( context );
+
+ Assert.assertTrue( context.getErrors().toString(),
+ context.getErrors().isEmpty() );
+
+ final Rule rule = context.getRule();
+
+ MVELConsequence mvelCons = (MVELConsequence) rule.getConsequence();
+ String s = org.mvel.debug.DebugTools.decompile( mvelCons.getCompExpr() );
+
+ int fromIndex = 0;
+ int count = 0;
+ while ( (fromIndex = s.indexOf( "DEBUG_SYMBOL",
+ fromIndex + 1 )) > -1 ) {
+ count++;
+ }
+ assertEquals( 4,
+ count );
+ } finally {
+ MVELDebugHandler.setDebugMode( false );
+ }
- int fromIndex=0;
- int count = 0;
- while ((fromIndex = s.indexOf( "DEBUG_SYMBOL", fromIndex+1 )) > -1) {
- count++;
- }
- assertEquals(4, count);
-
}
public void testX() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDebugHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDebugHandler.java 2007-08-24 15:32:43 UTC (rev 14532)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDebugHandler.java 2007-08-24 17:36:13 UTC (rev 14533)
@@ -84,11 +84,32 @@
//do nothing
}
+ /**
+ * Returns current debug mode.<br/>
+ * Holds lazy initialized internal reference to improve performance.<br/>
+ * Therefore you can't change System property "mvel.debugger" after isDebugMode is called at least once.<br/>
+ * <br/>
+ * To update debug mode at runtime use {@link MVELDebugHandler#setDebugMode(boolean)}<br/>
+ * @return <code>true</code> if debug mode is enabled.
+ */
public static boolean isDebugMode() {
if (debugMode==null) {
- debugMode = Boolean.valueOf(System.getProperty("mvel.debugger"));
+ debugMode = Boolean.valueOf(System.getProperty(DEBUG_LAUNCH_KEY));
}
return debugMode.booleanValue();
}
+
+ /**
+ * Sets debug mode on/off.<br/>
+ * Updates local MVELDebugHandler property and System property "mvel.debugger"<br/>
+ * <br/>
+ * There's no need to ever call this method unless you write junit tests!<br/>
+ *
+ * @param b is Debug enabled?
+ */
+ public static void setDebugMode(boolean b) {
+ debugMode = Boolean.valueOf( b );
+ System.setProperty( DEBUG_LAUNCH_KEY, debugMode.toString());
+ }
}
More information about the jboss-svn-commits
mailing list