class JDBCConnection implements ObjectStoreConnection {

    @Override
    public List<PrincipalRole> listRolesWithUserAuthorityRestrictions() {

        final String caller = "listRolesWithUserAuthorityRestrictions";
        List<PrincipalRole> roles = new ArrayList<>();
        try (PreparedStatement ps = con.prepareStatement(SQL_LIST_ROLES_WITH_RESTRICTIONS)) {

            try (ResultSet rs = executeQuery(ps, caller)) {
                while (rs.next()) {
                    PrincipalRole prRole = new PrincipalRole();
                    prRole.setDomainName(rs.getString(ZMSConsts.DB_COLUMN_AS_DOMAIN_NAME));
                    prRole.setRoleName(rs.getString(ZMSConsts.DB_COLUMN_AS_ROLE_NAME));
                    prRole.setDomainUserAuthorityFilter(rs.getString(ZMSConsts.DB_COLUMN_AS_DOMAIN_USER_AUTHORITY_FILTER));
                    roles.add(prRole);
                }
            }
        } catch (SQLException ex) {
            throw sqlError(ex, caller);
        }

        return roles;
    }

    public  JDBCConnection(Connection con, boolean autoCommit);

}