use of org.kie.internal.runtime.conf.DeploymentDescriptor in project jbpm by kiegroup.
the class DeploymentDescriptorMerger method merge.
public DeploymentDescriptor merge(List<DeploymentDescriptor> descriptorHierarchy, MergeMode mode) {
if (descriptorHierarchy == null || descriptorHierarchy.isEmpty()) {
throw new IllegalArgumentException("Descriptor hierarchy list cannot be empty");
}
if (descriptorHierarchy.size() == 1) {
return descriptorHierarchy.get(0);
}
Stack<DeploymentDescriptor> stack = new Stack<DeploymentDescriptor>();
stack.addAll(descriptorHierarchy);
if (mode == null) {
mode = MergeMode.MERGE_COLLECTIONS;
}
while (stack.size() > 1) {
DeploymentDescriptor master = stack.pop();
DeploymentDescriptor slave = stack.pop();
DeploymentDescriptor desc = merge(master, slave, mode);
// add merged one to be next iteration slave
stack.push(desc);
}
// last element from the stack is the one that contains all merged descriptors
return stack.pop();
}
use of org.kie.internal.runtime.conf.DeploymentDescriptor in project jbpm by kiegroup.
the class DeploymentDescriptorMerger method merge.
public DeploymentDescriptor merge(DeploymentDescriptor master, DeploymentDescriptor slave, MergeMode mode) {
if (master == null || slave == null) {
throw new IllegalArgumentException("Descriptors to merge must be provided");
}
DeploymentDescriptor merged = null;
DeploymentDescriptorBuilder builder = master.getBuilder();
builder.setBuildHandler(new MergeModeBuildHandler(mode));
switch(mode) {
case KEEP_ALL:
// do nothing as master wins
merged = master;
break;
case OVERRIDE_ALL:
// do nothing as slave wins
merged = slave;
break;
case OVERRIDE_EMPTY:
builder.auditMode(slave.getAuditMode());
builder.auditPersistenceUnit(slave.getAuditPersistenceUnit());
builder.persistenceMode(slave.getPersistenceMode());
builder.persistenceUnit(slave.getPersistenceUnit());
builder.runtimeStrategy(slave.getRuntimeStrategy());
builder.setConfiguration(slave.getConfiguration());
builder.setEnvironmentEntries(slave.getEnvironmentEntries());
builder.setEventListeners(slave.getEventListeners());
builder.setGlobals(slave.getGlobals());
builder.setMarshalingStrategies(slave.getMarshallingStrategies());
builder.setTaskEventListeners(slave.getTaskEventListeners());
builder.setWorkItemHandlers(slave.getWorkItemHandlers());
builder.setRequiredRoles(slave.getRequiredRoles());
builder.setClasses(slave.getClasses());
builder.setLimitSerializationClasses(slave.getLimitSerializationClasses());
merged = builder.get();
break;
case MERGE_COLLECTIONS:
builder.auditMode(slave.getAuditMode());
builder.auditPersistenceUnit(slave.getAuditPersistenceUnit());
builder.persistenceMode(slave.getPersistenceMode());
builder.persistenceUnit(slave.getPersistenceUnit());
builder.runtimeStrategy(slave.getRuntimeStrategy());
for (ObjectModel model : slave.getEventListeners()) {
builder.addEventListener(model);
}
for (ObjectModel model : slave.getMarshallingStrategies()) {
builder.addMarshalingStrategy(model);
}
for (ObjectModel model : slave.getTaskEventListeners()) {
builder.addTaskEventListener(model);
}
for (NamedObjectModel model : slave.getConfiguration()) {
builder.addConfiguration(model);
}
for (NamedObjectModel model : slave.getEnvironmentEntries()) {
builder.addEnvironmentEntry(model);
}
for (NamedObjectModel model : slave.getGlobals()) {
builder.addGlobal(model);
}
for (NamedObjectModel model : slave.getWorkItemHandlers()) {
builder.addWorkItemHandler(model);
}
for (String requiredRole : slave.getRequiredRoles()) {
builder.addRequiredRole(requiredRole);
}
for (String clazz : slave.getClasses()) {
builder.addClass(clazz);
}
Boolean slaveLimit = slave.getLimitSerializationClasses();
Boolean masterLimit = master.getLimitSerializationClasses();
if (slaveLimit != null && masterLimit != null && (!slaveLimit || !masterLimit)) {
builder.setLimitSerializationClasses(false);
}
merged = builder.get();
break;
default:
break;
}
return merged;
}
use of org.kie.internal.runtime.conf.DeploymentDescriptor in project jbpm by kiegroup.
the class DefaultRegisterableItemsFactoryTest method testJmsAuditCacheInstance.
@Test
public void testJmsAuditCacheInstance() throws Exception {
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId = ks.newReleaseId("org.jbpm.test.jms", "kjar-jms-audit", "1.0.0");
DeploymentDescriptor customDescriptor = new DeploymentDescriptorImpl("org.jbpm.persistence.jpa");
customDescriptor.getBuilder().auditMode(AuditMode.JMS);
Map<String, String> resources = new HashMap<String, String>();
resources.put("src/main/resources/" + DeploymentDescriptor.META_INF_LOCATION, customDescriptor.toXml());
InternalKieModule kJar1 = createKieJar(ks, releaseId, resources);
installKjar(releaseId, kJar1);
RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder(releaseId).classLoader(this.getClass().getClassLoader()).get();
manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment);
assertNotNull(manager);
RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get());
assertNotNull(engine);
AsyncAuditLogProducer asyncAuditLogProducer = null;
KieSession kieSession = engine.getKieSession();
for (ProcessEventListener listener : kieSession.getProcessEventListeners()) {
if (listener instanceof AsyncAuditLogProducer) {
asyncAuditLogProducer = (AsyncAuditLogProducer) listener;
break;
}
}
assertNotNull(asyncAuditLogProducer);
manager.close();
manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment);
assertNotNull(manager);
RuntimeEngine engine2 = manager.getRuntimeEngine(ProcessInstanceIdContext.get());
KieSession kieSession2 = engine2.getKieSession();
AsyncAuditLogProducer asyncAuditLogProducer2 = null;
for (ProcessEventListener listener : kieSession2.getProcessEventListeners()) {
if (listener instanceof AsyncAuditLogProducer) {
asyncAuditLogProducer2 = (AsyncAuditLogProducer) listener;
break;
}
}
assertNotNull(asyncAuditLogProducer2);
// check if the instance is the same (cached)
assertEquals(asyncAuditLogProducer, asyncAuditLogProducer2);
}
Aggregations