protected InternalKieModule createKieJar(KieServices ks, ReleaseId releaseId, List<String> resources ) { KieFileSystem kfs = createKieFileSystemWithKProject(ks); kfs.writePomXML( getPom(releaseId) ); for (String resource : resources) { kfs.write("src/main/resources/rules/" + resource, ResourceFactory.newClassPathResource(resource)); } KieBuilder kieBuilder = ks.newKieBuilder(kfs); if (!kieBuilder.buildAll().getResults().getMessages().isEmpty()) { for (Message message : kieBuilder.buildAll().getResults().getMessages()) { logger.error("Error Message: ({}) {}", message.getPath(), message.getText()); } throw new RuntimeException( "There are errors builing the package, please check your knowledge assets!"); } return ( InternalKieModule ) kieBuilder.getKieModule(); }
@Test public void testIncrementalProcessCompilation() throws Exception { String invalidProcessDefinition = getResource( "/BPMN2-Incremental-Build-Invalid.bpmn2" ); String validProcessDefinition = getResource( "/BPMN2-Incremental-Build-Valid.bpmn2" ); KieServices ks = KieServices.Factory.get(); //This process file contains 4 errors KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/p1.bpmn2", invalidProcessDefinition ); KieBuilder kieBuilder = ks.newKieBuilder( kfs ).buildAll(); Results results = kieBuilder.getResults(); assertEquals( 3, results.getMessages( org.kie.api.builder.Message.Level.ERROR ).size() ); //This process file has the errors fixed kfs.write("src/main/resources/p1.bpmn2", validProcessDefinition); IncrementalResults addResults = ((InternalKieBuilder)kieBuilder).createFileSet("src/main/resources/p1.bpmn2").build(); //I'd expect the 4 previous errors to be cleared assertEquals( 0, addResults.getAddedMessages().size() ); assertEquals( 3, addResults.getRemovedMessages().size() ); }
public static byte[] buildKJar(KieServices ks, KieFileSystem kfs, ReleaseId releaseId) { KieBuilder kb = ks.newKieBuilder(kfs).buildAll(); if (kb.getResults().hasMessages(Message.Level.ERROR)) { for (Message result : kb.getResults().getMessages()) { System.out.println(result.getText()); } return null; } InternalKieModule kieModule = (InternalKieModule) ks.getRepository() .getKieModule(releaseId); byte[] jar = kieModule.getBytes(); return jar; }
KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = kieServices.newKieFileSystem(); FileInputStream fis = new FileInputStream( pathToSomeDrl ); kfs.write( "src/main/resources/simple.drl", kieServices.getResources().newInputStreamResource( fis ) ); KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll(); Results results = kieBuilder.getResults(); if( results.hasMessages( Message.Level.ERROR ) ){ System.out.println( results.getMessages() ); throw new IllegalStateException( "### errors ###" ); } KieContainer kieContainer = kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() ); KieBase kieBase = kieContainer.getKieBase(); KieSession kieSession = kieContainer.newKieSession();
protected InternalKieModule createKieJar(KieServices ks, ReleaseId releaseId, Map<String, String> resources, ReleaseId... dependencies) { KieFileSystem kfs = createKieFileSystemWithKProject(ks); kfs.writePomXML(getPom(releaseId, dependencies)); for (Map.Entry<String, String> entry : resources.entrySet()) { kfs.write(entry.getKey(), ResourceFactory .newByteArrayResource(entry.getValue().getBytes())); } KieBuilder kieBuilder = ks.newKieBuilder(kfs); if (!kieBuilder.buildAll().getResults().getMessages().isEmpty()) { for (Message message : kieBuilder.buildAll().getResults() .getMessages()) { logger.error("Error Message: ({}) {}", message.getPath(), message.getText()); } throw new RuntimeException( "There are errors builing the package, please check your knowledge assets!"); } return (InternalKieModule) kieBuilder.getKieModule(); }
private KieSession kieSession; public void build() throws Exception { KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = kieServices.newKieFileSystem(); // for each DRL file, referenced by a plain old path name: FileInputStream fis = new FileInputStream( "simple/simple.drl" ); kfs.write( "src/main/resources/simple.drl", kieServices.getResources().newInputStreamResource( fis ) ); KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll(); Results results = kieBuilder.getResults(); if( results.hasMessages( Message.Level.ERROR ) ){ System.out.println( results.getMessages() ); throw new IllegalStateException( "### errors ###" ); } KieContainer kieContainer = kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() ); KieBase kieBase = kieContainer.getKieBase(); kieSession = kieContainer.newKieSession(); }
protected InternalKieModule createKieJar(KieServices ks, ReleaseId releaseId, List<String> resources ) { KieFileSystem kfs = createKieFileSystemWithKProject(ks); kfs.writePomXML( getPom(releaseId) ); for (String resource : resources) { kfs.write("src/main/resources/KBase-test/" + resource, ResourceFactory.newClassPathResource(resource)); } KieBuilder kieBuilder = ks.newKieBuilder(kfs); if (!kieBuilder.buildAll().getResults().getMessages().isEmpty()) { for (Message message : kieBuilder.buildAll().getResults().getMessages()) { logger.error("Error Message: ({}) {}", message.getPath(), message.getText()); } throw new RuntimeException( "There are errors builing the package, please check your knowledge assets!"); } return ( InternalKieModule ) kieBuilder.getKieModule(); }
public static void assertDrlHasCompilationError( String str, int errorNr ) { KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", str ); org.kie.api.builder.Results results = ks.newKieBuilder( kfs ).buildAll().getResults(); if ( errorNr > 0 ) { assertEquals( errorNr, results.getMessages().size() ); } else { assertTrue( results.getMessages().size() > 0 ); } } }
protected InternalKieModule createKieJarWithClass(KieServices ks, ReleaseId releaseId, int value) throws IOException { KieFileSystem kfs = createKieFileSystemWithKProject(ks, false); kfs.writePomXML(getPom(releaseId)); kfs.write("src/main/resources/KBase1/rule1.drl", createDRL(value)); KieBuilder kieBuilder = ks.newKieBuilder(kfs); assertTrue("", kieBuilder.buildAll().getResults().getMessages().isEmpty()); return (InternalKieModule) kieBuilder.getKieModule(); }
@Test public void testReportKBuilderErrorWhenUsingAJavaClassWithNoPkg() { // BZ-995018 final String java = "public class JavaClass { }\n"; final KieServices ks = KieServices.Factory.get(); final KieFileSystem kfs = ks.newKieFileSystem() .write( "src/main/java/JavaClass.java", java ); final Results results = ks.newKieBuilder( kfs ).buildAll().getResults(); System.out.println( results.getMessages() ); assertEquals( 1, results.getMessages().size() ); }
protected InternalKieModule createKieJarWithClass(KieServices ks, ReleaseId releaseId, int value) throws IOException { KieFileSystem kfs = createKieFileSystemWithKProject(ks, false); kfs.writePomXML(getPom(releaseId)); kfs.write("src/main/resources/KBase1/rule1.drl", createDRL(value)); KieBuilder kieBuilder = ks.newKieBuilder(kfs); assertTrue("", kieBuilder.buildAll().getResults().getMessages().isEmpty()); return (InternalKieModule) kieBuilder.getKieModule(); }
private KieServices populateKieFileSystem(Resource dt) { KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( dt ); KieBuilder kb = ks.newKieBuilder( kfs ).buildAll(); assertTrue( kb.getResults().getMessages().isEmpty() ); return ks; } }
protected InternalKieModule createKieJarWithClass(KieServices ks, ReleaseId releaseId, int value) throws IOException { KieFileSystem kfs = createKieFileSystemWithKProject(ks, false); kfs.writePomXML(getPom(releaseId)); kfs.write("src/main/resources/KBase1/rule1.drl", createDRL(value)); KieBuilder kieBuilder = ks.newKieBuilder(kfs); assertTrue("", kieBuilder.buildAll().getResults().getMessages().isEmpty()); return (InternalKieModule) kieBuilder.getKieModule(); }
@Test public void testMalformedDrl() throws Exception { // DROOLS-928 byte[] content = new byte[]{0x04,0x44,0x00,0x00,0x60,0x00,0x00,0x00}; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", new String(content) ); Results results = ks.newKieBuilder( kfs ).buildAll().getResults(); assertTrue( results.getMessages().size() > 0 ); } }
@Test public void testExtendingDate() { // BZ-1072629 String str = "import " + MyDate.class.getCanonicalName() + " \n" + "rule 'sample rule' \n" + "when \n" + " $date: MyDate() \n" + "then \n" + "$date.setDescription(\"test\"); \n" + "end \n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", str ); Results results = ks.newKieBuilder( kfs ).buildAll().getResults(); assertEquals( 0, results.getMessages().size() ); }
@Test public void testInTestPackage() throws Exception { String javaClass = "" + "package org.jbpm;\n" + "public class Test{}\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem(); kfs.write( "src/test/java/org/jbpm/Test.java", javaClass ); KieBuilder builder = ks.newKieBuilder( kfs ).buildAll(); assertEquals( 0, builder.getResults().getMessages().size() ); }
@Test public void testFieldNameStartingWithUnderscore() throws Exception { // DROOLS-554 String str = "import " + Underscore.class.getCanonicalName() + ";\n" + "rule R when\n" + " Underscore( _id == \"test\" )\n" + "then\n" + "end\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", str ); Results results = ks.newKieBuilder( kfs ).buildAll().getResults(); assertEquals( 0, results.getMessages().size() ); }
@Test public void testFailingHelloWorld() throws Exception { String drl = "package org.drools.compiler.integrationtests\n" + "import " + Message.class.getCanonicalName() + "\n" + "rule R1 when\n" + " $m : Message( nonExistentField == \"Hello World\" )\n" + "then\n" + "end\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write("src/main/resources/r1.drl", drl); KieBuilder kb = ks.newKieBuilder( kfs ).buildAll(); assertEquals( 1, kb.getResults().getMessages().size() ); }
@Test public void testErrorReportingWithWrongKmodule() throws Exception { // RHDM-69 String kmodule = "<kmodule xmlns=\"http://jboss.org/kie/6.0.0/kmodule\">\n" + " <kbase name=\"ABC\" default=\"false\" eventProcessingMode=\"stream\" equalsBehavior=\"identity\"/>\n" + " <kbase name=\"ABC\" default=\"false\" eventProcessingMode=\"stream\" equalsBehavior=\"identity\"/>\n" + "</kmodule>\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", createDrl( "R1" ) ); kfs.writeKModuleXML(kmodule); KieBuilder kb = ks.newKieBuilder( kfs ).buildAll(); assertEquals( 1, kb.getResults().getMessages().size() ); assertTrue( kb.getResults().getMessages().get(0).toString().contains( "ABC" ) ); }
@Test public void testGreedyDsl() { // BZ-1078839 String dsl = "[when]There is a number with value of {value}=i:Integer(intValue() == {value})\n" + "[when]There is a number with=i:Integer()\n"; String dslr = "package org.test \n" + "rule 'sample rule' \n" + "when \n" + " There is a number with value of 10\n" + "then \n" + "end \n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem() .write("src/main/resources/r1.dslr", dslr) .write("src/main/resources/r1.dsl", dsl); Results results = ks.newKieBuilder( kfs ).buildAll().getResults(); assertEquals(0, results.getMessages().size()); }