@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() ); }
@Test @Ignore("RHPAM-1184, RHDM-601") public void testBuildPercentageAndWhiteSpaceInName() throws Exception { final KieServices ks = KieServices.Factory.get(); final KieFileSystem kfs = ks.newKieFileSystem(); kfs.write("src/main/resources/my rule 100% okay.rdrl", ResourceFactory.newInputStreamResource(this.getClass().getResourceAsStream("my rule 100% okay.rdrl"))); final KieBuilderSetImpl kieBuilderSet = new KieBuilderSetImpl(kieBuilder(ks, kfs)); kieBuilderSet.setFiles(new String[]{"src/main/resources/my rule 100% okay.rdrl"}); final IncrementalResults build = kieBuilderSet.build(); assertEquals(0, build.getAddedMessages().size()); assertEquals(0, build.getRemovedMessages().size()); }
@Test public void testBuild() throws Exception { final KieServices ks = KieServices.Factory.get(); final KieFileSystem kfs = ks.newKieFileSystem(); kfs.write( "src/main/resources/rule%201.drl", ruleContent() ); final KieBuilderSetImpl kieBuilderSet = new KieBuilderSetImpl( kieBuilder( ks, kfs ) ); kieBuilderSet.setFiles( new String[]{ "src/main/resources/rule%201.drl" } ); final IncrementalResults build = kieBuilderSet.build(); assertEquals( 0, build.getAddedMessages().size() ); assertEquals( 0, build.getRemovedMessages().size() ); }
@Test public void testMessageWithIncrementalBuild() throws Exception { //Some suitably duff DSL to generate errors String dsl1 = "bananna\n"; //Some suitably valid DRL String drl1 = "import org.drools.compiler.Person;\n" + "rule R1\n" + "when\n" + "There is a Person\n" + "then\n" + "end\n"; //Some suitably valid DRL String drl2 = "rule R2\n" + "when\n" + "then\n" + "end\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem() .write( "src/main/resources/dsl.dsl", dsl1 ) .write( "src/main/resources/drl.dslr", drl1 ); KieBuilder kieBuilder = ks.newKieBuilder( kfs ).buildAll(); Results fullBuildResults = kieBuilder.getResults(); assertEquals( 3, fullBuildResults.getMessages().size() ); kfs.write( "src/main/resources/r2.drl", drl2 ); IncrementalResults incrementalBuildResults = ( (InternalKieBuilder) kieBuilder ).createFileSet( "src/main/resources/r2.drl" ).build(); assertEquals( 0, incrementalBuildResults.getAddedMessages().size() ); assertEquals( 0, incrementalBuildResults.getRemovedMessages().size() ); }
public IncrementalBuildResults deleteResource( final Path resource ) { //Check a full build has been performed if ( !isBuilt() ) { throw new IllegalStateException( "A full build needs to be performed before any incremental operations." ); } //Delete resource final String destinationPath = resource.toUri().toString().substring( projectPrefix.length() + 1 ); kieFileSystem.delete( destinationPath ); //Incremental build final IncrementalResults incrementalResults = ( (InternalKieBuilder) kieBuilder ).createFileSet( destinationPath ).build(); //Messages from incremental build final IncrementalBuildResults results = convertMessages( incrementalResults ); //Tidy-up removed message handles for ( Message message : incrementalResults.getRemovedMessages() ) { handles.remove( RESOURCE_PATH + "/" + message.getPath() ); } return results; }
public IncrementalBuildResults addResource( final Path resource ) { //Check a full build has been performed if ( !isBuilt() ) { throw new IllegalStateException( "A full build needs to be performed before any incremental operations." ); } //Add new resource final String destinationPath = resource.toUri().toString().substring( projectPrefix.length() + 1 ); final InputStream is = ioService.newInputStream( resource ); final BufferedInputStream bis = new BufferedInputStream( is ); kieFileSystem.write( destinationPath, KieServices.Factory.get().getResources().newInputStreamResource( bis ) ); handles.put( destinationPath, paths.convert( resource ) ); //Incremental build final IncrementalResults incrementalResults = ( (InternalKieBuilder) kieBuilder ).createFileSet( destinationPath ).build(); //Messages from incremental build final IncrementalBuildResults results = convertMessages( incrementalResults ); //Tidy-up removed message handles for ( Message message : incrementalResults.getRemovedMessages() ) { handles.remove( RESOURCE_PATH + "/" + message.getPath() ); } return results; }
private void buildIncrementally(final IncrementalBuildResults results, final String... destinationPath) { try { final IncrementalResults incrementalResults = ((InternalKieBuilder) kieBuilder).createFileSet(destinationPath).build(); results.addAllAddedMessages(convertMessages(incrementalResults.getAddedMessages(), handles)); results.addAllRemovedMessages(convertMessages(incrementalResults.getRemovedMessages(), handles)); //Tidy-up removed message handles for (Message message : incrementalResults.getRemovedMessages()) { handles.remove(Handles.RESOURCE_PATH + "/" + getBaseFileName(message.getPath())); } } catch (LinkageError e) { final String msg = MessageFormat.format(ERROR_CLASS_NOT_FOUND, e.getLocalizedMessage()); logger.warn(msg); results.addAddedMessage(makeWarningMessage(msg)); } catch (Throwable e) { final String msg = e.getLocalizedMessage(); logger.error(msg, e); results.addAddedMessage(makeErrorMessage(msg)); } }
private IncrementalBuildResults convertMessages( final IncrementalResults kieIncrementalResults ) { final IncrementalBuildResults results = new IncrementalBuildResults(); results.setArtifactID( artifactId ); for ( final Message message : kieIncrementalResults.getAddedMessages() ) { results.addAddedMessage( convertMessage( message ) ); } for ( final Message message : kieIncrementalResults.getRemovedMessages() ) { results.addRemovedMessage( convertMessage( message ) ); } return results; }
assertEquals( 0, addResults.getRemovedMessages().size() );
@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() ); }
final List<Message> removedMessages = results.getRemovedMessages(); Helper.dumpMessages( addedMessages ); assertEquals( 0,
addResults.getAddedMessages().size() ); assertEquals( 0, addResults.getRemovedMessages().size() );
addResults.getAddedMessages().size() ); assertEquals( 1, addResults.getRemovedMessages().size() );
final List<Message> removedMessages = results.getRemovedMessages(); Helper.dumpMessages(addedMessages); assertEquals(0,
assertEquals(errorsNr, results.getRemovedMessages().size());