Refactoring

This commit is contained in:
Nicolas Héron 2020-10-07 08:59:33 +02:00
commit 5d5d9a1612
5 changed files with 41 additions and 97 deletions

View file

@ -20,8 +20,6 @@ import org.chtijbug.drools.kieserver.extension.KieServerGlobalVariableDefinition
import org.chtijbug.drools.kieserver.extension.KieServerListenerDefinition;
import org.chtijbug.drools.kieserver.extension.KieServerLoggingDefinition;
import org.drools.compiler.kie.builder.impl.InternalKieModule;
import org.drools.compiler.kie.builder.impl.KieRepositoryImpl;
import org.kie.api.builder.KieRepository;
import org.kie.api.remote.Remotable;
import org.kie.scanner.KieModuleMetaData;
import org.kie.server.api.KieServerConstants;
@ -38,16 +36,20 @@ import java.util.*;
public class DroolsChtijbugKieServerExtension implements KieServerExtension {
public static final String EXTENSION_NAME = "DroolsFramework";
private static final Logger logger = LoggerFactory.getLogger(DroolsChtijbugKieServerExtension.class);
private static final Boolean disabled = Boolean.parseBoolean(System.getProperty(KieServerConstants.KIE_DROOLS_SERVER_EXT_DISABLED, "false"));
private static final Boolean filterRemoteable = Boolean.parseBoolean(System.getProperty(KieServerConstants.KIE_DROOLS_FILTER_REMOTEABLE_CLASSES, "false"));
private static final Boolean DISABLED = Boolean.parseBoolean(System.getProperty(KieServerConstants.KIE_DROOLS_SERVER_EXT_DISABLED, "false"));
private static final Boolean FILTER_REMOTEABLE = Boolean.parseBoolean(System.getProperty(KieServerConstants.KIE_DROOLS_FILTER_REMOTEABLE_CLASSES, "false"));
private DroolsChtijbugRulesExecutionService rulesExecutionService;
private KieServerRegistry registry;
private List<Object> services = new ArrayList<Object>();
private List<Object> services = new ArrayList<>();
private KieServerAddOnElement kieServerAddOnElement = null;
private boolean initialized = false;
@ -61,7 +63,7 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
@Override
public boolean isActive() {
return disabled == false;
return !DISABLED;
}
@Override
@ -103,7 +105,7 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
@Override
public void createContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters) {
// do any other bootstrapping rule service requires
Set<Class<?>> extraClasses = new HashSet<Class<?>>();
Set<Class<?>> extraClasses = new HashSet<>();
// create kbases so declared types can be created
Collection<String> kbases = kieContainerInstance.getKieContainer().getKieBaseNames();
@ -123,13 +125,13 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
logger.debug("Adding {} type into extra jaxb classes set", type);
Class<?> clazz = Class.forName(type, true, kieContainerInstance.getKieContainer().getClassLoader());
addExtraClass(extraClasses, clazz, filterRemoteable);
addExtraClass(extraClasses, clazz, FILTER_REMOTEABLE);
logger.debug("Added {} type into extra jaxb classes set", type);
} catch (ClassNotFoundException e) {
logger.warn("Unable to create instance of type {} due to {}", type, e.getMessage());
logger.debug("Complete stack trace for exception while creating type {}", type, e);
} catch (Throwable e) {
} catch (Exception e) {
logger.warn("Unexpected error while create instance of type {} due to {}", type, e.getMessage());
logger.debug("Complete stack trace for unknown error while creating type {}", type, e);
}
@ -143,19 +145,18 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
@Override
public void updateContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> map) {
this.disposeContainer(id, kieContainerInstance, map);
this.createContainer(id, kieContainerInstance, map);
//Nop
}
@Override
public boolean isUpdateContainerAllowed(String s, KieContainerInstance kieContainerInstance, Map<String, Object> map) {
System.out.println("isUpdateContainerAllowed");
logger.info("Container {} isUpdateContainerAllowed",s);
return true;
}
@Override
public void disposeContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters) {
System.out.println("disposeContainer");
logger.info("Container {} dispose",id);
if (kieServerAddOnElement != null) {
for (KieServerGlobalVariableDefinition kieServerGlobalVariableDefinition : kieServerAddOnElement.getKieServerGlobalVariableDefinitions()) {
@ -172,9 +173,9 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
rulesExecutionService.removeRuleBasePackage(id);
if (kieContainerInstance instanceof KieContainerInstanceImpl) {
KieContainerInstanceImpl internalContainer = (KieContainerInstanceImpl) kieContainerInstance;
KieRepository kieRepository = KieRepositoryImpl.INSTANCE;
if (internalContainer.getKieContainer().getMainKieModule() instanceof InternalKieModule) {
if (internalContainer.getKieContainer().getMainKieModule() instanceof InternalKieModule) {
InternalKieModule kie = (InternalKieModule) internalContainer.getKieContainer().getMainKieModule();
kie.getFile().delete();
}
@ -185,14 +186,14 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
public List<Object> getAppComponents(SupportedTransports type) {
ServiceLoader<KieServerApplicationComponentsService> appComponentsServices
= ServiceLoader.load(KieServerApplicationComponentsService.class);
List<Object> appComponentsList = new ArrayList<Object>();
Object[] services = {
List<Object> appComponentsList = new ArrayList<>();
Object[] serviceList = {
rulesExecutionService,
registry
};
for (KieServerApplicationComponentsService appComponentsService : appComponentsServices) {
appComponentsList.addAll(appComponentsService.getAppComponents(EXTENSION_NAME, type, services));
appComponentsList.addAll(appComponentsService.getAppComponents(EXTENSION_NAME, type, serviceList));
}
return appComponentsList;
}

View file

@ -451,7 +451,6 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
}
ProcessInstance processInstance = this.knowledgeSession.startProcess(processName);
if (this.historyListener != null) {
try {
SessionStartProcessEndEvent sessionStartProcessEndEvent = new SessionStartProcessEndEvent(eventCounter.next(), processName, this.ruleBaseID, this.sessionId, processInstance.getProcessId());