[jboss-svn-commits] JBL Code SVN: r9860 - in labs/jbossrules/trunk/drools-core: src/main/java/org/drools/base/mvel and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Feb 28 19:19:12 EST 2007
Author: mark.proctor at jboss.com
Date: 2007-02-28 19:19:12 -0500 (Wed, 28 Feb 2007)
New Revision: 9860
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
Modified:
labs/jbossrules/trunk/drools-core/.classpath
labs/jbossrules/trunk/drools-core/pom.xml
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
Log:
JBRULES-708 MVEL Integration
-Consequences now work
Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath 2007-03-01 00:19:05 UTC (rev 9859)
+++ labs/jbossrules/trunk/drools-core/.classpath 2007-03-01 00:19:12 UTC (rev 9860)
@@ -5,8 +5,8 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta6/mvel14-1.2beta6.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta13/mvel14-1.2beta13.jar"/>
<classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-core/pom.xml 2007-03-01 00:19:05 UTC (rev 9859)
+++ labs/jbossrules/trunk/drools-core/pom.xml 2007-03-01 00:19:12 UTC (rev 9860)
@@ -36,7 +36,7 @@
<dependency>
<groupId>org.mvel</groupId>
<artifactId>mvel14</artifactId>
- <version>1.2beta6</version>
+ <version>1.2beta13</version>
</dependency>
</dependencies>
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java 2007-03-01 00:19:12 UTC (rev 9860)
@@ -0,0 +1,35 @@
+package org.drools.base.mvel;
+
+import java.io.Serializable;
+
+import org.drools.WorkingMemory;
+import org.drools.rule.Declaration;
+import org.drools.spi.Consequence;
+import org.drools.spi.FieldValue;
+import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.PredicateExpression;
+import org.drools.spi.ReturnValueExpression;
+import org.drools.spi.Tuple;
+import org.mvel.MVEL;
+
+public class MVELConsequence
+ implements
+ Consequence {
+ private static final long serialVersionUID = 320L;
+
+ private final Serializable expr;
+ private final DroolsMVELFactory factory;
+
+ public MVELConsequence(final Serializable expr,
+ final DroolsMVELFactory factory) {
+ this.expr = expr;
+ this.factory = factory;
+ }
+
+ public void evaluate(KnowledgeHelper knowledgeHelper,
+ WorkingMemory workingMemory) throws Exception {
+ this.factory.setContext( knowledgeHelper.getTuple(), null, workingMemory );
+ MVEL.executeExpression( this.expr,
+ factory );
+ }
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-03-01 00:19:05 UTC (rev 9859)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-03-01 00:19:12 UTC (rev 9860)
@@ -136,23 +136,22 @@
final byte[] bytes = null;
if ( this.store != null ) {
- return (byte[]) this.store.get( resourceName.replace( '.',
- '/' ) + ".class" );
+ return (byte[]) this.store.get( resourceName );
}
return bytes;
}
public void write(final String resourceName,
final byte[] clazzData) throws RuntimeDroolsException {
- if ( this.store.put( resourceName.replace( '.',
- '/' ) + ".class",
+ if ( this.store.put( resourceName,
clazzData ) != null ) {
// we are updating an existing class so reload();
reload();
} else {
try {
- wire( resourceName );
+ wire( convertResourceToClassName( resourceName ) );
} catch ( final Exception e ) {
+ e.printStackTrace();
throw new RuntimeDroolsException( e );
}
}
@@ -161,8 +160,7 @@
public void remove(final String resourceName) throws RuntimeDroolsException {
this.invokerLookups.remove( resourceName );
- if ( this.store.remove( resourceName.replace( '.',
- '/' ) + ".class" ) != null ) {
+ if ( this.store.remove( convertClassToResourcePath( resourceName ) ) != null ) {
// we need to make sure the class is removed from the classLoader
reload();
}
@@ -176,9 +174,7 @@
for ( final Iterator it = this.store.keySet().iterator(); it.hasNext(); ) {
final String name = (String) it.next();
- names.add( name.replace( '/',
- '.' ).substring( 0,
- name.length() - 6 ) );
+ names.add( name );
}
return (String[]) names.toArray( new String[this.store.size()] );
@@ -300,7 +296,7 @@
final Class clazz = findLoadedClass( name );
if ( clazz == null ) {
- final byte[] clazzBytes = read( name );
+ final byte[] clazzBytes = read( convertClassToResourcePath(name) );
if ( clazzBytes != null ) {
return defineClass( name,
clazzBytes,
@@ -360,5 +356,31 @@
}
}
}
+
+ /**
+ * Please do not use - internal
+ * org/my/Class.xxx -> org.my.Class
+ */
+ public static String convertResourceToClassName( final String pResourceName ) {
+ return stripExtension(pResourceName).replace('/', '.');
+ }
+ /**
+ * Please do not use - internal
+ * org.my.Class -> org/my/Class.class
+ */
+ public static String convertClassToResourcePath( final String pName ) {
+ return pName.replace('.', '/') + ".class";
+ }
+
+ /**
+ * Please do not use - internal
+ * org/my/Class.xxx -> org/my/Class
+ */
+ public static String stripExtension( final String pResourceName ) {
+ final int i = pResourceName.lastIndexOf('.');
+ final String withoutExtension = pResourceName.substring(0, i);
+ return withoutExtension;
+ }
+
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list