taskadapter / redmine-java-api

Redmine Java API
Apache License 2.0
269 stars 162 forks source link

impossible to create multi-values search for issues with multiple filters #360

Open SoulHunt3r opened 3 years ago

SoulHunt3r commented 3 years ago

code sample:

    Params params = new Params()
            .add("set_filter", "1")
            .add("f[]", "subject")
            .add("op[subject]", "~")
            .add("v[subject][]", "sample subject")
            .add("f[]", "tracker_id")
            .add("op[tracker_id]", "=")
            .add("v[tracker_id][]", "2")

    resultsWrapper = issueManager.getIssues(params);

using:

    <dependency>
        <groupId>com.taskadapter</groupId>
        <artifactId>redmine-java-api</artifactId>
        <version>4.0.0.preview.3</version>
    </dependency>

actual query: /issues.json?set_filter=1&v%5Btracker_id%5D%5B%5D=2&v%5Bsubject%5D%5B%5D=sample+subject&op%5Bsubject%5D=%7E&op%5Btracker_id%5D=%3D&f%5B%5D=subject

expected query: /issues.json?set_filter=1&v%5Btracker_id%5D%5B%5D=2&v%5Bsubject%5D%5B%5D=sample+subject&op%5Bsubject%5D=%7E&op%5Btracker_id%5D=%3D&f%5B%5D=tracker_id&f%5B%5D=subject

SoulHunt3r commented 3 years ago

seems a same problem in #339 #340

alexeyOnGitHub commented 3 years ago

you are welcome to submit a PR with a fix. before you propose a solution - worth exploring that pending PR #340 with a proposed fix that I believe has issues. also, any code change should have tests.

AndrewGiddings-at-BankCheck commented 2 years ago

This issue is a showstopper for us, as we need multiple free-form filters.

I see that PR #340 was closed — and for good reason, because the second fix clearly introduced another bug. But why was its original fix (Remove distinct) replaced? I.e. why do duplicate param names need to be removed at all? (Looks like that was added in PR #335, but I can't see why.)

As I understand it, a trailing [] in the param name is effectively a convention indicating that it can be repeated. So I'd like to try writing a more sophisticated fix, which would allow duplicate param names if they end with [], and remove those that don't. That should fix this issue, and still remove unnecessary duplicates — but would it break anything else?

Also, all the unit tests are failing because dev.taskadapter.com isn't reachable. Is there an alternative site, or another way to run them?

alexeyOnGitHub commented 2 years ago

the dev server is turned off indeed. I would recommend downloading a Redmine docker image and running the tests against your local Redmine copy (after updating the test configs - urls, passwords,..)