/**
   * This method initializes the view by populating all the entities. It fetches the role itself,
   * the type of authorization update support and all the assigned principals. It then populates a
   * list of unassigned principals.
   */
  protected void initialize(String roleName) throws Exception {
    this.infoGlueRole = RoleControllerProxy.getController().getRole(roleName);
    this.supportsUpdate = this.infoGlueRole.getAutorizationModule().getSupportUpdate();
    this.availableSystemUserCount =
        UserControllerProxy.getTableCount("cmSystemUser", "userName").getCount();
    if (this.supportsUpdate) {
      this.assignedInfoGluePrincipals =
          this.infoGlueRole.getAutorizationModule().getRoleUsers(roleName);
      if (availableSystemUserCount < 10000) {
        this.infoGluePrincipals = this.infoGlueRole.getAutorizationModule().getUsers();
        // this.supportsUpdate				= RoleControllerProxy.getController().getSupportUpdate();
        if (this.supportsUpdate) // Only fetch if the user can edit.
        {
          List newInfogluePrincipals = new ArrayList();
          newInfogluePrincipals.addAll(this.infoGluePrincipals);
          newInfogluePrincipals.removeAll(assignedInfoGluePrincipals);
          this.unassignedInfoGluePrincipals = newInfogluePrincipals;
        }
      }
    }

    this.contentTypeDefinitionVOList =
        ContentTypeDefinitionController.getController()
            .getContentTypeDefinitionVOList(ContentTypeDefinitionVO.EXTRANET_ROLE_PROPERTIES);
    this.assignedContentTypeDefinitionVOList =
        RolePropertiesController.getController().getContentTypeDefinitionVOList(roleName);
  }
  protected String doExecute() throws Exception {
    ceb.add(this.roleVO.validate());
    ceb.throwIfNotEmpty();

    String[] userNames = getRequest().getParameterValues("userName");
    String[] contentTypeDefinitionIds = getRequest().getParameterValues("contentTypeDefinitionId");

    RoleControllerProxy.getController().createRole(this.roleVO);
    if (userNames != null) {
      RoleControllerProxy.getController().updateRole(this.roleVO, userNames);
    }

    if (contentTypeDefinitionIds != null
        && contentTypeDefinitionIds.length > 0
        && !contentTypeDefinitionIds[0].equals(""))
      RolePropertiesController.getController()
          .updateContentTypeDefinitions(this.getRoleName(), contentTypeDefinitionIds);

    return "success";
  }