public static KieModule createAndDeployJarIgnoringErrors(KieServices ks, ReleaseId releaseId, Resource... resources) { byte[] jar = createJarIgnoringErrors(ks, releaseId, resources); KieModule km = KieHelper.deployJarIntoRepository(ks, jar); return km; }
@Test public void testAskTypeCheckWithGlobalEnvVariable() { System.setProperty(RuntimeTypeCheckOption.PROPERTY_NAME, "true"); // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("forTypeCheckTest.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); assertPerformTypeCheck(runtime); System.clearProperty(RuntimeTypeCheckOption.PROPERTY_NAME); }
@Test public void testRemoveAndAddSomething() { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test", "1.0.0"), wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); final ReleaseId v101 = ks.newReleaseId("org.kie", "dmn-test", "1.0.1"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()))); final Results updateResults = kieContainer.updateToVersion(v101); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); final DMNContext dmnContext2 = runtime.newContext(); dmnContext2.set("Full Name", "John Doe"); final DMNResult evaluateAll2 = runtime.evaluateAll(runtime.getModels().get(0), dmnContext2); assertThat(evaluateAll2.getDecisionResultByName("Greeting Message").getResult(), is("Salve John Doe")); }
@Test public void testKieMarshaller() throws Exception { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); KieContainer kieContainer = ks.newKieContainer(v100); KieSession kieSession = kieContainer.newKieSession(); KieBase kieBase = kieSession.getKieBase(); DMNRuntime runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); KieMarshallers kieMarshallers = ks.getMarshallers(); Marshaller marshaller = kieMarshallers.newMarshaller(kieBase); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshall(baos, kieSession); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); baos.close(); kieSession = marshaller.unmarshall(bais); bais.close(); runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); }
@Test public void testReplace() { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test", "1.0.0"), wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); final ReleaseId v101 = ks.newReleaseId("org.kie", "dmn-test", "1.0.1"); final Resource newClassPathResource = ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()); newClassPathResource.setTargetPath("0001-input-data-string.dmn"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, newClassPathResource)); final Results updateResults = kieContainer.updateToVersion(v101); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); final DMNContext dmnContext2 = runtime.newContext(); dmnContext2.set("Full Name", "John Doe"); final DMNResult evaluateAll2 = runtime.evaluateAll(runtime.getModels().get(0), dmnContext2); assertThat(evaluateAll2.getDecisionResultByName("Greeting Message").getResult(), is("Salve John Doe")); }
@Test public void testUpgrade() throws Exception { final KieServices ks = KieServices.Factory.get(); final ReleaseId releaseId_v10 = ks.newReleaseId("org.kie", "dmn-test-PR1997", "1.0"); KieHelper.createAndDeployJar(ks, releaseId_v10, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("/org/kie/dmn/core/incrementalcompilation/v1/20180731-pr1997.dmn", this.getClass()) .setTargetPath("20180731-pr1997.dmn"), ks.getResources().newClassPathResource("/org/kie/dmn/core/incrementalcompilation/v1/Person.java", this.getClass()) .setTargetPath("acme/Person.java"))); final KieContainer kieContainer = ks.newKieContainer(releaseId_v10); final DMNRuntime runtime = DMNRuntimeUtil.typeSafeGetKieRuntime(kieContainer); checkTestUpgrade(kieContainer, runtime, "setFirstName", "setLastName", "Hello John Doe, your age is: 47"); final ReleaseId releaseId_v11 = ks.newReleaseId("org.kie", "dmn-test-PR1997", "1.1"); KieHelper.createAndDeployJar(ks, releaseId_v11, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("/org/kie/dmn/core/incrementalcompilation/v2/20180731-pr1997.dmn", this.getClass()) .setTargetPath("20180731-pr1997.dmn"), ks.getResources().newClassPathResource("/org/kie/dmn/core/incrementalcompilation/v2/Person.java", this.getClass()) .setTargetPath("acme/Person.java"))); kieContainer.updateToVersion(releaseId_v11); checkTestUpgrade(kieContainer, runtime, "setFN", "setLN", "UPGRADED Hello John Doe, your age is: 47"); }
public static DMNRuntime createRuntime(final Class testClass) { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test-"+UUID.randomUUID(), "1.0")); final DMNRuntime runtime = typeSafeGetKieRuntime(kieContainer); Assert.assertNotNull(runtime); return runtime; }
KieContainer kieContainer = KieHelper.getKieContainer( v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); final Resource newClassPathResource = ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()); newClassPathResource.setTargetPath("0001-input-data-string.dmn"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, newClassPathResource));
@Test public void testFromClonedKiePackage() { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); KieContainer kieContainer = ks.newKieContainer(v100); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); kieContainer.dispose(); kieContainer = ks.newKieContainer(v100); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); }
public static DMNRuntime createRuntimeWithAdditionalResources(final String resourceName, final Class testClass, final String... additionalResources) { final KieServices ks = KieServices.Factory.get(); Resource mainResource = ks.getResources().newClassPathResource(resourceName, testClass); List<Resource> totalResources = new ArrayList<>(); totalResources.add(mainResource); for ( String add : additionalResources ) { totalResources.add( ks.getResources().newClassPathResource(add, testClass) ); } final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test-"+UUID.randomUUID(), "1.0"), totalResources.toArray(new Resource[] {})); final DMNRuntime runtime = typeSafeGetKieRuntime(kieContainer); Assert.assertNotNull(runtime); return runtime; }
@Test public void testFromClonedKiePackageThenUpgrade() { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); KieContainer kieContainer = ks.newKieContainer(v100); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); kieContainer.dispose(); kieContainer = ks.newKieContainer(v100); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); final ReleaseId v101 = ks.newReleaseId("org.kie", "dmn-test", "1.0.1"); final Resource newClassPathResource = ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()); newClassPathResource.setTargetPath("0001-input-data-string.dmn"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, newClassPathResource)); final Results updateResults = kieContainer.updateToVersion(v101); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); }
@BeforeClass public static void staticInit() { ks = KieServices.Factory.get(); releaseId = ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"); resource = ks.getResources().newClassPathResource("org/kie/dmn/core/typecheck_in_DT.dmn", GetDMNModelCommandTest.class); kieContainer = KieHelper.getKieContainer(releaseId, resource); }
@Test public void test_as_kie_wb_common_services_backend_Builder() throws Exception { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); final KieModule kieModule = KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); final KieContainer kieContainer = ks.newKieContainer(v100); final KieSession kieSession = kieContainer.newKieSession(); final DMNRuntime runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); // the below is performed by the WB at: https://github.com/kiegroup/kie-wb-common/blob/master/kie-wb-common-services/kie-wb-common-services-backend/src/main/java/org/kie/workbench/common/services/backend/builder/core/Builder.java#L592 final KieProject kieProject = new KieModuleKieProject((InternalKieModule) kieModule, null); final KieContainer kieContainer2 = new KieContainerImpl(kieProject, ks.getRepository(), v100); final KieSession kieSession2 = kieContainer2.newKieSession(); // exhibit the issue. final DMNRuntime runtime2 = kieSession2.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime2); assertThat(runtime2.getModels(), hasSize(1)); check0001_input_data_string(runtime2); }
@BeforeClass public static void staticInit() { ks = KieServices.Factory.get(); releaseId = ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"); resource = ks.getResources().newClassPathResource("org/kie/dmn/core/typecheck_in_DT.dmn", GetDMNModelCommandTest.class); kieContainer = KieHelper.getKieContainer(releaseId, resource); }
@Test public void test_as_kie_wb_common_services_backend_Builder2() throws Exception { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); final KieModule kieModule = KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("v1_2/dmn-hotcold.dmn", this.getClass()))); final KieContainer kieContainer = ks.newKieContainer(v100); final KieSession kieSession = kieContainer.newKieSession(); final DMNRuntime runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); checkDMNHotColdDMN12WithNSScattered(runtime); // the below is performed by the WB at: https://github.com/kiegroup/kie-wb-common/blob/master/kie-wb-common-services/kie-wb-common-services-backend/src/main/java/org/kie/workbench/common/services/backend/builder/core/Builder.java#L592 final KieProject kieProject = new KieModuleKieProject((InternalKieModule) kieModule, null); final KieContainer kieContainer2 = new KieContainerImpl(kieProject, ks.getRepository(), v100); final KieSession kieSession2 = kieContainer2.newKieSession(); // exhibit the issue. final DMNRuntime runtime2 = kieSession2.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime2); assertThat(runtime2.getModels(), hasSize(1)); checkDMNHotColdDMN12WithNSScattered(runtime2); }
@Test public void testDefaultNoTypeCheck() { // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("forTypeCheckTest.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); assertNoTypeCheck(runtime); }
public static DMNRuntime createRuntime(final String resourceName, final Class testClass) { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test-"+UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource(resourceName, testClass)); final DMNRuntime runtime = typeSafeGetKieRuntime(kieContainer); Assert.assertNotNull(runtime); return runtime; }
@Test public void testDefaultNoTypeCheckButOverrideRuntime() { // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("forTypeCheckTest.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); ((DMNRuntimeImpl) runtime).setOption(new RuntimeTypeCheckOption(true)); assertPerformTypeCheck(runtime); }
@Test public void testMisleadingNPEbyAPIusage() { // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("simple-item-def.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); final DMNModel dmnModel = runtime.getModel("<wrong>", "<wrong>"); // please notice an end-user of the API might not having checked the result of the previous call is not a null. final DMNContext emptyContext = DMNFactory.newContext(); try { final DMNResult dmnResult = runtime.evaluateAll(dmnModel, emptyContext); LOG.debug("{}", dmnResult); fail(""); } catch (final Exception e) { assertTrue(e.getMessage().contains("'model'")); /* java.lang.NullPointerException: Kie DMN API parameter 'model' cannot be null. at java.util.Objects.requireNonNull(Objects.java:290) at org.kie.dmn.core.impl.DMNRuntimeImpl.evaluateAll(DMNRuntimeImpl.java:123) at org.kie.dmn.core.DMNRuntimeTypeCheckTest.testMisleadingNPEbyAPIusage(DMNRuntimeTypeCheckTest.java:199) */ } } }
@Test public void testDROOLS2201() { // DROOLS-2201 // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("typecheck_in_context_result.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); final DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/definitions/_42bf043d-df86-48bd-9045-dfc08aa8ba0d", "typecheck in context result"); assertThat(dmnModel, notNullValue()); assertThat(DMNRuntimeUtil.formatMessages(dmnModel.getMessages()), dmnModel.hasErrors(), is(false)); final DMNContext emptyContext = DMNFactory.newContext(); final DMNResult dmnResult = runtime.evaluateAll(dmnModel, emptyContext); assertThat(DMNRuntimeUtil.formatMessages(dmnResult.getMessages()), dmnResult.hasErrors(), is(false)); final DMNContext resultContext = dmnResult.getContext(); assertThat(((Map<String, Object>) resultContext.get("an hardcoded person")).keySet(), contains("name", "age")); assertThat(((Map<String, Object>) resultContext.get("an hardcoded person with no name")).keySet(), contains("age")); }