/**
* Copyright (c) 2015 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
* <p/>
* 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
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* 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.wso2.carbon.bpmn.rest.common.utils;
import org.activiti.engine.FormService;
import org.activiti.engine.HistoryService;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ManagementService;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.ProcessEngineImpl;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.persistence.entity.GroupIdentityManager;
import org.wso2.carbon.bpmn.core.BPMNEngineService;
import org.wso2.carbon.bpmn.core.integration.BPSGroupIdentityManager;
import org.wso2.carbon.bpmn.core.integration.BPSGroupManagerFactory;
import org.wso2.carbon.bpmn.rest.common.exception.BPMNOSGIServiceException;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.user.api.UserRealm;
public class BPMNOSGIService {
public static RepositoryService getRepositoryService() {
return getBPMNEngineService().getProcessEngine().getRepositoryService();
}
public static BPMNEngineService getBPMNEngineService() {
BPMNEngineService bpmnEngineService =
(BPMNEngineService) PrivilegedCarbonContext.
getThreadLocalCarbonContext().getOSGiService(BPMNEngineService.class, null);
if (bpmnEngineService == null) {
throw new BPMNOSGIServiceException("BPMNEngineService service couldn't be identified");
}
return bpmnEngineService;
}
public static RuntimeService getRuntimeService() {
RuntimeService runtimeService = null;
if (getBPMNEngineService().getProcessEngine() != null) {
runtimeService = getBPMNEngineService().getProcessEngine().getRuntimeService();
if (runtimeService == null) {
throw new BPMNOSGIServiceException("Runtime service couldn't be identified");
}
}
return runtimeService;
}
public static HistoryService getHistoryService() {
HistoryService historyService = null;
if (getBPMNEngineService().getProcessEngine() != null) {
historyService = getBPMNEngineService().getProcessEngine().getHistoryService();
if (historyService == null) {
throw new BPMNOSGIServiceException("History service couldn't be identified");
}
}
return historyService;
}
public static TaskService getTaskService() {
TaskService taskService = null;
if (getBPMNEngineService().getProcessEngine() != null) {
taskService = getBPMNEngineService().getProcessEngine().getTaskService();
if (taskService == null) {
throw new BPMNOSGIServiceException("Taskservice couldn't be identified");
}
}
return taskService;
}
public static ProcessEngineConfiguration getProcessEngineConfiguration() {
ProcessEngineConfiguration processEngineConfiguration = null;
if (getBPMNEngineService().getProcessEngine() != null) {
processEngineConfiguration = getBPMNEngineService().getProcessEngine().getProcessEngineConfiguration();
if (processEngineConfiguration == null) {
throw new BPMNOSGIServiceException("ProcessEngineConfiguration couldn't be identified");
}
}
return processEngineConfiguration;
}
public static FormService getFormService() {
FormService formService = null;
if (getBPMNEngineService().getProcessEngine() != null) {
formService = getBPMNEngineService().getProcessEngine().getFormService();
if (formService == null) {
throw new BPMNOSGIServiceException("FormService couldn't be identified");
}
}
return formService;
}
public static IdentityService getIdentityService() {
IdentityService identityService = null;
if (getBPMNEngineService().getProcessEngine() != null) {
identityService = getBPMNEngineService().getProcessEngine().getIdentityService();
if (identityService == null) {
throw new BPMNOSGIServiceException("IdentityService couldn't be identified");
}
}
return identityService;
}
public static UserRealm getUserRealm() {
return PrivilegedCarbonContext.getThreadLocalCarbonContext().getUserRealm();
}
public static ManagementService getManagementService() {
return getBPMNEngineService().getProcessEngine().getManagementService();
}
public static BPSGroupIdentityManager getGroupIdentityManager() {
ProcessEngineImpl processEngine = (ProcessEngineImpl) getBPMNEngineService().getProcessEngine();
ProcessEngineConfigurationImpl processEngineConfigurationImpl = null;
if (processEngine != null) {
processEngineConfigurationImpl = processEngine.getProcessEngineConfiguration();
if (processEngineConfigurationImpl != null) {
BPSGroupIdentityManager bpsGroupIdentityManager = null;
if (processEngineConfigurationImpl.getSessionFactories() != null) {
BPSGroupManagerFactory bpsGroupManagerFactory =
(BPSGroupManagerFactory) processEngineConfigurationImpl.
getSessionFactories().get(GroupIdentityManager.class);
return (BPSGroupIdentityManager) bpsGroupManagerFactory.openSession();
}
}
}
throw new BPMNOSGIServiceException("Business Process Server Group manager couldn't be identified");
}
}