[jboss-svn-commits] JBL Code SVN: r6033 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests drools-compiler/src/test/resources/org/drools/reteoo drools-core/src/main/java/org/drools/reteoo

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 30 15:24:39 EDT 2006


Author: tirelli
Date: 2006-08-30 15:24:20 -0400 (Wed, 30 Aug 2006)
New Revision: 6033

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrs
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrsPerson
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/ThreeColumnsWithConstraints
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BaseNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
Log:

JBRULES-440:

  * Fixing shared node caching problem
  * Fixing node removal methods to correctly handle node sharing
  * Test case updated



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	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -2740,6 +2740,12 @@
             builder1.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_RemovePackage.drl" ) ) );
             ruleBaseWM.addPackage( builder1.getPackage() );
             workingMemory.fireAllRules();
+            
+            ruleBaseWM.removePackage( packageName );
+            ruleBaseWM.addPackage( builder1.getPackage() );
+            
+            ruleBaseWM.removePackage( packageName );
+            ruleBaseWM.addPackage( builder1.getPackage() );
         } catch ( Exception e ) {
             Assert.fail( "Removing packages should not throw any exception: " + e.getMessage() );
         }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrs
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrs	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrs	2006-08-30 19:24:20 UTC (rev 6033)
@@ -302,7 +302,7 @@
       </org.drools.rule.Package>
     </entry>
   </map>
-  <byte-array>rO0ABXQAJGNhZTUwNDliLTY5Y2QtNDI0ZC05NmEwLWJkMGExYzg5ZWNmMnNyAClvcmcuZHJvb2xz
+  <byte-array>rO0ABXQAJDllODZkODIxLTRlNzgtNGRkOS1hZjE0LWJjYzFkNTY3ZjMwNHNyAClvcmcuZHJvb2xz
 LnJldGVvby5SZXRlb29GYWN0SGFuZGxlRmFjdG9yeQAAAAAAAAEsAgAAeHIAK29yZy5kcm9vbHMu
 Y29tbW9uLkFic3RyYWN0RmFjdEhhbmRsZUZhY3RvcnlrwcaUre4SdAIAA0oAB2NvdW50ZXJKAAJp
 ZEwADmZhY3RIYW5kbGVQb29sdAAkTG9yZy9kcm9vbHMvdXRpbC9QcmltaXRpdmVMb25nU3RhY2s7
@@ -360,8 +360,8 @@
 ZHJvb2xzL3JldGVvby9PYmplY3RUeXBlTm9kZTtMAA9vYmplY3RUeXBlTm9kZXNxAH4AEEwACHJl
 c29sdmVydAAjTG9yZy9kcm9vbHMvc3BpL09iamVjdFR5cGVSZXNvbHZlcjt4cgAeb3JnLmRyb29s
 cy5yZXRlb28uT2JqZWN0U291cmNlndnDP8dFe58CAAFMAAtvYmplY3RTaW5rc3QAIkxvcmcvZHJv
-b2xzL3JldGVvby9PYmplY3RTaW5rTGlzdDt4cgAab3JnLmRyb29scy5yZXRlb28uQmFzZU5vZGWs
-lo5z5iuC3QIABFoAEGF0dGFjaGluZ05ld05vZGVaAAloYXNNZW1vcnlJAAJpZEkAC3NoYXJlZENv
+b2xzL3JldGVvby9PYmplY3RTaW5rTGlzdDt4cgAab3JnLmRyb29scy5yZXRlb28uQmFzZU5vZGVp
+3Q9BPVB7bwIABFoAEGF0dGFjaGluZ05ld05vZGVaAAloYXNNZW1vcnlJAAJpZEkAC3NoYXJlZENv
 dW50eHAAAAAAAAAAAAAAc3IAJ29yZy5kcm9vbHMucmV0ZW9vLkRlZmF1bHRPYmplY3RTaW5rTGlz
 dPo+R7tpyPGBAgAAeHIAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAA
 AAB3BAAAAAF4c3IAIG9yZy5kcm9vbHMucmV0ZW9vLk9iamVjdFR5cGVOb2RlE2WjT2PEIJICAAJM
@@ -485,10 +485,10 @@
 dWlsZGVyGB1Z+4/IA/ACAAlJABdjdXJyZW50T2Zmc2V0QWRqdXN0bWVudEkAAmlkTAANYXR0YWNo
 ZWROb2Rlc3EAfgAQTAAMZGVjbGFyYXRpb25zcQB+ABBMAAxvYmplY3RTb3VyY2VxAH4AN0wACm9i
 amVjdFR5cGVxAH4AEEwACHJlc29sdmVycQB+AB9MAAVydWxlc3EAfgAQTAALdHVwbGVTb3VyY2Vx
