[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