Search in sources :

Example 1 with Person

use of org.drools.traits.compiler.Person in project drools by kiegroup.

the class TraitTest method testIsAOperator.

@Test
public void testIsAOperator() {
    String source = "org/drools/compiler/factmodel/traits/testTraitIsA2.drl";
    KieSession ksession = getSession(source);
    TraitFactoryImpl.setMode(mode, ksession.getKieBase());
    AgendaEventListener ael = mock(AgendaEventListener.class);
    ksession.addEventListener(ael);
    Person student = new Person("student", 18);
    ksession.insert(student);
    ksession.fireAllRules();
    ArgumentCaptor<AfterMatchFiredEvent> cap = ArgumentCaptor.forClass(AfterMatchFiredEvent.class);
    verify(ael, times(3)).afterMatchFired(cap.capture());
    List<AfterMatchFiredEvent> values = cap.getAllValues();
    assertThat(values.get(0).getMatch().getRule().getName(), is("create student"));
    assertThat(values.get(1).getMatch().getRule().getName(), is("print student"));
    assertThat(values.get(2).getMatch().getRule().getName(), is("print school"));
}
Also used : DebugAgendaEventListener(org.kie.api.event.rule.DebugAgendaEventListener) AgendaEventListener(org.kie.api.event.rule.AgendaEventListener) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.traits.compiler.Person) AfterMatchFiredEvent(org.kie.api.event.rule.AfterMatchFiredEvent) CommonTraitTest(org.drools.traits.compiler.CommonTraitTest) Test(org.junit.Test)

Example 2 with Person

use of org.drools.traits.compiler.Person in project drools by kiegroup.

the class MetadataTest method testURIsOnLegacyClasses.

@Test
public void testURIsOnLegacyClasses() {
    Person p = new Person();
    URI uri = MetadataContainer.getIdentifier(p);
    assertEquals(URI.create("urn:" + p.getClass().getPackage().getName() + "/" + p.getClass().getSimpleName() + "/" + System.identityHashCode(p)), uri);
}
Also used : Person(org.drools.traits.compiler.Person) URI(java.net.URI) Test(org.junit.Test)

Example 3 with Person

use of org.drools.traits.compiler.Person in project drools by kiegroup.

the class TraitTypeGenerationTest method testIsAWith2KContainers.

@Test
public void testIsAWith2KContainers() {
    // BZ-996056
    String str = "import org.drools.traits.compiler.Person\n" + "\n" + "global java.util.List students\n" + "\n" + "declare trait Student\n" + "    school : String\n" + "end\n" + "\n" + "rule \"create student\" \n" + "    when\n" + "        $student : Person( age < 26, this not isA Student )\n" + "    then\n" + "        Student s = don( $student, Student.class );\n" + "        s.setSchool(\"Masaryk University\");\n" + "        update( $student );\n" + "end\n" + "\n" + "rule \"found student\"\n" + "    salience 10\n" + "    when\n" + "        student : Person( this isA Student )\n" + "    then\n" + "        students.add(student);\n" + "end";
    KieServices ks = KieServices.Factory.get();
    KieFileSystem kfs = ks.newKieFileSystem();
    kfs.write("src/main/resources/isA.drl", str);
    KieBuilder kbuilder = ks.newKieBuilder(kfs);
    kbuilder.buildAll();
    assertEquals(0, kbuilder.getResults().getMessages().size());
    ks.newKieContainer(kbuilder.getKieModule().getReleaseId()).getKieBase();
    KieSession ksession = ks.newKieContainer(kbuilder.getKieModule().getReleaseId()).newKieSession();
    assertNotNull(ksession);
    List students = new ArrayList();
    ksession.setGlobal("students", students);
    ksession.insert(new Person("tom", 20));
    ksession.fireAllRules();
    assertEquals(1, students.size());
}
Also used : KieFileSystem(org.kie.api.builder.KieFileSystem) ArrayList(java.util.ArrayList) KieServices(org.kie.api.KieServices) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) KieBuilder(org.kie.api.builder.KieBuilder) Person(org.drools.traits.compiler.Person) CommonTraitTest(org.drools.traits.compiler.CommonTraitTest) Test(org.junit.Test)

Example 4 with Person

use of org.drools.traits.compiler.Person in project drools by kiegroup.

the class TraitTest method testTMSConsistencyWithNonTraitableBeans.

