[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