Details

    • Sub-task
    • Resolution: Done
    • Major
    • 7.0.0.Beta7
    • None
    • None
    • NEW
    • NEW

    Description

          public static class TMFileSetQuater extends AbstractReactiveObject {
              private final String name;
              private final Set<TMFileWithParentObj> members = new ReactiveSet<TMFileWithParentObj>();
              public TMFileSetQuater(String name) {
                  this.name = name;
              }
              public String getName() {
                  return name;
              }
              public Set<TMFileWithParentObj> getFiles() {
                  return members;
              }
          }
          
          @Test
          public void testWronglyMatchAlsoEqualsQuater() {
              String drl =
                      "import org.drools.compiler.xpath.*;\n" +
                      "import "+TMFileSetQuater.class.getCanonicalName()+";\n" +
                      "global java.util.Set duplicateNames; \n" +
                      "\n" +
                      "rule DIFF_FILES_BUT_WITH_SAME_FILENAME when\n" +
                      "  $ic1 : TMFileWithParentObj( parent instanceof TMFileSetQuater ,\n" + 
                      "                              $curName : name, $curId : id, \n" + 
                      "                              $ic2: /parent{#TMFileSetQuater}/files{name == $curName, id != $curId } )\n" +
                      "then\n" +
                      "  System.out.println( $ic1 + \" \" + $ic2 );\n" +
                      "  duplicateNames.add( $ic1.getName() );\n" +
                      "end\n";
      
              KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
                                                   .build()
                                                   .newKieSession();
              
              Set duplicateNames = new HashSet();
              ksession.setGlobal("duplicateNames", duplicateNames);
              
              TMFileSetQuater x = new TMFileSetQuater("X");
              TMFileWithParentObj file0 = new TMFileWithParentObj(0, "File0", 47, x);
              TMFileWithParentObj file1 = new TMFileWithParentObj(1, "File1", 47, x);
              TMFileWithParentObj file2 = new TMFileWithParentObj(2, "File0", 47, x);
              x.getFiles().addAll(Arrays.asList(new TMFileWithParentObj[]{file0, file1, file2}));
              
              ksession.insert( x );
              ksession.insert( file0 );
              ksession.insert( file1 );
              ksession.insert( file2 );
              ksession.fireAllRules();
              
              assertTrue( duplicateNames.contains("File0") );
              assertFalse( duplicateNames.contains("File1") );
          }
      

      Attachments

        Activity

          People

            mfusco@redhat.com Mario Fusco
            mmortari@redhat.com Matteo Mortari
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: