Hello Robert, Robert Huffman <robert.huff...@gmail.com> schrieb am Do., 19. Mai 2016 um 17:00 Uhr:
> Thanks for the comments. Yes, it is in progress. > > I generally keep imports collapsed and never look at them. I hadn't even > realized that was the style here. Thanks for pointing it out. > > I already changed ITERABLE to COLLECTION. (Originally I thought I would be > using Iterable) and removed the parameterType from the signature. > > I agree with you: I'm not so sure using JUnit parameterized tests is a > great idea here. It is unfortunate JUnit doesn't give you more control. > Other frameworks (like Spock or TestNG) let you parameterize specific test > methods intead of the entire class. I am thinking that once I fix execute > and update tests to also use the parameter type, most tests in the > QueryRunnerTest will use it, so perhaps it won't be too bad. > > If you don't like it, what alternative would you suggest? I'm not crazy > about the idea of just copying the test methods. I suppose I could just add > calls with collections to the existing test methods, but I'm not crazy > about that, either. > It's okay for me if in the end all (or most of) the test methods actually use the test parameters. If not, I suggest splitting the test up into to test classes. Regards, Benedikt > > > > On Thu, May 19, 2016 at 6:40 AM, Benedikt Ritter <brit...@apache.org> > wrote: > >> <moving this to the dev ML> >> >> Robert Huffman <robert.huff...@gmail.com> schrieb am Do., 19. Mai 2016 >> um 15:32 Uhr: >> >>> Actually, Iterable doesn't work: in fillStatement you need to know the >>> size >>> and that's not easily obtainable from an Iterable. So I'm using >>> Collection >>> instead. >>> >>> I cloned the project and have QueryRunner.query working already. >>> Basically >>> I changed the private query method to take a Collection instead of >>> varargs >>> for the parameters. A public method is added that takes a Collection, and >>> the public methods that take arrays simply use Arrays.asList on the >>> arrays. You can check out the approach here: >>> >>> >>> https://github.com/rhuffman/commons-dbutils/tree/feature/allow-collections-of-parameters-in-QueryRunner >>> >>> I will take the same approach on update, insert and batch, create a JIRA >>> and attach a patch. >>> >> >> I've added a few comments. Looks good to me overall. >> >> >>> >>> >>> >>> >>> On Thu, May 19, 2016 at 6:02 AM, Benedikt Ritter <brit...@apache.org> >>> wrote: >>> >>> > Hello Robert, >>> > >>> > Robert Huffman <robert.huff...@gmail.com> schrieb am Mi., 18. Mai >>> 2016 um >>> > 19:00 Uhr: >>> > >>> > > If a prepared statement is built dynamically, with a variable number >>> of >>> > > parameters, and parameters are collected in a Collection of some sort >>> > > instead of an array, usage QueryRunner requires that the collection >>> be >>> > > converted to an array first. This means the parameters are iterated >>> > twice: >>> > > once to convert to an array and once again in >>> QueryRunner.fillStatement. >>> > > >>> > > Would it violate a design decision if methods were added to >>> QueryRunner >>> > > that took the parameters as an Iterable instead of as varags? It >>> should >>> > be >>> > > straightforward to add such methods and use an Iterable wrapper >>> around an >>> > > array to have the varargs methods invoke the new methods that take >>> > > Iterables. >>> > > >>> > > I would be happy to submit a patch if this does not violate some >>> sort of >>> > > design decision I am not aware of and if the implementation approach >>> > sounds >>> > > reasonable. >>> > > >>> > >>> > Sounds like a reasonable addition, although I'm not sure I understand >>> your >>> > proposal with the "Iterable wrapper around an array". Feel free to >>> create a >>> > JIRA and provide a patch/github PR for adding this functionality. >>> Further >>> > design discussions about this addition should go to the dev mailing >>> list. >>> > >>> > Benedikt >>> > >>> >> >