From 1b6d342ee8adef6fef52f76be20dc6e4d39f6938 Mon Sep 17 00:00:00 2001 From: gary <gary@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 15 Jan 2007 10:25:38 +0000 Subject: [PATCH] 2007-01-15 Gary Benson <gbenson@redhat.com> * java/net/URLClassLoader.java: Removed. * gnu/java/net/loader/Load_gcjlib.java: New file. * gnu/gcj/runtime/BootClassLoader.java: Ensure core URL handler is present in static executables. * sources.am, Makefile.in: Rebuilt. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120791 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 8 + libjava/Makefile.in | 3 +- .../lib/gnu/gcj/runtime/BootClassLoader.class | Bin 1561 -> 1706 bytes .../net/loader/Load_gcjlib$SoResource.class | Bin 0 -> 1102 bytes .../lib/gnu/java/net/loader/Load_gcjlib.class | Bin 0 -> 1645 bytes .../lib/java/net/URLClassLoader$1.class | Bin 1022 -> 1022 bytes .../lib/java/net/URLClassLoader$2.class | Bin 908 -> 908 bytes .../net/URLClassLoader$CoreResource.class | Bin 1826 -> 0 bytes .../net/URLClassLoader$CoreURLLoader.class | Bin 1344 -> 0 bytes .../net/URLClassLoader$FileResource.class | Bin 1739 -> 0 bytes .../net/URLClassLoader$FileURLLoader.class | Bin 1278 -> 0 bytes .../net/URLClassLoader$JarURLLoader.class | Bin 3418 -> 0 bytes .../net/URLClassLoader$JarURLResource.class | Bin 2202 -> 0 bytes .../net/URLClassLoader$RemoteResource.class | Bin 1152 -> 0 bytes .../net/URLClassLoader$RemoteURLLoader.class | Bin 1724 -> 0 bytes .../java/net/URLClassLoader$Resource.class | Bin 1217 -> 0 bytes .../java/net/URLClassLoader$SoResource.class | Bin 1097 -> 0 bytes .../java/net/URLClassLoader$SoURLLoader.class | Bin 1625 -> 0 bytes .../java/net/URLClassLoader$URLLoader.class | Bin 1354 -> 0 bytes .../lib/java/net/URLClassLoader.class | Bin 14234 -> 14476 bytes libjava/gnu/gcj/runtime/BootClassLoader.h | 3 + libjava/gnu/gcj/runtime/BootClassLoader.java | 8 +- .../java/net/loader/Load_gcjlib$SoResource.h | 50 + libjava/gnu/java/net/loader/Load_gcjlib.h | 58 + libjava/gnu/java/net/loader/Load_gcjlib.java | 77 + libjava/java/net/URLClassLoader.h | 25 +- libjava/java/net/URLClassLoader.java | 1448 ----------------- libjava/sources.am | 3 +- 28 files changed, 224 insertions(+), 1459 deletions(-) create mode 100644 libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib$SoResource.class create mode 100644 libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$CoreResource.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$CoreURLLoader.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$FileResource.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$FileURLLoader.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$JarURLLoader.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$JarURLResource.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$RemoteResource.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$RemoteURLLoader.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$Resource.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$SoResource.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$SoURLLoader.class delete mode 100644 libjava/classpath/lib/java/net/URLClassLoader$URLLoader.class create mode 100644 libjava/gnu/java/net/loader/Load_gcjlib$SoResource.h create mode 100644 libjava/gnu/java/net/loader/Load_gcjlib.h create mode 100644 libjava/gnu/java/net/loader/Load_gcjlib.java delete mode 100644 libjava/java/net/URLClassLoader.java diff --git a/libjava/ChangeLog b/libjava/ChangeLog index af4a1a7cfbae..ad6c1fba4ef3 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2007-01-15 Gary Benson <gbenson@redhat.com> + + * java/net/URLClassLoader.java: Removed. + * gnu/java/net/loader/Load_gcjlib.java: New file. + * gnu/gcj/runtime/BootClassLoader.java: Ensure core + URL handler is present in static executables. + * sources.am, Makefile.in: Rebuilt. + 2007-01-14 H.J. Lu <hongjiu.lu@intel.com> * Makefile.am (libgcj_la_LDFLAGS): Add diff --git a/libjava/Makefile.in b/libjava/Makefile.in index 0f052e67b9d3..e03542934f2b 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -1922,6 +1922,7 @@ classpath/gnu/java/net/loader/FileResource.java \ classpath/gnu/java/net/loader/FileURLLoader.java \ classpath/gnu/java/net/loader/JarURLLoader.java \ classpath/gnu/java/net/loader/JarURLResource.java \ +gnu/java/net/loader/Load_gcjlib.java \ classpath/gnu/java/net/loader/RemoteResource.java \ classpath/gnu/java/net/loader/RemoteURLLoader.java \ classpath/gnu/java/net/loader/Resource.java \ @@ -4402,7 +4403,7 @@ classpath/java/net/SocketTimeoutException.java \ classpath/java/net/URI.java \ classpath/java/net/URISyntaxException.java \ classpath/java/net/URL.java \ -java/net/URLClassLoader.java \ +classpath/java/net/URLClassLoader.java \ classpath/java/net/URLConnection.java \ classpath/java/net/URLDecoder.java \ classpath/java/net/URLEncoder.java \ diff --git a/libjava/classpath/lib/gnu/gcj/runtime/BootClassLoader.class b/libjava/classpath/lib/gnu/gcj/runtime/BootClassLoader.class index 1635a30404009ad59a0701f9777d1e354cba70ec..857b7a17cbae26fe6ebc9f2d9185e45cd236f5bc 100644 GIT binary patch literal 1706 zcmah}T~8ZF6g@*=?JP?Ph7d{<LLdoXTyN<|(g67+IMCQ6g_J6f%kG41wBAAEb({W* z{*1gPssvIawU3qhqpF@+FJ@yJ)skmt=H5B?oO|!g-~asn2Y@B)6woJdc|UHu`~E9e zx8o#iO80?M$y(&KT6N_GQWwxKaHZF2Lq-Qu=iCGaeWm4w7YC8l0weWT-cOzzdGWrR zx~&KlSN$lA!{m;@nfZlXf&MiW$N~lhW=w$eL@X2cK&wRgDsl~^n_-@Xz>tFhSOUZK zFqT{G=AP8gyuC;Yl<La&qFqmiW}R(Xt68}7^Eo;@i4Noam4#g!XE5sE9L5AD^By@} zbSq+<_=a3n#(~l;8B~K%w`>xcaPTQcc-#wuhoP2!qI4)*HLaRYwPK2rUyArl;1cy! zndNGh<qwexxFq0o<^Ql<FXA%OW8@ccMF2(23JBN6MO-tCuL~^a8E2YKtK2-jWrPdN zJ6J$jz#?-7WW_Q(QvhyIcmWkEJE`M#r$g3X`|=<ORcvDsRl~+*BJymWz0~SwQ->5} zNnon0t>Hy4lx|8BvkOG2$;+_CKCAaOT2D8!i>xTzWBN_WPpD=3nWNVN(;b5m@}J=d zGPK7oHw~VaTHsoq{&9ok@Q+*A?s9Gwu*y&;6jGNhmDE%_4!Uk8)ps1+#VvO2i!ct- zTh$3`Z1){JFt)SCmXYa?y(U{)_&j2GK9b3{Y^k>PxjXZ5rpJ{txEl^OQDavb+>_Ji zdhnR@#g7BFlQ44E<91VO&lG&6fQG<msyS5d=93R(K5_6AkD1$iNCvQXQtGwP+|#k1 zf>sR}A0s{qe3bY`m<!I?0A~gMnHjFi{F<LtvVVi~j<Y^|!qMgzyb}YsfZ=qP0~>NA zJNGLw4DM1{9HCS$oj=5da%s|x?{V>YX{t2cSDHD()kDm^!BFEp7N1v+@cEzb2rz<K zT*nt#s3}4LGYmD0L0qM^Olt*maOty@hM(>P!<YEV@Zj#(_=ZSx6mbJLi6rnXZt=TJ zYd=>jsXWacLvy0Mc!=AL%3l~ZvwMv<uznPc%3FHclr>8Kj_}DeNjEs&q~$g(cQJ<h z7{|jLlZh^q39O||ER^VBrA*dQBd$sBGS?=NmWlf4EoYr57VTgknbeMVJi3ThhA8kI X9@BQLsD2u8s~2(We-OV<8EpRxw3LEf literal 1561 zcmah}+foxj5Iut-3CkiRT#N{E7YH$Hyh9L_JDQ*ch{fZQ9l}z{4mH^*eubaGE51OL zROzEtew1a;CWIwGxv9)<PxqWYr@MFm{QdD0Knj@<8W{TWPT9!k_6=EfT)W7PIU(Hn zf>|nMglTaZLV#hQK4^s(4!HD%F$AY=$988JI>$2m=4aC=m`>i<aHZ|!)8ktVfq7wZ z4Y$ywqY)ZIw?EK_MbTmC3{eG><c=j|iCam_mL&}gw{^54NXJdfTCgS0xkB2!v?N9G zgA_!|{TfDup_fP}Nm;V0>@rda?F_m{)Zwo2aXk}8Cy~qv$-}tAfH3YdFhfHW_Y~tE zhABVes<f+OSFdi3Zz<;Yb@ZX1N=3{mAw#5!S7kuLLl`7w7xi1ObY<}{#}8avI2r~p ztk{e&#QbbF_oVn@?i9EOGD^v6+OlS0SI8n)Icq=+tr^?lYvtk&mz(M!6+9zyW?{>e zwz8|60e8<X(FkPfXP|CS(xj_k?@*T%(1n6(nW&V94E+^{(t9l{0%_Ty0aUZ+O$5V; zU*-8Y`S86kI;Yj7l|pz*sV*pZA#1{25@pA#g{h7_*YN@=s>QDDSl+-_(kkDijw$79 zQobsgfMXV^P%KBiyM{xn;=at?bzTx>nWM<To7tZ?UFCYCV-B-4kSf>3>9#sN>chm% zfMwS%7>iE1$fc=fB^|;NL%UZ8TNtbFFG*j~v5Ez%w?8E%&^A2kOSYPbj=Cl%6&QUx z7`?{o3edk1L9#>i^o>@vpNg|ngyYfX6STymZE8J3bUWG+?P`d|PSJgW-XpYR&oHo^ zIK|Mf?*tIR5FXI40b>Ml-vjI+@Ln{N6~VCQ9mO~vVS-kmzmg1bvelJB0uKpk6irCN zAS6byDY`!<Z-A^P9;&1rMKczkIKi`Q;x}5=)647;f}dD6aZHgK+R#q%6*k=@5rh>a zG>s;v9h2xl8eN$2F^Scf#K@<Z1nJu`jaMF%8O+j-D$^9%4RjBxtgnyhsggyN5t#Q7 gyDAYi#9$SXk$-`F=ZY4uA}-e>uKWk_t;gWqKdi541poj5 diff --git a/libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib$SoResource.class b/libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib$SoResource.class new file mode 100644 index 0000000000000000000000000000000000000000..86c42ea8020e2017c4b286c1279b730e4479ac97 GIT binary patch literal 1102 zcmah{%Wl(96rAfk+&E4eD72vz`k+8w)P)rgR2ET?f-DdXWQ&~iDs`3Gk>emfiUmke zBo=%CABC9fyj&EimTaGU9y4>#Ie-5C`VHVQ4s~b(mA*H&&YVw<<;l<*_|Az8EStZN z{odKY?e4ezV>$B2K~L&P3T!RQpJfOn#=$@!Z_g1w9NTq)^b6N>!y|zwC3_h_jIe&W zw%id&HvAK5Ac3q29j3tEaujkYAQ{xloeU_$L<(tvRonICoAG&92JfBjKnh&9{hl-E zIDxCqQ)e<fbw>iVs}#msqOLaSnZWK<bxh9pW!UnD<FFkD(m5B{D3vGob$u%qV5-sl z+>^u5^}UgfTLNoQOI6z2dBnhN+|jWmV8$D6;x4vH<`1RU@I6oV6pX;;j7*K1&056j z26k~z$DY7?9BGkZ;wIKPiXQO<ikF78$fE8HuV_oJAD(g>O63+iL=V{n3jgt|TehRs zdgZFA6k=;|pk(k~Ey@oX17|dn?8AY;_7(dRVa^s3hg^dM*PSC*yFe?+SH}uH8Cvh4 zMe%H<`V&T__5-<ZbZc1UHy?$bvhW!UJV$}Pok=>b5l}r@tl<X1l%)tX+Uykn8}uc4 zDn>+2S{gmM%6H^0uxVE>u=ACU36&8AkErWqM56$hJf&G7^giwrLf`=&@~gDhqB9Y+ zFLRtUeLyq9Fe6)=VhEH_o>p4Z%9Ikb5HTr!9V<>vi#1dtiYiILUML}tV4?UAAUpA8 literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib.class b/libjava/classpath/lib/gnu/java/net/loader/Load_gcjlib.class new file mode 100644 index 0000000000000000000000000000000000000000..3293b2e59e7c578a976c1a50f872f709a356f18e GIT binary patch literal 1645 zcmb7ETTc@~7(D|mrOOIf5h-#j7oite@1g~~G$EK&9;lG$i<xeRcFD49wp$Z^fG_?U zOcabJzMA->jNi;|ON&+FL$@>YeRIy4?>jR;e|`N9;1-_6(8DlYbsEM2f5#0+_=fHB zitvmg{k^H02ews?A;K`(EopbBDD#BJ&{q@oTRBJ-WhU)3yoTdjhr%e;xF;$_tGuOB z@|3)0IhMb{@P4V-A||kc&Fl35F|S}+!B7?DlzdO{!!7PqY~dBSSrhpVjE?vwH+|PT z>dZJdOYbp63T{Pc=*57J82U9_!cYu@40=leQR^7SWrkQ)_?wn37)F-T0k_SaszJ<_ zQ_aW0a7D)mt}+ZeZb5jyL@&7w&!j!$!H&8x8=mDK8E3J)hHFU1Fc!AtA2rl5j_VBC zzU5Scsxnl=S}H9al~iYFm-u%HuhSQ{Po8g5M-+VwLq*FG+l|Ar@Luw=EJ>p1n%v&w zo+anuV#Kdm^`<pi6%BhT`yD!stTA9p4+J5GWS~^~@|-;wqNZ#<L-s$MLe1L`EWt3_ zf!)<M480A{W*F>9l`46;?%EAs?8<OI8A27DVWGVVp&{BmqS92OS9BQ2F~nsL!`*Rp z_-%fu3i(Idh?kglL_M_9?XG0qE^2d+V!o&2J|2*_C37=E_2`P$>K4^MAHze2OgDnI zCeD}KCa8v0<mHW8V<52?Z0vR~9aRf0xIDq78*bxTk@Dyy&mD&z1L+(=KBM%e0(#`A ziS*bp^hnFnsF%ic$LSlV*#}yat5cb5ZaEoAMo*z-vdPE^^vowDB40528518VqX$#; z9VHZC1_MYTfmynTDNJGx)3mw~AW<|$Gs2|!9P!A}JQfH+j&5L4DVo9((uk<F42`0c znME$twNBYGKTawpvL{$Rrb!^7PeCp!%F!UHMH$CUb!4hH?u1Y#k;oDxL#Vqiaz7Ad z$KSB}Dw8|KqciA)(vzdgEYlOXf+6y#JlRYD(4t9VUD3qpMU<zIS~rxy$9O{j8d0y( I?<vN917+H!N&o-= literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/java/net/URLClassLoader$1.class b/libjava/classpath/lib/java/net/URLClassLoader$1.class index 4481e7b35d58b806cf53866d244887505f8ca8ae..762625a3c7a4ee79560032d80f91af0b47e5701a 100644 GIT binary patch delta 33 ocmeyz{*Qe_1~U^=+~h3g06wN91|Ftl1|g;t21%x*$tRf20H9<DL;wH) delta 33 pcmeyz{*Qe_1~U^&_v9?*06vy}1|F6P3_>gu86;WyC!b(80|2b*2`>Nu diff --git a/libjava/classpath/lib/java/net/URLClassLoader$2.class b/libjava/classpath/lib/java/net/URLClassLoader$2.class index 64c9e24573b0d59374d7712803576b5f5d59b436..741aa3bf03ffe0692c4c8625f7e1df044691fb13 100644 GIT binary patch delta 29 kcmeBS?_uA-$jrnXJeir<lZ!c=frB}MfuA{iau~B209O75X8-^I delta 29 lcmeBS?_uA-$jrn#XEHOhCl~7i1`gJR4E(GMCWkSb0RUvn29p2) diff --git a/libjava/classpath/lib/java/net/URLClassLoader$CoreResource.class b/libjava/classpath/lib/java/net/URLClassLoader$CoreResource.class deleted file mode 100644 index f37294203816396a639c8c2f7fd6b5660afcaf1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1826 zcmaJ>O>+}R5Ph?jy_Q&PER*mVSr7*#S@xRG1Vo$=VF!T>!8Rg3uBC~*)Oy#oS^>X; zUy=i<GPo+PO76MvamXdNq^Kl+B9-phm9)Z$gS0a}-LK!g?w;TN`}r3D=di9r6PSKz zJ+e$!2Il>hYT2<`t*U1=q(5Eue7Pc9UfZur9SMQ#AkU7MK%!1T0%O&t+cul^hbDuR z$nIKOWKUNWgk!l)b2ad7w@GIs*KF4g76fkP!s7v4h+fF7v>&BEU%o~e%U(mKFoc5! zk{A;>GZ?*xoUbJzaLB+gMtGGrpkq{EylT7hPJ3%Z`fJvPqpsrBEvIJrHt!>2BG|NB zl<I@`=%~e4ca+ouXFnLx<44jqWl(Xq+X3k(tu28gxqKLGduHr_&{K;~>T)}<J-4Of z6M;!3KD*uRp6HkoC~&p9#ohM3z^i+X$+c7kjKQXm!6{bsw7^7ezwAk(SCwuv*c2Gb z<ts^?K~Be60VCcL2J$HI{UcXVp$&!7O-cUFjiN><>6oMVE<tkQ+RPg`f^!0&4%Duv zTM`#=NykNjQ*oGhyLX)pT*l`D`i9k#iqBYIf)Zn0F>n<m@qs!IOs9&+`W$26rBMv0 zuz;_1d_@%-K*7Lud_!dlbqMQw({dY*^aaeQedDte6+V)wFQAmdEN*b276lgiTmOCY z6Q|S<l&|UdwnJKFuegEqUCUYYea}x}2^G$BOBKAv`>KIu+!09fV3)0Si{_;m=fAe; zdyjc;O3@V*ZqKUYJAq7>)3W9K;Q3p!LFMRnu7DueY)|s{dQpuuoBX2E?B~yOvZ~&= zC7b7Zl5)f<H^(HX`6{j}ePx$4;70sy#5^_Q5WT1x()@1FD$TD3eG~LcB1Pv1Xw@JO zwj3(V?7}F_KF4^W_#6{Ikxj!S{ipd{dx>G~6;j%3jB9UjnCyix4j<uT+7SYE{!v2Z z6=%}aigPoMV>nKh6SPW@&q<a0GM%u$v4_lhVF%;8$UdWen0JKFwBJ=OBlL@M(Rg8+ zEX@BreHmkv<9G1ckMG3)5sM$~#?PP_#XpVs&F^8BIhZ>*PoIf!`9=EL3w*hY^0Vq5 zmezN1bGbP40=FL&e^psCn8MwNZ-#CS?N8F@FPxz7l=c=`?Qi6?e=w*0t9WFU7V{C0 hEGcylD}<CIy;iYCNE+^|8`SWCzFZ|56?~7Q{{uX-zw7`2 diff --git a/libjava/classpath/lib/java/net/URLClassLoader$CoreURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$CoreURLLoader.class deleted file mode 100644 index 050f529734c058f06e8ccac681ce9cf564474568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1344 zcmZ`(ZBNrs7(KU}6iOX1USujNIAAM-fiEZ)L78GSQxZ@jAG_@`yOfS}9lr|`1p>yz zm-xXSWqfYik(P}QZSTu@?m72)&eOmDPQL?Kz$+ON!(`1kF!DBc^B*>g1<PnOiglyH zophn@a9Z+bGU5#5mqE{A46%yoFeHl})H3X9e#>=CyQ(vEEt|IKt}tjBf4iMjk8J4K zZH9QEUf~L2=v5)3y9W$cRV2{IAeW4WkjRjT#wi%Upo}Dg8kVeL2*VUs<?gy^afYEx z)(;E|6%5x@TtOE@U(vMryXIbrJMWE>2uT*}Wy9Jw98=7L#kl*)Y%okmR9u=%N=0v3 zB--*4&5*h*j*zjYV-cPtZ}LXH>6A&sVvxVE>fj>nDNVQHbQu$Lvx|jUYnm37TR|FA zGA0@NFCtV-BSUFBFsvru*kzas^KX=DyzJ^75~*Munkd=~!*Dnxa71=nAZAs}Ay4iw z_V>A6VVLa%Z7WkCTNg(xsJJHz+wIo<qZK^BqKt=B|Ek^0SIf1$aI=a>cubDkH3iQ^ zN1iaAGWLWa9k$TLqPCK&U<u3Ou1^`>1P6DhMWm+!vxlo#jL>`bw~ak2dAv;eh0h}Z z24&0hgm34;Xa~;;;go{cw#^++IB&>!+44ZUJnF27K+IDs#OPnaAc=mUkwg!5A+7Y# z=p*fl{iHUNJBFfZU!WeL|0_m5d)QHWCj>$|MVEAj0qGl3w06gj!gbuB8O7r!#^_8j zx`jTE<u;*w7MHjMi*|<b9ikXH!QEqIXO56N!u$#Dzs>zY;tWeWo(%nv9THlCU{4}W w!yiaVKQSi#LPq)>QlOnH(6B=HqgJFp$10vtw1ns0DQhUuSD`(I7g)#We?P=hbpQYW diff --git a/libjava/classpath/lib/java/net/URLClassLoader$FileResource.class b/libjava/classpath/lib/java/net/URLClassLoader$FileResource.class deleted file mode 100644 index e7a12687ef3ace5bc33cd42ce722aca8e5189210..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1739 zcmaJ>OHUhD7(Mr5n0OfCLI_}zQrbd-jT?tP(>i?`(mFAD05Kt}PRs-*8fMUV-1n*v zDa)!-tF(*mqNptkDzzXrQoHYus(S9c>^#WA<2(2J?m6c>-#7Q)|Ni<Lz#P^zNP($a z=0|4PwSw~1rFzvdTdlfhu3P@pIoq+8td`gIo0f)*z~n)hNtQt7CJzZ5u7|0%S5_bu zfxff0YX@%$oSBJ22k=os#9nz2q0k_9)myi8^q}8>21DS)!B`!fLL&<bGSG`Yfn42o zt&8og8<xLf-cVA9>R!`y8m4cn_jofCY}zdnJW*>>wJOgEEfYBT#1kD=RJ36QHFvum zEC;@2ZV8Oe6w;cz0z}srK51Ipf$h014S9hhiMh2)X+*~{JgwolfRRL%^#&&Jj6lEL znzwzc8F>Du0zET@>pD$&*1&Ukp6V%u(gdDLB*fjR=$OVy4JQ)Rc;CPbMySi%w%ka* zh9WEIX6`CMM*$_(vlj#g<DMm>p&HxM_MLQQ5^8}gWz{WrBiIZj*OZu-47`k2n5?L) zp6jwE`XVs?kn~QBMZAXBHJlL`2?Zvjm!3B82Ig2j`FJd_+?ZB*de*?3;N12(9VO>k zdNVyOF!o^6(+HW5;XMOYWpZ!e(PIq@iBFE{Zj@`J^Ig+f@O{tMF^~6^PalK@H`M!i z0~f&7WYzamHQOzYY$^6IL|EDMy^q!CR^st_Xjj8Ufr+&6Mbo+I`CHaH#iYX{AP76z zDdVwOoJ46eFCXPSs$Y%ja(G>+(c_$wqw7LBr9^O&YV4XH?pvJa)x?jaEu9;Pxe6%x z&TyJD+ryiStx{hzR~h~^9O6!vt1FOUyuUcR54~9W69d0<TO!BjVHJ{}p;vwmU4B6b zU@}U_Acpt`^y3JI38q$xKyq~yBm5ubD#OTFNc17ksn}%k4-D*K{6`EF_vqj39;SBh zqp+s-_c6Q6oQQo$NtIuc`D^6lHyD<;Lj?+3>4+5M$a)H8@(30?$EPamE9R)Or&G40 z3EPW{r9Hg5vnqF@SmpK(59KH`&tF76L5Co}CG~ft{+`r7ATRG=T>gaP^5-rirc)UM zv5a8~dK>Q$NvNwL7Uac(@)7B~yY>5+U)#sI#S$H;t(N{_V$_($Si}f{An)Rkyoap( t1%vWejLP4-$n!CImV1|QnFxby>=i5#L1LMB5-YgMe|2>UG;j@L{{!;=koo`s diff --git a/libjava/classpath/lib/java/net/URLClassLoader$FileURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$FileURLLoader.class deleted file mode 100644 index d750821a99e68f363b88448ffa4f5d12f5db51e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1278 zcmaJ=ZBNrs6n<_usdQyb-Uhy)$dGj#3{epsf{L1uOie&$@Qapl9ha1rw4K3^{tW#U zm?%pm@dx;$jOX@cVd6~F-rn=_oO7Q0++V+c`~+|lk5woPQ+wtIvuty}yt!UowM@^e zI_3^{bI*ju$rSEXBpD{Ug|@>O5<9|WNLPbU;glsxg`sCj*ur0CSj>m6vjr<1j=y$B zjUl<}>~IYUq;#k_ucD7ZKV3&dKQ5@q#OA1mjsXlZs15GRZWxC0Mp(--?M8XScZJ=k zXwWe%fkzmIqb5)Ljan}lMs=J+4?}-d*!)Fvf1A6n%xwueP<862RWn^7_mMH_?+TA$ zx?{AiBoj}mx;z0ZI01&SZg~`$Xu4LL=x9<2U~YSk)%5wMbf;+Mb?!M$w@xiC{A;Xk zC310Iz|53n<_5!L1QDO?Sssm=WHPVAK!G7c4Xm2BV+$fDWIq$LA7jY)l8zb7l1})c z@O+{ykvHB*$DB?|B}YnlPlU_szT<vWaf>0>O^mWi+`EQ(+>xy>{7-qEQje4ucW2a8 zEHVtnLR)+J^svqkeBsz6N!#2H&OY#-mJ9jb2V&DU0`|k%2RrZBtV|=duGuzs16goS z#Y2W{m*E)tBvAXlVU9GJpxeyoC1KK6p_gt4S$gTOfh0XZwook1w4fDEpl{6_Bi+K# zcVxc?31jq4OBm%XROKB;6cZQ8RtQsZ372U{Ah?3@pi~xDaV;p7#RUDy7OrD5D*B1? zq@^f}6}}-`Y$11y>F1?m6hC8_mhu;*PcXk#D7A3==rubEV5gDCU4oSjjnF($c9Bs8 v#+5zf6$^%P5HuDREVdgf;vVi3LI$I#5DN-DON61|0hVdi$j7jPM;QGB7Z)^n diff --git a/libjava/classpath/lib/java/net/URLClassLoader$JarURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$JarURLLoader.class deleted file mode 100644 index 11c1e9dc61ad6a38e1a3b63e0f8b4aad06d836dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3418 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 bP+qNKZZ0z`m??+f!~0w#9{asm#?Jo&a*=(0 diff --git a/libjava/classpath/lib/java/net/URLClassLoader$JarURLResource.class b/libjava/classpath/lib/java/net/URLClassLoader$JarURLResource.class deleted file mode 100644 index 74ebc39810169e5085ce183bcda9a30250221746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2202 zcma)7TUQ%Z6#jMy3`s{Q>4o40fnZHS+9~2ah?huhFtkb_mDbxKIfUs76V_y+w!gqv zU%fo|;*(43S~M)hOP~EwF87%kl8Ir~@&V?YefIhG<@?Ug-~asfCxAulX^0Rm-4&k+ z!;+4%wNWZGM5|S5ikh_N*M!ZM4cTh8?W)ueCCr5Ro_G<4rRCW72+5M`+jh)`aaY&| zqphlwJRxd{eMv}o9t~mDjk05#R-MmAmQBlaRtV*^cO06Smt}qsBrI^I!l4Vznv7!z zkLieEjH?e1!^QhCGL;wzXLSr?M6D7!G>j6)OQt1nwD)(Uy(xAYZcWXqXjFu4s=aTF zI(ue|5FV+&)2a&%mjX`j|22UyR+moEI%qrGNh$UTlj)3i*K8Vr0|t+;eo>VNj@h(Y z8lEDYbBR)JH@hdQ%BOWqVup|k&7s#J4ReI~Fm-tKdCiPr7V|ou!6kym!q_!c-zEo1 zyT%9kIMT>!$Pg|J$VoZqn8E_V@O$g3?Y?<n+%^w9wS_ey#{DWutM2R(hSHg090nFO zTqRr_2;?H^cn(XPGT$qk_c>+0wZ;<QeL>oexocL1Bbnw@I&;UXrX{Ow+jQ<3Rdz4} zUT#@0>3A8h5JnlnjX=oxWdxsuU%+5xD&xG4=kWsTg)x{6*60cA{<Fzzc%7gJiBSZ+ zspBmaSPDC$B|UanLVY~vV_3yI8m<v$gV%!-qRYRI>nIY=RMq%6(e6|qUf^DS6z_8X znEW`_aZ|$$7C=Z09q-|N)~HvYC+_RQsx_qDqy3bA`Stf*;I^-ztRDU*VWs~$hR%^w zfie{hJWaf$-RMQjk+vlotG3<bvbOMninHy?q@wnBbbN@92r)I^3ZmU&3H9;4xo0;& zS5qVJQ|{vStQtNcOn2L~E*iT{dtcU=gzmE?5W~*&8h@%6&wz-@em+5i`KuvOcBj62 zW88g?5#aBNN`h5Yv@B`6cBT6<Pe&)e1h~p0WQc!fB1ovY$*Y8#n*1H+zZl|teuh^y z_K5QLY<A%YdiL@|jAwHXG4TuAA~?tY6Y8A4#xQ+@IDLz8`VQyWp7rkG0xt575qMrD z8C9)Rq=>sxu~i;Zc$_Uy@G8naPr9*}*`oXt*+Wb}!t5bZyc+M|*#~U(qK_yK`reJG zd*0oMIb3Fos$$7Uih1|1eEH*l0DcGn#JT|ddVPR3A0XM6%0ve*K7!G~tG$HAR5|n$ z&ePABR9}wdC6?^sF5@*H_bb2rrDLpYcd_5#)r8s|;_bv*2c;uyJSZJwYx@Yd)^iIT z+`g6j%dK`6bNJZr#WeR7)IoxdFwNgN`V}cU<`Mim7U>T+l^M6&OMWUT=HgQbMp|G- Xc2H%c2y?EwE3wO8r32zQP)G7#2cskh diff --git a/libjava/classpath/lib/java/net/URLClassLoader$RemoteResource.class b/libjava/classpath/lib/java/net/URLClassLoader$RemoteResource.class deleted file mode 100644 index 19b703190ee1b31646e64629a2529090fe437492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcma)5O>fgc5Pf4i2}w<wCM0S3EKo|~(gw~&y;LAYvOr29cPCw?M$Wpj9mJi#!vQ2B zBo6!leiUMM?Sc~$i9@opvv1yfyz$Rp-+usjhNBV;!u~t&z1Nc>>AfAer-2v8Zs?th zXm22<VIl@14rkF=lwc8d*JD!@!JI__q3Y(5$An^>M8caAn(2!l_WJU2mYiv~0t7-% zk_!U$`SRSCesV$>bry*JEstwX%RNqkfhQ+DCiUec^JJZ6x23%O?vP-ehUcOJ6Pq?R zP~(xT&-yoCcUT6YZli#rvToQY;hM5qHp-|FHeFweSF`CzL~p!NAQ<h2V=owbk+1HV z(@HM<n6N(Qq7ZskS|LLBzo)}pN^h!5(8}cJ#BxnUl9Pkb?qt+U^CDDUd>D(%#1Ca$ z!b3ts(<#{NKQDwb6S|q8W~ZwpWe*RJP`jeO5{5a?^oqUo)r=a8Yj~vi33gvf5o!Ge zCw{^u<~J<27~IX`!0?ncF?r)n)RkCl)s<BGWTE)9__qO@ao5@U2t%XV&cQcSox?e{ zoE>Y9hSMy}(fq;?18x3qF`fE^3WkA-VWMVOXc+};^V>;EfgRlB8yJ5Jw>g2b?%*yn zC`*;2N^9$aR2glxJBk<gu*<0XY*`%lK$q5IOK}vOuV{Q`BQ2z;oJLtER$VY4OHA0q qBlf7i^1;ndOTpEZ!TWf;B6w>#b7MuYfsRhmg~MlsX$S{6#P)AYsr1JH diff --git a/libjava/classpath/lib/java/net/URLClassLoader$RemoteURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$RemoteURLLoader.class deleted file mode 100644 index d32ac11656c6789416c63a24f19fa03a89744ba9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 zcmah}+inwA6kR*9Jzx)U2!vc9Ei@EjC&A&Clo&#r0F9{$5Fp&d!^AlXgC;Z9c!K&X zed;d+2@(k;1TTH)<r(_WN>wjXtE%c3R9$DrF`ig}EYHk2`?mJlmv8@j`W(Pf%o}JE z9DZOuv<j{Y3ODA<GmcfOl|5@o`3L9KiWeweMrQ*F!GX6aH`D~%s=gO^70(fLl|y~U za+eF&0^fF*i-Oc?+qHu!L4GI_x5h5U1jXEfATi@DsWjS=F=1d^8at3R&>=9JA(`mJ zPC;f_1y>p<b`RxRacqZRmx&}&f^6A#)!gdJqVlg>i;mL3y^7^5SiY^#^~*$X->wPj z&RS7#WsJFIDw<FyBvjBBORI@%YPPTXB&;K*p&c-jc~$dP{R&}?*BNUj^j&ZwyQ0qZ zLlgV4S70n!HC<GF_mPQS^rdkShYWly=xL_137(0=7$RN7LQ57>Su3-ayW}WeP<St< zm_bojF0X4iESQRSK)vkE*~R#XJIXC+SEDA5pg`uls&Z#M*Hx9k_FO^#X4N+f)sPXw zQ5-jLOt2@GaYMtz37iykGGV$5lpB<lyByqSnTB#DZ9ZY*6P#jLs+8R7Y7k)~hnrz- zuh1kY8eld18{uYyph_;^08V2PXG~1#xY?-aRnM&{-S!4P6&z~VYP*&>-E5LH&SF~A zJ0n<()7xr9PtkC{kNLWMOHQTSf`RjFj1Za@UOxY2MOC8$BwTBSJ)5pHXchFv>iH&n za+7lE6ibPRTG(WQ?#N(EU@jS7)k1z4;958x7i>MayW->=(a5+XO6&_i%wKVWvs+dh z#yAY^+=(1~y%G4;#y{5#Z?^O62Blh_%@2=kAe|pshxr6uk3z-We0FHDe8*+-J$KR% z=;q!2$OL=P!xN45u+gFZ>c`$N#6Ao}Atb|a24(l2VaM(KV|*~o#{vGk)-kw&+$F{w znHycl*m#1^@yX=qOH6)+p3xVWT*vA0RClU#$w_{Vq^$KNzd_eCoV`uFeaY^`20mMp zwVSdQ2A#$ooa66i_-=zvV2Yq1uhAo~&?`S;Kz_oY{EVFZf-(6G6Y?wD{dY{uA2=s} zq9lLemi&!7@(=FHzhT0&Q38#G@8JTuWYIBQPj~=l@Hu8l%pfLE!bK#I<1~GNGI>9R a3@-65MU->I)P~Er!grcJgiGowdjAI;54`#S diff --git a/libjava/classpath/lib/java/net/URLClassLoader$Resource.class b/libjava/classpath/lib/java/net/URLClassLoader$Resource.class deleted file mode 100644 index bb4d13a6ba0a72e9ef51b3a99bc7dd0e3170d131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1217 zcma)5YfsZq7=GT-(RGyT5D-xqL)-<a;5{>bA(AX<BmrGw{M41>C>bqjJEQ*!6O=>~ zznb`)4Emna%`qaGS-Nw1pZ9s*+xdC^^*ewKJk^mREFC)U9m^N7^?KLdYB^D42hP3- zS9V1dv_n_u&<GO>)pGo%wbM8hZcG?%DIB3-Uq!);30all&ph9YpA%M#|A8;n3EEb$ zFR~cIhzT7gVW?QD8z79CNMo2VZhO9X**<EB@RieO3Br^exK69?gq}QiF17f;iwMhC z%62p5C`X$jma=;)b;3fil(<F0ZHHd`(dt>NS&n7K#4P4G7U?L$*n8)>PApijP%OQ@ z<m)oPx`3)0n8$*S8-)D88k)F?TigjhkPN*r2=kX@dbX;LCBmHI{znE<e%V9;D+Ima zM1mW}<?SmJXSs+~*?~KR&Hmn12PP={n3idCLGlC9JSAL46~sih@SVxz-WY7Nh2M-1 z)F{+AQogDA$L)A84ux|>nC*Ibfpx*a&e<0qTyY$GfgkDEB;-_0By8ueg;7c0w>>#b zx&8;SE<Ffl&G$v99*SV9$1Hk9>j;_dWNAx0DntD0xPNkXc_%*|8NM-iw~ZA4fNc4U zzshHfe&SOK<NQCSJbyvMIb(k_12B`IF^MTYv7cfk-sLde;dIzTa^}llaLum#z)1NN zqo=rj@(qh`l6}5%hTA6$N~EUP1*9WQ85m?>l147b<vVg|ETD)I%Rml)M{bQ*d6S|Z y->|%)X~khC)`Wv)%BVoft>La(*I_Z@9y4gXZg52RRa_77kXQNE2#@eY%lrZJfF1Av diff --git a/libjava/classpath/lib/java/net/URLClassLoader$SoResource.class b/libjava/classpath/lib/java/net/URLClassLoader$SoResource.class deleted file mode 100644 index 4e7417a7d6328318c4fd85785fd9bfef2c8e0e64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1097 zcmaJ<$!^n76g~H4aN;;EG|+}Jg_1&s(v%IGKv{$$1zD|VAbU4`YK>Amava1*u>c8* z#DWjtqY(E!C$WuG7IE&o!#U>;zyJLF1>h<63<$#32j`>H@nqO}e{A>0&U9+~&Z!LQ z1OHe~{aG-Q2C{_ORe6gnLS`0>2`hFovrEW7cRe@UCp>GULTNH)kBGaeq;7La$oBkG zX(EG?1p^l0(bY&XPIFiU%dwC{p0H}Wo;;jgoXFsvb265MHQOIK<DnC{>OFU6!*h2^ zsHa4vl`a}qt&R1p2;2Y3j}@_+Ga2^1$t)a%fpjhi8;xdE>iV5TfU(VkPa`=AUEiA; zxJ9Vwv8uGAWyHj7+%<5AU?qoc;U4ZYnLm+U&-XkzQZR(g1=(WV%UIXM13WaaMOaTF z#nl#WVx3np;u=CV-EWLTC~}Lo^v=R_zKBM%&r@O#4}oy)AAZ&4K%dxaS8b%iS&3Qi zDka=npF0S&U-Bq+d1xt#@y%+u#d@&E+t2W&Gp{-UwzB*)P+(7yt+x<5UTU>}z-;Y& zNBJwe1y=dHqC(;Ya$+B*c*zhzElS6Atnmvdp@JI>rYuDu*y17a{{~xGj#M?#0b43o zZhb@f5}S7W616Yvh^R~z6g?EgD@~&SIC)M}VCXuw8G_FqkNK;#@8~y|iO)-%Jo_Nt sXbel)j1x&EG|-$^cIK5iB_<XT6(1#vbMs<>mWFCGDPZdIC+ML17qb`bp#T5? diff --git a/libjava/classpath/lib/java/net/URLClassLoader$SoURLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$SoURLLoader.class deleted file mode 100644 index 403dfafd09cf61f3724c31cee279f35a00db67e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1625 zcma)6Yfscb6g^WGx-CVJck#g+c9(@BFVO{jkQg;9A6O;PZ>2jfB}-SkT@wElCJIIq zznb`?jCZEp(v58JLpz<$x%ZrV?#%rD^Zh4)dw8lsVVFL)Pi@QNf%Rs;xLdXB^<vE~ zbAP5(qaWe7iWI|SJ75fB=sM!n58NkkvEntXigRrF4KHv{xK%o`eO@lQhtDOXK;SLc zbAug*T&CD2ccEpWkUd~X?bga%2Sc|36$ZoR|3?3ttGDQSe6MkG$o<#$VU;uV7i*4P zJ+OUO%%h*F;K;2r%(f(GV-?la?FbjE(nSWdT@)cZ8h(}GMhl{#qXXSKMqsKKWiXP~ z7#PDX2DQS2XRgpYn8}9GRokmrrNDQ+N<kxc?ijd>afUvxw#)rMm{zJae1~Gj!iYL| z8onERvM$$%dlJ(srWnSr>7Ria%rfZjU9TK=l%W!JLTX9)6Lm2uvAu+M*=x6ssBhjt zC%VY&+9~&ax6El5GNj2ENle{JiiwO#dL?19;JkrF<QOzjOBAg+qKA9-iQE&i1xfkD zOHBK`9$C84p6rT~)r^zus|MDvPJI^a%@u~JYcm#9+$UUedr0x|@ogs4v4IETusmdF z3cW&A;=EsV>^$j(9&Vy=^9{7#7)wG574pLKxG$yfx{AjPBW*O2iwROJQ(HUeW@7YE zZ|R+)M@5?cX!P}x=3+gaTgc}xpns-s1wHiEX@oKfRhhyKnooo{^rDYu6oH%QmwD3| zz@R{jyCcf`k=O*2NqHA9Fhs*ShI3zVJM|3{Uom${G)zz^b3`<c9wmbz8b_6^B+Z3M zVp20EHDgi}8KM_OWRZ*Lw@Ho=q!HuX!Z{YsXcE@dB{VCGGW~D}iqmUYf+cHOrn@|J z$cY>>qf{%e^1sl@&VFFyZH_G4yiDCM)G8~`lvS!^4ZX^G!a6giF;S2-8d(`yr(jD8 Q+{O-#;wENzgeMsN3p}fXP5=M^ diff --git a/libjava/classpath/lib/java/net/URLClassLoader$URLLoader.class b/libjava/classpath/lib/java/net/URLClassLoader$URLLoader.class deleted file mode 100644 index 8b272bdb36db93f3e4839605d8c5f2ffc5439748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1354 zcma)6T~8B16g|_fw3G@JuzXc50@^NxRW!t;#upM3O+^FR#P~E_23S&dlie+e|4JVk z5>0&57}RI~f-n9B<Gr)nmJJYn*?VX1x#xb)p8Wan3BX<4&mbi*e;|*f<*Lwnwbj^Y z%OGfYa!2`#bd0nN41t1%wWYgfJ#QT-I}{kP8Qs=sftkhyM0J5oO9qPg1V$4mG8J5J zL;2x`x1+Ybj&Cc0*$5LTyW>0ITWeq={Ln+kb;3siW+g#&D)V~6P_H%x4Ccr|U@VUj z6a*gpulHH5v4-QS&CX#<`7dRwO$m=TJX^M#(s%eAUmD@Q69_CM2u@`==x;rTG>V+q zlt8*tZ4OhSGkILX5NmUJWRT6^n!vPf@i~pjp@bXEP!?EAmR5fgWzhGssofU$+}U+( z87gWJhq;-@Fmg0i?@0N+vlGoLyQe~(w7^o#t9M{K^c{DvUX8f*m4?xThHYMpO?jw0 zGgzD0g(48=mI~r&uU|}i&QkXLC=Sy+ldiL?0$Rq|N}Nk4blTQ|^sSzap!r@EFJ!nc zFqyzMX_-BrP`PLUA3HqLiR5co<vNJyiR&s~SE_;x)&!<5*m~+i{{b0g>TjCfTp9(Q zDrp6tsg~4ql6*IUJmD^r_7sN3XU*kW?HHr)=`MvU^v#h3K9lzsjFVQ5aG1a(oj{z- zFSN!H7)=Ww^M+(K=%!>I<Epvb#k5)LV%GeK((4s*jO$&@4`LMw4SXe!6IzXL7{zzY z;fIcEMm+tvrGDI!u8iZBus|7b-HTX?Ggv3dwv>3sUtLp_?@!HJjI4d$6mH=*1SMTT xl{^3w%Q07tBv*Qt>zC%@ZgPxXZ)#Zir|0i;JX2WJJQnVd<iCiZzvn$8`xhrsBwqjk diff --git a/libjava/classpath/lib/java/net/URLClassLoader.class b/libjava/classpath/lib/java/net/URLClassLoader.class index 118acceca43b35652bc8ee78a297d393d40a2a75..ceb736bdc91f43d320a3cb4beec1c882abdf0dcb 100644 GIT binary patch literal 14476 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 literal 14234 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 L<7&&~L8bo-^YA1W diff --git a/libjava/gnu/gcj/runtime/BootClassLoader.h b/libjava/gnu/gcj/runtime/BootClassLoader.h index dbfd1567162b..df9fcdbe43bb 100644 --- a/libjava/gnu/gcj/runtime/BootClassLoader.h +++ b/libjava/gnu/gcj/runtime/BootClassLoader.h @@ -37,6 +37,9 @@ public: ::java::lang::Class * bootLoadClass(::java::lang::String *); ::java::net::URL * bootGetResource(::java::lang::String *); ::java::util::Enumeration * bootGetResources(::java::lang::String *); +public: // actually package-private + static ::java::lang::Class * coreHandler; +public: static ::java::lang::Class class$; }; diff --git a/libjava/gnu/gcj/runtime/BootClassLoader.java b/libjava/gnu/gcj/runtime/BootClassLoader.java index 84952359aabb..731703ab8f34 100644 --- a/libjava/gnu/gcj/runtime/BootClassLoader.java +++ b/libjava/gnu/gcj/runtime/BootClassLoader.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2005 Free Software Foundation +/* Copyright (C) 2005, 2007 Free Software Foundation This file is part of libgcj. @@ -8,6 +8,7 @@ details. */ package gnu.gcj.runtime; +import gnu.java.net.protocol.core.Handler; import java.io.IOException; import java.net.URL; import java.util.Enumeration; @@ -21,6 +22,11 @@ import java.util.Enumeration; */ public final class BootClassLoader extends HelperClassLoader { + // This forces the core URL handler to be included in statically + // linked executables. The line that adds core:/ to the search + // path fails otherwise. + static Class coreHandler = gnu.java.net.protocol.core.Handler.class; + BootClassLoader(String libdir) { // The BootClassLoader is the top of the delegation chain. It does not diff --git a/libjava/gnu/java/net/loader/Load_gcjlib$SoResource.h b/libjava/gnu/java/net/loader/Load_gcjlib$SoResource.h new file mode 100644 index 000000000000..da8a2aca194a --- /dev/null +++ b/libjava/gnu/java/net/loader/Load_gcjlib$SoResource.h @@ -0,0 +1,50 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __gnu_java_net_loader_Load_gcjlib$SoResource__ +#define __gnu_java_net_loader_Load_gcjlib$SoResource__ + +#pragma interface + +#include <gnu/java/net/loader/Resource.h> +extern "Java" +{ + namespace gnu + { + namespace java + { + namespace net + { + namespace loader + { + class Load_gcjlib; + class Load_gcjlib$SoResource; + } + } + } + } + namespace java + { + namespace net + { + class URL; + } + } +} + +class gnu::java::net::loader::Load_gcjlib$SoResource : public ::gnu::java::net::loader::Resource +{ + +public: // actually package-private + Load_gcjlib$SoResource(::gnu::java::net::loader::Load_gcjlib *, ::java::net::URL *); +public: + ::java::io::InputStream * getInputStream(); + jint getLength(); + ::java::net::URL * getURL(); +private: + ::java::net::URL * __attribute__((aligned(__alignof__( ::gnu::java::net::loader::Resource)))) url; +public: + static ::java::lang::Class class$; +}; + +#endif // __gnu_java_net_loader_Load_gcjlib$SoResource__ diff --git a/libjava/gnu/java/net/loader/Load_gcjlib.h b/libjava/gnu/java/net/loader/Load_gcjlib.h new file mode 100644 index 000000000000..69d2ef5ac6f5 --- /dev/null +++ b/libjava/gnu/java/net/loader/Load_gcjlib.h @@ -0,0 +1,58 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __gnu_java_net_loader_Load_gcjlib__ +#define __gnu_java_net_loader_Load_gcjlib__ + +#pragma interface + +#include <gnu/java/net/loader/URLLoader.h> +extern "Java" +{ + namespace gnu + { + namespace gcj + { + namespace runtime + { + class SharedLibHelper; + } + } + namespace java + { + namespace net + { + namespace loader + { + class Load_gcjlib; + class Resource; + class URLStreamHandlerCache; + } + } + } + } + namespace java + { + namespace net + { + class URL; + class URLClassLoader; + class URLStreamHandlerFactory; + } + } +} + +class gnu::java::net::loader::Load_gcjlib : public ::gnu::java::net::loader::URLLoader +{ + +public: + Load_gcjlib(::java::net::URLClassLoader *, ::gnu::java::net::loader::URLStreamHandlerCache *, ::java::net::URLStreamHandlerFactory *, ::java::net::URL *, ::java::net::URL *); + ::java::lang::Class * getClass(::java::lang::String *); + ::gnu::java::net::loader::Resource * getResource(::java::lang::String *); +private: + ::gnu::gcj::runtime::SharedLibHelper * __attribute__((aligned(__alignof__( ::gnu::java::net::loader::URLLoader)))) helper; +public: + static ::java::lang::Class class$; +}; + +#endif // __gnu_java_net_loader_Load_gcjlib__ diff --git a/libjava/gnu/java/net/loader/Load_gcjlib.java b/libjava/gnu/java/net/loader/Load_gcjlib.java new file mode 100644 index 000000000000..ea392041f91f --- /dev/null +++ b/libjava/gnu/java/net/loader/Load_gcjlib.java @@ -0,0 +1,77 @@ +/* Copyright (C) 2007 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package gnu.java.net.loader; + +import gnu.gcj.runtime.SharedLibHelper; +import java.io.InputStream; +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.net.URLStreamHandlerFactory; + +/** + * A <code>Load_gcjlib</code> is a type of <code>URLLoader</code> + * that loads classes and resources from a shared library. + */ +public final class Load_gcjlib extends URLLoader +{ + private SharedLibHelper helper; + + public Load_gcjlib(URLClassLoader classloader, + URLStreamHandlerCache cache, + URLStreamHandlerFactory factory, + URL url, URL absoluteUrl) + { + super(classloader, cache, factory, url, absoluteUrl); + helper = SharedLibHelper.findHelper(classloader, url.getFile(), + noCertCodeSource, true); + } + + public Class getClass(String className) + { + return helper.findClass(className); + } + + public Resource getResource(String name) + { + URL url = helper.findResource(name); + if (url == null) + return null; + return new SoResource(this, url); + } + + final static class SoResource extends Resource + { + private final URL url; + + SoResource(Load_gcjlib loader, URL url) + { + super(loader); + this.url = url; + } + + public InputStream getInputStream() throws IOException + { + URLConnection conn = url.openConnection(); + return conn.getInputStream(); + } + + public int getLength() + { + // FIXME we could find this by asking the core object. + return -1; + } + + public URL getURL () + { + return url; + } + } +} diff --git a/libjava/java/net/URLClassLoader.h b/libjava/java/net/URLClassLoader.h index 25fe59ab7855..2e5f15c9bdad 100644 --- a/libjava/java/net/URLClassLoader.h +++ b/libjava/java/net/URLClassLoader.h @@ -11,14 +11,26 @@ extern "Java" { + namespace gnu + { + namespace java + { + namespace net + { + namespace loader + { + class Resource; + class URLStreamHandlerCache; + } + } + } + } namespace java { namespace net { class URL; class URLClassLoader; - class URLClassLoader$Resource; - class URLStreamHandler; class URLStreamHandlerFactory; } namespace security @@ -52,12 +64,9 @@ public: // actually protected public: virtual ::java::lang::String * toString(); private: - ::java::net::URLClassLoader$Resource * findURLResource(::java::lang::String *); + ::gnu::java::net::loader::Resource * findURLResource(::java::lang::String *); public: virtual ::java::net::URL * findResource(::java::lang::String *); -public: // actually package-private - virtual ::java::net::URLStreamHandler * getURLStreamHandler(::java::lang::String *); -public: virtual ::java::util::Enumeration * findResources(::java::lang::String *); public: // actually protected virtual ::java::security::PermissionCollection * getPermissions(::java::security::CodeSource *); @@ -68,8 +77,8 @@ public: public: // actually package-private static ::java::lang::Class * access$0(::java::net::URLClassLoader *, ::java::lang::String *, JArray< jbyte > *, jint, jint, ::java::security::CodeSource *); private: - static ::java::util::HashMap * urlloaders; - static ::java::util::HashMap * factoryCache; + static ::gnu::java::net::loader::URLStreamHandlerCache * factoryCache; + static ::java::lang::String * URL_LOADER_PREFIX; ::java::util::Vector * __attribute__((aligned(__alignof__( ::java::security::SecureClassLoader)))) urls; ::java::util::Vector * urlinfos; ::java::net::URLStreamHandlerFactory * factory; diff --git a/libjava/java/net/URLClassLoader.java b/libjava/java/net/URLClassLoader.java deleted file mode 100644 index fd70fdf2045a..000000000000 --- a/libjava/java/net/URLClassLoader.java +++ /dev/null @@ -1,1448 +0,0 @@ -/* URLClassLoader.java -- ClassLoader that loads classes from one or more URLs - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - -This file is part of GNU Classpath. - -GNU Classpath 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 2, or (at your option) -any later version. - -GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package java.net; - -import java.io.ByteArrayOutputStream; -import java.io.EOFException; -import java.io.File; -import java.io.FileInputStream; -import java.io.FilePermission; -import java.io.IOException; -import java.io.InputStream; -import java.security.AccessControlContext; -import java.security.AccessController; -import java.security.CodeSource; -import java.security.PermissionCollection; -import java.security.PrivilegedAction; -import java.security.SecureClassLoader; -import java.security.cert.Certificate; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.StringTokenizer; -import java.util.Vector; -import java.util.jar.Attributes; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import java.util.jar.Manifest; -import gnu.gcj.runtime.SharedLibHelper; -import gnu.gcj.Core; -import gnu.java.net.protocol.core.CoreInputStream; - -/** - * A secure class loader that can load classes and resources from - * multiple locations. Given an array of <code>URL</code>s this class - * loader will retrieve classes and resources by fetching them from - * possible remote locations. Each <code>URL</code> is searched in - * order in which it was added. If the file portion of the - * <code>URL</code> ends with a '/' character then it is interpreted - * as a base directory, otherwise it is interpreted as a jar file from - * which the classes/resources are resolved. - * - * <p>New instances can be created by two static - * <code>newInstance()</code> methods or by three public - * contructors. Both ways give the option to supply an initial array - * of <code>URL</code>s and (optionally) a parent classloader (that is - * different from the standard system class loader).</p> - * - * <p>Normally creating a <code>URLClassLoader</code> throws a - * <code>SecurityException</code> if a <code>SecurityManager</code> is - * installed and the <code>checkCreateClassLoader()</code> method does - * not return true. But the <code>newInstance()</code> methods may be - * used by any code as long as it has permission to acces the given - * <code>URL</code>s. <code>URLClassLoaders</code> created by the - * <code>newInstance()</code> methods also explicitly call the - * <code>checkPackageAccess()</code> method of - * <code>SecurityManager</code> if one is installed before trying to - * load a class. Note that only subclasses of - * <code>URLClassLoader</code> can add new URLs after the - * URLClassLoader had been created. But it is always possible to get - * an array of all URLs that the class loader uses to resolve classes - * and resources by way of the <code>getURLs()</code> method.</p> - * - * <p>Open issues: - * <ul> - * - * <li>Should the URLClassLoader actually add the locations found in - * the manifest or is this the responsibility of some other - * loader/(sub)class? (see <a - * href="http://java.sun.com/products/jdk/1.4/docs/guide/extensions/spec.html"> - * Extension Mechanism Architecture - Bundles Extensions</a>)</li> - * - * <li>How does <code>definePackage()</code> and sealing work - * precisely?</li> - * - * <li>We save and use the security context (when a created by - * <code>newInstance()</code> but do we have to use it in more - * places?</li> - * - * <li>The use of <code>URLStreamHandler</code>s has not been tested.</li> - * - * </ul> - * </p> - * - * @since 1.2 - * - * @author Mark Wielaard (mark@klomp.org) - * @author Wu Gansha (gansha.wu@intel.com) - */ -public class URLClassLoader extends SecureClassLoader -{ - // Class Variables - - /** - * A global cache to store mappings between URLLoader and URL, - * so we can avoid do all the homework each time the same URL - * comes. - * XXX - Keeps these loaders forever which prevents garbage collection. - */ - private static HashMap urlloaders = new HashMap(); - - /** - * A cache to store mappings between handler factory and its - * private protocol handler cache (also a HashMap), so we can avoid - * create handlers each time the same protocol comes. - */ - private static HashMap factoryCache = new HashMap(5); - - // Instance variables - - /** Locations to load classes from */ - private final Vector urls = new Vector(); - - /** - * Store pre-parsed information for each url into this vector: each - * element is a URL loader. A jar file has its own class-path - * attribute which adds to the URLs that will be searched, but this - * does not add to the list of urls. - */ - private final Vector urlinfos = new Vector(); - - /** Factory used to get the protocol handlers of the URLs */ - private final URLStreamHandlerFactory factory; - - /** - * The security context when created from <code>newInstance()</code> - * or null when created through a normal constructor or when no - * <code>SecurityManager</code> was installed. - */ - private final AccessControlContext securityContext; - - // Helper classes - - /** - * A <code>URLLoader</code> contains all logic to load resources from a - * given base <code>URL</code>. - */ - abstract static class URLLoader - { - /** - * Our classloader to get info from if needed. - */ - final URLClassLoader classloader; - - /** - * The base URL from which all resources are loaded. - */ - final URL baseURL; - - /** - * A <code>CodeSource</code> without any associated certificates. - * It is common for classes to not have certificates associated - * with them. If they come from the same <code>URLLoader</code> - * then it is safe to share the associated <code>CodeSource</code> - * between them since <code>CodeSource</code> is immutable. - */ - final CodeSource noCertCodeSource; - - URLLoader(URLClassLoader classloader, URL baseURL) - { - this(classloader, baseURL, baseURL); - } - - URLLoader(URLClassLoader classloader, URL baseURL, URL overrideURL) - { - this.classloader = classloader; - this.baseURL = baseURL; - this.noCertCodeSource = new CodeSource(overrideURL, null); - } - - /** - * Returns a <code>Class</code> loaded by this - * <code>URLLoader</code>, or <code>null</code> when this loader - * either can't load the class or doesn't know how to load classes - * at all. - */ - Class getClass(String className) - { - return null; - } - - /** - * Returns a <code>Resource</code> loaded by this - * <code>URLLoader</code>, or <code>null</code> when no - * <code>Resource</code> with the given name exists. - */ - abstract Resource getResource(String s); - - /** - * Returns the <code>Manifest</code> associated with the - * <code>Resource</code>s loaded by this <code>URLLoader</code> or - * <code>null</code> there is no such <code>Manifest</code>. - */ - Manifest getManifest() - { - return null; - } - - Vector getClassPath() - { - return null; - } - } - - /** - * A <code>Resource</code> represents a resource in some - * <code>URLLoader</code>. It also contains all information (e.g., - * <code>URL</code>, <code>CodeSource</code>, <code>Manifest</code> and - * <code>InputStream</code>) that is necessary for loading resources - * and creating classes from a <code>URL</code>. - */ - abstract static class Resource - { - final URLLoader loader; - - Resource(URLLoader loader) - { - this.loader = loader; - } - - /** - * Returns the non-null <code>CodeSource</code> associated with - * this resource. - */ - CodeSource getCodeSource() - { - Certificate[] certs = getCertificates(); - if (certs == null) - return loader.noCertCodeSource; - else - return new CodeSource(loader.baseURL, certs); - } - - /** - * Returns <code>Certificates</code> associated with this - * resource, or null when there are none. - */ - Certificate[] getCertificates() - { - return null; - } - - /** - * Return a <code>URL</code> that can be used to access this resource. - */ - abstract URL getURL(); - - /** - * Returns the size of this <code>Resource</code> in bytes or - * <code>-1</code> when unknown. - */ - abstract int getLength(); - - /** - * Returns the non-null <code>InputStream</code> through which - * this resource can be loaded. - */ - abstract InputStream getInputStream() throws IOException; - } - - /** - * A <code>JarURLLoader</code> is a type of <code>URLLoader</code> - * only loading from jar url. - */ - static final class JarURLLoader extends URLLoader - { - final JarFile jarfile; // The jar file for this url - final URL baseJarURL; // Base jar: url for all resources loaded from jar - - Vector classPath; // The "Class-Path" attribute of this Jar's manifest - - public JarURLLoader(URLClassLoader classloader, URL baseURL, - URL absoluteUrl) - { - super(classloader, baseURL, absoluteUrl); - - // Cache url prefix for all resources in this jar url. - String external = baseURL.toExternalForm(); - StringBuffer sb = new StringBuffer(external.length() + 6); - sb.append("jar:"); - sb.append(external); - sb.append("!/"); - String jarURL = sb.toString(); - - this.classPath = null; - URL baseJarURL = null; - JarFile jarfile = null; - try - { - baseJarURL = - new URL(null, jarURL, classloader.getURLStreamHandler("jar")); - - jarfile = - ((JarURLConnection) baseJarURL.openConnection()).getJarFile(); - - Manifest manifest; - Attributes attributes; - String classPathString; - - if ((manifest = jarfile.getManifest()) != null - && (attributes = manifest.getMainAttributes()) != null - && ((classPathString - = attributes.getValue(Attributes.Name.CLASS_PATH)) - != null)) - { - this.classPath = new Vector(); - - StringTokenizer st = new StringTokenizer(classPathString, " "); - while (st.hasMoreElements ()) - { - String e = st.nextToken (); - try - { - URL url = new URL(baseURL, e); - this.classPath.add(url); - } - catch (java.net.MalformedURLException xx) - { - // Give up - } - } - } - } - catch (IOException ioe) - { - /* ignored */ - } - - this.baseJarURL = baseJarURL; - this.jarfile = jarfile; - } - - /** get resource with the name "name" in the jar url */ - Resource getResource(String name) - { - if (jarfile == null) - return null; - - if (name.startsWith("/")) - name = name.substring(1); - - JarEntry je = jarfile.getJarEntry(name); - if (je != null) - return new JarURLResource(this, name, je); - else - return null; - } - - Manifest getManifest() - { - try - { - return (jarfile == null) ? null : jarfile.getManifest(); - } - catch (IOException ioe) - { - return null; - } - } - - Vector getClassPath() - { - return classPath; - } - } - - static final class JarURLResource extends Resource - { - private final JarEntry entry; - private final String name; - - JarURLResource(JarURLLoader loader, String name, JarEntry entry) - { - super(loader); - this.entry = entry; - this.name = name; - } - - InputStream getInputStream() throws IOException - { - return ((JarURLLoader) loader).jarfile.getInputStream(entry); - } - - int getLength() - { - return (int) entry.getSize(); - } - - Certificate[] getCertificates() - { - // We have to get the entry from the jar file again, because the - // certificates will not be available until the entire entry has - // been read. - return ((JarEntry) ((JarURLLoader) loader).jarfile.getEntry(name)) - .getCertificates(); - } - - URL getURL() - { - try - { - return new URL(((JarURLLoader) loader).baseJarURL, name, - loader.classloader.getURLStreamHandler("jar")); - } - catch (MalformedURLException e) - { - InternalError ie = new InternalError(); - ie.initCause(e); - throw ie; - } - } - } - - /** - * Loader for remote directories. - */ - static final class RemoteURLLoader extends URLLoader - { - private final String protocol; - - RemoteURLLoader(URLClassLoader classloader, URL url) - { - super(classloader, url); - protocol = url.getProtocol(); - } - - /** - * Get a remote resource. - * Returns null if no such resource exists. - */ - Resource getResource(String name) - { - try - { - URL url = - new URL(baseURL, name, classloader.getURLStreamHandler(protocol)); - URLConnection connection = url.openConnection(); - - // Open the connection and check the stream - // just to be sure it exists. - int length = connection.getContentLength(); - InputStream stream = connection.getInputStream(); - - // We can do some extra checking if it is a http request - if (connection instanceof HttpURLConnection) - { - int response = - ((HttpURLConnection) connection).getResponseCode(); - if (response / 100 != 2) - return null; - } - - if (stream != null) - return new RemoteResource(this, name, url, stream, length); - else - return null; - } - catch (IOException ioe) - { - return null; - } - } - } - - /** - * A resource from some remote location. - */ - static final class RemoteResource extends Resource - { - private final URL url; - private final InputStream stream; - private final int length; - - RemoteResource(RemoteURLLoader loader, String name, URL url, - InputStream stream, int length) - { - super(loader); - this.url = url; - this.stream = stream; - this.length = length; - } - - InputStream getInputStream() throws IOException - { - return stream; - } - - public int getLength() - { - return length; - } - - public URL getURL() - { - return url; - } - } - - /** - * A <code>SoURLLoader</code> is a type of <code>URLLoader</code> - * that loads classes and resources from a shared library. - */ - final static class SoURLLoader extends URLLoader - { - SharedLibHelper helper; - - SoURLLoader(URLClassLoader classloader, URL url) - { - this(classloader, url, url); - } - - SoURLLoader(URLClassLoader classloader, URL url, URL overrideURL) - { - super(classloader, url, overrideURL); - helper = SharedLibHelper.findHelper(classloader, url.getFile(), - noCertCodeSource, true); - } - - Class getClass(String className) - { - return helper.findClass(className); - } - - Resource getResource(String name) - { - URL url = helper.findResource(name); - if (url == null) - return null; - return new SoResource(this, url); - } - } - - final static class SoResource extends Resource - { - SoResource(SoURLLoader loader, URL url) - { - super(loader); - this.url = url; - } - - InputStream getInputStream() throws IOException - { - URLConnection conn = url.openConnection(); - return conn.getInputStream(); - } - - public int getLength() - { - // FIXME we could find this by asking the core object. - return -1; - } - - public URL getURL () - { - return url; - } - - final URL url; - } - - /** - * A <code>FileURLLoader</code> is a type of <code>URLLoader</code> - * only loading from file url. - */ - static final class FileURLLoader extends URLLoader - { - File dir; //the file for this file url - - FileURLLoader(URLClassLoader classloader, URL url, URL absoluteUrl) - { - super(classloader, url, absoluteUrl); - dir = new File(absoluteUrl.getFile()); - } - - /** get resource with the name "name" in the file url */ - Resource getResource(String name) - { - try - { - File file = new File(dir, name).getCanonicalFile(); - if (file.exists() && !file.isDirectory()) - return new FileResource(this, file); - } - catch (IOException e) - { - // Fall through... - } - return null; - } - } - - static final class FileResource extends Resource - { - final File file; - - FileResource(FileURLLoader loader, File file) - { - super(loader); - this.file = file; - } - - InputStream getInputStream() throws IOException - { - // Delegate to the URL content handler mechanism to retrieve an - // HTML representation of the directory listing if a directory - if (file.isDirectory()) - { - URL url = getURL(); - return url.openStream(); - } - // Otherwise simply return a FileInputStream - return new FileInputStream(file); - } - - public int getLength() - { - // Delegate to the URL content handler mechanism to retrieve the - // length of the HTML representation of the directory listing if - // a directory, or -1 if an exception occurs opening the directory. - if (file.isDirectory()) - { - URL url = getURL(); - try - { - URLConnection connection = url.openConnection(); - return connection.getContentLength(); - } - catch (IOException e) - { - return -1; - } - } - // Otherwise simply return the file length - return (int) file.length(); - } - - public URL getURL() - { - try - { - return file.toURL(); - } - catch (MalformedURLException e) - { - InternalError ie = new InternalError(); - ie.initCause(e); - throw ie; - } - } - } - - /** - * A <code>CoreURLLoader</code> is a type of <code>URLLoader</code> - * only loading from core url. - */ - static final class CoreURLLoader extends URLLoader - { - private String dir; - - CoreURLLoader(URLClassLoader classloader, URL url) - { - super(classloader, url); - dir = baseURL.getFile(); - } - - /** get resource with the name "name" in the core url */ - Resource getResource(String name) - { - Core core = Core.find (dir + name); - if (core != null) - return new CoreResource(this, name, core); - return null; - } - } - - static final class CoreResource extends Resource - { - private final Core core; - private final String name; - - CoreResource(CoreURLLoader loader, String name, Core core) - { - super(loader); - this.core = core; - this.name = name; - } - - InputStream getInputStream() throws IOException - { - return new CoreInputStream(core); - } - - public int getLength() - { - return core.length; - } - - public URL getURL() - { - try - { - return new URL(loader.baseURL, name, - loader.classloader.getURLStreamHandler("core")); - } - catch (MalformedURLException e) - { - InternalError ie = new InternalError(); - ie.initCause(e); - throw ie; - } - } - } - - // Constructors - - /** - * Creates a URLClassLoader that gets classes from the supplied URLs. - * To determine if this classloader may be created the constructor of - * the super class (<code>SecureClassLoader</code>) is called first, which - * can throw a SecurityException. Then the supplied URLs are added - * in the order given to the URLClassLoader which uses these URLs to - * load classes and resources (after using the default parent ClassLoader). - * - * @param urls Locations that should be searched by this ClassLoader when - * resolving Classes or Resources. - * @exception SecurityException if the SecurityManager disallows the - * creation of a ClassLoader. - * @see SecureClassLoader - */ - public URLClassLoader(URL[] urls) throws SecurityException - { - super(); - this.factory = null; - this.securityContext = null; - addURLs(urls); - } - - /** - * Creates a <code>URLClassLoader</code> that gets classes from the supplied - * <code>URL</code>s. - * To determine if this classloader may be created the constructor of - * the super class (<code>SecureClassLoader</code>) is called first, which - * can throw a SecurityException. Then the supplied URLs are added - * in the order given to the URLClassLoader which uses these URLs to - * load classes and resources (after using the supplied parent ClassLoader). - * @param urls Locations that should be searched by this ClassLoader when - * resolving Classes or Resources. - * @param parent The parent class loader used before trying this class - * loader. - * @exception SecurityException if the SecurityManager disallows the - * creation of a ClassLoader. - * @exception SecurityException - * @see SecureClassLoader - */ - public URLClassLoader(URL[] urls, ClassLoader parent) - throws SecurityException - { - super(parent); - this.factory = null; - this.securityContext = null; - addURLs(urls); - } - - // Package-private to avoid a trampoline constructor. - /** - * Package-private constructor used by the static - * <code>newInstance(URL[])</code> method. Creates an - * <code>URLClassLoader</code> with the given parent but without any - * <code>URL</code>s yet. This is used to bypass the normal security - * check for creating classloaders, but remembers the security - * context which will be used when defining classes. The - * <code>URL</code>s to load from must be added by the - * <code>newInstance()</code> method in the security context of the - * caller. - * - * @param securityContext the security context of the unprivileged code. - */ - URLClassLoader(ClassLoader parent, AccessControlContext securityContext) - { - super(parent); - this.factory = null; - this.securityContext = securityContext; - } - - /** - * Creates a URLClassLoader that gets classes from the supplied URLs. - * To determine if this classloader may be created the constructor of - * the super class (<CODE>SecureClassLoader</CODE>) is called first, which - * can throw a SecurityException. Then the supplied URLs are added - * in the order given to the URLClassLoader which uses these URLs to - * load classes and resources (after using the supplied parent ClassLoader). - * It will use the supplied <CODE>URLStreamHandlerFactory</CODE> to get the - * protocol handlers of the supplied URLs. - * @param urls Locations that should be searched by this ClassLoader when - * resolving Classes or Resources. - * @param parent The parent class loader used before trying this class - * loader. - * @param factory Used to get the protocol handler for the URLs. - * @exception SecurityException if the SecurityManager disallows the - * creation of a ClassLoader. - * @exception SecurityException - * @see SecureClassLoader - */ - public URLClassLoader(URL[] urls, ClassLoader parent, - URLStreamHandlerFactory factory) - throws SecurityException - { - super(parent); - this.securityContext = null; - this.factory = factory; - addURLs(urls); - - // If this factory is still not in factoryCache, add it, - // since we only support three protocols so far, 5 is enough - // for cache initial size - synchronized (factoryCache) - { - if (factory != null && factoryCache.get(factory) == null) - factoryCache.put(factory, new HashMap(5)); - } - } - - // Methods - - /** - * Adds a new location to the end of the internal URL store. - * @param newUrl the location to add - */ - protected void addURL(URL newUrl) - { - urls.add(newUrl); - addURLImpl(newUrl); - } - - private void addURLImpl(URL newUrl) - { - synchronized (this) - { - if (newUrl == null) - return; // Silently ignore... - - // Reset the toString() value. - thisString = null; - - // Check global cache to see if there're already url loader - // for this url. - URLLoader loader = (URLLoader) urlloaders.get(newUrl); - if (loader == null) - { - String file = newUrl.getFile(); - String protocol = newUrl.getProtocol(); - - // If we have a file: URL, we want to make it absolute - // here, before we decide whether it is really a jar. - URL absoluteURL; - if ("file".equals (protocol)) - { - File dir = new File(file); - URL absUrl; - try - { - absoluteURL = dir.getCanonicalFile().toURL(); - } - catch (IOException ignore) - { - try - { - absoluteURL = dir.getAbsoluteFile().toURL(); - } - catch (MalformedURLException _) - { - // This really should not happen. - absoluteURL = newUrl; - } - } - } - else - { - // This doesn't hurt, and it simplifies the logic a - // little. - absoluteURL = newUrl; - } - - // Check that it is not a directory - if ("gcjlib".equals(protocol)) - loader = new SoURLLoader(this, newUrl); - else if (! (file.endsWith("/") || file.endsWith(File.separator))) - loader = new JarURLLoader(this, newUrl, absoluteURL); - else if ("file".equals(protocol)) - loader = new FileURLLoader(this, newUrl, absoluteURL); - else if ("core".equals(protocol)) - loader = new CoreURLLoader(this, newUrl); - else - loader = new RemoteURLLoader(this, newUrl); - - // Cache it. - urlloaders.put(newUrl, loader); - } - - urlinfos.add(loader); - - Vector extraUrls = loader.getClassPath(); - if (extraUrls != null) - { - Iterator it = extraUrls.iterator(); - while (it.hasNext()) - { - URL url = (URL)it.next(); - URLLoader extraLoader = (URLLoader) urlloaders.get(url); - if (! urlinfos.contains (extraLoader)) - addURLImpl(url); - } - } - - } - } - - /** - * Adds an array of new locations to the end of the internal URL - * store. Called from the the constructors. Should not call to the - * protected addURL() method since that can be overridden and - * subclasses are not yet in a good state at this point. - * jboss 4.0.3 for example depends on this. - * - * @param newUrls the locations to add - */ - private void addURLs(URL[] newUrls) - { - for (int i = 0; i < newUrls.length; i++) - { - urls.add(newUrls[i]); - addURLImpl(newUrls[i]); - } - } - - /** - * Look in both Attributes for a given value. The first Attributes - * object, if not null, has precedence. - */ - private String getAttributeValue(Attributes.Name name, Attributes first, - Attributes second) - { - String result = null; - if (first != null) - result = first.getValue(name); - if (result == null) - result = second.getValue(name); - return result; - } - - /** - * Defines a Package based on the given name and the supplied manifest - * information. The manifest indicates the title, version and - * vendor information of the specification and implementation and whether the - * package is sealed. If the Manifest indicates that the package is sealed - * then the Package will be sealed with respect to the supplied URL. - * - * @param name The name of the package - * @param manifest The manifest describing the specification, - * implementation and sealing details of the package - * @param url the code source url to seal the package - * @return the defined Package - * @throws IllegalArgumentException If this package name already exists - * in this class loader - */ - protected Package definePackage(String name, Manifest manifest, URL url) - throws IllegalArgumentException - { - // Compute the name of the package as it may appear in the - // Manifest. - StringBuffer xform = new StringBuffer(name); - for (int i = xform.length () - 1; i >= 0; --i) - if (xform.charAt(i) == '.') - xform.setCharAt(i, '/'); - xform.append('/'); - String xformName = xform.toString(); - - Attributes entryAttr = manifest.getAttributes(xformName); - Attributes attr = manifest.getMainAttributes(); - - String specTitle - = getAttributeValue(Attributes.Name.SPECIFICATION_TITLE, - entryAttr, attr); - String specVersion - = getAttributeValue(Attributes.Name.SPECIFICATION_VERSION, - entryAttr, attr); - String specVendor - = getAttributeValue(Attributes.Name.SPECIFICATION_VENDOR, - entryAttr, attr); - String implTitle - = getAttributeValue(Attributes.Name.IMPLEMENTATION_TITLE, - entryAttr, attr); - String implVersion - = getAttributeValue(Attributes.Name.IMPLEMENTATION_VERSION, - entryAttr, attr); - String implVendor - = getAttributeValue(Attributes.Name.IMPLEMENTATION_VENDOR, - entryAttr, attr); - - // Look if the Manifest indicates that this package is sealed - // XXX - most likely not completely correct! - // Shouldn't we also check the sealed attribute of the complete jar? - // http://java.sun.com/products/jdk/1.4/docs/guide/extensions/spec.html#bundled - // But how do we get that jar manifest here? - String sealed = attr.getValue(Attributes.Name.SEALED); - if ("false".equals(sealed)) - // make sure that the URL is null so the package is not sealed - url = null; - - return definePackage(name, - specTitle, specVendor, specVersion, - implTitle, implVendor, implVersion, - url); - } - - /** - * Finds (the first) class by name from one of the locations. The locations - * are searched in the order they were added to the URLClassLoader. - * - * @param className the classname to find - * @exception ClassNotFoundException when the class could not be found or - * loaded - * @return a Class object representing the found class - */ - protected Class findClass(final String className) - throws ClassNotFoundException - { - // Just try to find the resource by the (almost) same name - String resourceName = className.replace('.', '/') + ".class"; - int max = urlinfos.size(); - Resource resource = null; - for (int i = 0; i < max && resource == null; i++) - { - URLLoader loader = (URLLoader)urlinfos.elementAt(i); - if (loader == null) - continue; - - Class k = loader.getClass(className); - if (k != null) - return k; - - resource = loader.getResource(resourceName); - } - if (resource == null) - { - String message = className + " not found"; - // Calling this.toString() during VM startup when a - // security manager is in force causes the stack to - // be unwound before it can properly be decoded. - if (Thread.currentThread() != null) - message += " in " + this; - throw new ClassNotFoundException(message); - } - - // Try to read the class data, create the CodeSource, Package and - // construct the class (and watch out for those nasty IOExceptions) - try - { - byte[] data; - InputStream in = resource.getInputStream(); - try - { - int length = resource.getLength(); - if (length != -1) - { - // We know the length of the data. - // Just try to read it in all at once - data = new byte[length]; - int pos = 0; - while (length - pos > 0) - { - int len = in.read(data, pos, length - pos); - if (len == -1) - throw new EOFException("Not enough data reading from: " - + in); - pos += len; - } - } - else - { - // We don't know the data length. - // Have to read it in chunks. - ByteArrayOutputStream out = new ByteArrayOutputStream(4096); - byte[] b = new byte[4096]; - int l = 0; - while (l != -1) - { - l = in.read(b); - if (l != -1) - out.write(b, 0, l); - } - data = out.toByteArray(); - } - } - finally - { - in.close(); - } - final byte[] classData = data; - - // Now get the CodeSource - final CodeSource source = resource.getCodeSource(); - - // Find out package name - String packageName = null; - int lastDot = className.lastIndexOf('.'); - if (lastDot != -1) - packageName = className.substring(0, lastDot); - - if (packageName != null && getPackage(packageName) == null) - { - // define the package - Manifest manifest = resource.loader.getManifest(); - if (manifest == null) - definePackage(packageName, null, null, null, null, null, null, - null); - else - definePackage(packageName, manifest, resource.loader.baseURL); - } - - // And finally construct the class! - SecurityManager sm = System.getSecurityManager(); - Class result = null; - if (sm != null && securityContext != null) - { - result = (Class)AccessController.doPrivileged - (new PrivilegedAction() - { - public Object run() - { - return defineClass(className, classData, - 0, classData.length, - source); - } - }, securityContext); - } - else - result = defineClass(className, classData, 0, classData.length, source); - - // Avoid NullPointerExceptions. - Certificate[] resourceCertificates = resource.getCertificates(); - if(resourceCertificates != null) - super.setSigners(result, resourceCertificates); - - return result; - } - catch (IOException ioe) - { - ClassNotFoundException cnfe; - cnfe = new ClassNotFoundException(className + " not found in " + this); - cnfe.initCause(ioe); - throw cnfe; - } - } - - // Cached String representation of this URLClassLoader - private String thisString; - - /** - * Returns a String representation of this URLClassLoader giving the - * actual Class name, the URLs that are searched and the parent - * ClassLoader. - */ - public String toString() - { - synchronized (this) - { - if (thisString == null) - { - StringBuffer sb = new StringBuffer(); - sb.append(this.getClass().getName()); - sb.append("{urls=[" ); - URL[] thisURLs = getURLs(); - for (int i = 0; i < thisURLs.length; i++) - { - sb.append(thisURLs[i]); - if (i < thisURLs.length - 1) - sb.append(','); - } - sb.append(']'); - sb.append(", parent="); - sb.append(getParent()); - sb.append('}'); - thisString = sb.toString(); - } - return thisString; - } - } - - /** - * Finds the first occurrence of a resource that can be found. The locations - * are searched in the order they were added to the URLClassLoader. - * - * @param resourceName the resource name to look for - * @return the URLResource for the resource if found, null otherwise - */ - private Resource findURLResource(String resourceName) - { - int max = urlinfos.size(); - for (int i = 0; i < max; i++) - { - URLLoader loader = (URLLoader) urlinfos.elementAt(i); - if (loader == null) - continue; - - Resource resource = loader.getResource(resourceName); - if (resource != null) - return resource; - } - return null; - } - - /** - * Finds the first occurrence of a resource that can be found. - * - * @param resourceName the resource name to look for - * @return the URL if found, null otherwise - */ - public URL findResource(String resourceName) - { - Resource resource = findURLResource(resourceName); - if (resource != null) - return resource.getURL(); - - // Resource not found - return null; - } - - /** - * If the URLStreamHandlerFactory has been set this return the appropriate - * URLStreamHandler for the given protocol, if not set returns null. - * - * @param protocol the protocol for which we need a URLStreamHandler - * @return the appropriate URLStreamHandler or null - */ - URLStreamHandler getURLStreamHandler(String protocol) - { - if (factory == null) - return null; - - URLStreamHandler handler; - synchronized (factoryCache) - { - // Check if there're handler for the same protocol in cache. - HashMap cache = (HashMap) factoryCache.get(factory); - handler = (URLStreamHandler) cache.get(protocol); - if (handler == null) - { - // Add it to cache. - handler = factory.createURLStreamHandler(protocol); - cache.put(protocol, handler); - } - } - return handler; - } - - /** - * Finds all the resources with a particular name from all the locations. - * - * @param resourceName the name of the resource to lookup - * @return a (possible empty) enumeration of URLs where the resource can be - * found - * @exception IOException when an error occurs accessing one of the - * locations - */ - public Enumeration findResources(String resourceName) - throws IOException - { - Vector resources = new Vector(); - int max = urlinfos.size(); - for (int i = 0; i < max; i++) - { - URLLoader loader = (URLLoader) urlinfos.elementAt(i); - Resource resource = loader.getResource(resourceName); - if (resource != null) - resources.add(resource.getURL()); - } - return resources.elements(); - } - - /** - * Returns the permissions needed to access a particular code - * source. These permissions includes those returned by - * <code>SecureClassLoader.getPermissions()</code> and the actual - * permissions to access the objects referenced by the URL of the - * code source. The extra permissions added depend on the protocol - * and file portion of the URL in the code source. If the URL has - * the "file" protocol ends with a '/' character then it must be a - * directory and a file Permission to read everything in that - * directory and all subdirectories is added. If the URL had the - * "file" protocol and doesn't end with a '/' character then it must - * be a normal file and a file permission to read that file is - * added. If the <code>URL</code> has any other protocol then a - * socket permission to connect and accept connections from the host - * portion of the URL is added. - * - * @param source The codesource that needs the permissions to be accessed - * @return the collection of permissions needed to access the code resource - * @see java.security.SecureClassLoader#getPermissions(CodeSource) - */ - protected PermissionCollection getPermissions(CodeSource source) - { - // XXX - This implementation does exactly as the Javadoc describes. - // But maybe we should/could use URLConnection.getPermissions()? - // First get the permissions that would normally be granted - PermissionCollection permissions = super.getPermissions(source); - - // Now add any extra permissions depending on the URL location. - URL url = source.getLocation(); - String protocol = url.getProtocol(); - if (protocol.equals("file")) - { - String file = url.getFile(); - - // If the file end in / it must be an directory. - if (file.endsWith("/") || file.endsWith(File.separator)) - { - // Grant permission to read everything in that directory and - // all subdirectories. - permissions.add(new FilePermission(file + "-", "read")); - } - else - { - // It is a 'normal' file. - // Grant permission to access that file. - permissions.add(new FilePermission(file, "read")); - } - } - else - { - // Grant permission to connect to and accept connections from host - String host = url.getHost(); - if (host != null) - permissions.add(new SocketPermission(host, "connect,accept")); - } - - return permissions; - } - - /** - * Returns all the locations that this class loader currently uses the - * resolve classes and resource. This includes both the initially supplied - * URLs as any URLs added later by the loader. - * @return All the currently used URLs - */ - public URL[] getURLs() - { - return (URL[]) urls.toArray(new URL[urls.size()]); - } - - /** - * Creates a new instance of a <code>URLClassLoader</code> that gets - * classes from the supplied <code>URL</code>s. This class loader - * will have as parent the standard system class loader. - * - * @param urls the initial URLs used to resolve classes and - * resources - * - * @return the class loader - * - * @exception SecurityException when the calling code does not have - * permission to access the given <code>URL</code>s - */ - public static URLClassLoader newInstance(URL[] urls) - throws SecurityException - { - return newInstance(urls, null); - } - - /** - * Creates a new instance of a <code>URLClassLoader</code> that gets - * classes from the supplied <code>URL</code>s and with the supplied - * loader as parent class loader. - * - * @param urls the initial URLs used to resolve classes and - * resources - * @param parent the parent class loader - * - * @return the class loader - * - * @exception SecurityException when the calling code does not have - * permission to access the given <code>URL</code>s - */ - public static URLClassLoader newInstance(URL[] urls, final ClassLoader parent) - throws SecurityException - { - SecurityManager sm = System.getSecurityManager(); - if (sm == null) - return new URLClassLoader(urls, parent); - else - { - final Object securityContext = sm.getSecurityContext(); - - // XXX - What to do with anything else then an AccessControlContext? - if (! (securityContext instanceof AccessControlContext)) - throw new SecurityException("securityContext must be AccessControlContext: " - + securityContext); - - URLClassLoader loader = - (URLClassLoader) AccessController.doPrivileged(new PrivilegedAction() - { - public Object run() - { - return new URLClassLoader(parent, - (AccessControlContext) securityContext); - } - }); - loader.addURLs(urls); - return loader; - } - } -} diff --git a/libjava/sources.am b/libjava/sources.am index fea09f26961c..418bd8d7c52a 100644 --- a/libjava/sources.am +++ b/libjava/sources.am @@ -1338,6 +1338,7 @@ classpath/gnu/java/net/loader/FileResource.java \ classpath/gnu/java/net/loader/FileURLLoader.java \ classpath/gnu/java/net/loader/JarURLLoader.java \ classpath/gnu/java/net/loader/JarURLResource.java \ +gnu/java/net/loader/Load_gcjlib.java \ classpath/gnu/java/net/loader/RemoteResource.java \ classpath/gnu/java/net/loader/RemoteURLLoader.java \ classpath/gnu/java/net/loader/Resource.java \ @@ -4846,7 +4847,7 @@ classpath/java/net/SocketTimeoutException.java \ classpath/java/net/URI.java \ classpath/java/net/URISyntaxException.java \ classpath/java/net/URL.java \ -java/net/URLClassLoader.java \ +classpath/java/net/URLClassLoader.java \ classpath/java/net/URLConnection.java \ classpath/java/net/URLDecoder.java \ classpath/java/net/URLEncoder.java \ -- GitLab