xref: /aosp_15_r20/external/dagger2/javatests/dagger/functional/cycle/LongCycle.java (revision f585d8a307d0621d6060bd7e80091fdcbf94fe27)
1*f585d8a3SJacky Wang /*
2*f585d8a3SJacky Wang  * Copyright (C) 2015 The Dagger Authors.
3*f585d8a3SJacky Wang  *
4*f585d8a3SJacky Wang  * Licensed under the Apache License, Version 2.0 (the "License");
5*f585d8a3SJacky Wang  * you may not use this file except in compliance with the License.
6*f585d8a3SJacky Wang  * You may obtain a copy of the License at
7*f585d8a3SJacky Wang  *
8*f585d8a3SJacky Wang  * http://www.apache.org/licenses/LICENSE-2.0
9*f585d8a3SJacky Wang  *
10*f585d8a3SJacky Wang  * Unless required by applicable law or agreed to in writing, software
11*f585d8a3SJacky Wang  * distributed under the License is distributed on an "AS IS" BASIS,
12*f585d8a3SJacky Wang  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*f585d8a3SJacky Wang  * See the License for the specific language governing permissions and
14*f585d8a3SJacky Wang  * limitations under the License.
15*f585d8a3SJacky Wang  */
16*f585d8a3SJacky Wang 
17*f585d8a3SJacky Wang package dagger.functional.cycle;
18*f585d8a3SJacky Wang 
19*f585d8a3SJacky Wang import dagger.Component;
20*f585d8a3SJacky Wang import javax.inject.Inject;
21*f585d8a3SJacky Wang import javax.inject.Provider;
22*f585d8a3SJacky Wang 
23*f585d8a3SJacky Wang /**
24*f585d8a3SJacky Wang  * Component with a long enough cycle such that the initialization of a provider happens in a
25*f585d8a3SJacky Wang  * separate {@code initialize} method from the one where it is used as a delegated factory.
26*f585d8a3SJacky Wang  *
27*f585d8a3SJacky Wang  */
28*f585d8a3SJacky Wang // Each nested class's constructor has an intentionally unused parameter.
29*f585d8a3SJacky Wang @SuppressWarnings("unused")
30*f585d8a3SJacky Wang final class LongCycle {
Class1(Class2 class2)31*f585d8a3SJacky Wang   static class Class1 { @Inject Class1(Class2 class2) {} }
Class2(Class3 class3)32*f585d8a3SJacky Wang   static class Class2 { @Inject Class2(Class3 class3) {} }
Class3(Class4 class4)33*f585d8a3SJacky Wang   static class Class3 { @Inject Class3(Class4 class4) {} }
Class4(Class5 class5)34*f585d8a3SJacky Wang   static class Class4 { @Inject Class4(Class5 class5) {} }
Class5(Class6 class6)35*f585d8a3SJacky Wang   static class Class5 { @Inject Class5(Class6 class6) {} }
Class6(Class7 class7)36*f585d8a3SJacky Wang   static class Class6 { @Inject Class6(Class7 class7) {} }
Class7(Class8 class8)37*f585d8a3SJacky Wang   static class Class7 { @Inject Class7(Class8 class8) {} }
Class8(Class9 class9)38*f585d8a3SJacky Wang   static class Class8 { @Inject Class8(Class9 class9) {} }
Class9(Class10 class10)39*f585d8a3SJacky Wang   static class Class9 { @Inject Class9(Class10 class10) {} }
Class10(Class11 class11)40*f585d8a3SJacky Wang   static class Class10 { @Inject Class10(Class11 class11) {} }
Class11(Class12 class12)41*f585d8a3SJacky Wang   static class Class11 { @Inject Class11(Class12 class12) {} }
Class12(Class13 class13)42*f585d8a3SJacky Wang   static class Class12 { @Inject Class12(Class13 class13) {} }
Class13(Class14 class14)43*f585d8a3SJacky Wang   static class Class13 { @Inject Class13(Class14 class14) {} }
Class14(Class15 class15)44*f585d8a3SJacky Wang   static class Class14 { @Inject Class14(Class15 class15) {} }
Class15(Class16 class16)45*f585d8a3SJacky Wang   static class Class15 { @Inject Class15(Class16 class16) {} }
Class16(Class17 class17)46*f585d8a3SJacky Wang   static class Class16 { @Inject Class16(Class17 class17) {} }
Class17(Class18 class18)47*f585d8a3SJacky Wang   static class Class17 { @Inject Class17(Class18 class18) {} }
Class18(Class19 class19)48*f585d8a3SJacky Wang   static class Class18 { @Inject Class18(Class19 class19) {} }
Class19(Class20 class20)49*f585d8a3SJacky Wang   static class Class19 { @Inject Class19(Class20 class20) {} }
Class20(Class21 class21)50*f585d8a3SJacky Wang   static class Class20 { @Inject Class20(Class21 class21) {} }
Class21(Class22 class22)51*f585d8a3SJacky Wang   static class Class21 { @Inject Class21(Class22 class22) {} }
Class22(Class23 class23)52*f585d8a3SJacky Wang   static class Class22 { @Inject Class22(Class23 class23) {} }
Class23(Class24 class24)53*f585d8a3SJacky Wang   static class Class23 { @Inject Class23(Class24 class24) {} }
Class24(Class25 class25)54*f585d8a3SJacky Wang   static class Class24 { @Inject Class24(Class25 class25) {} }
Class25(Class26 class26)55*f585d8a3SJacky Wang   static class Class25 { @Inject Class25(Class26 class26) {} }
Class26(Class27 class27)56*f585d8a3SJacky Wang   static class Class26 { @Inject Class26(Class27 class27) {} }
Class27(Class28 class28)57*f585d8a3SJacky Wang   static class Class27 { @Inject Class27(Class28 class28) {} }
Class28(Class29 class29)58*f585d8a3SJacky Wang   static class Class28 { @Inject Class28(Class29 class29) {} }
Class29(Class30 class30)59*f585d8a3SJacky Wang   static class Class29 { @Inject Class29(Class30 class30) {} }
Class30(Class31 class31)60*f585d8a3SJacky Wang   static class Class30 { @Inject Class30(Class31 class31) {} }
Class31(Class32 class32)61*f585d8a3SJacky Wang   static class Class31 { @Inject Class31(Class32 class32) {} }
Class32(Class33 class33)62*f585d8a3SJacky Wang   static class Class32 { @Inject Class32(Class33 class33) {} }
Class33(Class34 class34)63*f585d8a3SJacky Wang   static class Class33 { @Inject Class33(Class34 class34) {} }
Class34(Class35 class35)64*f585d8a3SJacky Wang   static class Class34 { @Inject Class34(Class35 class35) {} }
Class35(Class36 class36)65*f585d8a3SJacky Wang   static class Class35 { @Inject Class35(Class36 class36) {} }
Class36(Class37 class37)66*f585d8a3SJacky Wang   static class Class36 { @Inject Class36(Class37 class37) {} }
Class37(Class38 class38)67*f585d8a3SJacky Wang   static class Class37 { @Inject Class37(Class38 class38) {} }
Class38(Class39 class39)68*f585d8a3SJacky Wang   static class Class38 { @Inject Class38(Class39 class39) {} }
Class39(Class40 class40)69*f585d8a3SJacky Wang   static class Class39 { @Inject Class39(Class40 class40) {} }
Class40(Class41 class41)70*f585d8a3SJacky Wang   static class Class40 { @Inject Class40(Class41 class41) {} }
Class41(Class42 class42)71*f585d8a3SJacky Wang   static class Class41 { @Inject Class41(Class42 class42) {} }
Class42(Class43 class43)72*f585d8a3SJacky Wang   static class Class42 { @Inject Class42(Class43 class43) {} }
Class43(Class44 class44)73*f585d8a3SJacky Wang   static class Class43 { @Inject Class43(Class44 class44) {} }
Class44(Class45 class45)74*f585d8a3SJacky Wang   static class Class44 { @Inject Class44(Class45 class45) {} }
Class45(Class46 class46)75*f585d8a3SJacky Wang   static class Class45 { @Inject Class45(Class46 class46) {} }
Class46(Class47 class47)76*f585d8a3SJacky Wang   static class Class46 { @Inject Class46(Class47 class47) {} }
Class47(Class48 class48)77*f585d8a3SJacky Wang   static class Class47 { @Inject Class47(Class48 class48) {} }
Class48(Class49 class49)78*f585d8a3SJacky Wang   static class Class48 { @Inject Class48(Class49 class49) {} }
Class49(Class50 class50)79*f585d8a3SJacky Wang   static class Class49 { @Inject Class49(Class50 class50) {} }
Class50(Class51 class51)80*f585d8a3SJacky Wang   static class Class50 { @Inject Class50(Class51 class51) {} }
Class51(Class52 class52)81*f585d8a3SJacky Wang   static class Class51 { @Inject Class51(Class52 class52) {} }
Class52(Class53 class53)82*f585d8a3SJacky Wang   static class Class52 { @Inject Class52(Class53 class53) {} }
Class53(Class54 class54)83*f585d8a3SJacky Wang   static class Class53 { @Inject Class53(Class54 class54) {} }
Class54(Class55 class55)84*f585d8a3SJacky Wang   static class Class54 { @Inject Class54(Class55 class55) {} }
Class55(Class56 class56)85*f585d8a3SJacky Wang   static class Class55 { @Inject Class55(Class56 class56) {} }
Class56(Class57 class57)86*f585d8a3SJacky Wang   static class Class56 { @Inject Class56(Class57 class57) {} }
Class57(Class58 class58)87*f585d8a3SJacky Wang   static class Class57 { @Inject Class57(Class58 class58) {} }
Class58(Class59 class59)88*f585d8a3SJacky Wang   static class Class58 { @Inject Class58(Class59 class59) {} }
Class59(Class60 class60)89*f585d8a3SJacky Wang   static class Class59 { @Inject Class59(Class60 class60) {} }
Class60(Class61 class61)90*f585d8a3SJacky Wang   static class Class60 { @Inject Class60(Class61 class61) {} }
Class61(Class62 class62)91*f585d8a3SJacky Wang   static class Class61 { @Inject Class61(Class62 class62) {} }
Class62(Class63 class63)92*f585d8a3SJacky Wang   static class Class62 { @Inject Class62(Class63 class63) {} }
Class63(Class64 class64)93*f585d8a3SJacky Wang   static class Class63 { @Inject Class63(Class64 class64) {} }
Class64(Class65 class65)94*f585d8a3SJacky Wang   static class Class64 { @Inject Class64(Class65 class65) {} }
Class65(Class66 class66)95*f585d8a3SJacky Wang   static class Class65 { @Inject Class65(Class66 class66) {} }
Class66(Class67 class67)96*f585d8a3SJacky Wang   static class Class66 { @Inject Class66(Class67 class67) {} }
Class67(Class68 class68)97*f585d8a3SJacky Wang   static class Class67 { @Inject Class67(Class68 class68) {} }
Class68(Class69 class69)98*f585d8a3SJacky Wang   static class Class68 { @Inject Class68(Class69 class69) {} }
Class69(Class70 class70)99*f585d8a3SJacky Wang   static class Class69 { @Inject Class69(Class70 class70) {} }
Class70(Class71 class71)100*f585d8a3SJacky Wang   static class Class70 { @Inject Class70(Class71 class71) {} }
Class71(Class72 class72)101*f585d8a3SJacky Wang   static class Class71 { @Inject Class71(Class72 class72) {} }
Class72(Class73 class73)102*f585d8a3SJacky Wang   static class Class72 { @Inject Class72(Class73 class73) {} }
Class73(Class74 class74)103*f585d8a3SJacky Wang   static class Class73 { @Inject Class73(Class74 class74) {} }
Class74(Class75 class75)104*f585d8a3SJacky Wang   static class Class74 { @Inject Class74(Class75 class75) {} }
Class75(Class76 class76)105*f585d8a3SJacky Wang   static class Class75 { @Inject Class75(Class76 class76) {} }
Class76(Class77 class77)106*f585d8a3SJacky Wang   static class Class76 { @Inject Class76(Class77 class77) {} }
Class77(Class78 class78)107*f585d8a3SJacky Wang   static class Class77 { @Inject Class77(Class78 class78) {} }
Class78(Class79 class79)108*f585d8a3SJacky Wang   static class Class78 { @Inject Class78(Class79 class79) {} }
Class79(Class80 class80)109*f585d8a3SJacky Wang   static class Class79 { @Inject Class79(Class80 class80) {} }
Class80(Class81 class81)110*f585d8a3SJacky Wang   static class Class80 { @Inject Class80(Class81 class81) {} }
Class81(Class82 class82)111*f585d8a3SJacky Wang   static class Class81 { @Inject Class81(Class82 class82) {} }
Class82(Class83 class83)112*f585d8a3SJacky Wang   static class Class82 { @Inject Class82(Class83 class83) {} }
Class83(Class84 class84)113*f585d8a3SJacky Wang   static class Class83 { @Inject Class83(Class84 class84) {} }
Class84(Class85 class85)114*f585d8a3SJacky Wang   static class Class84 { @Inject Class84(Class85 class85) {} }
Class85(Class86 class86)115*f585d8a3SJacky Wang   static class Class85 { @Inject Class85(Class86 class86) {} }
Class86(Class87 class87)116*f585d8a3SJacky Wang   static class Class86 { @Inject Class86(Class87 class87) {} }
Class87(Class88 class88)117*f585d8a3SJacky Wang   static class Class87 { @Inject Class87(Class88 class88) {} }
Class88(Class89 class89)118*f585d8a3SJacky Wang   static class Class88 { @Inject Class88(Class89 class89) {} }
Class89(Class90 class90)119*f585d8a3SJacky Wang   static class Class89 { @Inject Class89(Class90 class90) {} }
Class90(Class91 class91)120*f585d8a3SJacky Wang   static class Class90 { @Inject Class90(Class91 class91) {} }
Class91(Class92 class92)121*f585d8a3SJacky Wang   static class Class91 { @Inject Class91(Class92 class92) {} }
Class92(Class93 class93)122*f585d8a3SJacky Wang   static class Class92 { @Inject Class92(Class93 class93) {} }
Class93(Class94 class94)123*f585d8a3SJacky Wang   static class Class93 { @Inject Class93(Class94 class94) {} }
Class94(Class95 class95)124*f585d8a3SJacky Wang   static class Class94 { @Inject Class94(Class95 class95) {} }
Class95(Class96 class96)125*f585d8a3SJacky Wang   static class Class95 { @Inject Class95(Class96 class96) {} }
Class96(Class97 class97)126*f585d8a3SJacky Wang   static class Class96 { @Inject Class96(Class97 class97) {} }
Class97(Class98 class98)127*f585d8a3SJacky Wang   static class Class97 { @Inject Class97(Class98 class98) {} }
Class98(Class99 class99)128*f585d8a3SJacky Wang   static class Class98 { @Inject Class98(Class99 class99) {} }
Class99(Class100 class100)129*f585d8a3SJacky Wang   static class Class99 { @Inject Class99(Class100 class100) {} }
Class100(Class101 class101)130*f585d8a3SJacky Wang   static class Class100 { @Inject Class100(Class101 class101) {} }
Class101(Provider<Class1> class1Provider)131*f585d8a3SJacky Wang   static class Class101 { @Inject Class101(Provider<Class1> class1Provider) {} }
132*f585d8a3SJacky Wang 
133*f585d8a3SJacky Wang   @SuppressWarnings("dependency-cycle")
134*f585d8a3SJacky Wang   @Component
135*f585d8a3SJacky Wang   interface LongCycleComponent {
class1()136*f585d8a3SJacky Wang     Class1 class1();
137*f585d8a3SJacky Wang   }
138*f585d8a3SJacky Wang 
LongCycle()139*f585d8a3SJacky Wang   private LongCycle() {}
140*f585d8a3SJacky Wang }
141