From ed48e4f187504948ada7fc9ec39de85d1a37a6a9 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Mon, 11 May 2015 23:06:36 +0200 Subject: [PATCH] SONAR-6517 fix sharing of plugin api packages across plugin classloaders --- .../sonar/plugins/testbase/api/BaseApi.java | 6 ++++++ .../target/test-base-plugin-0.2-SNAPSHOT.jar | Bin 2437 -> 3400 bytes .../sonar/plugins/testbase/api/BaseApi.java | 6 ++++++ .../target/test-base-plugin-0.1-SNAPSHOT.jar | Bin 2437 -> 3400 bytes .../target/test-core-plugin-0.1-SNAPSHOT.jar | Bin 2412 -> 2411 bytes .../test-extend-plugin-0.1-SNAPSHOT.jar | Bin 2481 -> 2480 bytes .../target/test-libs-plugin-0.1-SNAPSHOT.jar | Bin 40097 -> 40096 bytes .../test/projects/test-require-plugin/pom.xml | 7 +++++++ .../src/RequirePlugin.java | 5 +++++ .../test-require-plugin-0.1-SNAPSHOT.jar | Bin 2488 -> 2576 bytes .../projects/test-requirenew-plugin/pom.xml | 7 +++++++ .../src/RequirePlugin.java | 5 +++++ .../test-requirenew-plugin-0.1-SNAPSHOT.jar | Bin 2553 -> 2643 bytes .../org/sonar/core/platform/PluginLoader.java | 11 +++++++++-- 14 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 server/sonar-server/src/test/projects/test-base-plugin-v2/src/org/sonar/plugins/testbase/api/BaseApi.java create mode 100644 server/sonar-server/src/test/projects/test-base-plugin/src/org/sonar/plugins/testbase/api/BaseApi.java diff --git a/server/sonar-server/src/test/projects/test-base-plugin-v2/src/org/sonar/plugins/testbase/api/BaseApi.java b/server/sonar-server/src/test/projects/test-base-plugin-v2/src/org/sonar/plugins/testbase/api/BaseApi.java new file mode 100644 index 00000000000..356a9c829af --- /dev/null +++ b/server/sonar-server/src/test/projects/test-base-plugin-v2/src/org/sonar/plugins/testbase/api/BaseApi.java @@ -0,0 +1,6 @@ +package org.sonar.plugins.testbase.api; + +public class BaseApi { + public void doNothing() { + } +} diff --git a/server/sonar-server/src/test/projects/test-base-plugin-v2/target/test-base-plugin-0.2-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-base-plugin-v2/target/test-base-plugin-0.2-SNAPSHOT.jar index 9bd9e0e0fc16800409d159b122de1ae62a804034..32ac594aad1241af223daa968c1db05290d2e897 100644 GIT binary patch delta 1735 zcmZn_J|V>$;LXg!#Q*|2+gDHIRpHRyzS^z(uVvmuOQm}6{AL4zmiHci+V_S>JYd`U zNNkexuM^HqU!p8GaEA5t?h!Ek`?b``*>k<|wKG3%FTGIIe}zpx!&7Rm!x5+Zw^zJV zC^c}`T9b2Y^~96A0y(a5#d4*ZI2G3(P4JF5^p0oQ+6#x`Wa@SAGyCRvoc2lQUa~fn zlPBqxXXrWCZq5$|^{ zlJQpL_6?R_5C}>W=VdcjH4@;fZ_wBqP{pkFR=)ZLLsO^h`NHD()7%{Vm#`lv8pdg zEiOq)EKbGHXa!Ub1@b@|)xsrE#sJYWdED<99PyG9$Uj=Z0No`f5G*KmWe&=#s~P4zX>0Z&@@ggkG7LG`6sqG z-u0H)X2q@FQ8VP^M@(AGz>GPWpV=8qhcbsS=WSfQc@1+Y6DKHTJq&fMuba%p7FG|; zstylp{R|&i9b{ReutQ_%me?C&UzirpJmxUdqmCs%es^`vo>y)@g2s_E%3c&Ii-pSn zI3c@*E&0~7D^kqUUmG;7ELAq^I?4VnEA`0-oBi#-vqkjUHreHfFA6T+uqDA$i}lzF zqos3Lj=izBc>efj^BjYTG5e2JirEKvGct*AF~f_I$*E~m@n-jocf$oD8sD4l`f&h?7?)XiDz3)!Wa{NyDaxeC0haJ%h)hf&z;LXg!#Q*}E_b#2ttHQBq?^3sjVBg}2mP+-f^O_ArT)un!Iea%fqNQb3 z()8m>wNDfsH?5Va5ndx9{nP2nm)F@&&Yr64)7BV2{@9gW>9VTXHfoZax*W^@7f?TdtUxx!;PM z>Y#s4YUPop>oXig>iZrk>K5c+VH=y*pjEuiw#YytX1vVa*R#)1Js9kMgVp_jDHj{;99?r{|H}_GhYPCOaP2 zyl01nD+dEGKsQfhvSDNe2k~ScRxM^=P*1jGbq3S*tRc+IyOwUg#u~~b2nzgd^AdK} z1LLC=h}|dmvf4~mU}KqF!@*a7SV6$y;oju}o5I$tjAhxRv2;u97xphqlT)%<7ahFl zkaxf2`;UsVtjcK`79SIzmPZ(DIu?4T=;^6~yJgjvx3bq+MIYaKOLAMnvI$A+mxz5U zthxF6vf=#Tx%t8KH%(8T^?`Y+%2JL zGd!hC7Und8CzZ+moEEHLk4`?rCCxO2aq>$p86~iH-9RY|2KZqN1_6fu|F1GlZse8) zhrvQ_X(lG-$@{p?6o5g4qQ??Nj|cPQK2}>^Mka_;I2eE-H#v?+nrS{r!WtM-?34HM n@F-w}Bis}Qh9!;PS)qzS!OA5T;LXYglIH-zDNGCux4}FBd3iOv diff --git a/server/sonar-server/src/test/projects/test-base-plugin/src/org/sonar/plugins/testbase/api/BaseApi.java b/server/sonar-server/src/test/projects/test-base-plugin/src/org/sonar/plugins/testbase/api/BaseApi.java new file mode 100644 index 00000000000..356a9c829af --- /dev/null +++ b/server/sonar-server/src/test/projects/test-base-plugin/src/org/sonar/plugins/testbase/api/BaseApi.java @@ -0,0 +1,6 @@ +package org.sonar.plugins.testbase.api; + +public class BaseApi { + public void doNothing() { + } +} diff --git a/server/sonar-server/src/test/projects/test-base-plugin/target/test-base-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-base-plugin/target/test-base-plugin-0.1-SNAPSHOT.jar index 2a6148ce7b6ff0fbc0476907036dac5109496b06..f943a16b28f4088d0771e3384f22de4aa7c9cbc5 100644 GIT binary patch delta 1737 zcmZn_J|V>$;LXg!#Q*|2+gDHIRpHRyzS`|T`B|xnmP+;B`OO9bE$==4wC@d%c)+&x zk=P{XUniWKzC>AW;0){O-6LT7_iL$>v*&u_YiEAkUV5RZ{|cLYhNskAha*n+Z?AZ# zP-@_=wI=7*>WL?J1#(>Bisec*aVoAon&2IA=pE0pwHFS>$<*uKXZFqUIPH_py<}}D zCr{EX&(L$O-JBl`>bsf^_!enAx9OZObWYw$ZkJ_nbjYWcZ~0H%9)`OY7}va?beZj? zCF8Bg?Hi1KFHBC%$~nU5zV-bk2jAq>4!%f{l+`cQqSt&r7<;=}`KxY~$iC^4x^Bg4 zI%$&yw+U-qwkV$R-|0$Xo@=2?b-#jp^yM=zg5oay|0pSb-#Y(=-R=5ax8JfnTySoR zLilW}wc$1SX%|20t}j^DtD)7h)M8(+)OK+{zokunA z*%9Fi3Q%wWLkSijonMr$k6Q&OK0qq!i}Ujmi|{BEf+~clE66EL&&(^vqh1=T`jXV* zlBC4qR1A$)K;=*%52Qg(LbVC5GqE5OuA74a=;O@`8EqKr!A!TSdb5>30QFZg0uvcw zbDV%qaV*HxOU_9wF7EX|>vhCHVov_==ht4X+t(-_DatcXG*Q%M>emHtY~QxcTB@d+ zS*!2g#4dlJU1UyRVaYYr2cBuj;$* ztyM^ua^0}H$y{t9^}bxd z%{{;)4Yl(NS5KXG`12pRck2UpoJg&`(YH9*I67*B%2bPl zkeNY#Ov&Hm=Y0P7$I)+w$GZEEY6R>9ycv0zM3~_P$>djTCh(GEvKqTZJp(9JVB`Zx z>Jngh>o^6NI3T%#5pEE=4v6s}Js=(1pgLfg1h+n5HUZiX1|W_1P&6WP4Q>NK`33?& z`uUjf<^^C_VEP~hsvne(AOK{NJARWOxe8_)Br`46zB^GE=z&>4EC4eLNH1w@VVc~) zE)$PE&%snKX*|k|*YzMfQF0)%cR(p|A-gowf0oG~nS^;^E(6yclkWi~bXX?`a%kzG z=|PEhOPEuD&j0_v2&BOsl%yxm=8$GO3F2B${>&kal(_jhMVS;iz!H9Je3SDzIr#V( O_!#tn1t|+B$TR>0eJ}U` delta 800 zcmX>h)hf&z;LXg!#Q*}E_b#2ttHQBq?@~A6n>*PjS}N6_&TBRhary4?=kVR|h?bUB zNz;!j)jm;l+_YAvMtF^c^iQWNUtVWBIeV(EPg`UB_+wXgrOT>j+o(xy>IO**-{*!F zPqKS;QQ?!Ww1q>GS%h)eAbmZnfW9svgGwkv)H^%_wL@99Q|r`dGL?8EED-F zGdIleW!oGZF!R(*=6~9O%`>0=lzjV`Me^39XKvg#Fa3XO%u`o#@1pHCkFxsm2Q7Q8 z!so=iIg>f}QFU>5UVNc+dep}~4iO)@vm`cm9KBnjR3ZHQ+voU*ACgCH^Uiv|$tXDf z^BzAeTsatk0lIl2lMN#)IEW|nuxc>_gL<+ht23CcXANOy-nDe|HP%ojK~Ug(=kQFZ z2gXM$5W7$AWwn{Cz{WDUhJ&a6G*`2MfWyVweMtvOovtk7KIp2s^z9;kkGg~_hP+c; zJ_-E!ee3Sig4NoUT{AM95}VoAJ&8=^db_hRjWllSuQ mC}4yn+!O|eC5_)%p^8BP%Ow`z&B_Ln=K#VfObiUS!8`yzXE>4o diff --git a/server/sonar-server/src/test/projects/test-core-plugin/target/test-core-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-core-plugin/target/test-core-plugin-0.1-SNAPSHOT.jar index 62eba2aa80fbabc8e20007e90d94a07ec6fd9c50..278b459622726916c011acf9243734b3b861c2ca 100644 GIT binary patch delta 619 zcmaDO^je5Fz?+$civa|5wy&PZtHPnZeYIP#nXT1COXd3fLk0pZ?3vX{Bl7~>!)sP~^jF@JZ+G88wR$u$_N>{U0^WWR4!H3JAUpU*b*lzjJ&E9Qy&K2qMr^#E1J!9cr zpAhnUAxnmNn3IVrr(W1)-;EK|560d;_4&uc>&=f>7|iOwHgm!hAGd;Y0keHg zxs`^lxci3h99|pLr%UUG&i~hce#eh{mF)F7{nHfa zY9Xh{!V9e(E4o)*h*MBY<~iXrQ>FFZyWUdz%2=Cfa*Il|7i72{vNg}_*|P0D z-`=gCO6H|yMqlm}wNO8_@T!~d_s7M%?9v2hzAEBoF1#|2sV3&Em9W({)}oV#3O)0m zpZ@p9u`(&(^!8&dkJtme8F`pQnBhrb@-m bgK24w6p*JTH*sVm`RN-+0oy?~P}%|jc%Tf- delta 620 zcmaDY^hSs`z?+$civa{S?_D~PSA}EK-lcAn5B^e}XsKMEeb_*tXqn}A(6BC zn?mRohts`lW*@9bQ)gMn>tws*LX^mc-42hRt(~t~l5KH|KX~bbqm|m)8xwe!30(FR zy7+JEN0Yg#FTZ?jJXU{YYFe9oYWuVI`nS3EM{}Di^Zc5lHY+}8gZ1Gl7O(cck9cK# z?M=htTjeJMZ*F|FSaYV!QLEcxr+r`E?X|R!vwyRzKtd#HEtU+T40)y*%?f`GlwuU?^?Qf9-M=)ziegvZ#k$(9~E076C|@VW9L5kdA~jxoC#j_xl~HH^5LZx`RL6jG^2!Ai%*^j z;>>@2>f4{j-7Y7d=YLh)Bp=|-%g7|c3{MM_FR+=w6T@U4b}MF}V<&sETZ4Vk4&;M; ecZ59{OiOX3fP6K%ks}+)Q(rj>*bcFQ5*GlYsv4;P diff --git a/server/sonar-server/src/test/projects/test-extend-plugin/target/test-extend-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-extend-plugin/target/test-extend-plugin-0.1-SNAPSHOT.jar index 7a81fdf0cce220427d4d14840577b4ec0dc1578b..71dcee704960487f94ff491bd944451e6c7aebb8 100644 GIT binary patch delta 634 zcmdleyg`^Zz?+$civa|5wy&PZtHPnZeYM+x;{uTrE%oYKS@Qz4%PO~c$$Kh0?p~Ys zKrKQ*`lg!iudk*P1THO2Uo!Kxv9~}?_pOTf6(-Y_lo-FprpI2h*4tzGD&*s-Eys*S zJXT#(P-A!gkP(n_%dYBg`|LR)6-tYFGfHHQUTsc_TrKi-xt8*!?#r{L-<08TYx(K; z;^#tf7S80r9|DGD_0Ns(%NYk|p5tG!&U~G>&9zxEJl8XeddzKIUGhabbf(|lm#p|b z;vgUU*7r893){Wq-(Eh@9X`2q&kv8P@6K;^mdC$v*x{$c%5zTg@`OJ23w#l$PR(lm zBfd7s%RF@ReR@oPW-6$SAKrt$F-l^zHL6HcYW=J*PDg5=+m#;W#5@7>!~U9;y^Q;VRH)z4cg z{MwUNR4ubL&+OTC1;1_p2SnXKeM;q?|E|NlcwE-AB+Kf-i%Bl%`lR^Z;$zQE{~eH`hit%|F>n&J65b^nfEj)-B|2V zgXo)$;=d0DJz3?y#`J4@+@4uEkB(Yxd=>T1*MI*7(T7$WA6&3bf7AYNNBAv4??B0o z&;PFq>FsRU;!qjy*z{>ZT2uO(!vEL(?SI5ox_^$yo%T9xLrqwd(ZTb&?r&$jKBF?L zZ}YYVo~$b+b2#0fq-yK!}TWq#zvGyk7ley^~{m&G^GH^}@Y>-q-?1xX)NyJHT= zJm-f6D+dEGJU6dlbYx@(hVSGLOj=-Cmf0ChCo_jJGw)iuc@J|c6DKI-_jccT(l}X* zEv)`D*C7J|hl{oQlrEGy$scoF$SoKsZm00G@rF;b!z81bBEP?1yZf|YwXutX_k$nV zPtA8bq)gS^@bpyn(cA0puiSV0^J7oxd)IoCxD)s^`L^b??317O>yyEmWUbFvc{%sW zOm5z;8~IE`*Q?2AX5cAyU!nM9c3NnQavQrX*dND$e31W`IfB7-Bu5&^Uy~1U?g0qP2KN~2m0RWCcBWnNv diff --git a/server/sonar-server/src/test/projects/test-libs-plugin/target/test-libs-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-libs-plugin/target/test-libs-plugin-0.1-SNAPSHOT.jar index 85e4772f474d918c90f1771244aeb500f419bca7..590d91b74f200e45ecb2a2389f2b2cf899aa8410 100644 GIT binary patch delta 744 zcmZ3ulWDZg-{}XPjuMSU>4>-XQ}4*Y6WQ@!t#Q z>r~uww$EK~%bq1m?uMz!9Z=nuFAtHH zecSbB%?&Bx5!GPSnw}uMsp2GC$+kHqTsvPr*`>2}Q%J!9{iACYx|;R#<`~{rKBqDz zMr=xJqWK#)i@W{vBmZxye|Y2OofE6 z@ZA|QZ+2@6T@q{W)j2Zb`UC+nH$&cJDObs4&p$H^z6m5r+?SqFqu-y9$8n9d#(Y|g z^uF>-D_?$4R}`zAdgFEOYr~^9qW2q4R2t*KOLi+sL~95AXgz zMLXUvjVe_4)9+}W$NZ9`b=`)SFV3&YRWP=(Z`kQRp;7a#hqj{stN%ZC9Q!`k{6KPc zjfBT9w#tx#?rp_uVzu^}8#UA%l{~lL(NDP(P4bQt^A0rqX!5%dUTCp*&2oi5DTUhG zpQt*Wy6{xTbKR_c-`Qai!oi@;w0-sFn~Zjh%)mIAEXAw=qBpxT-wOgW)WZ7hn1PWt zdB+qjF#U9jGnm$%8p52narNe=sq2|ILD8Azk||U_*=j~ey(3q%fq=usT0g@FRtH&@ zDD2Q!x+V68*cYaYK9?JOR3>xW+gJ9z^3SWbmXm2E25&Fi=JgDzU7}omL8>Qnc5pUN z%(}xI%dYj_FevP}a@Fhf!^%4T@7FbIx>9R*=&7xL_Tob}w{~C3E0p7ffOd`zi)HYdqrU^W`O%9)F1@`BZnbu(X(o735%{wa)OefBY m1p999EGsbmYgRCr4w#(+^6lj9v$K&rt39WHje902Spxu);ZD&2 delta 745 zcmZ3mlWE~jCf)#VW)?065ZJtT=|o-?j!k=)y1gm5%Qw+du|DW@-XQ~lJ?^LMf5cfn zam<)4-LI5U>A7TYm|ENc)s4#5j=B5y%~ohynR4>dxp!yY-0)UAD(B;B?;yP}#fj;B z`CQ*P`IaTZ8jeL1W-?5k@YLIC$>*zErgz8c2fHp@vTzRLJ(1;m6u#}7vF%n&d&JxT zgNc_fd{?&T+E6WE-`<>7e`u2NOtI9fzh-O_p0J74qcladF^T<-z+x_i7Y@d~>vr8- zyQ-A!S?qJpmtBjap41%D^6+@UZuoWf!x71>Hv?N`+M+`Cth8vy~Oy*Dwhk7=1T`VuZk>Vs+D)-+GUWex-;X(|EI~^_m%S-PKW(4 zGgcDRiFNxH+c6V zY|ViQK_Qu%C#PO6{l@@{5DtdTOnaAZzR76E$PA2{$x_T3AbPVa^SvN2LoKY|4lJ`{ ziWZoDI>i}GYflYfX5O`QbJNuIOq@V1ZqHv9ZD^QmH6x_nm+P>CfWyPR%LO)t`2=aQ zY|>b|CH4#Z7bZ2oV8x6X7aj8Mmwf+GaaB}l!RZG-H+*c5R@`(->_+ipug}Zg^6kp* z|5IZ)&3x6h9M&ZhlGdl_p85R6Z2R<7;boid)Xp!Ml>F&KX{*Z87XfJte9k2D$(uj> z`?Gn*VTYudr$v;0GY0T^Gct)V!;{-&shKA5^fozcrWM%vlV@6k>5DThz%{>Qz+dG6 diff --git a/server/sonar-server/src/test/projects/test-require-plugin/pom.xml b/server/sonar-server/src/test/projects/test-require-plugin/pom.xml index 1f77e233f62..2c45fb3afb0 100644 --- a/server/sonar-server/src/test/projects/test-require-plugin/pom.xml +++ b/server/sonar-server/src/test/projects/test-require-plugin/pom.xml @@ -16,6 +16,13 @@ 4.5.4 provided + + org.codehaus.sonar.tests + test-base-plugin + 0.1-SNAPSHOT + sonar-plugin + provided + src diff --git a/server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java b/server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java index 440f73bfb58..80aa622cf84 100644 --- a/server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java +++ b/server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java @@ -5,6 +5,11 @@ import java.util.List; public class RequirePlugin extends SonarPlugin { + public RequirePlugin() { + // call a class that is in the api published by the base plugin + new org.sonar.plugins.testbase.api.BaseApi().doNothing(); + } + public List getExtensions() { return Collections.emptyList(); } diff --git a/server/sonar-server/src/test/projects/test-require-plugin/target/test-require-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-require-plugin/target/test-require-plugin-0.1-SNAPSHOT.jar index ac1f9f68e46a7d4e6e11731b44e2c6a73d12fb92..abf9bbed5eb994e6ec5d6195e8d3cd465f764570 100644 GIT binary patch delta 1706 zcmdlXJVAsvz?+$civa|5wy&PZtHPnZeYG3cLc?bhE%oZ7AFyqGH0`)zt%_^wwosw-VHJeMl_Uw2Oq8q-bb;<_~zlSWVJY+&wTmFT6M=}r_-n2)E>JvXMrHQ#8JD| zLMDBp{e2NWpWoV?zOLU|9{=Xx*3ZgqUk@voNA(<=xv}M}Tj<<{X1&Jlf7p-kacQ4Y zzLCkwdP7*RciO7u|6ixe*p$vYpnH3I?!(Q&VtY2OVcqrQy5qTJ?lV?c)HD1_UYhsT zAR?+@`Go0m&wDkr6{HKIQDPHB2(o?dcJVsUY3fUo}{2a!3gUJIx3 zJBIwRs4#rccx-e1F_zAG9EM3AHexp(%(}Gp?X?&CFLg`!{$c#5@%VPrg6bKy#`*W2 zysfLy4tt3T@(KdMt%;@?-a z_u|fC`55)EL&a7~K`EQ6jQHCBIH~;nuQcmcj&irm;YOb0ek!%*B~42tExX*a9=P2p zWPUg&@FG`BZ|)PHH#cs$cAEW|emo$0*^7nq*40(-ocPA8s>?oYh2HfX@AHqHO{*RI z{F%NkF+Xl+^kw<4B?rFrwTNvD^FGx0=%L6P=9RNGFReF-6MC$b$e4LZhi8+x$HvZ^ zn+2bEGG29^@~qHzSLykR!>2wgDNoL5wcmU!sZ6(UYCQui8o)_=@&_g@W?&MZEX(W+ zrjwb&1!rtq?Uwm-znKaXFkaXg7@Q{;GTYY|_Tu{Hf)k6U&Q0-tzRFNBdmm$K<%+kbq^ zNI00=x~}2p*1IQ|xV-8gSsSS?4~akix9P=l**X3nTKU##$p_@UuaxJO_xXP@<5OPh zV*jl%TYFYq-75Iu;`+XVTW@BX9$Ic~=$4U^R4w%J?61$Yy`RLlz7MnR53jE6Iw|8` zQBrJX|Gs@L^VJ(V#mm^dgbp*RZizav$?T4->-V#@t+f-j+NRgn?foh9$0_mX+SIp- zW#uz=T@sjlC`aScnsYbav#P3}V~#JHSP;H6y1_-mD{3SAJ(>FFIUmGf$qbU)x9#C~ zZ0> zWAD5Z4|!Byx(G(3`&e>5khy2@^zYB+q(9RRteEEiQL#%tfX|zeNrV|*v`-dfH-VS! zlYQB(cu~rx$y3-(z}ez7yEKym^W+!ovI@Z5;s&Z1U_b-LU=U#V|KFE+vJSHjFRCSR z9MVjanJ1rNwwt_@gGT`)f5A;)U|7=l7NpR1vKA)~C&(?3khA9$Wh!C=N;plP!70TS I#SYQ}0I2f#T>t<8 delta 1659 zcmZWp2{0RI6i!7XamEOWCUsV;ju_gyN`$JZaYS9sQfb}FYPJ=PAkKPX|hij=Cl zQfE<0Ro%9#jUI&BvZ!lqsA9{G&e(l3Z~lM&|NG{>`R2VZ8QvfvVrK>97X<7EyM>h^ zq712NVOcbjiXWutYf_Xj(KtfyRI+hu0fzkeNHf%lY8|5Bzd3g;dJ?0O?_C^3^l1^t zAtGhBMJ;<~Vy&Zxc)ypORqJ;~gUXs3Wl0aIh)$?WcyMN{>=R{g-D?J&mtjkvZp8LI zaRIbkVWLzuagMK;zVcVFdI_X=Ek;?#*m{|t#^bQQ=QBL8lro`-aZf*xyGC_3my9Uk z(iUTfk#T7({f5L^eKU=_C~7zs<3;g0&_i1|IBX_uNRq5MWxRwr1xGNJx zK*>1-NA--19$7k?fa}J>Roe(4{fW#p3#&K7J8L?^NW(#V`a+MzdVplKP8w4_`}^ek=8F~>NQr=myK(^v13z8NHmuZFkb>h-P0kY<%AL`XN7)HUADFuj0;k%Uj$$-s1 zjYX;cUpcKjp?ysuyP8^@EG33W9RdJ~exw9|u>+Q*xFtWc=|I7{OzQnG7>t4)OzD^2 zA*xKLeLGyi92;`RrTsYFYSLlJ2^Dqt762(ou<6L3EY-Q&Ux(7n?L}oxrlZq+ZmF@RK|oB@^`0*S<5w&48OT zZN#C~YFeas1x$Fe%(BRSx|zD}YTqh z|7j z_J)z60aOG25Ricbn(dthKxc7a6U)NqtT`RR2LMQe001*a1<-_YJt$D~R$u_r!7b@E z3Kq6lS+#UdH zTn#XOEbG$g`%{UL*t($yIbP#wM_0~pat|-}aPkX`puREefQ9f=UI8aV@TKL&IACps z=jux^(dwmjI+c=xwByZeMcDGri1Yl7@~V!C@o07p%*N9*ENn8}k|z{*F_A-lRGjpB zi^2R3CA2AmR;fkY+yr!2eO+Wf?@23Fe_-IMNa@YG3S&vdn}w#bF1@lRa7u`^NTmK8 zOay08>1@BT6j0L`<6cWlcFt}Zxy?3hjjA7`Y3F{X(6oZS(2|m@28h6KRb6ah7K@q_ zUUae9RHhMBEgbv#nxgWml(ddWF~GsbnVxaAan#ajMaI(qykKb?+_GGOFt3_Wk{Qn| z8Ywdcm-wQ^D~W=LbL6gPkdR}SIz>HYDl&U7xcf^jKi&4NoL$JoYtwt2#qg+2`({Du$|wS4AUWp7FQH3M+=9(&ggWme$vdmeYUZix zxYv)wp(P9&N%w8LJKAIXt{!iG6vZ~3h_xRrzj?`UcCc)7+PFh|tT~u;-Ro!sG@?F* zTDa!pGkC?{W%4#EQJJnq{kpO2sUGC;m=k?3Ot>Yr7RBp$?TSp( zzvI<|<9}LK-1gfe3r_2Gq y(E+~GE&;8!-xUP#zjgZw2LOtrs&?VV3^G(=udf3l9{|b->;dPYNC7_Z?$19W1JM8g diff --git a/server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml b/server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml index ca207b10c19..58aee047206 100644 --- a/server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml +++ b/server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml @@ -16,6 +16,13 @@ 4.5.4 provided + + org.codehaus.sonar.tests + test-base-plugin + 0.1-SNAPSHOT + sonar-plugin + provided + src diff --git a/server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java b/server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java index 440f73bfb58..80aa622cf84 100644 --- a/server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java +++ b/server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java @@ -5,6 +5,11 @@ import java.util.List; public class RequirePlugin extends SonarPlugin { + public RequirePlugin() { + // call a class that is in the api published by the base plugin + new org.sonar.plugins.testbase.api.BaseApi().doNothing(); + } + public List getExtensions() { return Collections.emptyList(); } diff --git a/server/sonar-server/src/test/projects/test-requirenew-plugin/target/test-requirenew-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-requirenew-plugin/target/test-requirenew-plugin-0.1-SNAPSHOT.jar index 3437dfee71c1c77810f61a9db63cb0eec5a65f2b..671f69f10f84a83d0c0f63e0b7e9c550d8bffb2c 100644 GIT binary patch delta 1808 zcmewmz-XnlQ93x zIn^J!zdCC4uX^=do7qxmA$hd&NR)Y>%**?NTW3g4e19>hN z3+ERJ-Vy)(?*E;(H@(N3KSjyJ%$s@HI{L7b{ew5}tLzPT2MWs);Ry(lecxX`|Fu34$Wf~78QOi7PKN`MbwQ0 z%Q|(1P20|NerUBy^|&rw%eGk8ea^xgf_CqZO=jd@f49-yYo~Jiy6ff63xC$fm|R)g zvE_Hy{o_hcrpMWc{WEl~J9G8t;zxBVOZ@wa_FmjsEFYsDcBt4&DJW%Al@VY2A19Tc z|CMIl%2Do?Io!x|+)t&}yrgM~q-B?T)&sXYh0G7<1YYE7>CJuO^XA44*G{t^(~k#4 zFMF|Y-nzQ#ofF@9Rdv~?tF{h4_t@BZbF<(RPsXdRQ=S$2?kYWBaro3{CFRK( zt@fLbC6(zGPOWEvg+DmePiAA*Vg{!E$;QmiV7ihyif_)g)o#W&{1(|VF)(PbO@7Gi zQ$IJvH~+Q)&)(<**Ce~K5~=nabK&F zoh(Z7Cy%>d`ck%E_X6J*L9cU*HT{%Wj6!El_-XTN<1d;0{dqTArbYd2yQ0)SElnj znANNP%rczLX`PvHSi8A*QcN=UF)1%Am*!`;x=j7oR-4_6I6U7gV?x03)WD}sK}HQG zf@}Zi9K2ld^Fw0&#y_8SEJ`s?cwkleOwS~JU(Wm&8TkQ|@*CI2_jU9T+p-0B1G;BSPtsX){Qa+o`|1yytFNls?itE? zX6<*s6kqm-vNI+bUfo`3zggxn-?3f$ZXG=O^@B!r!5;tZhiCs=eDUCJS?StUE*Fg! zxrJJ_`saBEt^U#|Id@lya&iNk+A?*)du!}JZ}<84=FRTE{fA5A!wMHX7V%#n|Kj5XXgz~ljGT< z>MwE~QV?;t|CcNA{3#JPgB#8+A^fWk{B1ZpoAY68cB#)+gnr8d*xy8BvoCIpT7Fhl7dKz2P@kW3>z?+dtgc)89O!j0qf!70*TiLC6 zQA(-FXV^^?fceD@Tx~!JemF;f;s1X#=E({ivf#|*z#+|;JXxMoTN}+56z%pX+E)VA zJLw?Qb13 delta 1673 zcmY*a4K&kh7@y6@HeqFiMZS`2nJFQ2eGE%TBf749w$QYEEh4eo)rrj9_=|;v+8w)B zrR96X&~n`}`3j9lQZz-%*KQa0>YUzlp7%Y^`90@(&-uO2@Avi~my{KVt`KQBXnk=T zSy>AD(EE)nLRM+fO4b2gT1P~yHj;OI&X$)L;#lZYaiKHDId2a~6o5WqD=?JyYkoVo z&>rn@!^PQoA9kJ@+^&CD_QWI^-B^gsxA^QfvEPDN3BglC?O!E! z?$-#4dKa0(X^soWg<`|`pk<&sRQ1J~@)rh-5PZ;E|Gj3Mt|V$kJ8~6_f&Szpk=r{Zn;$)p1@PHGB|O^ zbDNJ~mbz|0ezr$W1$&rM*YRURcVga4i)lT0irXP`wJ`j)z3OcV_!5nSil1f~WYd8^ zEsL8nwGSqlQFqZ?N6No;hMl_b#JV(*GQf|tEn>=t7S2VOqy>+5Z@oD_h8q>lHgH!zE`3&f2~E`6 zLplE(KNU3GqL`ATOD#X5J|tSrR)}i*{a)z=lDEng%e;lvYg-*4 zD^tyJ!ud-2FQIo3TUI#Ew>)3-(iZ&)Bl>xM*-DuamhBJq-h@>~@KY4=7 zq6#maSKfV`@V>@!A?I#D7*s5atI`D10t2%VK0_Ryc30u`ebh-%qbL&n077CNqf;)k z)xo>Y>Uh^ZZmO`EjN~3SFRALbwYQw;{tI)TL0u@kYCL+8&zn2}@hQl*{&56ASu6PK z#x&K$*wvh&(TAtg8uH!4CIk}Ev+WTHm}{|qu*U{vUl;jxj6s}nExktqs7PRyHBRu! zt*H_msVE~NR;usI0~`7Q7xxoVUK*m_oAQ&mU=syOJgKrT9W~Qz<$CBh=&6W8KkC@( zzLQkQLk+T>eZheDQ5UBU=r$v(r9ouZ-0Ri`_G=njpt7r>TRIuoE_QWQC8rVu@peBn z$yCo3PMsciR1%i56;WKNW51{n`t6Ta4>{BOS7nIdSL(^e)&@2e4->eY-X zE_t#fKh*|!+uL{4F6c-16~ku@VY%(oS`KpkH&#r*H=R+HdhZ|kPVjQy@CmCCmSWTe zDy=l!?Rd%Qppg;W&zBUQ;SRgFAJlAYI5S1n`y(^mSEMGjlNZk?Q-k`UqvAcxV)9Ac zmaGv<)Yq@j7?11`)r7s0kkK13vsUi(Ps@weGn!=x?%&sC4b^2b4NLlba~Wge+vk16 z@;k=6O6K!w#E4{tGly{s=y1m|n3+07=wg9p-wvxDx@)5^RB2EQg1zm6T@>lq>Y*gXT;#eywry zKX)#+o;;4tU7`rmGLLlgJ9FBOZjnv6oTF^Yl=QgOnbTSjHtnPvw82%(Q@O2k5TdIT z7zz32*}yG1vu~yijLKOld}k?u0n}_m3jR{G1fW6oD16`U!x}(Y z2aJGOh&n)o!L`3v5C}xr_%Ht3ZeQ%!EZz<@z?8MuZ{MJ64X3Zg;qQvwWdHBH9Wa4w K$y&*+qyGZZcJ#&o diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java index 7afda907021..8722703d7f7 100644 --- a/sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java +++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java @@ -36,6 +36,7 @@ import java.net.URL; import java.util.Collection; import java.util.HashMap; import java.util.Map; +import org.sonar.classloader.Mask; import static java.util.Arrays.asList; import static org.sonar.classloader.ClassloaderBuilder.LoadingOrder.SELF_FIRST; @@ -56,7 +57,7 @@ import static org.sonar.classloader.ClassloaderBuilder.LoadingOrder.SELF_FIRST; */ public class PluginLoader implements BatchComponent, ServerComponent { - private static final String[] DEFAULT_SHARED_RESOURCES = {"org/sonar/plugins/", "com/sonar/plugins/", "com/sonarsource/plugins/"}; + private static final String[] DEFAULT_SHARED_RESOURCES = {"org/sonar/plugins", "com/sonar/plugins", "com/sonarsource/plugins"}; private final PluginExploder exploder; @@ -91,7 +92,7 @@ public class PluginLoader implements BatchComponent, ServerComponent { def.addMainClass(info.getKey(), info.getMainClass()); for (String defaultSharedResource : DEFAULT_SHARED_RESOURCES) { - def.getMask().addInclusion(defaultSharedResource + info.getKey() + "/"); + def.getMask().addInclusion(String.format("%s/%s/api/", defaultSharedResource, info.getKey())); } if (Strings.isNullOrEmpty(info.getBasePlugin())) { // The plugins that extend other plugins can only add some files to classloader. @@ -110,11 +111,17 @@ public class PluginLoader implements BatchComponent, ServerComponent { for (ClassloaderDef def : defs) { builder .newClassloader(def.getBasePluginKey(), getClass().getClassLoader()) + // resources to be exported to other plugin classloaders (siblings) .setExportMask(def.getBasePluginKey(), def.getMask()) .setLoadingOrder(def.getBasePluginKey(), def.isSelfFirstStrategy() ? SELF_FIRST : LoadingOrder.PARENT_FIRST); for (File file : def.getFiles()) { builder.addURL(def.getBasePluginKey(), fileToUrl(file)); } + for (ClassloaderDef sibling : defs) { + if (!sibling.getBasePluginKey().equals(def.getBasePluginKey())) { + builder.addSibling(def.getBasePluginKey(), sibling.getBasePluginKey(), new Mask()); + } + } } Map classloadersByBasePluginKey = builder.build(); for (ClassloaderDef def : defs) { -- 2.39.5