-AH4AQXhwAAAAAAAAABtzcQB+AA0/QAAAAAAAGHcIAAAAIAAAABJxAH4AuHEAfgC4cQB+ARhxAH4B
-GHEAfgEpcQB+ASlxAH4A/XEAfgD9cQB+AQBxAH4BAHEAfgBEcQB+AERxAH4BDHEAfgEMcQB+ACpx
-AH4AKnEAfgBGcQB+AEZxAH4BI3EAfgEjcQB+APtxAH4A+3EAfgEJcQB+AQlxAH4BFXEAfgEVcQB+
-ADhxAH4AOHEAfgA9cQB+AD1xAH4BB3EAfgEHcQB+AEJxAH4AQnEAfgETcQB+ARN4c3EAfgANP0AA
+AH4AQXhwAAAAAAAAABtzcQB+AA0/QAAAAAAAGHcIAAAAIAAAABJxAH4AQnEAfgBCcQB+ASNxAH4B
+I3EAfgEJcQB+AQlxAH4A/XEAfgD9cQB+ADhxAH4AOHEAfgA9cQB+AD1xAH4BE3EAfgETcQB+AQdx
+AH4BB3EAfgEYcQB+ARhxAH4AKnEAfgAqcQB+ARVxAH4BFXEAfgEpcQB+ASlxAH4AuHEAfgC4cQB+
+AERxAH4ARHEAfgEAcQB+AQBxAH4A+3EAfgD7cQB+AEZxAH4ARnEAfgEMcQB+AQx4c3EAfgANP0AA
 AAAAAAx3CAAAABAAAAAAeHEAfgETc3IAF2phdmEudXRpbC5MaW5rZWRIYXNoTWFwNMBOXBBswPsC
 AAFaAAthY2Nlc3NPcmRlcnhxAH4ADT9AAAAAAAAMdwgAAAAQAAAAAXEAfgDJc3IAEWphdmEubGFu
 Zy5JbnRlZ2VyEuKgpPeBhzgCAAFJAAV2YWx1ZXhyABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsC

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrsPerson
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrsPerson	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrsPerson	2006-08-30 19:24:20 UTC (rev 6033)
@@ -269,7 +269,7 @@
       </org.drools.rule.Package>
     </entry>
   </map>
-  <byte-array>rO0ABXQAJDY2NzNmYWZkLThhODUtNDZjNC05MGIxLTIzZTRjODNmOGI2MnNyAClvcmcuZHJvb2xz
+  <byte-array>rO0ABXQAJGUyMzA2OTRmLWEzNWItNDM4MC1iN2NmLWZiOWFjZDhkNDZiZHNyAClvcmcuZHJvb2xz
 LnJldGVvby5SZXRlb29GYWN0SGFuZGxlRmFjdG9yeQAAAAAAAAEsAgAAeHIAK29yZy5kcm9vbHMu
 Y29tbW9uLkFic3RyYWN0RmFjdEhhbmRsZUZhY3RvcnlrwcaUre4SdAIAA0oAB2NvdW50ZXJKAAJp
 ZEwADmZhY3RIYW5kbGVQb29sdAAkTG9yZy9kcm9vbHMvdXRpbC9QcmltaXRpdmVMb25nU3RhY2s7
@@ -327,8 +327,8 @@
 ZHJvb2xzL3JldGVvby9PYmplY3RUeXBlTm9kZTtMAA9vYmplY3RUeXBlTm9kZXNxAH4AEEwACHJl
 c29sdmVydAAjTG9yZy9kcm9vbHMvc3BpL09iamVjdFR5cGVSZXNvbHZlcjt4cgAeb3JnLmRyb29s
 cy5yZXRlb28uT2JqZWN0U291cmNlndnDP8dFe58CAAFMAAtvYmplY3RTaW5rc3QAIkxvcmcvZHJv
