/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.workflow.execution.internal; import org.apache.commons.logging.LogFactory; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceException; import org.osgi.service.component.ComponentContext; import de.rcenvironment.core.component.execution.api.ComponentState; import de.rcenvironment.core.component.execution.api.ConsoleRow; import de.rcenvironment.core.component.execution.api.ExecutionControllerException; import de.rcenvironment.core.component.execution.api.LocalExecutionControllerUtilsService; import de.rcenvironment.core.component.execution.api.WorkflowExecutionControllerCallbackService; import de.rcenvironment.core.component.workflow.execution.api.WorkflowExecutionController; import de.rcenvironment.core.utils.common.StringUtils; import de.rcenvironment.core.utils.common.rpc.RemoteOperationException; import de.rcenvironment.core.utils.common.security.AllowRemoteAccess; /** * Implementation of {@link WorkflowExecutionControllerCallbackService}. * * @author Doreen Seider * */ public class WorkflowExecutionControllerCallbackServiceImpl implements WorkflowExecutionControllerCallbackService { private LocalExecutionControllerUtilsService exeWfCtrlUtilsService; private BundleContext bundleContext; @Override @AllowRemoteAccess public void onComponentStateChanged(String executionId, String compExeId, ComponentState newState, Integer executionCount, String executionCountOnResets) throws ExecutionControllerException, RemoteOperationException { exeWfCtrlUtilsService.getExecutionController(WorkflowExecutionController.class, executionId, bundleContext) .onComponentStateChanged(compExeId, newState, executionCount, executionCountOnResets); } @Override @AllowRemoteAccess public void onComponentStateChanged(String executionId, String compExeId, ComponentState newState, Integer executionCount, String executionCountOnResets, String errorMessage) throws ExecutionControllerException, RemoteOperationException { exeWfCtrlUtilsService.getExecutionController(WorkflowExecutionController.class, executionId, bundleContext) .onComponentStateChanged(compExeId, newState, executionCount, executionCountOnResets, errorMessage); } @Override @AllowRemoteAccess public void onComponentStateChanged(String executionId, String compExeId, ComponentState newState, Integer executionCount, String executionCountOnResets, String errorId, String errorMessage) throws ExecutionControllerException, RemoteOperationException { exeWfCtrlUtilsService.getExecutionController(WorkflowExecutionController.class, executionId, bundleContext) .onComponentStateChanged(compExeId, newState, executionCount, executionCountOnResets, errorId, errorMessage); } @Override @AllowRemoteAccess public void onInputProcessed(String executionId, String serializedEndpointDatum) throws ExecutionControllerException, RemoteOperationException { exeWfCtrlUtilsService.getExecutionController(WorkflowExecutionController.class, executionId, bundleContext) .onInputProcessed(serializedEndpointDatum); } @Override @AllowRemoteAccess public void onComponentHeartbeatReceived(String executionId, String compExecutionId) throws ExecutionControllerException, RemoteOperationException { try { exeWfCtrlUtilsService.getExecutionController(WorkflowExecutionController.class, executionId, bundleContext) .onComponentHeartbeatReceived(compExecutionId); } catch (ServiceException e) { LogFactory.getLog(getClass()).warn(StringUtils.format("Failed to send heart beat to workflow controller %s;" + " it is not available (anymore): %s", executionId, e.toString())); } } @Override @AllowRemoteAccess public void onConsoleRowsProcessed(String executionId, ConsoleRow[] consoleRows) throws ExecutionControllerException, RemoteOperationException { exeWfCtrlUtilsService.getExecutionController(WorkflowExecutionController.class, executionId, bundleContext) .processConsoleRows(consoleRows); } protected void activate(ComponentContext osgiComponentContext) { bundleContext = osgiComponentContext.getBundleContext(); } protected void bindLocalExecutionControllerUtilsService(LocalExecutionControllerUtilsService newService) { exeWfCtrlUtilsService = newService; } }