[jboss-svn-commits] JBL Code SVN: r9620 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Feb 19 16:43:17 EST 2007


Author: tirelli
Date: 2007-02-19 16:43:17 -0500 (Mon, 19 Feb 2007)
New Revision: 9620

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_logicalAssertions3.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Alarm.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ShadowProxyFactoryTest.java
Log:
JBRULES-614: fixing equals method generation for shadow proxy, to fix TMS problem

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Alarm.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Alarm.java	2007-02-19 21:03:17 UTC (rev 9619)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Alarm.java	2007-02-19 21:43:17 UTC (rev 9620)
@@ -49,4 +49,18 @@
         return true;
     }
 
+    /**
+     * @return the message
+     */
+    public String getMessage() {
+        return message;
+    }
+
+    /**
+     * @param message the message to set
+     */
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2007-02-19 21:03:17 UTC (rev 9619)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2007-02-19 21:43:17 UTC (rev 9620)
@@ -2264,7 +2264,7 @@
                       workingMemory.getObjects().get( 1 ) );
     }
 
-    public void FIXME_testLogicalAssertions() throws Exception {
+    public void testLogicalAssertions() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalAssertions.drl" ) ) );
         final Package pkg = builder.getPackage();
@@ -3910,4 +3910,55 @@
         }
     }
 
+    public void testLogicalAssertions3() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalAssertions3.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+
+        final List list = new ArrayList();
+        workingMemory.setGlobal( "events",
+                                 list );
+
+        // asserting the sensor object
+        final Sensor sensor = new Sensor( 150,
+                                        100 );
+        final FactHandle sensorHandle = workingMemory.assertObject( sensor );
+
+        workingMemory.fireAllRules();
+
+        // alarm must sound
+        assertEquals( 2,
+                      list.size() );
+        assertEquals( 2,
+                      workingMemory.getObjects().size() );
+
+        // modifying sensor
+        sensor.setTemperature( 125 );
+        workingMemory.modifyObject( sensorHandle, sensor );
+        workingMemory.fireAllRules();
+
+        // alarm must continue to sound
+        assertEquals( 4,
+                      list.size() );
+        assertEquals( 2,
+                      workingMemory.getObjects().size() );
+
+
+        // modifying sensor
+        sensor.setTemperature( 80 );
+        workingMemory.modifyObject( sensorHandle, sensor );
+        workingMemory.fireAllRules();
+
+        // no alarms anymore
+        assertEquals( 4,
+                      list.size() );
+        assertEquals( 1,
+                      workingMemory.getObjects().size() );
+
+    }
+
 }

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_logicalAssertions3.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_logicalAssertions3.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_logicalAssertions3.drl	2007-02-19 21:43:17 UTC (rev 9620)
@@ -0,0 +1,20 @@
+package org.drools
+
+global java.util.List events;
+
+rule "#1: hot"
+when
+    $s : Sensor( temperature > 100 )
+then
+    events.add( "It is hot: " + $s );
+    System.out.println("It is hot: " + $s);
+    assertLogical(new Alarm("FIRE"));
+end
+
+rule "#2: print out"
+when
+    Alarm( message == "FIRE" )
+then
+    events.add( "Fire alarm is ON" );
+    System.out.println("Fire alarm is ON");
+end 
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_logicalAssertions3.drl
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java	2007-02-19 21:03:17 UTC (rev 9619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ShadowProxyFactory.java	2007-02-19 21:43:17 UTC (rev 9620)
@@ -689,7 +689,7 @@
             mv.visitVarInsn( Opcodes.ALOAD,
                              1 );
             mv.visitTypeInsn( Opcodes.INSTANCEOF,
-                              className );
+                              Type.getInternalName( clazz ) );
             Label l4 = new Label();
             mv.visitJumpInsn( Opcodes.IFNE,
                               l4 );
@@ -704,7 +704,7 @@
             mv.visitVarInsn( Opcodes.ALOAD,
                              1 );
             mv.visitTypeInsn( Opcodes.CHECKCAST,
-                              className );
+                              Type.getInternalName( clazz ) );
             mv.visitVarInsn( Opcodes.ASTORE,
                              2 );
 
@@ -785,12 +785,12 @@
                                      2 );
                     if ( clazz.isInterface() ) {
                         mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
-                                            className,
+                                            Type.getInternalName( clazz ),
                                             method.getName(),
                                             Type.getMethodDescriptor( method ) );
                     } else {
                         mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
-                                            className,
+                                            Type.getInternalName( clazz ),
                                             method.getName(),
                                             Type.getMethodDescriptor( method ) );
                     }
@@ -835,12 +835,12 @@
                                      2 );
                     if ( clazz.isInterface() ) {
                         mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
-                                            className,
+                                            Type.getInternalName( clazz ),
                                             method.getName(),
                                             Type.getMethodDescriptor( method ) );
                     } else {
                         mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
-                                            className,
+                                            Type.getInternalName( clazz ),
                                             method.getName(),
                                             Type.getMethodDescriptor( method ) );
                     }
@@ -866,12 +866,12 @@
                                      2 );
                     if ( clazz.isInterface() ) {
                         mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
-                                            className,
+                                            Type.getInternalName( clazz ),
                                             method.getName(),
                                             Type.getMethodDescriptor( method ) );
                     } else {
                         mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
-                                            className,
+                                            Type.getInternalName( clazz ),
                                             method.getName(),
                                             Type.getMethodDescriptor( method ) );
                     }
@@ -923,7 +923,7 @@
                                    lastLabel,
                                    1 );
             mv.visitLocalVariable( "other",
-                                   "L" + className + ";",
+                                   Type.getDescriptor( clazz ),
                                    null,
                                    l0,
                                    lastLabel,

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ShadowProxyFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ShadowProxyFactoryTest.java	2007-02-19 21:03:17 UTC (rev 9619)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ShadowProxyFactoryTest.java	2007-02-19 21:43:17 UTC (rev 9620)
@@ -37,6 +37,10 @@
             Assert.assertEquals( originalPrice,
                                  cheeseProxy.getPrice() );
             Assert.assertSame( cheese, ((ShadowProxy)cheeseProxy).getShadowedObject() );
+            
+            // proxy must recongnize the original object on equals()/hashcode() calls
+            //Assert.assertEquals( cheeseProxy.hashCode(), cheese.hashCode() );
+            Assert.assertEquals( cheeseProxy, cheese );
 
             // changing original values
             final String actualType = "rotten stilton";




More information about the jboss-svn-commits mailing list