-b2xzL3JldGVvby9PYmplY3RTaW5rTGlzdDt4cgAab3JnLmRyb29scy5yZXRlb28uQmFzZU5vZGWs
-lo5z5iuC3QIABFoAEGF0dGFjaGluZ05ld05vZGVaAAloYXNNZW1vcnlJAAJpZEkAC3NoYXJlZENv
+b2xzL3JldGVvby9PYmplY3RTaW5rTGlzdDt4cgAab3JnLmRyb29scy5yZXRlb28uQmFzZU5vZGVp
+3Q9BPVB7bwIABFoAEGF0dGFjaGluZ05ld05vZGVaAAloYXNNZW1vcnlJAAJpZEkAC3NoYXJlZENv
 dW50eHAAAAAAAAAAAAAAc3IAJ29yZy5kcm9vbHMucmV0ZW9vLkRlZmF1bHRPYmplY3RTaW5rTGlz
 dPo+R7tpyPGBAgAAeHIAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAA
 AAB3BAAAAAF4c3IAIG9yZy5kcm9vbHMucmV0ZW9vLk9iamVjdFR5cGVOb2RlE2WjT2PEIJICAAJM
@@ -473,8 +473,8 @@
 fgEXcQB+AV54c3EAfgDadXEAfgDdAAAAAXNxAH4BIwAAAAF1cQB+AE4AAAAAcQB+AWhxAH4BgXEA
 fgFccQB+ADhxAH4BK3EAfgFPcQB+AT14cQB+AMZxAH4AKnhxAH4AxnEAfgAyeHNxAH4AJQAAAAF3
 BAAAAAFxAH4AOHhxAH4BQXNxAH4AJQAAAAR3BAAAAARxAH4BHHEAfgEvcQB+AVNxAH4BQXhxAH4A
-z3EAfgAjc3EAfgANP0AAAAAAAAx3CAAAABAAAAADcQB+AQZxAH4Bb3EAfgDwcQB+AV5xAH4Az3EA
-fgAqeHNyACZvcmcuZHJvb2xzLnNwaS5DbGFzc09iamVjdFR5cGVSZXNvbHZlcgKE2PxwsbDrAgAB
+z3EAfgAjc3EAfgANP0AAAAAAAAx3CAAAABAAAAADcQB+AQZxAH4Bb3EAfgDPcQB+ACpxAH4A8HEA
+fgFeeHNyACZvcmcuZHJvb2xzLnNwaS5DbGFzc09iamVjdFR5cGVSZXNvbHZlcgKE2PxwsbDrAgAB
 TAAKb2JqZWN0VHlwZXQAQ0xvcmcvZHJvb2xzL3NwaS9DbGFzc09iamVjdFR5cGVSZXNvbHZlciRN
 b2RpZmllYWJsZUNsYXNzT2JqZWN0VHlwZTt4cHNyAEFvcmcuZHJvb2xzLnNwaS5DbGFzc09iamVj
 dFR5cGVSZXNvbHZlciRNb2RpZmllYWJsZUNsYXNzT2JqZWN0VHlwZUSlq5QCN/s1AgAAeHEAfgB6
@@ -482,12 +482,12 @@
 A/ACAAlJABdjdXJyZW50T2Zmc2V0QWRqdXN0bWVudEkAAmlkTAANYXR0YWNoZWROb2Rlc3EAfgAQ
 TAAMZGVjbGFyYXRpb25zcQB+ABBMAAxvYmplY3RTb3VyY2VxAH4AN0wACm9iamVjdFR5cGVxAH4A
 EEwACHJlc29sdmVycQB+AB9MAAVydWxlc3EAfgAQTAALdHVwbGVTb3VyY2VxAH4APXhwAAAAAAAA
