From 77c787073f4c3677c65dee1838ad1cdd9341b153 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Mon, 25 Apr 2022 22:11:19 +0530 Subject: [PATCH] Created different classes for different types of projects and modules with their default implementations. --- .idea/compiler.xml | 2 +- .idea/misc.xml | 2 +- .../assets/data/common/tooling-api-all.jar | Bin 4724152 -> 4723674 bytes .../jsonrpc/json/MessageJsonHandler.java | 7 +- .../tooling/impl/ToolingApiServerImpl.kt | 1 - .../impl/util/IGradleProjectTypeAdapter.java | 66 +++++++++ .../tooling/impl/util/ProjectReader.java | 36 ++--- .../test/test-home/.androidide/init/model.jar | Bin 5937 -> 5960 bytes build-tools/tooling-api-model/build.gradle | 21 ++- .../tooling/api/model/IAndroidModule.kt | 27 ++++ .../tooling/api/model/IAndroidProject.kt | 53 ------- ...ultAndroidProject.kt => IGradleProject.kt} | 38 +++-- .../tooling/api/model/IGradleTask.kt | 31 ++++ .../tooling/api/model/ILaunchable.kt | 28 ++++ .../model/internal/DefaultAndroidModule.kt | 99 +++++++++++++ .../model/internal/DefaultGradleProject.kt | 56 ++++++++ .../api/model/internal/util/ProjectBuilder.kt | 135 ++++++++++++++++++ .../tooling/api/IToolingApiServer.kt | 1 - 18 files changed, 498 insertions(+), 105 deletions(-) create mode 100644 build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/IGradleProjectTypeAdapter.java create mode 100644 build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IAndroidModule.kt delete mode 100644 build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IAndroidProject.kt rename build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/{internal/DefaultAndroidProject.kt => IGradleProject.kt} (53%) create mode 100644 build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IGradleTask.kt create mode 100644 build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/ILaunchable.kt create mode 100644 build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultAndroidModule.kt create mode 100644 build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultGradleProject.kt create mode 100644 build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/util/ProjectBuilder.kt diff --git a/.idea/compiler.xml b/.idea/compiler.xml index cc16c8451..0034de2f5 100755 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -10,7 +10,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 46c9d0484..06ac8f54d 100755 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -141,7 +141,7 @@ - + diff --git a/app/src/main/assets/data/common/tooling-api-all.jar b/app/src/main/assets/data/common/tooling-api-all.jar index 1dab5b2e63e0c9ebe0ceb7018d1a57ace4710cbe..7052b31ab0fe268026a48911193e9c882ecb7c62 100644 GIT binary patch delta 89844 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 z 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%0A~2hHt;UU$VEraW(Y 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 EA1s#j*8l(j delta 90622 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 QO&aG5f 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 z z{d$3c6o_BB6azcP;B7@?U!vvrpPO2zp%%|j+w=7NJkIMC_^njD8j=V1c7(yuq@4Lm9h!ePo~f5ynP-XRYW11B1#2yBjMXhI(P=~Qus4qcUb|hN_lUw=(vp|vqFpC6D#&0@NR8oUuzzfyCQwnF=R#* z(~BiwT6JIJm!Y~kGonHUlh81pV|Khp#n)_1-^TG0YjuF z&%Qv>5=$8(qsr37zK+!ED+p6pG8p>1k#>cz6Xgo9ElvlEerdQn$bmY1L#uagWr*Af zd-)B4sLBo_>+!%~8u=Zqov@oBa_jACQ;e9vA82UCej|9h9+#tjKw;-23_&a`P9=UK zqg-~%MB_udeqt6Mnk^u3`u7E~ru&6{X?{b}AdPj#yS~r>PsU0ug*VJAWx!87K4O5J z`R6?F^_jQN5UMd`ro8yb5NS2NVkob?{lXALQ$ISZ zK-kIe41qs1Q>Iyvi;dwwTVSsAtbie0+2O=Exu?*|(qK^9yD23P`Hb zse#16U`PaP4CR!@cqvO`n5YbE%`DOxUbpnKp*#)RR;HZ*SLeO0_O_6O6Dj%X$Te*U zFC9EP`>97|ZWpGK8uaPx=RkcfVO|<<2kr3n=C_0#J42MR2*05&_1%u?Z?kp&N&OM_ zpdN)yZW}`kMI8#lE1>pgAzJy27Xt)83>!=z9bm@RcmY5_Iyf3)mDzYw zN`u@aAuI&>xFft`|1N=y_>_%p04;PKc|=rHSEM4A^fME!jtP?I6Oj0W1 z9=+gS>1L>++{WE^QIH$7EuQ#c9(P9r@mpBXyE@Hxhri{%W*X@U_8zd!xLj)NVVI^Y z{#RgXi%nr~iuMGp|2L+EZ#vT7o`wiT`#-YqMh!A*rTjz zt>|YP(hgzW&-0EY)WAhuE9e1;psAF>Z~fuRN8QVZ@T9TixjBL z5NyL1W%CaAL**OsY`dsMMycp({_ZU>7Tak>6* z-y+SKIPwINh@k=K&?jw0b0g?^0LIt&_KcQ6B0dlvw>80J4eUR6K&4Xpw?If=*_~ON z1cCKSPiB>_nb^Z$L%wD6-S2)7sE7Aq0wnaV^tqQmQgg8m=o$=M+aaP$l9a+@g~X<` zIoaQxl25_xLqmXe!mB%?OR_f?#40lceLppYg^8suwm01=dl`ryPd2k`#uO%!b7hqj ze3D0vp-TKL2FuLw)=YGZ+>Rbt2sJfNGc^}K;9STMqx4?D)Y7L~6h@$KxL81{((S@< zxdAvFDmvxvDt}MTS%(&ZoW~nYax5vk2z+GNRso5l+=pIP6s5z*fm2QMcRy2#g5|_E zRYh1&;?cx(bf!}=sO*OaI*dN)jNj7Jd(*;VV5z#7Swu>hRvbgj5~oCkHnRWH>xS5i zfQ0WO$Ia}bKPjX|P+oCE4aMU$v&dcS#1iPqVdof~Qv&Ec_!U1P5upiBzP7g-D3E~Z@I-YEYwW5#@Nsn1R0?L z*mx7MyK)6+QZihCBPb5rH?+P2W{9=e+BQML%LU*?q>*T9pNgQKTaATeRx~tK3Rf2e zxm%2D!w~^UD#c(-i88CVQ;eX(7>)`k!4b84Ei-}`ytHYwFHU?{Mi1Vs&$Z-KHq=zQ zB3Fno)S-tB1B|PiIaQ#^X*`=Ln)9>@(vppBj0_|3Wwl#XSn>}%tS0P^&zV(}8l4#( zR}IF*ad*jxp;DaUm!M@<5s+8BhX9XOCiWGKv&D`b$`ODuOQE+M5!rgoKu59}f@xku$k^~*I19GSnGQ9E8o;s??*t2$GX{9=@vA0kPij{a z(Z&al{t7L%Uoax>)dbDryP`Q5$4DKW6kt~eEI5N9aomU%!L~G}4%&TC%U}%ac%`)m7v$Oi z`^nC{X}6&+_}}>pTvbZ&3v>}*4nma^<(XQhv;j*4H8iyzqVrhf;X;Z0Jy^WfDaL4{ z`VjIol5yb;uwdyHfeLcx!(_W+0@bl^Ml4hPZbq#J@PWPt2H(^L8mG1E4Ir~|JqBmg z3G`!cZrKpv;z;a;zA+my+3eZ}gI*Wlwygv>mMS$u9v6hvq6G@sP2p9G;Y{{Hmj>O=37DffDaGqr66$J-HtU#3_HAG@!)RhCrnyp868h`GF`x8Gei*a{c}F2>cW`ZE^ScxLIes$C5+v zA>}Vd&S`K>r7fE5iz8eDESa~J3BjYU{{-4_8a7c7oWL^;g5YLbME+}+MZsv`hL=Ft zJ05LXaD!>G;<1*UeOnZ&rrioOX3P`XK};W9FKlNRuPnc>lF+j~x~T3WX2w=8zCk^} zj)8o7$FT#r3S*sOYHYU-aF$<4Ktz8Jc@gNQIt8)dwOL~a<}x1!qX+d(!0;@CH@8G@ z1n);ikp2!s5P=R)UVc_puqFpivj1D4mKJt2*eP>=FwT^<^dE)eM5Vt6TJs0`e}9?P znQcLbdk9O4?^Gi?p=IZBEX)LnDG-Fa+70s0*;sT&^Y+^?0r~_#tuA)jh6?anTq>4) zOTGN4v`3H^ZM%mKb?gFMLqCw zB4u?&_qDL*rYi zJPIl^UZ`)xh(SUMoNbuCeL~R4?x)qmEV>7HL)&rQir&YnC)$G<4k7EboSx}nL6z^I z&F<}qDC4{GC{hLX?3I!#m}YTA+7XfZxShR_7qK4~B7OWknB`$lX}w{&FdSKCIV$Xp zTG9q5l6579K{r82!s&U2pr^B^qG28`eDm=^A0(YWnukGKGg4<^S~GhB%T`@Fl$BCn z=#CTiEUKz62AocKAyAU6Gu+|6*s&P2g2U3t(4Zfh*oZYu#9-kqUgKkV&Rpk#t(AMo z?x$@AC0eqBGguEpXLUXs6VB7SI1;)T+o~bMux7q{0;MplKXko^xAa*07y4rWXpNWi z2BQ&O-0OkUJ6*Nz{X+(T(HaMrS-O(ge+FR6QGA3)mHKCO5ez3yo(2pA_bHt6m(3GE zuLojFrQ3Nf`_5SpcYcv?>}3PJtK$4Kivp|pko90#EehZEbx9&8@CzS|esRQYCTWD= zbB`N!@m&=Bw7*bh+n+K-nl<18dUgV!>JTXN?Ky+x#Y3M;Xik$Dya;!L3`K&shoBrV z;=P#!9%(($ekiIWZv01Zj*w&FpAs)mC*E;; zI3hgqOlvp}47GLEvU9mNWO-eXVkAfCA@C4K($jNB$ zS&eUh6fk(uA6iS8!t)b_?$?b0$uwp(1h>oK>0wUngi`i2rD@g}ZrsKo<~%&cBxlQ< zhK~Vv%W)i$zJ~uCgK9i$qE@;cO&*KfBuaGAWfw$$DIgY5r1A zdB<|w1n{M<;!>sVsbmGJ$hlrf@zFX@{jRoXgPyvJCqmPbt$Oh=sfrU!cIs(^Hf2IP zC!vgo;SG>UDWilIct|Y|c0YI26TY>~CFAPk6c-~?>O2J{C57)~->lsqQcgqEs`q)A zG|z|Qi4`q=haqJn3%iBqiC8>%PGO!s9VM9jjLY8o#M6pWx1u$Eer{lpOD}nD>c2pH zk(N8pUKubPFK06AP~2-zJXE$qtINt6NU!00o}RY$TG9Ep(AZ-pn%&AzJWMJN?WaOL zZ`OIuz4QwvM4(x7p?bvxJ8d!635{kUnVooWel84D&OTzVn}yctkLTkVw=~hhmcKK_ z&jw>h3l1Cjw%XDD*|73IctD;-k$Us!IjBb;;nvC!X_;C$2WzOA_H=JSN=Ir1SeWX_ zf=3Fkoym4y${eB8jkDv!56!*gpb!1jzz3 z37cf)cn+PVh^bFC>U189K)?Cu1VY0(texlC>Djq>KJryin=?o)2K$XwD0Bgu&GkqQ z!)8^eU;&c;62&r*FXZDa{{oEpI~JlgeM@8-CeyMajOW7=yyU&;mWv=cAeoDRj`Gx_ zK;>o1UWCM!I$kPg+CscLb*cwAaTaR3gT|oXUcu9sabW~rh;!PPQVf_w7G?s4PQx)UkaTzWBwsaG^Ynku`coZog>f^*W|d@sH{5~ zsuWaz@~q}w#Nwo?8=AuUZUzdD!g`2hU+RH>bn}u|RG-EeaFvYXNobcB^@RR#r)6qj zL2gN{R=~Q1i;bBiOynxlzbjCMw#=4!*)U{AHcQtIM!hu`KBTMI&%5RELYODp7S0r z2R@j5UyJz9_Vf4|>o7^{ahMaBjTzIegD6+Y`C#u+14GU_&c#W!&E^SOOZk0$4(dn`L`XyZ^9>M!XOJX)wF#I|$OY8R zjvHa8+n0Gf=?g>IMzrF}*Zwz2>C4E{D~KY^gJ*4m%pth;SZ>6q9-A;MOu8*g+K*0o z_-1saBOWrII#l)qU!1?)N5-Trp6jm+vcC|m^TBv-Qx?u`0)90-yzSmVaBK2!o z7VziKD}*H)+H+VMkKlV@NgelM=1^rDa_i>K!!oy}WC%fioWS<5C8n`hBpwQqqw1!^ z++^F4nrkQv8zpQF<2;f(P5usq?5@ob>AOW_EpL17jvT!c3H}+QlW0!ZMZkHEoyhA( zHHYy5$Cg}orKAbl>o5eJX|lJH`(~8xLVTMv&KR~EUvH16%S0n@yo{=Irrns~tv{ZO zY0A0EGrTc#+5?LOwB-n#tSi&f)-aSbvX--#N1pD%#z|mj&cJ#Zd@O;dZYOU%6;O!U zJ8&I`K-m5fQkdiq8aCY9I{zTjdYB`N*KXfq zA?!qV>T1X74F?hP;3%C`ysnhzExUW+Q2=8KJA|y~kLL{1z&Y~}W;=K~UaDx)z_4YC zxBNk?#e4%R*IdZCqz#u%^SwQI-*M_N5)HvEBCM*SN3BZ1MJVslYd9jgxUDZjrD?N4 zM%amZ0ukk%|Fz++lB9e)aB&V~7%Xj5A2D=7S?pbne`{!e0!i#Bk##tck}iZ^i%>u&`CsUsQRnRFa7#y1 zcJxIl`1#2Rq+?mI+@}UUauuO+yg!F{ss21neLf{hItC}*k#J2ZqaAA))7kUP3PE~E z*hMUa7YEkBz3vwf);;9^6IPXqFQC$w;l(wUIW?1ncrijK-a6AqBuSX1UW6&iTK;dC zvIH~4S#9*-Z>?&`_ZRLgK?ZK&p)-ifzl046kFI)rIhSCv3;0l@OYG&P6n;mWbjzOw zzP?;diPyeCGHPfI{WnP1w;6=e>3>i?DVGzbBWpM_FA+QvGm#^AUez#zM>8_&hJy@O z;d!uNc8%(K&h7U3HT3)Cm&D_B$gg2elSZQy-u;VAJX^=%)GHVoXKvtUINJuJ?c=|K5Ps18|r@ zUydogdx#_@pPG5E43f+$*Rclh)ULfXU?_aAOG>&MmA_CXJ+*cRCmgO~LLOG#$K?N9 z)OPPyimTxHxq^edOHr$O=p#c*v1~8JG~;%P7u_huF3Yp;jEJSy?D}kJQZwi_GQZA< z-jt<;(vjOKaYmKt(j9aS|C-gQN@ab}L{slz+~{ShV=FZ zT+JEmMIG;=HbqxqL>S$+J^EaW1h*)Ak_xwW72d~@ zvSa_HD2*Di|NdluAFGaVXWGUB`rXGIbsjENxu4QmaKq&(_fvc+_5pSZR^x^g#_`M5 z$CfrfkZ-Fy@BoD{)19_`;l*T2&&O!~@4HYj6?ewr-|Y&1yms>tYDaqLB)HM)>M-YN z8~GJUcEhjH2D1>!Z#+HHm|f+ZcE<^%VQ*U)2UK8GbePQ6BJ zo`>TlvSu}<8%v~Ni@otEge|7-_6XNK6P&sso$n_S40*{L9Udr6R$m7c$*Td_-p3B+{eTx1H=1?ly z!2u5DkD##6pqjjq8FD|T*m?Z#4VY-TrKc>DKT_`3lmw$}vigS2-b3%9|2bcLPnc<}sYDGv z8korYGg*I2X(5~wsOvYh8&e#?{)Vo)sVV*XhS~$IDd9W%H9W}m<|i6opYN!faWe7q zJHCZZuk34rD^&r%v*kR1>j=#qbOg>Y{=m|rxSAnSnGXIy3moaj;lEvc9jNV4EMO!> z{ePmNTy^JR9@TxFsP9jt(ZPo!TYsXmMuan>nb5E{`*ompztEoUMR6i167q_EAVd<8fh8| zLmT106CE(pgt3&sGlfsCFSX6_4WLkC4NlkQQ9ENzGvT*URA{UTuIM|^ zqkT8lRF?qh<%FT5>5_@Y_5VyVq<0**OM$+$#so4yNJL9v1#X-)(FD@3alYo%-c-W} z*`Iflt9i3p-gctzZ(aKK3GLRmZ#TR^`~R)A<0jHkQ%!XB?d>Ym$W`IMbUWWN&3nn8M|t zB+iX`@AtK$)^G64a-JEQfv-6%`12s+tS{sq;j&aGea&ctxu%w4_EA}j{&gYN$pXx4 zj&r8+qsU`h+xk@~(?a7ed^t&Z78<;pd`c(7g%*{f7E9?kobuK0AYc70%WYN#d0Ah~ z<1DVCi56O1Y>@Hw_ZeU^|jR+=cqL{mRp0*?kJK_1qcNX2z? z8R~1T(J1cW0U|9!oFb%p1yzZ1UHvR*L071xwt+crxl^W%riH@M3$Lx3X&mUhja;>) zH-@ixQ--a^h20EoLlO8VSk_=jGeu#TAJ1cHc`{sYBmC?wD>}&LQL?mU5q{S6w1+$$ zl4|QpT}AJvDx0?SQ_a zS651Q&~z4FWO25u4$$Y1Y%c0ZU5yphuC8&TbVrE7`%^pvf`3)IxX;gwmN{x_2{C_h z_?4puv(O=WJngG#;)M&t^@JIZ!5))T-)>Zc#Q$=5n2nRBj__%eE~+i%IYGI&1spl= zgno*3@X|BB#};z5+*xBreGgzQ6=sV%lj;nCibZ;1?H2gqT{#z6Vjm0JvRD_EA>3T4 zBg_bI)!-pW7u30rt2vCE;}MJ5#tkm1Op$9&=gPGoo{&v$O3YB*AkW6MySUF0lwU4K;q&iaQ zgRgl~b&;(tZHZybcZX27A|BTJke?-<6+oemJI53Oh>g5M6JncPdMbG~D+9TPmfj6RV|IE4bywT;meb+^`qG4bCtk^v%GWUV+1{Hel zPo89x8c6aCP6PzOjLU0iGK_HBrVlD54ChQ$#vn1z1dTC8`)HhnU=z-_OyyUN#`+*v zz0EixnfZc=KW;Sqnp`E{7k$72oD`6SRw2<>qZZ~?)nnf6iyGnNpeHcb4&U{Zez13w zYI=;ia+fNpbj5mmR~GI`&lvMUSGp90VlQ|0x2I+Av|W2Ue^}?aHwz1)Mqd7=w8ULA8(>W%U!y0Mj1&|KL%hIKz0CIA zLN)b-o--JcNa|1imSh!x`fM5o9z1CWO{Dzk7fE*(_6mE(%y!$uSpJssgnllD4R8_y zr$blqs3=WbG)I80%1(mEdNVK`!a+{g({EfA$!m}zQ~YBNM^tp(m|xG$lp7@MIs4kh<63oH|AT>2`=`61Bt`k0oeF+RG8hz^5Y4 z?G_2k#vbQH4kLoH@5H~H_?rt&8pyjW$Wm6CXQAw{j&+-?r#jhA-r0fktYEqk6 z^dmXg{AD8UzC&v$ibe31&pe-@i5R0jcOCMSA@d(gfTViJ&xnG8J+Wa_vb=yNhs#Vyhmx;Cu?9(8xUSa^0& z9^#AZK;r&hJPdZn6)w8IFQ_iUj%TwlI3U+Uv#eop^DiTpz4wmj|%{ z%xsSIp`j*PQS+vx1w8PtqkR>()%HhiN)0MxtvfU-4b!GBcUh{q$K`fF73%1uwW$3A z1MZg(DWnnX#io8O7WUCH-oIVw}RMaO#i_YWWK( ztS0SE*F*>%U(%~|sLLd>hq@JZuL3B0mcpLeHpWu3zLskI1|_=nMF7_F4eHp?e~n=U z<99ME0&9?4O+L4u$2L1&eG2%kSKooXdt`<7==*<`jnc*!e1#WgXyO&(=K#w2h~k|e zjAB315;bJu7lT|6_(r)+(AgdOf?9l|Gn&SiUjh1Svww^NDX)n}R0JrbKN!4?0^y+k z2UyLTLeoypGM>;><00jB#iL|b;a&m_Z;B4oGLd#Q)ihF6uM#H%H^`(v-sm8G-KP z)(t9sWAN-|91dxr$q*u2aU!oppaX9y89gw8JJ13Xxb`?}z{Da9gJsJ=bM`cVQs~)* z!|Ik8{D14IBW$UCckozk#Z(B!bQi4p@US+$0;}@$omwINU0D*G-v@@8))iW{$_mu) zDZ_Ah7|9|WT|_JNGHEzz!1SOIfld_qJ7QFC4LP}^IBe4fOEf9hISf8DMhD~bQ#-`F z!{7lEbZ{e~_Y@t07YHT=V$+~KQ)HT3UbWFg3K2MkAQ_q^>A4y4+O~y7uq#vn zPu?16LFx_=cd;$fJ&&UZEQG>uDaVNIu7@U~qHq>IP0YlAgI)rLfWtlZ1zK@A z9~gY{AcHf6o;a1wa^sKftVXM`h#Tnn_L5?2xTNHU($ zw>do1Q>;WDziZ+Y_nrjO>vVM2H6KHfP9l2NX}_bQ*Lz1>e#dU!gb#tZeob_y;%4YH z0=hs5zQEP%qR|L7zS7h#*jt(QgD!Q^)KmEUrlht%1N}+$2YSXhK}pFAMF$%7hbBg0 zVE1S|D> zyH_DnpgqL|D{;Frf)HHCS6#Rf?Wrc*INxKdTQz_zSdV#n5guk zi-V!bu%0kO!!#w0N>v8Zk)9CMxG}xxiS5e;O(?k+YM51X_UlL+dZBvQw&#S+a?z50 z_Ch+7J5p$GOx_1jDPQ5iQ)|p-O1BMdH$BC{Z#Aqp{^+9{H>Vqt8 z?@EpOV25FPFIvzCLxWdeB_*s7tLJASjamIEJPUbQI*>+XVWT#Ch?2@zh`zL?NgcV| zeq|veb%rac$x6|UV)`PM+eqrs7psx+x%vH|%!$5OzB`V`|0crzY51|HZvBw*n|adz zWs8)iw0)%LN~Qf^_m)evs5KSl!csxmKm%5in5{`tM6FR$?^Q73W`Au9nY_lJ)Vr)x zQrc=Ugg&aZDmwMoxR@W@ptT0w*@`zI3kxuCwC<1b>(8x9TC_z8kBj~&g}K`(a{vrA zX#hhWgJsFvp1jQ z`Z{JHM6^9c%LZ!F6nl%6H1mYgfm&oky7M5IZqhj=6`es9_Z)%Dw!2_ZK_f~iZ;(b5 z2K-CKgOGZ3DVYyOol-xhMuRnN6=u(rl=MXD%jy&yrpoEtV7797N6CMo743P?esNy& zt+Fa@`U@Ni+!ex*hF_JA`9lEg{6)b-ATU>;zC+NUqK$*7k0J<9)v`+ZXb2Q6wg{qM zm4h7V*=|6ALjeu545C7dAk2M+LdGsT8b1^=7FVOi%$uw*@+F9EaxN~dN)|T~ywAHyqgRFtHEeC6_ zun{og!cbbSP>nQH zUjigd9!M{9pp?g03KL_j6QOOorTG*{C=*s_8A^E4{O&3(AWaIDIXM&xN?75CtG2nsI% z3zRYn?W^vkAbPU}mG?kTbW3MhkjKCDc$6klQSWLHWlT|3 zqomPjVuNo{-_dBTZEgqAj9buRSU;$JZ!|J{=3!9&1LQTWJCL9;Kqfp5qC=0h&>%p9 z^9!0aM&l<<@uZJmcV1Dyv1pn2o{t&AYeu+JoX8so_BB5^ad8}0HGlttYms}f8+Dwc!c7_Dv8&rnL9?c6sx!obHWwkA><f zR^f2(D#2#-bUca~H~&bCK&%J{5pAf;1TcQKgK<)Q zA|h0)5v*59aJ#8kghY2{L@S~4pB%KBrl~Dl=*EcZlsOH_7W9^g z{9eJ8Y2jyW7uln)L8j_pmwuY2rI0n0{kl--@L*%=J{=`lHbRG3Q1NtBg| zdj>kJfEm!}==Mf2T*oM?0m zW5b4-kofi}M-DT@dKQq^SShjyp~ry)o-vRtoMT~s2*1N2n(-)SL+HtyoS4aoQ&=Oi zkeYXbaZ~DS(P3<;w7$B~PkbC7}yKD*AI{elB?a@#XO0 zx!~Cs$cVp$;knw+7B;N2xT*JcaB{bzH%u(GB|Aev30d$crAqfTo*u0t)s^=u*3 z@NBPxy?KuPI~v6MEt4~3b`0^R(nW}JuM0y0N%eb3RhqUQNi|yxH7u|-v;>8?Y^(@t zGNcVQgcvgP1nldv1jzC%j+9NQCFge>gP&k`XbEaa@E{%>w-i~<9>R&`jMy`r6CT5$ zxaBfv@qHvmdM`t8@@P){!-z@an0^5ivK-T}jBd1T75c1&e}=;Qb0m~qupB9l=*i*3 zg(`P?vK$@soqimtxdI)BF@~{KsCgOvLv4AiR)a$I>p|FGjKPEMtU%wIF^m!3)NTW! zv|b7EW+NDaM|xLkEU5RePzx$p37s!a(81|~2VNVJdEn!;3c6le$&j8xGY(+Qy0VTOm?v#S69@=+%EGW9TH<@8iPD4~15x+&x?Y8&a%=a)kGP zSi%T%p~ib*l0FQcbCJVa)?(h0c!d*5EV5!^f zQT>D0L)giOdSM|Cpad!kuIqfNgRwt*0!dqL0C%02I@pSt!jZB8E8<3mvBAim#*PSs zi`5FSPs|O|UomtZ6-L>+u_7wW4YT3}<+2em`;L=vcluZbM<%4@N>7H@ogwot->9jr zc$+U%uNn1biJV&e;xJrf$HuSrn-Irog^V9LrZS^>o3KjixT*rOpvRjqN7%o*0>UQ6 zsxSvi+l&cjw}St{ag1maW)b@~L-gySFuJ!_^rBCjA!7K+FxqxJOv#-pB&EA-0askH zgnQAEeOM{BZ>`PIeir!bycFn2FSlUcVslAOEwKQ83(^0EQTTsh)oA2p6}&Y52{R_w zY-DR^0c_swI+YY)@$%p%`>jFht14r%R)-tYqQ~I*eJg~2yDtgwq-9%?mF^EE%7ymc z55pU*466D{m(44vYHfdu@k~A5&SF1F0K?;BLa_mnY=fV-ul=kd|(Bd6PA*-tnHp$KXzgezXbm}7VJ7YJb=#~ChdaoGvJbJ&9pdo*uPSS@*rlUU08XPj_$*>Xx=`kaYrJ$3s+Ba@XWn%3(7x; zSxeS_h)Kt>Z^kRZ#YgaIM5^e;EbOoQx-dJ+yo_4tcL4D47aYz!fThwO9A zt!1spN)`sJ{VX|a;UVZ^T2mL#oa_&y&QFQZLk1njoDi)*tA;sUJ`87o6>5ff(vKpI z8U0MEg}oTIwCqrX%&Y1ehMCia+BgMVeL5IS8yaX*mZoD(5n49Z5f;?<2wK46Rt(|p zb5gN2>_l&l!5+>>VVnsP;ZMDfg4L)q3rV8VqZm$8yK(~4zi?q&FHT_Q7cN+1T6#>= zSI8R7exulA4Ntw`X;1`G*bEq0nhSWGKt60I>%o{1VD>dl52=_C7@Y+7nVGsUd%Cp* zdF{{Opt&3_I;pYu!p6SA^Wlb$zR4?UQ|D8)?aAyE`l*4S?q#dJ@hoO-V>)~u0(+lA z2X|wo#1)RgrM4}dWvpInDF=Z8FxmEk11Vz%){k6@gM;a!8?~9Sqbwy-z1~Y*t$JuWz?K*=5 zf=)}!4QS>$=)dMnZT*pO5S4s_C2=4^Za_g75WDXe ziPfIkUx15N?;kR??*cX|9E~D)fn@$dsjw91t&7mlL7q^-U^VZ0L^a05z4q9Gw{oj0 z5qzJ4G9SV{|N2FZyJAw62r4p zT+eU?Qkl~l3kKpw4X$E@8I{TqN1AyR?vK{+Ka&Y33i?ZQq#GFqdEeet$6!SkO(O7) z*LYZH;x%aH*-9^LXp0DYD!m3J65HuuOA5M<{^cgRBPo>|7}`Vsj4;vLS)6knlG1wU z7#wJGH*GomU}1m3_f3xMK=p2*H!ka^LsEp5aC>9H88=b+zudq)_+L1=$q4S@7|jS@ z+Laf9>rhzXUbzXOaHt2|L-=D7`wgavx1i>sshs!jEv)!^<8fpbF}4(ixpEF=mtuRS zHZjnLrp}AN9qvh}r>3_dZ87}Xn31DzV;U2wb5E#m@SRGE|+Y-J8;Gq;G4#zzPbZHu7W$TY;py{&zjBb4u9Q0cW}P)648RX z+y&pt3dDo1xM_F)uiZt0z4vhLl1r!}9%WGP`d%GUjfyTucv0>_lx1NVI{cr9{x>Z2 z9`cv~e>SEXgh)|_lFNVKjx7FP*y?nIbQ^%&mQA{W= zV8G@wlJN+wl-}ur@#TmGmw)1j&0{p7qHj9FnkGEPhS>!iYJ3KdohOg6Km1O?37e;A z{dbKc&8XcIXg$`{5VqkTh%Y~ZfpFecijOFX0`{>bqTf^Oe1)sk@`b|B2H#akHHBf++vEH z#TjsHPl%*NYt*%A{Y$pRi)*Sv6C-QTkCzaARvk%3sz`s@bQ=*rsU!9K;gUL(^9uX1 zi|ZkYjcRu)uM=rZ&t4(kB26S+su$@+F|R>wt{+LBSHy72e~s=Pj>_feh?iaw@xFX# zOqs8x8t7A)7D;Wlsy*pMTkXe;`sFBw{B+8DgE{cXa;zQlGZ+!bybjFhdphhYxzS4# z;mY6=p0?l&VHuboXTHIbr+Ryav=cgYrQ2`dnmn&(B%SRZ>BD1|i??ip#V=bt>V zcO>QYi*%>cJtJ+X%mMw&+1>`auFjG*wWJF{jU)^NA$LN_dMuME^!ESV!`v3_wXV8`R`1)~WF1dd|)1J17{`>$V zw_AeSK^8^g^8)*(SNZ|57c7sYi%TOTDC8rmREJg6<|8&ZJ7eeLBeoU>LvSARGfVj(gZl`dj_}~apOO5tQ=DjYGO{YA zd%^-OzJRw%F=c$2K@PER!pEzx1>S?0%Ykl?l^y4SGp*pFQ@e5y+4>ZKVlm<~X z=*Tam8Ql6UBpx zQPiXqJ4jNq$vIV$7o6vMNf*V&f||VM*NRcX^FAeQ81ZFKa9mjirCpv)ORNI zufIpTmRvO3K*+$kQPl7@QrKc5h6?lZ>5hq5R}ruPwc)JVk>X5&x-X($rlP;Jq-M@a zg3S^Nx4?KDjGDmRMc8+Xf!CQ85;wK|a_A#P~Fz_G;S6cx5 zQN#!j`pAe+M>$cyidainaFP=*k4Kr&{K+VVL4O<6$n;{)@QQKUpXbDm%XQ=p?$(yD zdEiA3=bVRr3oW5v+e;iNxCrD0Ll$4=NckloNmfAKUg5|jD=5|FIwx*1;^|FJgjj0&T2R4$rg|Gq zdtLETRk4+jV8VV~X=B2itP9%9myOY`xg>eL)9V{3K?)r8_-rvHtoFR$Hkn@`H+-}5?>D92w zRx?ejefw$<|FwxOtgi5+1t*?XgFe{lljJOS!Wfv@lE=agEA4e~9li-SY2=V-H$JgRaYNKWcvaX< zY$-g#ryWk*dR!1e;J%tmat3&udc;bn~0%C?(S9tium$S|xb_k3Hz!iKNbg<0Wj3G8D5M|frc zBxOYjo@gfSxI{%p8VTn&>j+Ef>imi=!?(Bwh4E#cipHM$J|y2_zd{q_U{j&wpGlnMtLI_LvY=Sj$tfrj^l$)wIc>% z%8%-CH9QiHyKics_&dYHUKcsH1~PmNx3K7t`!!&c!Kd^PJo@Co6X@WB#2rrS!kpQ) zS^xJWzH3E0#=o&}-e=M;{vBJ|FGOmj~W{7(EY^MAMrK(cT=YbSYYY_`Cg&6o_hlDcXY0F^7eo{~4I6 z?gP5xCy!gw4nm{Hbktw8r&xbjD_0`iX^cPXK%cXa*22%%?6*2)yoxrVqyVs$yytO7 z28eM&-!GiF5P*i+Q!enavjEjqIKwubkD{1Z74>HF@LgOd&=t?V@xJdh&3h*iAQ(W z!Pp0fhnr$rRt()68RL*2F2*a?;b^i%JXKpz$8gNLb`0YPl|4W6kn!ZjjG?~b_mwd;s{ooUT@_Be?ITqZhctbK4 z1zur@`9EXy+jjPEaCLYDj&IROVGrUco|s9Hhn^)KS;Xo`Dzc2FZI3a|SyhRZi=$f{ zVh*;Ea2Hw{hvGMe&vTsEKnQbD}fLP&}r z;{>s(kr!=Cz|^K+M66uJ@)IE5JO+2VN5y*ZuDsu8Y<}EN5S@jt3G_2TY_3?66iat2 zC0C=~iKwl2@#2?i`mxeBn^JKoO=8D3Uy>N92uzQqPHD056k|)| z<4G`{ZwB2>Li>5yg#EhEq(890?XE&dUULdp<9qEIl^AU_kiyiWH~mtf&{nl(0d0g; zZP~9k6{rE$?7+E=l2Mb@ojB1x8S~7KojFm+LY#3+E)&}K_gK7?tAQ5wf5z%J?w4ID zsScV+UU&BEMmy_Z24mNo5w6rS3Af-#>n7K_u$9mkcNg}Hb)lwp#TbQCwoG;Ji!zY5 zEQ=Y}{{9l~N3T+loLfCWGY3kLGu`bUYeEYHfe#;KQ2NdPk~x;vgXmgAW$JA`F15cVWTrf`vIxZ-}EOqEGtqh%^W14EdNr)?rSha3$$@QrYfV8jQtHcL-5FnasR z46a75B8>IhG)8#QU=c%Y{47Rv5Y%(nFT4)xqr`76!u4PaQCp^t#(*_piGe9Imr+4| zF-_sR3XhSlh>ho$_DSZe-vCxvyjH?}sgWnPUhuUUC(s&*&I(N-T*+Rc`OPedHKz`~ zSgV#b!i4h$0*%b5Nh;KKOBEv&^LNUO-BQH_Mg1a~+MkLwpLkTJ>>EOb!zX0Q>^N$s zVy>HtTE&5Ix zEa(4#@z_(p|6(1uM}zZYgB0FA(J`2kt4nfa9(iITMBa)=B-3Gb&vGnRZv4RZo^!cj zY!!&A^%nkKam>r&f)t!MCP1XF&BL7aa`0 zfebXo)*c*LUOmp6Gyc&8j30eR=nH z(hTL^m%-7v?t^6`H$2Xhb6;R^#~2-K&A9Q3LjprwsSP6z;BEj$TzrRAQ%7Py@oY21 z`l|tlh2~TZFu}^dG>}t&50IHfE7tZ|(-ZFT2GY(&G5*N(j{w)AU zV(!4Wceg;Z>Cur99feMvsYy$*t8nTM_8Uz8UE+LroZ(#!ilBLS%5E)&(Y~&6(mn7t z*%d!}|1mK?M-H1(j)7F}jK|?ICU5wu+#0?NM{{c2xj1_r~GL=^b%+ zWUed9p18Hyb%x!~mUxm8@^cgMgpn^!wvz32`@H+PmgIoU& z#iAY?f`@-cidXQFL|;&77jQbg)(1@~zYEG^?^}H^T6pkLqUp#VXnno^fIV)0(IIKV z>>oOIivJVq`?W@7+Z_(u8~;S-v%Rv8upke!cxzU$N?~27oT%&^k1M%Y zx$pLh*YBWa)Zh%gyJ39#;KzwpzVY&Q@P}@F7o0?A3+gcGSk`VVCwol)X4Og(&$4;)CTf z?G3cgG0wa^BH4|P7Cjie3(v-I<|=gIBSs8#zWMP{9u}q>| zD6%hRe;uF4)Ae`p9yGqMn69vTBU2yyf^+2uiSi}aIXH$Y4f@^tVbI_ABc5J=i+7=A z{jeBP{E8>{Y)tze^+VrL#e%A5i;aZ#_S8EY`_Z;82_!ltRHuVG(PgZ4Nzk7k=enVD zuaV%xhs%2Xk00`d=Z)8UN3{7z0yBW{I6ZEUr zaf~XAp>Tj$Pq+zpWkxKE!xo_RKvZ9>=PQuvQ3-Z5Y#^#{D`+7zR-v46I7WuN8q?K* zm@{`!v9ON9%evHLkobp?A+p~~x7UTm3k~1}&*Jy{3xzrL4;@jNZvUQON*Div&adGV z&v>kchz*4}IK?v}YX~+0&JELgB>4;7OHr)iwXoRWYU3Of@!XeiP)&S!7~ zA#o9v4#jNbGj_~}iK1|D1zj43^@#cM1iaXm%FR-Vb`3+E&+A#(pF$sOSq;NL)_XYG zr(+=_ys1wCibonE9t{Vt3fKD%Lj$TY0t&sr_6rl5H3B6x3D+yggf*3pKwotGB1gg! z5=|&H2UYz5u1;V)5@KDNV9h<P z7>zOb#Y|2t9*r5{?75tHK08r%DfbRT%~S7mSC<{=wunLG+{Z$|MIW9}m;P{S`<{;Wef{ z6OiHg6VNK#$1Kpd&Fv(VIKIBWx|QTYZZptVyO$+l(;FV*9cG9r zigu5n+=HYL7KZZ=4-Lw-&SUyH1Dgd+o+iPwA_*tf8Pn&_227W}(z2OihH&vGy_t#C z9J@S#T@t3atx!?6iOQKe%|fycm1JtoEHPR!%vh$16}V``YBm_In8=XHm1HX_WH+;A z&Bo4UyqSdiP_Z$-78WsRKxLV=z+7cZ=5w$E*QrVcRE@qJlP`#s?nQWDDTmq2#Ta&G z4iXEns(?}ytE?-iD)iG5-nvugg3HlXAHOqKj8*ikst>8=A;bIa^r1!bu$Yf<(1&K& zsjv#mhrnHqDt21gi4+bvC?}m(7M)c3SETv4sHm-zDu|9OhN&;)qyAKLRZ$~nl^=&b zIji)WUWqFu61H{4>MF`{Re5u!{cZ+KbKL13VL8Yq@_`mv;ZKPs{iScCSYAF9cof@tdyIJ+iP-zdKW_0dBvkEZ`-CGTV zUu~j-Zvobnr(@wPCs{Xg4aBE6!yy^5lj2cx6+hg2dJXb9r=^ODo8vf;#8`VR7@gWs zyYoF&U6F63b6|+ZfBJz7tvxpM8y6< z+3V4x*>tA^>k)NJPcq*iHdcJ?g>vYr^5CpfHh{HGA6mBo)(p+2@(qxFY5*l|M8|49 zh^B8uDt!mjjg7EE<}elI579P{mYa~%?;})nlx-hO+=TLLFj7UiBeb&LfkD`qiyI;^ zP&Lk@ZkwS--_f*tGh{X#Pexmi#?y(^WQ&-gh?%UStcltjY?x$Fa-*kE`4+L8!eyF@ zoow}^yaH6mfzxSof!I{|H6wqkn5p+FT@=10Nf?FVRyu8 zA^IgrNUv?8i&1kb-zMVJ`(mwVajAg}&*d!I?}8cj3btY3p4ln566I`%R!+DVkRhep zF_hn4!-(oQomq(zb|7@{ItJh>lqEncro)+XDT9Bm*Mo67(}cb-IA@CHEq898yHU^*2A#!2b?}Z%Wzd79aBo0DL;(IgL3C^7?{*t|z{9Qc5iD#Q(PQPNU zwqEkvzJA}Udsc!4AR_9M&A`?1D%#oh;t1tdjia)}e? z_M>g}#U=;~0bx!N2M{|PZXyTSwB)kNm1}5vMWydfQAS}0Q6CmR)Q$=c2cg)LYb;u4 zp$2?O4r2B>{JOUO-C)7%ZgHuWhmb_-e~fUXd1W|@E*W9^A@FRv&*3A7&>#~Z>j)E? z@d$TQR3zBuFu0SR7&6GCO5t`@N=N!QqD!jW>1PeZWp+ltO zQ}TfLUlCHN_DUCKMy^LtI&H8C1Buc}s+=Pz>E3TR3(i8}=;M1%;N+7vZFs9SQS+ma zwf_ST8+R1DDAPXDy<@OJ=u$8~KMFOzf8t2OF;QbQl**1_&9U$p3hdoi7SLYk_nk8w z_{v8<+!ylQAhWNqx5F|U^Ibc5mL5lE*e@RMma|ErZF|#V~sK?<8Nep@hJ@0J%{j6oQJTZwE6hpN03pa;){R3p^Tw}(0By< zb)<#E;P@sbzh;C1Vy6xy2~lSu)PItiI!sW@vw>L*>N;6Xv+|g0zI?a#fcsx1VOq z5S;rhsqrkWiq9E;+B_++2A#{-%5Qi9xGSlt$vicjE}1>%AyCiHDvQD|qB88sSIZMW z$BT$Ec%dZ9j^MK|PfCX}{O?6F4$pmgf^dW3-IoA=fOXmHJ22g^`N%@U65z9!>f=jF z#6-oJWzeRKonTw0u1vqSMOcvaC1kA%4v=Yaf0}s-HvF;1nQOH--Mx&+ zH8!bf; z-c22^i47Ik_o&Hgx3-qQxCXtp?uEU6Aq$?@(Zx00NA0hRZH3MIY43H+j%pkvvm2Nu z_dld&&Z@Yu?SM9^DK`*%>|r$(3TUt;2etTZh94-x8Ja^{14Q2hbms`P9U5g%-EYEj zwU4Qp^C}#i8P)l?nmMn!Qq)~6Lp&Gaw6Do=6yKs7=vwZcpvJe*i8!9375G&&{##AE zD`Bd;_M|q=h*DT`-)YJy#ay+#nAVhvO%;{Ts!3I>mKP#5Z-b@rIZC|^mdWR7*=>ki ziUIUC=A;D|)%4)Jmi4bYQ1|6OP|y#xe8U~tvq;*RP5PG}++kzEzvOurpLp3iS-Sc9 z(G|+Ri$2`rD*JV%zW-`F(D_#k$|U<5XNWBW_sQ#&SB7;%-fJK3xsSqC0_OE{{yhVR?E8$NsiOZwHLbs|t-MR_vzqZ(%^ZB(=<0n8d3I09 z_5oX|J!8L)`A^mIT&dszilx~L31wb3X~NEzRP&+OMq&P1&Ad$fdBR5@Lgv?UHI0hK zoHzZoRw1`Xz}4?$9G)Wql*^#q?WL$eCb%Q{JQe)co1e;tNOlaFvjNI-|#W`3;U#icP?f@8qGf!xW50M5MZ|QmQPpI5SUbjeQXP2Mlv%NO zL(one=Kcz)bgP!kd=Ok{kAoH;2wZ68L^EHp4%Qh@pyIg6BbQ_sI_!kc z_mZyDUqi}SR|&7hp_dH$u}wlWE)MSVzir!v`9y(69wi4i5$o z+;#)J25tBND-Uruh}6V0nL0KGzVQQOcX@-9hIl2DZ3ZU35_FtF2fUN%jc0NM*C)U` zS%2CS%#IpgrsDkC%j_P&_{Gyt)pn`M`UwzM6x`&oAVJ%#x-R7Nwmk;F6jeS9feVB zGDSxx%hMJdlh@DftoqdF6NaL|)MV;ZKUr>`Z5kL@wN^tZuo~qyz|Fu?URr&IIzf$a zV56b7Ic)(XOlwTVpE1(xXiCmsu!_Fg3}&d2;LELl}!YjWZNXmD~q$= zpz1no_1tc+HGRV@gqmz;k`T?$p zZZe+pXRoDC&F6YgOMxQ8Yc7 zYEBg0=gqDktGGJ@##CWDUpZZyw!#QZgBHm65z-YM!>cWmacQr8no<2YMdtDf$duNp zwCh*bBLgU29OnAQ>vRkJZD3>FoxHLJ>9(;63M?KpfrawQL^1#=~X^=OdekEt5X* zL>rJyEIW{6y%oZlyBQc;za4;6cm`}9EYn}Idq^?4ZiC1z-vUf^-W(oUpuQKUhu-uh z93GZT={q2@Je(fROpQB1oNT5^yC8zEIXxVimhOgdqPaY57}rlPyde|~HPIu(yBvn8Cr}8O=s>MR&@N+UvD?5yU)X?q ze&KEbAMP9s7Z&yac78!;a`Os%$T81B5|^4DBkZBeoc91`g0P1HSGfrrgZ4v5U`HAN DE*3<| diff --git a/build-tools/jsonrpc/src/main/java/org/eclipse/lsp4j/jsonrpc/json/MessageJsonHandler.java b/build-tools/jsonrpc/src/main/java/org/eclipse/lsp4j/jsonrpc/json/MessageJsonHandler.java index 05aba9ed8..eb35b3a27 100644 --- a/build-tools/jsonrpc/src/main/java/org/eclipse/lsp4j/jsonrpc/json/MessageJsonHandler.java +++ b/build-tools/jsonrpc/src/main/java/org/eclipse/lsp4j/jsonrpc/json/MessageJsonHandler.java @@ -20,7 +20,7 @@ import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.MalformedJsonException; import com.itsaky.androidide.tooling.api.model.IAndroidProject; -import com.itsaky.androidide.tooling.api.model.internal.DefaultAndroidProject; +import com.itsaky.androidide.tooling.api.model.internal.DefaultAndroidModule; import org.eclipse.lsp4j.jsonrpc.MessageIssueException; import org.eclipse.lsp4j.jsonrpc.json.adapters.CollectionTypeAdapter; @@ -70,10 +70,7 @@ public class MessageJsonHandler { .registerTypeAdapterFactory(new EitherTypeAdapter.Factory()) .registerTypeAdapterFactory(new TupleTypeAdapters.TwoTypeAdapterFactory()) .registerTypeAdapterFactory(new EnumTypeAdapter.Factory()) - .registerTypeAdapterFactory(new MessageTypeAdapter.Factory(this)) - .registerTypeAdapter( - IAndroidProject.class, - (InstanceCreator) type -> new DefaultAndroidProject ()); + .registerTypeAdapterFactory(new MessageTypeAdapter.Factory(this)); } /** diff --git a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/ToolingApiServerImpl.kt b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/ToolingApiServerImpl.kt index 3b2aa7778..5572fe66f 100644 --- a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/ToolingApiServerImpl.kt +++ b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/ToolingApiServerImpl.kt @@ -20,7 +20,6 @@ package com.itsaky.androidide.tooling.impl import com.itsaky.androidide.tooling.api.IToolingApiClient import com.itsaky.androidide.tooling.api.IToolingApiServer import com.itsaky.androidide.tooling.api.messages.InitializeProjectParams -import com.itsaky.androidide.tooling.api.model.IAndroidProject import com.itsaky.androidide.tooling.impl.util.InitScriptHandler import com.itsaky.androidide.tooling.impl.util.ProjectReader import com.itsaky.androidide.tooling.impl.util.StopWatch diff --git a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/IGradleProjectTypeAdapter.java b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/IGradleProjectTypeAdapter.java new file mode 100644 index 000000000..550d3e8a2 --- /dev/null +++ b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/IGradleProjectTypeAdapter.java @@ -0,0 +1,66 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.tooling.impl.util; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.itsaky.androidide.tooling.api.model.IGradleProject; + +import java.lang.reflect.Type; + +/** + * Gson (de)serializer for {@link IGradleProject}. + * + * @author Akash Yadav + */ +public class IGradleProjectTypeAdapter + implements JsonSerializer, JsonDeserializer { + + public static final String className = "className"; + public static final String classInst = "classInst"; + + @Override + public JsonElement serialize( + IGradleProject src, Type typeOfSrc, JsonSerializationContext context) { + final var obj = new JsonObject(); + obj.addProperty(className, src.getClass().getName()); + obj.add(classInst, context.serialize(obj)); + return obj; + } + + @Override + public IGradleProject deserialize( + JsonElement json, Type typeOfT, JsonDeserializationContext context) + throws JsonParseException { + final var obj = json.getAsJsonObject(); + final var name = obj.get(className).getAsString(); + final Class klass; + try { + klass = Class.forName(name); + } catch (ClassNotFoundException e) { + throw new JsonParseException(e); + } + + return context.deserialize(obj.get(classInst), klass); + } +} diff --git a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java index 07aa9e84c..b2ad1e8b1 100644 --- a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java +++ b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java @@ -20,11 +20,9 @@ package com.itsaky.androidide.tooling.impl.util; import static com.itsaky.androidide.utils.ILogger.newInstance; import com.android.builder.model.v2.models.AndroidProject; -import com.itsaky.androidide.tooling.api.model.IAndroidProject; -import com.itsaky.androidide.tooling.api.model.internal.DefaultAndroidProject; +import com.itsaky.androidide.tooling.api.model.IGradleProject; import com.itsaky.androidide.utils.ILogger; -import org.gradle.tooling.GradleConnector; import org.gradle.tooling.ProjectConnection; import org.gradle.tooling.model.GradleProject; @@ -35,34 +33,24 @@ public class ProjectReader { private static final ILogger LOG = newInstance("test"); - public static IAndroidProject read(ProjectConnection connection) { + public static IGradleProject read(ProjectConnection connection) { final var watch = new StopWatch("Read eclipse project from connection"); final var gradle = connection.getModel(GradleProject.class); - - LOG.debug(System.getenv()); - LOG.debug(System.getProperties()); - for (var sub : gradle.getChildren()) { - var subConnection = - GradleConnector.newConnector() - .forProjectDirectory(sub.getProjectDirectory()) - .connect(); - final var modelBuilder = - subConnection - .model(AndroidProject.class) - .withArguments("-Pandroid.injected.build.model.v2=true"); - final var project = modelBuilder.get(); - LOG.debug(project); + if (gradle == null) { + LOG.error("Cannot build model for", GradleProject.class); + return null; } + final var android = + connection + .model(AndroidProject.class) + .withArguments("-Pandroid.injected.build.model.v2=true") + .get(); + LOG.debug(android); watch.log(); - // return read(project); return null; } - public static IAndroidProject read(AndroidProject android) { - final var project = new DefaultAndroidProject (); - LOG.debug(android); - return project; - } + public static IGradleProject read(AndroidProject android) {} } diff --git a/build-tools/tooling-api-impl/src/test/test-home/.androidide/init/model.jar b/build-tools/tooling-api-impl/src/test/test-home/.androidide/init/model.jar index acda8e9d182e5fe82b1f2b54d220bccc8345f4f7..d38310ed6a106156be9266d895f89a179ffe10ea 100644 GIT binary patch delta 2487 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. + */ + +package com.itsaky.androidide.tooling.api.model + +import com.android.builder.model.v2.models.AndroidProject + +/** + * A module in an [IAndroidProject]. + * + * @author Akash Yadav + */ +interface IAndroidModule : IGradleProject, AndroidProject {} diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IAndroidProject.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IAndroidProject.kt deleted file mode 100644 index 9984a0dd1..000000000 --- a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IAndroidProject.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of AndroidIDE. - * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - */ -package com.itsaky.androidide.tooling.api.model - -import java.io.File -import java.io.Serializable - -/** - * Currently initialized project. - * - * The instance of this class is created from a [Proxy][java.lang.reflect.Proxy]. If you add any - * property to this class, make sure you update the [IAndroidProject.copy] method too. - * - * @author Akash Yadav - */ -interface IAndroidProject : Serializable { - /** The path of this project. For example: ':app'. */ - val path: String? - - /** The display name of this project. */ - val displayName: String? - - /** The project directory of this project. */ - val projectDir: File? - - /** Get the build directory of this project. */ - val buildDir: File? - - /** The buildscript file (build.gradle) of this project. */ - val buildFile: File? - - /** Subprojects of this project. */ - val subProjects: List - - /** - * Dependencies of this project. - */ - val dependencies: List -} diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultAndroidProject.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IGradleProject.kt similarity index 53% rename from build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultAndroidProject.kt rename to build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IGradleProject.kt index 0ce32b48a..a50385b49 100644 --- a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultAndroidProject.kt +++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IGradleProject.kt @@ -15,19 +15,33 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.tooling.api.model.internal +package com.itsaky.androidide.tooling.api.model -import com.itsaky.androidide.tooling.api.model.IAndroidProject -import com.itsaky.androidide.tooling.api.model.ProjectDependency import java.io.File +import java.io.Serializable -/** @author Akash Yadav */ -class DefaultAndroidProject : IAndroidProject { - override var path: String? = null - override var displayName: String? = null - override var projectDir: File? = null - override var buildDir: File? = null - override var buildFile: File? = null - override var subProjects: MutableList = mutableListOf() - override var dependencies: MutableList = mutableListOf() +/** + * An Gradle Project. + * @author Akash Yadav + */ +interface IGradleProject : Serializable { + val name: String + val description: String + val path: String + val projectDir: File + val buildDir: File + val buildScript: File + + val parent: IGradleProject? + val subprojects: List + val tasks: List + + val isAndroidModule: Boolean + + /** + * Finds the project with the given project path. + * + * @return The found [IGradleProject] or `null`. + */ + fun findByPath(path: String): IGradleProject? } diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IGradleTask.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IGradleTask.kt new file mode 100644 index 000000000..86b738703 --- /dev/null +++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/IGradleTask.kt @@ -0,0 +1,31 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.tooling.api.model + +/** + * A task in an [IGradleProject]. + * @author Akash Yadav + */ +interface IGradleTask : ILaunchable { + val name: String + val description: String + val group: String + val path: String + + val project: IGradleProject +} diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/ILaunchable.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/ILaunchable.kt new file mode 100644 index 000000000..ecc98b116 --- /dev/null +++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/ILaunchable.kt @@ -0,0 +1,28 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.tooling.api.model + +/** + * A launchable is an action that can be launched. For example, an [IGradleTask]. + * + * @author Akash Yadav + */ +interface ILaunchable { + val displayName: String + val isPublic: Boolean +} diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultAndroidModule.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultAndroidModule.kt new file mode 100644 index 000000000..4b7fe4977 --- /dev/null +++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultAndroidModule.kt @@ -0,0 +1,99 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.tooling.api.model.internal + +import com.android.builder.model.v2.ide.AndroidGradlePluginProjectFlags +import com.android.builder.model.v2.ide.JavaCompileOptions +import com.android.builder.model.v2.ide.ProjectType +import com.android.builder.model.v2.ide.SourceSetContainer +import com.android.builder.model.v2.ide.Variant +import com.android.builder.model.v2.ide.ViewBindingOptions +import com.itsaky.androidide.tooling.api.model.IAndroidModule +import com.itsaky.androidide.tooling.api.model.IGradleProject +import com.itsaky.androidide.tooling.api.model.IGradleTask +import java.io.File + +/** + * Default implementation of [IAndroidModule]. + * + * @author Akash Yadav + */ +class DefaultAndroidModule( + override var name: String, + override var description: String, + override var path: String, + override var projectDir: File, + override var buildDir: File, + override var buildScript: File, + override var parent: IGradleProject?, + override var subprojects: List, + override var tasks: List, + override var androidTestNamespace: String?, + override var bootClasspath: Collection, + override var buildFolder: File, + override var buildName: String, + override var buildTypeSourceSets: Collection, + override var dynamicFeatures: Collection?, + override var flags: AndroidGradlePluginProjectFlags, + override var javaCompileOptions: JavaCompileOptions, + override var lintRuleJars: List, + override var mainSourceSet: SourceSetContainer, + override var namespace: String, + override var productFlavorSourceSets: Collection, + override var projectType: ProjectType, + override var resourcePrefix: String?, + override var testFixturesNamespace: String?, + override var variants: Collection, + override var viewBindingOptions: ViewBindingOptions? +) : + DefaultGradleProject( + name, description, path, projectDir, buildDir, buildScript, parent, subprojects, tasks), + IAndroidModule { + + override val isAndroidModule: Boolean = true + + fun copy(): IAndroidModule { + return DefaultAndroidModule( + name, + description, + path, + projectDir, + buildDir, + buildScript, + parent, + subprojects, + tasks, + androidTestNamespace, + bootClasspath, + buildFolder, + buildName, + buildTypeSourceSets, + dynamicFeatures, + flags, + javaCompileOptions, + lintRuleJars, + mainSourceSet, + namespace, + productFlavorSourceSets, + projectType, + resourcePrefix, + testFixturesNamespace, + variants, + viewBindingOptions) + } +} diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultGradleProject.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultGradleProject.kt new file mode 100644 index 000000000..137b99234 --- /dev/null +++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/DefaultGradleProject.kt @@ -0,0 +1,56 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.tooling.api.model.internal + +import com.itsaky.androidide.tooling.api.model.IGradleProject +import com.itsaky.androidide.tooling.api.model.IGradleTask +import java.io.File + +/** + * Default implementation for [IGradleProject]. + * @author Akash Yadav + */ +open class DefaultGradleProject( + override val name: String, + override val description: String, + override val path: String, + override val projectDir: File, + override val buildDir: File, + override val buildScript: File, + override val parent: IGradleProject?, + override val subprojects: List, + override val tasks: List, +) : IGradleProject { + + override val isAndroidModule: Boolean = false + + override fun findByPath(path: String): IGradleProject? { + if (path == this.path) { + return this + } + + for (sub in subprojects) { + val subSub = sub.findByPath(path) + if (subSub != null) { + return subSub + } + } + + return null + } +} diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/util/ProjectBuilder.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/util/ProjectBuilder.kt new file mode 100644 index 000000000..73db03ff8 --- /dev/null +++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/internal/util/ProjectBuilder.kt @@ -0,0 +1,135 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.tooling.api.model.internal.util + +import com.android.builder.model.v2.ide.AndroidGradlePluginProjectFlags +import com.android.builder.model.v2.ide.AndroidGradlePluginProjectFlags.BooleanFlag +import com.android.builder.model.v2.ide.JavaCompileOptions +import com.android.builder.model.v2.ide.ProjectType +import com.android.builder.model.v2.ide.ProjectType.APPLICATION +import com.android.builder.model.v2.ide.SourceProvider +import com.android.builder.model.v2.ide.SourceSetContainer +import com.android.builder.model.v2.ide.Variant +import com.android.builder.model.v2.ide.ViewBindingOptions +import com.itsaky.androidide.tooling.api.model.IAndroidModule +import com.itsaky.androidide.tooling.api.model.IGradleProject +import com.itsaky.androidide.tooling.api.model.IGradleTask +import com.itsaky.androidide.tooling.api.model.internal.DefaultAndroidModule +import com.itsaky.androidide.tooling.api.model.internal.DefaultGradleProject +import java.io.File + +/** + * Builds instances of [IAndroidProject] + * + * @author Akash Yadav + */ +class ProjectBuilder { + private var name: String = "" + private var description: String = "" + private var path: String = "" + private var projectDir: File = File("") + private var buildDir: File = File("") + private var buildScript: File = File("") + private var parent: IGradleProject? = null + private var subprojects: List = mutableListOf() + private var tasks: List = mutableListOf() + private var androidTestNamespace: String = "" + private var bootClasspath: Collection = mutableListOf() + private var buildFolder: File = File("") + private var buildName: String = "" + private var buildTypeSourceSets: Collection = mutableListOf() + private var dynamicFeatures: Collection? = mutableListOf() + private var flags: AndroidGradlePluginProjectFlags = NoOpAndroidGradlePluginProjectFlags() + private var javaCompileOptions: JavaCompileOptions = DefaultJavaCompileOptions() + private var lintRuleJars: List = mutableListOf() + private var mainSourceSet: SourceSetContainer = DefaultSourceSetContainer() + private var namespace: String = "" + private var productFlavorSourceSets: Collection = mutableListOf() + private var projectType: ProjectType = APPLICATION + private var resourcePrefix: String = "" + private var testFixturesNamespace: String = "" + private var variants: Collection = mutableListOf() + private var viewBindingOptions: ViewBindingOptions? = null + + fun buildGradleProject(): IGradleProject { + return DefaultGradleProject( + name, description, path, projectDir, buildDir, buildScript, parent, subprojects, tasks) + } + + fun buildAndroidModule(): IAndroidModule = + DefaultAndroidModule( + name, + description, + path, + projectDir, + buildDir, + buildScript, + parent, + subprojects, + tasks, + androidTestNamespace, + bootClasspath, + buildFolder, + buildName, + buildTypeSourceSets, + dynamicFeatures, + flags, + javaCompileOptions, + lintRuleJars, + mainSourceSet, + namespace, + productFlavorSourceSets, + projectType, + resourcePrefix, + testFixturesNamespace, + variants, + viewBindingOptions) + + class NoOpAndroidGradlePluginProjectFlags : AndroidGradlePluginProjectFlags { + override val booleanFlagMap: Map = mutableMapOf() + } + + class DefaultJavaCompileOptions : JavaCompileOptions { + override val encoding: String = "UTF-8" + override val isCoreLibraryDesugaringEnabled: Boolean = false + override val sourceCompatibility: String = "11" + override val targetCompatibility: String = "11" + } + + class DefaultSourceSetContainer : SourceSetContainer { + override val androidTestSourceProvider: SourceProvider? = null + override val sourceProvider: SourceProvider = DefaultSourceProvider() + override val testFixturesSourceProvider: SourceProvider? = null + override val unitTestSourceProvider: SourceProvider? = null + + class DefaultSourceProvider : SourceProvider { + override val aidlDirectories: Collection? = null + override val assetsDirectories: Collection? = null + override val javaDirectories = mutableListOf() + override val jniLibsDirectories: Collection = mutableListOf() + override val kotlinDirectories: Collection = mutableListOf() + override val manifestFile = File("") + override val mlModelsDirectories: Collection? = null + override val name: String = "" + override val renderscriptDirectories: Collection? = null + override val resDirectories: Collection? = null + override val resourcesDirectories: Collection = mutableListOf() + override val shadersDirectories: Collection? = null + } + } +} diff --git a/build-tools/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/IToolingApiServer.kt b/build-tools/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/IToolingApiServer.kt index 0805a40ac..1a61eb8ba 100644 --- a/build-tools/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/IToolingApiServer.kt +++ b/build-tools/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/IToolingApiServer.kt @@ -18,7 +18,6 @@ package com.itsaky.androidide.tooling.api import com.itsaky.androidide.tooling.api.messages.InitializeProjectParams -import com.itsaky.androidide.tooling.api.model.IAndroidProject import java.util.concurrent.* import org.eclipse.lsp4j.jsonrpc.services.JsonRequest import org.eclipse.lsp4j.jsonrpc.services.JsonSegment