33
33
import org .junit .jupiter .api .BeforeEach ;
34
34
import org .junit .jupiter .api .Test ;
35
35
import org .mockito .ArgumentCaptor ;
36
- import org .springframework .beans .factory .BeanFactory ;
37
36
import org .springframework .core .convert .converter .Converter ;
38
37
import org .springframework .dao .DataAccessException ;
39
38
import org .springframework .data .convert .ReadingConverter ;
@@ -163,14 +162,9 @@ void cachesCustomMapperAndExtractorInstances() {
163
162
@ Test // GH-1721
164
163
void obtainsCustomRowMapperRef () {
165
164
166
- BeanFactory beanFactory = mock (BeanFactory .class );
167
- JdbcQueryMethod queryMethod = createMethod ("findAllCustomRowMapperRef" );
168
- StringBasedJdbcQuery query = createQuery (queryMethod );
169
- query .setBeanFactory (beanFactory );
170
-
171
165
CustomRowMapper customRowMapper = new CustomRowMapper ();
172
-
173
- when ( beanFactory . getBean ( "CustomRowMapper" )). thenReturn ( customRowMapper );
166
+ JdbcQueryMethod queryMethod = createMethod ( "findAllCustomRowMapperRef" );
167
+ StringBasedJdbcQuery query = createQuery ( queryMethod , "CustomRowMapper" , customRowMapper );
174
168
175
169
RowMapper <?> rowMapper = query .determineRowMapper (queryMethod .getResultProcessor (), false );
176
170
ResultSetExtractor <Object > resultSetExtractor = query .determineResultSetExtractor (() -> {
@@ -184,14 +178,9 @@ void obtainsCustomRowMapperRef() {
184
178
@ Test // GH-1721
185
179
void obtainsCustomResultSetExtractorRef () {
186
180
187
- BeanFactory beanFactory = mock (BeanFactory .class );
188
- JdbcQueryMethod queryMethod = createMethod ("findAllCustomResultSetExtractorRef" );
189
- StringBasedJdbcQuery query = createQuery (queryMethod );
190
- query .setBeanFactory (beanFactory );
191
-
192
181
CustomResultSetExtractor cre = new CustomResultSetExtractor ();
193
-
194
- when ( beanFactory . getBean ( "CustomResultSetExtractor" )). thenReturn ( cre );
182
+ JdbcQueryMethod queryMethod = createMethod ( "findAllCustomResultSetExtractorRef" );
183
+ StringBasedJdbcQuery query = createQuery ( queryMethod , "CustomResultSetExtractor" , cre );
195
184
196
185
RowMapper <?> rowMapper = query .determineRowMapper (queryMethod .getResultProcessor (), false );
197
186
ResultSetExtractor <Object > resultSetExtractor = query .determineResultSetExtractor (() -> {
@@ -332,10 +321,10 @@ void queryByListOfTuples() {
332
321
String [][] tuples = { new String [] { "Albert" , "Einstein" }, new String [] { "Richard" , "Feynman" } };
333
322
334
323
SqlParameterSource parameterSource = forMethod ("findByListOfTuples" , List .class ) //
335
- .withArguments (Arrays .asList (tuples )) //
324
+ .withArguments (Arrays .asList (tuples ))//
336
325
.extractParameterSource ();
337
326
338
- assertThat (parameterSource .getValue ("tuples" )).asInstanceOf (LIST ) //
327
+ assertThat (parameterSource .getValue ("tuples" )).asInstanceOf (LIST )//
339
328
.containsExactly (tuples );
340
329
341
330
assertThat (parameterSource .getSqlType ("tuples" )).isEqualTo (JdbcUtil .TYPE_UNKNOWN .getVendorTypeNumber ());
@@ -441,7 +430,11 @@ private JdbcQueryMethod createMethod(String methodName, Class<?>... paramTypes)
441
430
}
442
431
443
432
private StringBasedJdbcQuery createQuery (JdbcQueryMethod queryMethod ) {
444
- return new StringBasedJdbcQuery (queryMethod , operations , defaultRowMapper , converter , evaluationContextProvider );
433
+ return createQuery (queryMethod , null , null );
434
+ }
435
+
436
+ private StringBasedJdbcQuery createQuery (JdbcQueryMethod queryMethod , String preparedReference , Object value ) {
437
+ return new StringBasedJdbcQuery (queryMethod , operations , new StubRowMapperFactory (preparedReference , value ), converter , evaluationContextProvider );
445
438
}
446
439
447
440
interface MyRepository extends Repository <Object , Long > {
@@ -636,4 +629,37 @@ public Object getRootObject() {
636
629
}
637
630
}
638
631
632
+ private class StubRowMapperFactory implements AbstractJdbcQuery .RowMapperFactory {
633
+
634
+ private final String preparedReference ;
635
+ private final Object value ;
636
+
637
+ StubRowMapperFactory (String preparedReference , Object value ) {
638
+ this .preparedReference = preparedReference ;
639
+ this .value = value ;
640
+ }
641
+
642
+ @ Override
643
+ public RowMapper <Object > create (Class <?> result ) {
644
+ return defaultRowMapper ;
645
+ }
646
+
647
+ @ Override
648
+ public RowMapper <Object > rowMapperByReference (String reference ) {
649
+
650
+ if (preparedReference .equals (reference )) {
651
+ return (RowMapper <Object >) value ;
652
+ }
653
+ return AbstractJdbcQuery .RowMapperFactory .super .rowMapperByReference (reference );
654
+ }
655
+
656
+ @ Override
657
+ public ResultSetExtractor <Object > resultSetExtractorByReference (String reference ) {
658
+
659
+ if (preparedReference .equals (reference )) {
660
+ return (ResultSetExtractor <Object >) value ;
661
+ }
662
+ return AbstractJdbcQuery .RowMapperFactory .super .resultSetExtractorByReference (reference );
663
+ }
664
+ }
639
665
}
0 commit comments