package org.infoglue.deliver.taglib.common;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import org.infoglue.cms.controllers.kernel.impl.simple.UserControllerProxy;
import org.infoglue.cms.security.InfoGluePrincipal;
import org.infoglue.cms.util.CmsPropertyHandler;
import org.infoglue.deliver.taglib.AbstractTag;
import org.infoglue.deliver.util.webservices.DynamicWebservice;
/**
*
*/
public class RemoteInvokeWorkflowActionServiceTag extends AbstractTag
{
/**
* The universal version identifier.
*/
private static final long serialVersionUID = -1904980538720103871L;
/**
*
*/
private static final String WORKFLOW_ID_PARAMETER = "workflowId";
/**
*
*/
private static final String ACTION_ID_PARAMETER = "actionId";
/**
*
*/
private static final String LANGUAGE_ID_PARAMETER = "languageId";
/**
*
*/
private static final String INPUTS_PARAMETER = "inputs";
/**
*
*/
private String targetEndpointAddress = CmsPropertyHandler.getWebServicesBaseUrl() + "RemoteWorkflowService";
/**
*
*/
private String operationName;
/**
*
*/
private String principalName;
/**
*
*/
private Long workflowId;
/**
*
*/
private Integer actionId;
/**
*
*/
private Integer languageId;
/**
*
*/
private Map inputs = new HashMap();
/**
*
*/
public RemoteInvokeWorkflowActionServiceTag()
{
super();
}
/**
*
*/
public int doEndTag() throws JspException
{
try
{
final InfoGluePrincipal principal = UserControllerProxy.getController().getUser(principalName);
final DynamicWebservice ws = new DynamicWebservice(principal);
ws.setTargetEndpointAddress(targetEndpointAddress);
ws.setOperationName(operationName);
ws.setReturnType(Boolean.class);
ws.addArgument(LANGUAGE_ID_PARAMETER, languageId);
ws.addArgument(WORKFLOW_ID_PARAMETER, workflowId);
ws.addArgument(ACTION_ID_PARAMETER, actionId);
ws.addArgument(INPUTS_PARAMETER, inputs);
ws.callService();
setResultAttribute(ws.getResult());
}
catch(Exception e)
{
e.printStackTrace();
throw new JspTagException(e.getMessage());
}
return EVAL_PAGE;
}
/**
*
*/
public void setTargetEndpointAddress(final String targetEndpointAddress) throws JspException
{
this.targetEndpointAddress = evaluateString("remoteWorkflowService", "targetEndpointAddress", targetEndpointAddress);
}
/**
*
*/
public void setOperationName(final String operationName)
{
this.operationName = operationName;
}
/**
*
*/
public void setPrincipalName(final String principalName)
{
this.principalName = principalName;
}
/**
*
*/
public void setWorkflowId(final String workflowId) throws JspException
{
this.workflowId = (Long)evaluate("remoteInvokeWorkflowActionService", "workflowId", workflowId, Long.class);
}
/**
*
*/
public void setActionId(final String actionId) throws JspException
{
this.actionId = evaluateInteger("remoteInvokeWorkflowActionService", "actionId", actionId);
}
/**
*
*/
public void setLanguageId(final String languageId) throws JspException
{
this.languageId = evaluateInteger("remoteInvokeWorkflowActionService", "languageId", languageId);
}
/**
*
*/
public void setInputs(final String inputs) throws JspException
{
this.inputs = (Map) evaluate("remoteInvokeWorkflowActionService", "inputs", inputs, Map.class);
}
}