-AClzcQB+AA0/QAAAAAAAMHcIAAAAQAAAABxxAH4AOHEAfgA4cQB+AYFxAH4BgXEAfgEvcQB+AS9x
-AH4BT3EAfgFPcQB+ATpxAH4BOnEAfgA/cQB+AD9xAH4BU3EAfgFTcQB+AVxxAH4BXHEAfgF8cQB+
-AXxxAH4BdHEAfgF0cQB+AStxAH4BK3EAfgFKcQB+AUpxAH4BPXEAfgE9cQB+AShxAH4BKHEAfgFM
-cQB+AUxxAH4BOHEAfgE4cQB+AWhxAH4BaHEAfgAqcQB+ACpxAH4BQXEAfgFBcQB+AW1xAH4BbXEA
-fgEccQB+ARxxAH4BJnEAfgEmcQB+AV5xAH4BXnEAfgDfcQB+AN9xAH4Bb3EAfgFvcQB+AWZxAH4B
-ZnEAfgFjcQB+AWNxAH4BanEAfgFqeHNxAH4ADT9AAAAAAAAMdwgAAAAQAAAAAXEAfgCCcQB+AFN4
+AClzcQB+AA0/QAAAAAAAMHcIAAAAQAAAABxxAH4BaHEAfgFocQB+AXxxAH4BfHEAfgFBcQB+AUFx
+AH4BTHEAfgFMcQB+AStxAH4BK3EAfgAqcQB+ACpxAH4BHHEAfgEccQB+AShxAH4BKHEAfgEmcQB+
+ASZxAH4A33EAfgDfcQB+AVxxAH4BXHEAfgFtcQB+AW1xAH4BanEAfgFqcQB+AT1xAH4BPXEAfgE6
+cQB+ATpxAH4AOHEAfgA4cQB+AVNxAH4BU3EAfgFvcQB+AW9xAH4AP3EAfgA/cQB+AThxAH4BOHEA
+fgFmcQB+AWZxAH4BY3EAfgFjcQB+AV5xAH4BXnEAfgGBcQB+AYFxAH4BSnEAfgFKcQB+AS9xAH4B
+L3EAfgF0cQB+AXRxAH4BT3EAfgFPeHNxAH4ADT9AAAAAAAAMdwgAAAAQAAAAAXEAfgCCcQB+AFN4
 cQB+ACpzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVy
 eHEAfgANP0AAAAAAAAx3CAAAABAAAAADcQB+AHtzcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GH
 OAIAAUkABXZhbHVleHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhwAAAABXEAfgCpc3EA

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/ThreeColumnsWithConstraints
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/ThreeColumnsWithConstraints	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/ThreeColumnsWithConstraints	2006-08-30 19:24:20 UTC (rev 6033)
@@ -429,7 +429,7 @@
       </org.drools.rule.Package>
     </entry>
   </map>
-  <byte-array>rO0ABXQAJGM3Mzg2YWNjLTEzNzItNGEzOS05NWY5LTExMDNiMjhjZjQyYXNyAClvcmcuZHJvb2xz
+  <byte-array>rO0ABXQAJDE5NDUyOWI3LWE1MzctNDU3My1iZmRmLTZjNmM4MjFmZTRjM3NyAClvcmcuZHJvb2xz
 LnJldGVvby5SZXRlb29GYWN0SGFuZGxlRmFjdG9yeQAAAAAAAAEsAgAAeHIAK29yZy5kcm9vbHMu
 Y29tbW9uLkFic3RyYWN0RmFjdEhhbmRsZUZhY3RvcnlrwcaUre4SdAIAA0oAB2NvdW50ZXJKAAJp
 ZEwADmZhY3RIYW5kbGVQb29sdAAkTG9yZy9kcm9vbHMvdXRpbC9QcmltaXRpdmVMb25nU3RhY2s7
@@ -487,8 +487,8 @@
 ZHJvb2xzL3JldGVvby9PYmplY3RUeXBlTm9kZTtMAA9vYmplY3RUeXBlTm9kZXNxAH4AEEwACHJl
 c29sdmVydAAjTG9yZy9kcm9vbHMvc3BpL09iamVjdFR5cGVSZXNvbHZlcjt4cgAeb3JnLmRyb29s
 cy5yZXRlb28uT2JqZWN0U291cmNlndnDP8dFe58CAAFMAAtvYmplY3RTaW5rc3QAIkxvcmcvZHJv
-b2xzL3JldGVvby9PYmplY3RTaW5rTGlzdDt4cgAab3JnLmRyb29scy5yZXRlb28uQmFzZU5vZGWs
-lo5z5iuC3QIABFoAEGF0dGFjaGluZ05ld05vZGVaAAloYXNNZW1vcnlJAAJpZEkAC3NoYXJlZENv
+b2xzL3JldGVvby9PYmplY3RTaW5rTGlzdDt4cgAab3JnLmRyb29scy5yZXRlb28uQmFzZU5vZGVp
+3Q9BPVB7bwIABFoAEGF0dGFjaGluZ05ld05vZGVaAAloYXNNZW1vcnlJAAJpZEkAC3NoYXJlZENv
 dW50eHAAAAAAAAAAAAAAc3IAJ29yZy5kcm9vbHMucmV0ZW9vLkRlZmF1bHRPYmplY3RTaW5rTGlz
 dPo+R7tpyPGBAgAAeHIAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAA
 AAB3BAAAAAF4c3IAIG9yZy5kcm9vbHMucmV0ZW9vLk9iamVjdFR5cGVOb2RlE2WjT2PEIJICAAJM
@@ -604,8 +604,8 @@
 ABdjdXJyZW50T2Zmc2V0QWRqdXN0bWVudEkAAmlkTAANYXR0YWNoZWROb2Rlc3EAfgAQTAAMZGVj
 bGFyYXRpb25zcQB+ABBMAAxvYmplY3RTb3VyY2VxAH4ANUwACm9iamVjdFR5cGVxAH4AEEwACHJl
 c29sdmVycQB+AB9MAAVydWxlc3EAfgAQTAALdHVwbGVTb3VyY2VxAH4ANHhwAAAAAAAAAAlzcQB+
-AA0/QAAAAAAADHcIAAAAEAAAAAZxAH4Ar3EAfgCvcQB+AORxAH4A5HEAfgA3cQB+ADdxAH4A3HEA
-fgDccQB+AOJxAH4A4nEAfgAqcQB+ACp4c3EAfgANP0AAAAAAAAx3CAAAABAAAAAFcQB+AMJxAH4A
+AA0/QAAAAAAADHcIAAAAEAAAAAZxAH4A3HEAfgDccQB+AOJxAH4A4nEAfgA3cQB+ADdxAH4A5HEA
+fgDkcQB+ACpxAH4AKnEAfgCvcQB+AK94c3EAfgANP0AAAAAAAAx3CAAAABAAAAAFcQB+AMJxAH4A
 tnEAfgDRcQB+AMNxAH4AunEAfgC5cQB+AMpxAH4AyXEAfgDBcQB+AL54cQB+AORzcgAXamF2YS51
 dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHEAfgANP0AAAAAAAAx3
 CAAAABAAAAABcQB+AMBzcgARamF2YS5sYW5nLkludGVnZXIS4qCk94GHOAIAAUkABXZhbHVleHIA

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -202,15 +202,17 @@
 
     public void remove(final BaseNode node,
                        final ReteooWorkingMemory[] workingMemories) {
-        this.objectSinks.remove( (ObjectSink) node );
+        if( !node.isInUse()) {
+            this.objectSinks.remove( (ObjectSink) node );
+        }
         removeShare();
-        if ( this.sharedCount < 0 ) {
+        if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
-            this.objectSource.remove( this,
-                                      workingMemories );
         }
+        this.objectSource.remove( this,
+                                  workingMemories );
     }
 
     /**
@@ -221,7 +223,7 @@
     }
 
     public String toString() {
-        return "[AlphaNode constraint=" + this.constraint + "]";
+        return "[AlphaNode("+this.id+") constraint=" + this.constraint + "]";
     }
 
     public int hashCode() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BaseNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BaseNode.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BaseNode.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -122,10 +122,18 @@
      * @return
      */
     public boolean isShared() {
-        return (this.sharedCount == 0) ? false : true;
+        return this.sharedCount > 0;
     }
 
     /**
+     * Returns true in case the current node is in use (is referenced by any other node)
+     * @return
+     */
+    public boolean isInUse() {
+        return this.sharedCount >= 0;
+    }
+
+    /**
      * Returns the number of times the node is shared
      * @return
      *      int value indicating the share count.
@@ -141,4 +149,7 @@
         return this.id;
     }
 
+    public String toString() {
+        return "[" + this.getClass().getSimpleName() + "(" + this.id + ")]";
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -123,19 +123,20 @@
 
     public void remove(final BaseNode node,
                        final ReteooWorkingMemory[] workingMemories) {
-        getTupleSinks().remove( node );
+        if( !node.isInUse()) {
+            getTupleSinks().remove( node );
+        }
         removeShare();
 
-        if ( this.sharedCount < 0 ) {
+        if ( ! this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
-
-            this.rightInput.remove( this,
-                                    workingMemories );
-            this.leftInput.remove( this,
-                                   workingMemories );
         }
+        this.rightInput.remove( this,
+                                workingMemories );
+        this.leftInput.remove( this,
+                               workingMemories );
 
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -244,15 +244,17 @@
 
     public void remove(final BaseNode node,
                        final ReteooWorkingMemory[] workingMemories) {
-        getTupleSinks().remove( node );
+        if( !node.isInUse() ) {
+            getTupleSinks().remove( node );
+        }
         removeShare();
-        if ( this.sharedCount < 0 ) {
+        if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
-            this.tupleSource.remove( this,
-                                     workingMemories );
         }
+        this.tupleSource.remove( this,
+                                 workingMemories );
     }
 
     public Object createMemory(final RuleBaseConfiguration config) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -122,10 +122,10 @@
             // first purge the network of all future uses of the 'from' facts           
             for ( final Iterator it = matches.values().iterator(); it.hasNext(); ) {
                 final TupleMatch tupleMatch = (TupleMatch) it.next();
-                workingMemory.getFactHandleFactory().destroyFactHandle( tupleMatch.getObjectMatches().getFactHandle() );
                 propagateRetractTuple( tupleMatch,
                                        context,
                                        workingMemory );
+                workingMemory.getFactHandleFactory().destroyFactHandle( tupleMatch.getObjectMatches().getFactHandle() );
             }      
             
             // now all existing matches must now be cleared and the DataProvider re-processed.
@@ -150,10 +150,10 @@
         if ( !matches.isEmpty() ) {
             for ( final Iterator it = matches.values().iterator(); it.hasNext(); ) {
                 final TupleMatch tupleMatch = (TupleMatch) it.next();
-                workingMemory.getFactHandleFactory().destroyFactHandle( tupleMatch.getObjectMatches().getFactHandle() );
                 propagateRetractTuple( tupleMatch,
                                        context,
                                        workingMemory );
+                workingMemory.getFactHandleFactory().destroyFactHandle( tupleMatch.getObjectMatches().getFactHandle() );
             }
         }
     }
@@ -184,16 +184,18 @@
 
     public void remove(BaseNode node,
                        ReteooWorkingMemory[] workingMemories) {
-        getTupleSinks().remove( node );
+        if( !node.isInUse() ) {
+            getTupleSinks().remove( node );
+        }
         removeShare();
 
-        if ( this.sharedCount < 0 ) {
+        if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
-            this.tupleSource.remove( this,
-                                     workingMemories );
         }
+        this.tupleSource.remove( this,
+                                 workingMemories );
     }
 
     public void updateNewNode(ReteooWorkingMemory workingMemory,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -276,15 +276,17 @@
 
     public void remove(final BaseNode node,
                        final ReteooWorkingMemory[] workingMemories) {
-        getTupleSinks().remove( node );
+        if( !node.isInUse() ) {
+            getTupleSinks().remove( node );
+        }
         removeShare();
-        if ( this.sharedCount < 0 ) {
+        if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
-            this.objectSource.remove( this,
-                                      workingMemories );
         }
+        this.objectSource.remove( this,
+                                  workingMemories );
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -242,9 +242,11 @@
 
     public void remove(final BaseNode node,
                        final ReteooWorkingMemory[] workingMemories) {
-        this.objectSinks.remove( (ObjectSink) node );
+        if( !node.isInUse()) {
+            this.objectSinks.remove( (ObjectSink) node );
+        }
         removeShare();
-        if ( this.sharedCount < 0 ) {
+        if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
@@ -271,7 +273,7 @@
     }
 
     public String toString() {
-        return "[ObjectTypeNode objectType=" + this.objectType + "]";
+        return "[ObjectTypeNode("+this.id+") objectType=" + this.objectType + "]";
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -547,6 +547,13 @@
 
             node = candidate;
         } else {
+            if( !node.isInUse() ) {
+                if ( this.workingMemories.length == 0 ) {
+                    node.attach();
+                } else {
+                    node.attach( this.workingMemories );
+                }
+            }
             node.addShare();
             this.id--;
         }
@@ -640,6 +647,13 @@
 
             node = candidate;
         } else {
+            if( !node.isInUse() ) {
+                if ( this.workingMemories.length == 0 ) {
+                    node.attach();
+                } else {
+                    node.attach( this.workingMemories );
+                }
+            }
             node.addShare();
             this.id--;
         }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2006-08-30 18:54:05 UTC (rev 6032)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2006-08-30 19:24:20 UTC (rev 6033)
@@ -127,12 +127,12 @@
 
     public void remove(final BaseNode node,
                        final ReteooWorkingMemory[] workingMemories) {
-        getObjectSinks().remove( (ObjectSink) node );
+        if( !node.isInUse() ) {
+            getObjectSinks().remove( (ObjectSink) node );
+        }
         removeShare();
-        if ( this.sharedCount < 0 ) {
-            this.tupleSource.remove( this,
-                                     workingMemories );
-        }
+        this.tupleSource.remove( this,
+                                 workingMemories );
     }
 
 }




More information about the jboss-svn-commits mailing list