List<KnowledgeBuilderError> currentErrors = new ArrayList<KnowledgeBuilderError>();
InternalKieModule kieModule = (InternalKieModule) kieBuilder.getKieModuleIgnoringErrors();
for (KieBaseModel kBaseModel : kieModule.getKieModuleModel().getKieBaseModels().values()) {
KnowledgeBuilder kBuilder = kieModule.getKnowledgeBuilderForKieBase( kBaseModel.getName() );
CompositeKnowledgeBuilder ckbuilder = kBuilder.batch();
PackageBuilder pkgBuilder = ((KnowledgeBuilderImpl)kBuilder).getPackageBuilder();
Set<String> wrongResources = resourcesWithErrors.get(kBaseModel.getName());
for ( String resourceName : wrongResources ) {
pkgBuilder.removeObjectsGeneratedFromResource(new DummyResource(resourceName));
addResource(ckbuilder, kBaseModel, kieModule, resourceName);
}
boolean modified = false;
for (String file : files) {
String resourceName = file.startsWith(KieBuilderImpl.RESOURCES_ROOT) ?
file.substring(KieBuilderImpl.RESOURCES_ROOT.length()) :
file;
if ( wrongResources.contains(resourceName) ) {
modified = true;
} else {
// remove the objects generated by the old Resource
modified = pkgBuilder.removeObjectsGeneratedFromResource(new DummyResource(resourceName)) || modified;
// add the modified Resource
modified = addResource(ckbuilder, kBaseModel, kieModule, resourceName) || modified;
}
}
if (modified) {
ckbuilder.build();
resourcesWithErrors.put(kBaseModel.getName(), findResourcesWithErrors(kBuilder));
if ( kBuilder.hasErrors() ) {
currentErrors.addAll(kBuilder.getErrors());
kBuilder.undo();
} else {