package org.infoglue.deliver.taglib.management; import java.util.ArrayList; import java.util.Arrays; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspTagException; import org.infoglue.cms.entities.management.SystemUserVO; import org.infoglue.cms.security.InfoGluePrincipal; import org.infoglue.cms.util.CmsPropertyHandler; import org.infoglue.cms.util.ConstraintExceptionBuffer; import org.infoglue.deliver.taglib.TemplateControllerTag; import org.infoglue.deliver.util.webservices.DynamicWebservice; /** * This tag helps create create / update / delete users in the cms from the delivery application. */ public class CreateUserServiceTag extends TemplateControllerTag { /** * The universal version identifier. */ private static final long serialVersionUID = -1904980538720103871L; /** * */ private String targetEndpointAddress = CmsPropertyHandler.getWebServicesBaseUrl() + "RemoteUserService"; /** * */ private String operationName = "createUser"; /** * */ private InfoGluePrincipal principal; /** * */ private SystemUserVO systemUserVO = new SystemUserVO(); private String[] roleNames = new String[]{}; private String[] groupNames = new String[]{}; /** * */ public CreateUserServiceTag() { super(); } /** * Initializes the parameters to make it accessible for the children tags (if any). * * @return indication of whether to evaluate the body or not. * @throws JspException if an error occurred while processing this tag. */ public int doStartTag() throws JspException { return EVAL_BODY_INCLUDE; } /** * */ public int doEndTag() throws JspException { try { if(this.principal == null) this.principal = this.getController().getPrincipal(); final DynamicWebservice ws = new DynamicWebservice(principal); ws.setTargetEndpointAddress(targetEndpointAddress); ws.setOperationName(operationName); ws.setReturnType(Boolean.class); ConstraintExceptionBuffer ceb = this.systemUserVO.validate(); ceb.throwIfNotEmpty(); ws.addArgument("firstName", this.systemUserVO.getFirstName()); ws.addArgument("lastName", this.systemUserVO.getLastName()); ws.addArgument("email", this.systemUserVO.getEmail()); ws.addArgument("userName", this.systemUserVO.getUserName()); ws.addArgument("password", this.systemUserVO.getPassword()); ws.addNonSerializedArgument("roleNames", new ArrayList(Arrays.asList(this.roleNames))); ws.addNonSerializedArgument("groupNames", new ArrayList(Arrays.asList(this.groupNames))); 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("remoteUserService", "targetEndpointAddress", targetEndpointAddress); } /** * */ public void setOperationName(final String operationName) { this.operationName = operationName; } /** * */ public void setPrincipal(final String principalString) throws JspException { this.principal = (InfoGluePrincipal) this.evaluate("remoteUserService", "principal", principalString, InfoGluePrincipal.class); } public void setPrincipalObject(final InfoGluePrincipal principal) throws JspException { this.principal = principal; } /** * */ public void setSystemUserVO(final String systemUserVO) throws JspException { this.systemUserVO = (SystemUserVO)this.evaluate("remoteUserService", "systemUserVO", systemUserVO, SystemUserVO.class); } public void setSystemUserVOObject(final SystemUserVO systemUserVO) throws JspException { this.systemUserVO = systemUserVO; } public void setUserName(final String userName) throws JspException { this.systemUserVO.setUserName(this.evaluateString("remoteUserService", "userName", userName)); } public void setFirstName(final String firstName) throws JspException { this.systemUserVO.setFirstName(this.evaluateString("remoteUserService", "firstName", firstName)); } public void setLastName(final String lastName) throws JspException { this.systemUserVO.setLastName(this.evaluateString("remoteUserService", "lastName", lastName)); } public void setPassword(final String password) throws JspException { this.systemUserVO.setPassword(this.evaluateString("remoteUserService", "password", password)); } public void setEmail(final String email) throws JspException { this.systemUserVO.setEmail(this.evaluateString("remoteUserService", "email", email)); } /** * */ public void setRoleNames(final String roleNames) throws JspException { String roleNamesString = evaluateString("remoteUserService", "roleNames", roleNames); if(roleNamesString != null && !roleNamesString.equals("")) this.roleNames = roleNamesString.split(","); } /** * */ public void setGroupNames(final String groupNames) throws JspException { String groupNamesString = evaluateString("remoteUserService", "groupNames", groupNames); if(groupNamesString != null && !groupNamesString.equals("")) this.groupNames = groupNamesString.split(","); } }