private boolean createRole() {
    if (getRoleName().trim().length() == 0) {
      messageDialog.setMessage(Messages.getString("invalidRoleName")); // $NON-NLS-1$
      messageDialog.center();
    } else {
      ProxyPentahoRole role = getRole();
      if (role != null) {
        AsyncCallback<Boolean> callback =
            new AsyncCallback<Boolean>() {
              public void onSuccess(Boolean result) {
                okBtn.setEnabled(true);
                cancelBtn.setEnabled(true);
                roleCreated = true;
                hide();
              }

              public void onFailure(Throwable caught) {
                messageDialog.setText(ExceptionParser.getErrorHeader(caught.getMessage()));
                messageDialog.setMessage(
                    ExceptionParser.getErrorMessage(
                        caught.getMessage(),
                        Messages.getString("errorCreatingRole"))); // $NON-NLS-1$
                messageDialog.center();
                okBtn.setEnabled(true);
                cancelBtn.setEnabled(true);
              }
            };
        okBtn.setEnabled(false);
        cancelBtn.setEnabled(false);
        UserAndRoleMgmtService.instance().createRole(role, callback);
      }
    }
    return roleCreated;
  }