docs: @Override
    public final UserCredentials[] retrieveUsersCredentials() throws Exception {
      String query = "select USERTOMCAT.ITSUSER as ITSUSER, ITSPASSWORD, ITSROLE"
        + " from USERTOMCAT join USERROLETOMCAT"
          + " on USERROLETOMCAT.ITSUSER = USERTOMCAT.ITSUSER;";
      ArrayList<UserCredentials> result = null;
      IRecordSet<RS> recordSet = null;
      try {
        this.srvDatabase.setIsAutocommit(false);
        this.srvDatabase.
          setTransactionIsolation(ISrvDatabase.TRANSACTION_READ_UNCOMMITTED);
        this.srvDatabase.beginTransaction();
        recordSet = getSrvDatabase().retrieveRecords(query);
        if (recordSet != null && recordSet.moveToFirst()) {
          result = new ArrayList<UserCredentials>();
          UserCredentials uc = null;
          ArrayList<String> roles = new ArrayList<String>();
          do {
            String currUser = recordSet.getString("ITSUSER");
            if (uc == null) {
              uc = new UserCredentials();
              result.add(uc);
              uc.setUserName(currUser);
              uc.setUserPassword(recordSet.getString("ITSPASSWORD"));
            } else if (!currUser.equals(uc.getUserName())) {
              uc.setUserRoles(roles.toArray(new String[roles.size()]));
              roles.clear();
              uc = new UserCredentials();
              result.add(uc);
              uc.setUserName(currUser);
              uc.setUserPassword(recordSet.getString("ITSPASSWORD"));
            }
            roles.add(recordSet.getString("ITSROLE"));
          } while (recordSet.moveToNext());
          uc.setUserRoles(roles.toArray(new String[roles.size()]));
        }
        this.srvDatabase.commitTransaction();
      } catch (Exception ex) {
        this.srvDatabase.rollBackTransaction();
        throw ex;
      } finally {
        this.srvDatabase.releaseResources();
        if (recordSet != null) {
          recordSet.close();
        }
      }
      if (result == null) {
        return null;
      }
      return result.toArray(new UserCredentials[result.size()]);
    }