Пример #1
0
  /**
   * Services a Commandline Request.
   *
   * @param rc Request Context.
   * @throws CLIException if the request cannot serviced.
   */
  public void handleRequest(RequestContext rc) throws CLIException {
    super.handleRequest(rc);

    SSOToken adminSSOToken = getAdminSSOToken();
    IOutput outputWriter = getOutputWriter();
    String realm = getStringOptionValue(IArgument.REALM_NAME);
    String idName = getStringOptionValue(ARGUMENT_ID_NAME);
    String type = getStringOptionValue(ARGUMENT_ID_TYPE);
    IdType idType = convert2IdType(type);
    String[] params = {realm, type, idName};

    try {
      AMIdentityRepository amir = new AMIdentityRepository(adminSSOToken, realm);
      Set set = amir.getAllowedIdOperations(idType);
      if (!set.contains(IdOperation.SERVICE)) {
        throw new CLIException(
            MessageFormat.format(
                getResourceString("realm-does-not-support-service"), (Object[]) params),
            ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
      }

      writeLog(LogWriter.LOG_ACCESS, Level.INFO, "ATTEMPT_GET_ASSIGNED_SERVICES", params);
      AMIdentity amid = new AMIdentity(adminSSOToken, idName, idType, realm, null);
      Set services = amid.getAssignedServices();

      if ((services != null) && !services.isEmpty()) {
        String msg = getResourceString("assigned-service-result");
        String[] arg = {""};
        for (Iterator i = services.iterator(); i.hasNext(); ) {
          arg[0] = (String) i.next();
          outputWriter.printlnMessage(MessageFormat.format(msg, (Object[]) arg));
        }
      } else {
        outputWriter.printlnMessage(getResourceString("no-service-assigned"));
      }
      writeLog(LogWriter.LOG_ACCESS, Level.INFO, "SUCCEED_GET_ASSIGNED_SERVICES", params);
    } catch (IdRepoException e) {
      String[] args = {realm, type, idName, e.getMessage()};
      debugError("GetAssignedServices.handleRequest", e);
      writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_GET_ASSIGNED_SERVICES", args);
      throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    } catch (SSOException e) {
      String[] args = {realm, type, idName, e.getMessage()};
      debugError("GetAssignedServices.handleRequest", e);
      writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_GET_ASSIGNED_SERVICES", args);
      throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    }
  }