49
49
* @author Juergen Hoeller
50
50
* @author Mark Paluch
51
51
* @author Anton Naydenov
52
+ * @author Sam Brannen
52
53
* @since 5.3
53
54
*/
54
55
abstract class NamedParameterUtils {
@@ -545,41 +546,43 @@ public void bindTo(BindTarget target) {
545
546
}
546
547
547
548
private void bindNull (BindTarget target , String identifier , Parameter parameter ) {
548
- List <BindMarker > bindMarkers = getBindMarkers (identifier );
549
+ List <List < BindMarker > > bindMarkers = getBindMarkers (identifier );
549
550
if (bindMarkers == null ) {
550
551
target .bind (identifier , parameter );
551
552
return ;
552
553
}
553
- for (BindMarker bindMarker : bindMarkers ) {
554
- bindMarker .bind (target , parameter );
554
+ for (List <BindMarker > outer : bindMarkers ) {
555
+ for (BindMarker bindMarker : outer ) {
556
+ bindMarker .bind (target , parameter );
557
+ }
555
558
}
556
559
}
557
560
558
- @ SuppressWarnings ({"rawtypes" , "unchecked" })
559
561
private void bind (BindTarget target , String identifier , Parameter parameter ) {
560
- List <BindMarker > bindMarkers = getBindMarkers (identifier );
562
+ List <List < BindMarker > > bindMarkers = getBindMarkers (identifier );
561
563
if (bindMarkers == null ) {
562
564
target .bind (identifier , parameter );
563
565
return ;
564
566
}
565
- if (parameter .getValue () instanceof Collection collection ) {
566
- Iterator <Object > iterator = collection .iterator ();
567
- Iterator <BindMarker > markers = bindMarkers .iterator ();
568
- while (iterator .hasNext ()) {
569
- Object valueToBind = iterator .next ();
570
- if (valueToBind instanceof Object [] objects ) {
571
- for (Object object : objects ) {
572
- bind (target , markers , object );
567
+
568
+ for (List <BindMarker > outer : bindMarkers ) {
569
+ if (parameter .getValue () instanceof Collection <?> collection ) {
570
+ Iterator <BindMarker > markers = outer .iterator ();
571
+ for (Object valueToBind : collection ) {
572
+ if (valueToBind instanceof Object [] objects ) {
573
+ for (Object object : objects ) {
574
+ bind (target , markers , object );
575
+ }
576
+ }
577
+ else {
578
+ bind (target , markers , valueToBind );
573
579
}
574
- }
575
- else {
576
- bind (target , markers , valueToBind );
577
580
}
578
581
}
579
- }
580
- else {
581
- for ( BindMarker bindMarker : bindMarkers ) {
582
- bindMarker . bind ( target , parameter );
582
+ else {
583
+ for ( BindMarker bindMarker : outer ) {
584
+ bindMarker . bind ( target , parameter );
585
+ }
583
586
}
584
587
}
585
588
}
@@ -592,14 +595,14 @@ private void bind(BindTarget target, Iterator<BindMarker> markers, Object valueT
592
595
}
593
596
594
597
@ Nullable
595
- private List <BindMarker > getBindMarkers (String identifier ) {
598
+ private List <List < BindMarker > > getBindMarkers (String identifier ) {
596
599
List <NamedParameters .NamedParameter > parameters = this .parameters .getMarker (identifier );
597
600
if (parameters == null ) {
598
601
return null ;
599
602
}
600
- List <BindMarker > markers = new ArrayList <>();
603
+ List <List < BindMarker > > markers = new ArrayList <>();
601
604
for (NamedParameters .NamedParameter parameter : parameters ) {
602
- markers .addAll ( parameter .placeholders );
605
+ markers .add ( new ArrayList <>( parameter .placeholders ) );
603
606
}
604
607
return markers ;
605
608
}
0 commit comments