use of org.kie.api.builder.ReleaseId in project drools by kiegroup.
the class KieCompilationCacheTest method testHelloWorldWithPackagesAnd2KieBases.
@Test
public void testHelloWorldWithPackagesAnd2KieBases() throws Exception {
String drl1 = "package org.drools.compiler.integrationtests\n" + "import " + Message.class.getCanonicalName() + "\n" + "rule R11 when\n" + " $m : Message( message == \"Hello World\" )\n" + "then\n" + "end\n" + "rule R12 when\n" + " $m : Message( message == \"Hi Universe\" )\n" + "then\n" + "end\n";
String drl2 = "package org.drools.compiler.integrationtests\n" + "import " + Message.class.getCanonicalName() + "\n" + "rule R21 when\n" + " $m : Message( message == \"Hello World\" )\n" + "then\n" + "end\n" + "rule R22 when\n" + " $m : Message( message == \"Aloha Earth\" )\n" + "then\n" + "end\n";
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId = ks.newReleaseId("org.kie", "hello-world", "1.0-SNAPSHOT");
KieFileSystem kfs = ks.newKieFileSystem().generateAndWritePomXML(releaseId).write("src/main/resources/KBase1/org/pkg1/r1.drl", drl1).write("src/main/resources/KBase1/org/pkg2/r2.drl", drl2).writeKModuleXML(createKieProjectWithPackagesAnd2KieBases(ks).toXML());
ks.newKieBuilder(kfs).buildAll();
InternalKieModule kieModule = (InternalKieModule) ks.getRepository().getKieModule(releaseId);
byte[] jar = kieModule.getBytes();
MemoryFileSystem mfs = MemoryFileSystem.readFromJar(jar);
File file = mfs.getFile(KieBuilderImpl.getCompilationCachePath(releaseId, "KBase1"));
assertNotNull(file);
file = mfs.getFile(KieBuilderImpl.getCompilationCachePath(releaseId, "KBase2"));
assertNotNull(file);
Resource jarRes = ks.getResources().newByteArrayResource(jar);
KieModule km = ks.getRepository().addKieModule(jarRes);
KieSession ksession = ks.newKieContainer(km.getReleaseId()).newKieSession("KSession1");
ksession.insert(new Message("Hello World"));
assertEquals(1, ksession.fireAllRules());
ksession = ks.newKieContainer(km.getReleaseId()).newKieSession("KSession1");
ksession.insert(new Message("Hi Universe"));
assertEquals(1, ksession.fireAllRules());
ksession = ks.newKieContainer(km.getReleaseId()).newKieSession("KSession1");
ksession.insert(new Message("Aloha Earth"));
assertEquals(0, ksession.fireAllRules());
ksession = ks.newKieContainer(km.getReleaseId()).newKieSession("KSession2");
ksession.insert(new Message("Hello World"));
assertEquals(1, ksession.fireAllRules());
ksession = ks.newKieContainer(km.getReleaseId()).newKieSession("KSession2");
ksession.insert(new Message("Hi Universe"));
assertEquals(0, ksession.fireAllRules());
ksession = ks.newKieContainer(km.getReleaseId()).newKieSession("KSession2");
ksession.insert(new Message("Aloha Earth"));
assertEquals(1, ksession.fireAllRules());
}
use of org.kie.api.builder.ReleaseId in project drools by kiegroup.
the class KieContainerTest method testUpdateToNonExistingRelease.
@Test
public void testUpdateToNonExistingRelease() {
// DROOLS-1562
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId = ks.newReleaseId("org.kie", "test-release", "1.0.0");
createAndDeployJar(ks, releaseId, createDRL("ruleA"));
KieContainer kieContainer = ks.newKieContainer(releaseId);
Results results = kieContainer.updateToVersion(ks.newReleaseId("org.kie", "test-release", "1.0.1"));
assertEquals(1, results.getMessages(Level.ERROR).size());
assertEquals("1.0.0", ((InternalKieContainer) kieContainer).getContainerReleaseId().getVersion());
}
use of org.kie.api.builder.ReleaseId in project drools by kiegroup.
the class KieContainerTest method testGetDefaultKieSessionModelEmptyKmodule.
@Test
public void testGetDefaultKieSessionModelEmptyKmodule() {
KieServices kieServices = KieServices.Factory.get();
String drl = "package org.drools.test\n" + "rule R1 when\n" + " $m : Object()\n" + "then\n" + "end\n";
Resource resource = kieServices.getResources().newReaderResource(new StringReader(drl), "UTF-8");
resource.setTargetPath("org/drools/test/rules.drl");
String kmodule = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<kmodule xmlns=\"http://www.drools.org/xsd/kmodule\">\n" + "</kmodule>";
// Create an in-memory jar for version 1.0.0
ReleaseId releaseId = kieServices.newReleaseId("org.kie", "test-testGetDefaultKieSessionModelEmptyKmodule", "1.0.0");
createAndDeployJar(kieServices, kmodule, releaseId, resource);
KieContainer kieContainer = kieServices.newKieContainer(releaseId);
KieSessionModel sessionModel = kieContainer.getKieSessionModel(null);
assertNotNull(sessionModel);
}
use of org.kie.api.builder.ReleaseId in project drools by kiegroup.
the class KieContainerTest method testSharedTypeDeclarationsUsingFactTypes.
@Test
public void testSharedTypeDeclarationsUsingFactTypes() throws Exception {
String type = "package org.drools.test\n" + "declare Message\n" + " message : String\n" + "end\n";
String drl1 = "package org.drools.test\n" + "rule R1 when\n" + " $m : Message()\n" + "then\n" + " if ($m.getClass() != new Message(\"Test\").getClass()) {\n" + " throw new RuntimeException();\n" + " }\n" + "end\n";
String drl2 = "package org.drools.test\n" + "rule R2_2 when\n" + " $m : Message( message == \"Hello World\" )\n" + "then\n" + " if ($m.getClass() != new Message(\"Test\").getClass()) {\n" + " throw new RuntimeException();\n" + " }\n" + "end\n";
KieServices ks = KieServices.Factory.get();
// Create an in-memory jar for version 1.0.0
ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-delete", "1.0.0");
createAndDeployJar(ks, releaseId1, type, drl1, drl2);
KieContainer kieContainer = ks.newKieContainer(releaseId1);
KieContainer kieContainer2 = ks.newKieContainer(releaseId1);
KieSession ksession = kieContainer.newKieSession();
KieSession ksession2 = kieContainer2.newKieSession();
insertMessageFromTypeDeclaration(ksession);
assertEquals(2, ksession.fireAllRules());
ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-delete", "1.0.1");
createAndDeployJar(ks, releaseId2, type, null, drl2);
kieContainer.updateToVersion(releaseId2);
// test with the old ksession ...
ksession = kieContainer.newKieSession();
insertMessageFromTypeDeclaration(ksession);
assertEquals(1, ksession.fireAllRules());
// ... and with a brand new one
ksession = kieContainer.newKieSession();
insertMessageFromTypeDeclaration(ksession);
assertEquals(1, ksession.fireAllRules());
// check that the second kieContainer hasn't been affected by the update of the first one
insertMessageFromTypeDeclaration(ksession2);
assertEquals(2, ksession2.fireAllRules());
ksession2 = kieContainer2.newKieSession();
insertMessageFromTypeDeclaration(ksession2);
assertEquals(2, ksession2.fireAllRules());
}
use of org.kie.api.builder.ReleaseId in project drools by kiegroup.
the class KieHelloWorldTest method testGetDefaultKieSessionWithNullName.
@Test
public void testGetDefaultKieSessionWithNullName() throws Exception {
// DROOLS-1276
KieServices ks = KieServices.Factory.get();
buildVersion(ks, "Hello World", "1.0");
ReleaseId releaseId1 = ks.newReleaseId("org.kie", "hello-world", "1.0");
KieSession ksession = ks.newKieContainer(releaseId1).newKieSession((String) null);
ksession.insert(new Message("Hello World"));
assertEquals(1, ksession.fireAllRules());
}
Aggregations