public org.kie.api.builder.KieModule getKieModule() { //Kie classes are only available once built if (!isBuilt()) { build(); } synchronized (kieFileSystem) { return kieBuilder.getKieModule(); } }
public org.kie.api.builder.KieModule getKieModuleIgnoringErrors() { //Kie classes are only available once built if (!isBuilt()) { build(); } synchronized (kieFileSystem) { return ((InternalKieBuilder) kieBuilder).getKieModuleIgnoringErrors(); } }
public BuildResults build(final Path resource, final InputStream inputStream) { synchronized (kieFileSystem) { final String destinationPath = destinationPath(resource); final Resource inputStreamResource = KieServices.Factory.get().getResources().newInputStreamResource(new BufferedInputStream(inputStream)); kieFileSystem.write(destinationPath, inputStreamResource); } return build(); }
public BuildResult build(final Module module) { try { cache.invalidateCache(module); Builder builder = cache.assertBuilder(module); final BuildResults results = builder.build(); BuildMessage infoMsg = new BuildMessage(); infoMsg.setLevel(Level.INFO); infoMsg.setText(buildResultMessage(module, results).toString()); results.addBuildMessage(0, infoMsg); return new BuildResult(builder, results); } catch (Exception e) { logger.error(e.getMessage(), e); return new BuildResult(null, buildExceptionResults(e, module.getPom().getGav())); } }
@Test public void buildDetectsFilesWithSpecialCharacters() throws Exception { LRUPomModelCache pomModelCache = getReference(LRUPomModelCache.class); URL url = this.getClass().getResource("/ModuleBuildTestFileWithSpecialCharacter"); SimpleFileSystemProvider p = new SimpleFileSystemProvider(); org.uberfire.java.nio.file.Path path = p.getPath(url.toURI()); final Module module = moduleService.resolveModule(Paths.convert(path)); final Builder builder = new Builder(module, ioService, moduleService, importsService, new ArrayList<>(), dependenciesClassLoaderCache, pomModelCache, getPackageNameWhiteListService(), alwaysTrue); BuildResults buildResults = builder.build(); List<BuildMessage> errorMessages = buildResults.getErrorMessages(); assertEquals(2, errorMessages.size()); assertTrue(errorMessages.get(0).getText().contains("mismatched input 'Build' expecting one of the following tokens:")); }
@Test public void testKModuleContainsXLS() throws Exception { URL url = this.getClass().getResource("/ExampleWithExcel"); SimpleFileSystemProvider p = new SimpleFileSystemProvider(); org.uberfire.java.nio.file.Path path = p.getPath(url.toURI()); final Module module = moduleService.resolveModule(Paths.convert(path)); final Builder builder = new Builder(module, ioService, moduleService, importsService, new ArrayList<>(), dependenciesClassLoaderCache, pomModelCache, getPackageNameWhiteListService(), alwaysTrue); final BuildResults results = builder.build(); //Debug output if (!results.getMessages().isEmpty()) { for (BuildMessage m : results.getMessages()) { logger.debug(m.getText()); } } assertTrue(results.getMessages().isEmpty()); }
@Test public void testBuilderKModuleHasDependency() throws Exception { URL url = this.getClass().getResource("/GuvnorM2RepoDependencyExample2"); SimpleFileSystemProvider p = new SimpleFileSystemProvider(); org.uberfire.java.nio.file.Path path = p.getPath(url.toURI()); final Module module = moduleService.resolveModule(Paths.convert(path)); final Builder builder = new Builder(module, ioService, moduleService, importsService, new ArrayList<>(), dependenciesClassLoaderCache, pomModelCache, getPackageNameWhiteListService(), alwaysTrue); final BuildResults results = builder.build(); //Debug output if (!results.getMessages().isEmpty()) { for (BuildMessage m : results.getMessages()) { logger.debug(m.getText()); } } assertTrue(results.getMessages().isEmpty()); }
alwaysTrue); final BuildResults results = builder.build();
alwaysTrue); final BuildResults results = builder.build();
public KieContainer getKieContainer() { BuildResults results = null; //Kie classes are only available once built if (!isBuilt()) { results = build(); } else { results = new BuildResults(); results.addAllBuildMessages(convertMessages(kieBuilder.getResults().getMessages(), handles)); } //It's impossible to retrieve a KieContainer if the KieModule contains errors if (results.getErrorMessages().isEmpty()) { // Do not retrieve the KieContainer with KieServices.newKieContainer(releaseId) since this looks-up the KieModule to // create the KieContainer from KieRepository. This holds the most recent KieModule (for the ReleaseId) that was built with // kieBuilder.buildAll() which *may* be a KieModule created during asset validation and hence will lack many assets. // See https://bugzilla.redhat.com/show_bug.cgi?id=1202551 final org.kie.api.builder.KieModule kieModule = kieBuilder.getKieModule(); final ReleaseId releaseId = kieModule.getReleaseId(); final org.drools.compiler.kie.builder.impl.KieProject kieProject = new KieModuleKieProject((InternalKieModule) kieBuilder.getKieModule(), null); final KieContainer kieContainer = new KieContainerImpl(kieProject, KieServices.Factory.get().getRepository(), releaseId); return kieContainer; } else { return null; } }
private List<ValidationMessage> doValidation(final Path resourcePath, final InputStream inputStream) throws NoModuleException { final ValidatorResultBuilder resultBuilder = new ValidatorResultBuilder(); final Module module = module(resourcePath); final org.uberfire.java.nio.file.Path nioResourcePath = Paths.convert(resourcePath); //Incremental Build does not support Java classes if (isIncrementalBuildPossible(resourcePath)) { //Build the Builder from the cache so it's "built" state can be preserved for re-use BuildInfo buildInfo = buildInfoService.getBuildInfo(module); final Builder clone = ((BuildInfoImpl) buildInfo).getBuilder().clone(); //First delete resource otherwise if the resource already had errors following builder.build() //the incremental compilation will not report any additional errors and the resource will be //considered valid. clone.deleteResource(nioResourcePath); final IncrementalBuildResults incrementalBuildResults = clone.updateResource(nioResourcePath, inputStream); resultBuilder.add(incrementalBuildResults.getAddedMessages()); } else { Builder builder = builderCache.assertBuilder(module(resourcePath)); final Builder clone = builder.clone(); resultBuilder.add(clone.build(nioResourcePath, inputStream).getMessages()); } return resultBuilder.results(); }