@Test
public void testTMSConsistencyWithNonTraitableBeans() {
    String s1 = "package org.drools.test;\n" + "import org.drools.traits.compiler.Person; \n" + "import org.drools.core.factmodel.traits.Traitable; \n" + "" + "declare Person @Traitable end \n" + "" + "rule \"Init\"\n" + "when\n" + "then\n" + "  insertLogical( new Person( \"x\", 18 ) );\n" + "end\n" + "\n" + "declare trait Student\n" + "  age  : int\n" + "  name : String\n" + "end\n" + "\n" + "rule \"Trait\"\n" + "when\n" + "    $p : Person( )\n" + "then\n" + "    don( $p, Student.class, true );\n" + "end\n";
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(new ByteArrayResource(s1.getBytes()), ResourceType.DRL);
    if (kbuilder.hasErrors()) {
        fail(kbuilder.getErrors().toString());
    }
    InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(kbuilder.getKnowledgePackages());
    KieSession ksession = kbase.newKieSession();
    TraitFactoryImpl.setMode(mode, ksession.getKieBase());
    ksession.fireAllRules();
    FactHandle personHandle = ksession.getFactHandles(new ClassObjectFilter(Person.class)).iterator().next();
    InternalFactHandle h = ((InternalFactHandle) personHandle);
    ObjectTypeConfigurationRegistry reg = h.getEntryPoint((InternalWorkingMemory) ksession).getObjectTypeConfigurationRegistry();
    ObjectTypeConf conf = reg.getOrCreateObjectTypeConf(h.getEntryPointId(), ((InternalFactHandle) personHandle).getObject());
    assertTrue(conf.isTMSEnabled());
    ksession.dispose();
}
Also used : InternalWorkingMemory(org.drools.core.common.InternalWorkingMemory) KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) ObjectTypeConf(org.drools.core.reteoo.ObjectTypeConf) ClassObjectFilter(org.kie.api.runtime.ClassObjectFilter) InternalFactHandle(org.drools.core.common.InternalFactHandle) FactHandle(org.kie.api.runtime.rule.FactHandle) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ByteArrayResource(org.drools.core.io.impl.ByteArrayResource) InternalFactHandle(org.drools.core.common.InternalFactHandle) Person(org.drools.traits.compiler.Person) InternalKnowledgeBase(org.drools.kiesession.rulebase.InternalKnowledgeBase) ObjectTypeConfigurationRegistry(org.drools.core.common.ObjectTypeConfigurationRegistry) CommonTraitTest(org.drools.traits.compiler.CommonTraitTest) Test(org.junit.Test)

Example 5 with Person

use of org.drools.traits.compiler.Person in project drools by kiegroup.

the class TraitTest method testUpdateLegacyClass.

@Test
public void testUpdateLegacyClass() {
    String source = "package org.drools.text;\n" + "\n" + "global java.util.List list;\n" + "\n" + "import org.drools.traits.compiler.Person;\n" + "import org.drools.core.factmodel.traits.Traitable;\n" + "\n" + "declare Person @Traitable end \n" + "" + "declare trait Student\n" + "  name : String\n" + "end\n" + "\n" + "rule \"Init\"\n" + "salience 10 \n" + "when\n" + "  $p : Person( this not isA Student )\n" + "then\n" + "  System.out.println( \"Don person\" ); \n" + "  don( $p, Student.class );\n" + "end\n" + "\n" + "rule \"Go\"\n" + "when\n" + "  $s : String( this == \"X\" )\n" + "  $p : Person()\n" + "then\n" + "  System.out.println( \"Change name\" ); \n" + "  delete( $s ); \n" + "  modify( $p ) { setName( $s ); }\n" + "end\n" + "\n" + "rule \"Mod\"\n" + "when\n" + "  Student( name == \"X\" )\n" + "then\n" + "  System.out.println( \"Update detected\" );\n" + "  list.add( 0 );\n" + "end";
    KieSession ks = getSessionFromString(source);
    TraitFactoryImpl.setMode(mode, ks.getKieBase());
    List list = new ArrayList();
    ks.setGlobal("list", list);
    ks.insert(new Person("john", 32));
    ks.insert("X");
    ks.fireAllRules();
    assertTrue(list.contains(0));
    assertEquals(1, list.size());
    ks.dispose();
}
Also used : ArrayList(java.util.ArrayList) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) Person(org.drools.traits.compiler.Person) CommonTraitTest(org.drools.traits.compiler.CommonTraitTest) Test(org.junit.Test)

Aggregations

Person (org.drools.traits.compiler.Person)7 Test (org.junit.Test)7 CommonTraitTest (org.drools.traits.compiler.CommonTraitTest)6 KieSession (org.kie.api.runtime.KieSession)5 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)5 ArrayList (java.util.ArrayList)4 List (java.util.List)4 ByteArrayResource (org.drools.core.io.impl.ByteArrayResource)2 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)2 URI (java.net.URI)1 InternalFactHandle (org.drools.core.common.InternalFactHandle)1 InternalWorkingMemory (org.drools.core.common.InternalWorkingMemory)1 ObjectTypeConfigurationRegistry (org.drools.core.common.ObjectTypeConfigurationRegistry)1 ObjectTypeConf (org.drools.core.reteoo.ObjectTypeConf)1 InternalKnowledgeBase (org.drools.kiesession.rulebase.InternalKnowledgeBase)1 KieBase (org.kie.api.KieBase)1 KieServices (org.kie.api.KieServices)1 KieBuilder (org.kie.api.builder.KieBuilder)1 KieFileSystem (org.kie.api.builder.KieFileSystem)1 Command (org.kie.api.command.Command)1