Uploaded image for project: 'JBRULES'
  1. JBRULES
  2. JBRULES-3052

CCE when using variable bound to accumulate function in RHS code

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

    XMLWordPrintable

Details

    Description

      The rule in the test case crashes during execution with
      java.lang.ClassCastException: java.lang.Double cannot be cast to [Ljava.lang.Object;
      at org.drools.base.extractors.ArrayElementReader.getValue(ArrayElementReader.java:162)
      at org.drools.rule.Declaration.getValue(Declaration.java:219)

      This is meant to be part of AccumulateTest.java.

      public void execTestAccumulateMinMax() throws Exception {
      String drl = "package org.drools.test; " +
      "import org.drools.Cheese; " +
      "global java.util.List results; " +
      "rule minMax " +
      "when " +
      "$min1: Number( $min2: intValue ) " +
      "from accumulate( Cheese( $p: price ), $min3: min($p), $max: max($p) ) " +
      "then " +
      "results.add($min1); results.add($min2); results.add($min3); results.add($max); " +
      "end ";

      final Reader reader = new StringReader( drl );
      final RuleBase ruleBase = loadRuleBase( reader );
      final WorkingMemory wm = ruleBase.newStatefulSession();

      final List results = new ArrayList();
      wm.setGlobal( "results", results );
      final Cheese[] cheese = new Cheese[]

      { new Cheese( "Emmentaler", 4 ), new Cheese( "Appenzeller", 6 ), new Cheese( "Greyerzer", 2 ), new Cheese( "Raclette", 3 ), new Cheese( "Olmützer Quargel", 15 ), new Cheese( "Brie", 17 ), new Cheese( "Dolcelatte", 8 ) }

      ;

      final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
      for ( int i = 0; i < cheese.length; i++ )

      { cheeseHandles[i] = wm.insert( cheese[i] ); }

      // ---------------- 1st scenario
      wm.fireAllRules();
      assertEquals( 4, results.size() );
      assertEquals( results.get(0), Integer.valueOf( 2 ) );
      assertEquals( results.get(1), Integer.valueOf( 2 ) );
      assertEquals( results.get(2), Integer.valueOf( 2 ) );
      assertEquals( results.get(3), Integer.valueOf( 17 ) );
      }

      Attachments

        Activity

          People

            etirelli@redhat.com Edson Tirelli
            laune Wolfgang Laun (Inactive)
            Archiver:
            rhn-support-ceverson Clark Everson

            Dates

              Created:
              Updated:
              Resolved:
              Archived:

              PagerDuty