[jboss-svn-commits] JBL Code SVN: r20818 - in labs/jbossrules/trunk/drools-clips/src: test/java/org/drools/clips and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 26 13:59:49 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-06-26 13:59:49 -0400 (Thu, 26 Jun 2008)
New Revision: 20818
Modified:
labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Shell.java
labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java
Log:
JBRULES-720 Clips Parser
-We now set the ContextClassLoader for MVEL, so it can see Drools specific classes.
Modified: labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Shell.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Shell.java 2008-06-26 17:59:41 UTC (rev 20817)
+++ labs/jbossrules/trunk/drools-clips/src/main/java/org/drools/clips/Shell.java 2008-06-26 17:59:49 UTC (rev 20818)
@@ -378,10 +378,16 @@
appendable );
ParserContext context = new ParserContext();
+
String namespace = this.session.getAgenda().getFocus().getName();
Package pkg = this.ruleBase.getPackage( namespace );
+ if ( pkg == null ) {
+ this.packageBuilder.addPackage( createPackageDescr( namespace ) );
+ pkg = this.ruleBase.getPackage( namespace );
+
+ }
if ( pkg != null ) {
// only time this will be null is if we have yet to do any packagedescr work
@@ -408,12 +414,16 @@
this.factory.setNextFactory( data.getFunctionFactory() );
}
+ ClassLoader tempClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader( pkg.getPackageScopeClassLoader() );
+
ExpressionCompiler expr = new ExpressionCompiler( appendable.toString() );
Serializable executable = expr.compile( context );
MVEL.executeExpression( executable,
this,
this.factory );
+ Thread.currentThread().setContextClassLoader( tempClassLoader );
}
public void templateHandler(TypeDeclarationDescr typeDescr) {
Modified: labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java
===================================================================
--- labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java 2008-06-26 17:59:41 UTC (rev 20817)
+++ labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/ShellTest.java 2008-06-26 17:59:49 UTC (rev 20818)
@@ -256,6 +256,18 @@
public void testTemplateCreation() throws Exception {
this.shell.eval( "(deftemplate Person (slot name (type String) ) (slot age (type int) ) )" );
+ this.shell.eval( "(defrule xxx (Person (name ?name&bob) (age 30) ) => (printout t hello bob ) )" );
+
+ this.shell.eval( "(assert (Person (name bob) (age 30) ) )" );
+ this.shell.eval( "(run)" );
+
+ assertEquals( "hellobob",
+ new String( this.baos.toByteArray() ) );
+ }
+
+ public void testTemplateCreationWithJava() throws Exception {
+ this.shell.eval( "(deftemplate Person (slot name (type String) ) (slot age (type int) ) )" );
+
this.shell.eval( "(defrule yyy => (printout t yy \" \" (eq 1 1) ) ) )" );
Package pkg = shell.getStatefulSession().getRuleBase().getPackage( "MAIN" );
More information about the jboss-svn-commits
mailing list