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"));
}
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);
}
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());
}
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();
}
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();
}
Aggregations