/** * Arguments to be passed to the data providing method. * * @param arguments the method arguments to be passed to the repository. * @return The current instance of the builder. * @see RepositoryItemReader#setArguments(List) */ public RepositoryItemReaderBuilder<T> arguments(Object... arguments) { return arguments(Arrays.asList(arguments)); }
@Test public void testArguments() throws Exception { List<String> args = new ArrayList<>(3); args.add(ARG1); args.add(ARG2); args.add(ARG3); ArgumentCaptor<String> arg1Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg2Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg3Captor = ArgumentCaptor.forClass(String.class); when(this.repository.foo(arg1Captor.capture(), arg2Captor.capture(), arg3Captor.capture(), this.pageRequestContainer.capture())).thenReturn(this.page); RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository) .sorts(this.sorts) .maxItemCount(5) .methodName("foo") .name("bar") .arguments(args) .build(); String result = (String) reader.read(); verifyMultiArgRead(arg1Captor, arg2Captor, arg3Captor, result); }
@Test public void testVarargArguments() throws Exception { ArgumentCaptor<String> arg1Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg2Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg3Captor = ArgumentCaptor.forClass(String.class); when(this.repository.foo(arg1Captor.capture(), arg2Captor.capture(), arg3Captor.capture(), this.pageRequestContainer.capture())).thenReturn(this.page); RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository) .sorts(this.sorts) .maxItemCount(5) .methodName("foo") .name("bar") .arguments(ARG1, ARG2, ARG3) .build(); String result = (String) reader.read(); verifyMultiArgRead(arg1Captor, arg2Captor, arg3Captor, result); }