@@ -680,6 +680,145 @@ Mono<T> after(
680
680
}
681
681
}
682
682
683
+ /**
684
+ * Don't unnecessarily transform a {@link Mono#using(Callable, Function)} to a flux, instead use
685
+ * the equivalent API provided by {@link Flux}.
686
+ */
687
+ static final class FluxUsing <
688
+ D extends AutoCloseable , T , P extends Publisher <? extends T >, M extends Mono <? extends T >> {
689
+ @ BeforeTemplate
690
+ Flux <T > before (Callable <D > resourceSupplier , Function <D , M > sourceSupplier ) {
691
+ return Mono .using (resourceSupplier , sourceSupplier ).flux ();
692
+ }
693
+
694
+ @ AfterTemplate
695
+ Flux <T > after (Callable <D > resourceSupplier , Function <D , P > sourceSupplier ) {
696
+ return Flux .using (resourceSupplier , sourceSupplier );
697
+ }
698
+ }
699
+
700
+ /**
701
+ * Don't unnecessarily transform a {@link Mono#using(Callable, Function, boolean)} to a flux,
702
+ * instead use the equivalent API provided by {@link Flux}.
703
+ */
704
+ static final class FluxUsingEager <
705
+ D extends AutoCloseable , T , P extends Publisher <? extends T >, M extends Mono <? extends T >> {
706
+ @ BeforeTemplate
707
+ Flux <T > before (Callable <D > resourceSupplier , Function <D , M > sourceSupplier , boolean eager ) {
708
+ return Mono .using (resourceSupplier , sourceSupplier , eager ).flux ();
709
+ }
710
+
711
+ @ AfterTemplate
712
+ Flux <T > after (Callable <D > resourceSupplier , Function <D , P > sourceSupplier , boolean eager ) {
713
+ return Flux .using (resourceSupplier , sourceSupplier , eager );
714
+ }
715
+ }
716
+
717
+ /**
718
+ * Don't unnecessarily transform a {@link Mono#using(Callable, Function, Consumer)} to a flux,
719
+ * instead use the equivalent API provided by {@link Flux}.
720
+ */
721
+ static final class FluxUsing2 <
722
+ D , T , P extends Publisher <? extends T >, M extends Mono <? extends T >> {
723
+ @ BeforeTemplate
724
+ Flux <T > before (
725
+ Callable <D > resourceSupplier , Function <D , M > sourceSupplier , Consumer <D > resourceCleanup ) {
726
+ return Mono .using (resourceSupplier , sourceSupplier , resourceCleanup ).flux ();
727
+ }
728
+
729
+ @ AfterTemplate
730
+ Flux <T > after (
731
+ Callable <D > resourceSupplier , Function <D , P > sourceSupplier , Consumer <D > resourceCleanup ) {
732
+ return Flux .using (resourceSupplier , sourceSupplier , resourceCleanup );
733
+ }
734
+ }
735
+
736
+ /**
737
+ * Don't unnecessarily transform a {@link Mono#using(Callable, Function, Consumer, boolean)} to a
738
+ * flux, instead use the equivalent API provided by {@link Flux}.
739
+ */
740
+ static final class FluxUsing2Eager <
741
+ D , T , P extends Publisher <? extends T >, M extends Mono <? extends T >> {
742
+ @ BeforeTemplate
743
+ Flux <T > before (
744
+ Callable <D > resourceSupplier ,
745
+ Function <D , M > sourceSupplier ,
746
+ Consumer <D > resourceCleanup ,
747
+ boolean eager ) {
748
+ return Mono .using (resourceSupplier , sourceSupplier , resourceCleanup , eager ).flux ();
749
+ }
750
+
751
+ @ AfterTemplate
752
+ Flux <T > after (
753
+ Callable <D > resourceSupplier ,
754
+ Function <D , P > sourceSupplier ,
755
+ Consumer <D > resourceCleanup ,
756
+ boolean eager ) {
757
+ return Flux .using (resourceSupplier , sourceSupplier , resourceCleanup , eager );
758
+ }
759
+ }
760
+
761
+ /**
762
+ * Don't unnecessarily transform a {@link Mono#usingWhen(Publisher, Function, Function)} to a
763
+ * flux, instead use the equivalent API provided by {@link Flux}.
764
+ */
765
+ static final class FluxUsingWhen <
766
+ D ,
767
+ T ,
768
+ P extends Publisher <? extends T >,
769
+ P2 extends Publisher <?>,
770
+ M extends Mono <? extends T >> {
771
+ @ BeforeTemplate
772
+ Flux <T > before (
773
+ Publisher <D > resourceSupplier ,
774
+ Function <D , M > resourceClosure ,
775
+ Function <D , P2 > asyncCleanup ) {
776
+ return Mono .usingWhen (resourceSupplier , resourceClosure , asyncCleanup ).flux ();
777
+ }
778
+
779
+ @ AfterTemplate
780
+ Flux <T > after (
781
+ Publisher <D > resourceSupplier ,
782
+ Function <D , P > resourceClosure ,
783
+ Function <D , P2 > asyncCleanup ) {
784
+ return Flux .usingWhen (resourceSupplier , resourceClosure , asyncCleanup );
785
+ }
786
+ }
787
+
788
+ /**
789
+ * Don't unnecessarily transform a {@link Mono#usingWhen(Publisher, Function, Function,
790
+ * BiFunction, Function)} to a flux, instead use the equivalent API provided by {@link Flux}.
791
+ */
792
+ static final class FluxUsingWhen2 <
793
+ D ,
794
+ T ,
795
+ P extends Publisher <? extends T >,
796
+ P2 extends Publisher <?>,
797
+ M extends Mono <? extends T >> {
798
+ @ BeforeTemplate
799
+ Flux <T > before (
800
+ Publisher <D > resourceSupplier ,
801
+ Function <D , M > resourceClosure ,
802
+ Function <D , P2 > asyncComplete ,
803
+ BiFunction <D , ? super Throwable , P2 > asyncError ,
804
+ Function <D , P2 > asyncCancel ) {
805
+ return Mono .usingWhen (
806
+ resourceSupplier , resourceClosure , asyncComplete , asyncError , asyncCancel )
807
+ .flux ();
808
+ }
809
+
810
+ @ AfterTemplate
811
+ Flux <T > after (
812
+ Publisher <D > resourceSupplier ,
813
+ Function <D , P > resourceClosure ,
814
+ Function <D , P2 > asyncComplete ,
815
+ BiFunction <D , ? super Throwable , ? extends Publisher <?>> asyncError ,
816
+ Function <D , P2 > asyncCancel ) {
817
+ return Flux .usingWhen (
818
+ resourceSupplier , resourceClosure , asyncComplete , asyncError , asyncCancel );
819
+ }
820
+ }
821
+
683
822
/** Don't unnecessarily pass an empty publisher to {@link Flux#switchIfEmpty(Publisher)}. */
684
823
static final class FluxSwitchIfEmptyOfEmptyPublisher <T > {
685
824
@ BeforeTemplate
0 commit comments