docs: @Override
    public final UserCredentials retrieveUserCredentials(
      final String pUserName) throws Exception {
      String query = "select USERTOMCAT.ITSUSER as ITSUSER, ITSPASSWORD, ITSROLE"
        + " from USERTOMCAT join USERROLETOMCAT on USERROLETOMCAT.ITSUSER ="
          + " USERTOMCAT.ITSUSER where USERTOMCAT.ITSUSER = '" + pUserName + "';";
      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.moveToFirst()) {
          ArrayList<String> roles = new ArrayList<String>();
          do {
            if (result == null) {
              result = new UserCredentials();
              result.setUserName(recordSet.getString("ITSUSER"));
              result.setUserPassword(recordSet.getString("ITSPASSWORD"));
            }
            roles.add(recordSet.getString("ITSROLE"));
          } while (recordSet.moveToNext());
          result.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();
        }
      }
      return result;
    }