/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.spring.jbpm;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.jbpm.process.audit.AuditLogService;
import org.junit.After;
import org.junit.Before;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.manager.Context;
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.manager.RuntimeManager;
import org.kie.api.task.TaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.transaction.support.AbstractPlatformTransactionManager;
public abstract class AbstractJbpmSpringParameterizedTest extends AbstractJbpmSpringTest {
private static final Logger LOG = LoggerFactory.getLogger(AbstractJbpmSpringParameterizedTest.class);
protected String contextPath;
protected Context<?> runtimeManagerContext;
private EntityManager em;
public AbstractJbpmSpringParameterizedTest(String contextPath, Context<?> runtimeManagerContext) {
this.contextPath = contextPath;
this.runtimeManagerContext = runtimeManagerContext;
}
@Before
public void setUp() {
LOG.info("Creating spring context - " + contextPath);
context = new ClassPathXmlApplicationContext(contextPath);
LOG.info("The spring context created.");
}
@After
public void cleanUp() {
if(em != null) {
em.close();
em = null;
}
}
protected KieSession getKieSession() {
return getEngine().getKieSession();
}
protected AuditLogService getLogService() {
return context.getBean("logService",
AuditLogService.class);
}
protected RuntimeEngine getEngine() {
return getManager().getRuntimeEngine(runtimeManagerContext);
}
protected RuntimeManager getManager() {
return context.getBean("runtimeManager",
RuntimeManager.class);
}
protected RuntimeManager getSecondManager() {
return context.getBean("runtimeManager2", RuntimeManager.class);
}
protected TaskService getTaskService() {
return getEngine().getTaskService();
}
protected AbstractPlatformTransactionManager getTransactionManager() {
return context.getBean("jbpmTxManager", AbstractPlatformTransactionManager.class);
}
protected EntityManager getEntityManager() {
if(em != null) return em;
if(context.containsBean("jbpmEM")) {
return context.getBean("jbpmEM", EntityManager.class);
} else {
em = context.getBean("jbpmEMF", EntityManagerFactory.class).createEntityManager();
return em;
}
}
}