From de1acf452ca341d53778cfd655887544016d6830 Mon Sep 17 00:00:00 2001 From: fybug <1006291762@qq.com> Date: Thu, 31 Jan 2019 21:18:42 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E4=BF=AE=E5=A4=8D=E5=8F=AF=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E5=AF=B9=E8=B1=A1=E8=A2=AB=E5=85=B3=E9=97=AD=E5=90=8E?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E6=8F=90=E7=A4=BA=E7=9B=B8=E5=85=B3=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jar/PDFLibrary.jar | Bin 78093 -> 79066 bytes lib/BDPost.jar | Bin 13909 -> 14460 bytes .../pdfunctionlibrary/Util/DataContainer.java | 14 +++++--- .../nulll/pdfunctionlibrary/Util/DataMap.java | 6 ++-- .../pdfunctionlibrary/lang/Cleanable.java | 32 +++++++++++++++++- .../pdfunctionlibrary/lang/CloseAll.java | 10 ++++-- 6 files changed, 51 insertions(+), 11 deletions(-) diff --git a/jar/PDFLibrary.jar b/jar/PDFLibrary.jar index a84f0a47db0f9118d4d5767447dd11300870eb3e..7b21ca8413ae0c95bc5dc7898749f241d2bc89ee 100644 GIT binary patch delta 10899 zcmaKSbzD?i_ct>%4Bg$`B@GfHQVIytA>G~J2nrIC0}Lf8-Q6Hcqcln*ATe}<Pg%}9~0|RNeST-If5&8c1kpXe* zXCr`f8c6@RXd&^A3JN4RB9Do?$D1owSS{ zh~$W+YoFAL6g0rz=@MP#=xB4{hP&vZjSkyL^J6Bn6rt`93cKW_NrKQ0P@ejE*5M%!{O0iQdJY zrk7Fotz}BNuX+08i1o-}zfvQZ9wiUZ1ZUNr5JgeqC#sfh*mJv%;W%eXj({Hi+>}#V zRhRntr9_pxDF2feFy}m$cHip9+PE(^yImjI>8sD;*d?Pz)ON@}Me#BRCob%hq~_Ku z8kYxU9mSdN;9I9X{5IRf^!-d@n5GW=lzc4N@+eDO?S=g6aq@dAC3YIO>O07bH{s#6 z_51>vZROnC)ipE`yRI|#^mJER&J;vx)WgeCU-H+Lm=2o@6X`+|eRuQ=(;V z@kqY(%PD|-0^6J3#U1n0J%meii+wBFRz9#^#fE;!z~X(V%@5d4v-dx!(1cE>wD z1sOAppA?|keo#c?r3Q^Vc(|hIM^co~<)>%}{o+@|6kmw?@?b?=DUR)$eeG#D&m%WZ zulA;@)`)@7l_b9YAYg#68~X4@A#T7;X{&lTaqnh8#wAc>t4Xa4Pun%*Xrjm>qeSSf z+p|w7In+Z>z{c57^#t88?L?dSOTfEmFk1m|_ZT<0{3m01ho@5F_t8n0XR7EJG%TN^ z1%XINPmqz2{+p)vd6h{c42c9$fSp{3b% z?u=a%YH+x_x8o$aFq8W2tK({#?PqkNyWlJVfg3YWc37k0swmOwNZiL;v}oVG;Zf%~ zCp)UNlf~445x?OfkKxpt)y~JAK=OwiA=2b=L)jrhPQE%_GyH_UJdxHQ7O?WVI_dz1 zk}E?9Xi>{m0E+}l+{Tlnv?j>vvZ#4b5yGvonPE<`=ohx`x$hO0{N5NJR9$8s5uw7t zm+>T16viB1@8xW=5yPIMKVjq`vKz@qu)|@)I>~Er^+Jj z(hQpUwW~cxs(2>)CFhInS;39gBBpb~+E2~HC~)&#EH{1w&smf>GmTplt>5KmmA3?1 zZO-bwf4RC=Q-uYxNY8QVdj#C=FsPQwW9}_O{UU;4-d*Dut4e}(p{(1enr2un{N=RC zWD+z)6w{;b^!bdHQ{?TW!CS8RWfnR2((D*#&?7OqaPu2GdJy`9Cy&4Z8uIUt-J``h zu}d(*q+{4;us;vz@B|H4^Q?Nv%}As#YH9TPiSTWS41DDsF^MJ-^5Zc5$&nQ?X&2UY z()-*|iPg|7{MSxoUX*GWsPTq_qwpi)mrOnV>fH4NB0*I~QIc|vIt8vL> zXYl#O*_Zs*M%tx2H`p9_pALLFv9xsk3Ewp0m-{P|&CEzQwW6l?T%LYi4bne6eEp1k zJ-oZ3Lk~=-UszzdyV-KG3grI`BAK{&*o8wvx55+_M8*905uQZ&*QD*JELbjgyY5(Q ztWHMa5Zgtfxf$C{|7a(UNbZ1eSuVR}u``84kOo(#x&6$V2cvKOmnFvTuRavmqX@1p6#hjGOZ)NWbUtIb>sF3|go^h`)h&&HW9 z)CRMJwMUB;?mwDI2A@`oF1+SMb8_$~bS4!&2D;6R6_FOX6bV?H6^WrnGaOUr7N)kn z?5`r-$sMh!|E=Wo)uw50Mk9&Az`#%Y*~k57-y5Qm1ixgRW}+e8qL8oYb`d)dLa9xb zKvWzmpMAVx>GMX7J~vKb>DI#s-BrNcqv_-o^UWC}+{ZkZyCk-?X`%avz3oV@4TQZt%v2 zt1c|<0uKjFeV)k3t+zPvD!=e&&oQG3uhw9m2JF}@Y+4(ODF-Cblz8mA{!F{ZrR|G) zn^+M#9s;g5l-n-~=~%zO2-4JuyEbrt>7!dnb|*|<$g2wmO3dK1cNk~0&is_i6a=hl zrWW1?OiTCZ{$xCg3?;CRZ>h=~davl#Lh6leQUYshb6h8xZH0A4C2(%nVVfJ}(aro& zF#r0J*5j=JwU}RwrAeP(+o9}z@q0Wy^b8Z-1K2!I1IBOnI9 zSh%l-cMHz2y18OwGORj1EUzvr!<5KuWda^9WiP`x9<#2>nVC87&7BWk)(tH(DF(y-WC#5JBLNep*~eDwD}d6 zAgO>AMnY|FJ8gqCF*kxA=_1+nEUT_IBS*vvOU9_*s!1r5Lv=e$zwlW_L{Ez z(LH80;DT!zy_8TNdQT!O?JYn3+g;drsIrR&g|~(Ww!Dz>Q&CnCZQprJeXS*?!t%Llc3C_i zQgSL}FM^LtT)|)93)!Ymtj!CHdINu6$dpAebG1y^!eNhyzKYI+9(;{C)V`nZ)CO9u zG(OObN95c+kb7aNuez1X=}zJ>%KA0I+lJKRef6wPu!P6q2iOqZaNE`G zNjlxl?HM{KUNDI%RcQX;xm1(|=Qw%JH{^!h=FGf}cTJ+^HVfa;sAGRBmWDtGcAg(n zYjF9R^kDmHcByijpa~c?DtkY7RHQ1_UzE8>>pB*+Cy|WP9AiUA)|yXR)CkLzbS;mx ze#>uyQ$y0ACNNOT0WNV0s}G(>9jU9Eyq2(|dBEBvkP6!KZ>upI&$NgoLvT z&k6?>eVXQ--V*ujw>u^TponMIY(FBIdZesQqJ5*U7m}2@%)mEz@~26>AG)gwlJ`!6 z2Igwqzjr(I_hj=_^5~rG#AW8!IF;()6%wa#4$~K|$n97vFQT4Jwhp1Ez8uW_WiaRh z_8d4BSU7Mj>>thG>g1?`1tit%4#;ONZx1S~BFTZp%A(487WB+!z}umEUp28hYQFvK z&kt%`Xi1;s;Q~APXUGV3+YZ%S@H-mK;-cr3c z`^42Z$4j^jOz$vtqr(X4@)&|pRi3U;QU=>jki31$%KH^e=ZYr|Tw)B_XHUuE!re-f zEh_bV=EISFWf$}0HsOHO->e1(O}UmIJ{5+4CA{m1D>Riq-gx#{+cc;8{8HSrKgX@< z{PJwXzalqud4A_xjz{g1DRZU2JdAnibn{?C<0b2cbNATlJ5GhgNLI?ify)wGofOQLpRhl{zwnutI~TZSz3Yqhf^WiKLwD$?_Ohfke)g=Xm?-Q0k8#PYc| z{HX2jIWeTRR7aJ`yE*+xL4(4KEzi!syT3$U>nO_!ctnX=RLT16mqzfGMtj>ta7s}Wp&VDD@_9-0C7{<2f zyMs_U(uQVbJ2G1XDO)!bf>PFTPUhq`1{@~k3}VLbK!ucP{Fs2KxN~T@jK+hfW=QC_ z==aqZGT(|Oi;9Hw7W6;W7h;Pk0x2UU1X~fmG9koxLKIT>`s7P;q?59(h3q6&xE4we zTBQ0%M*r%Ww){EX)~1>4;zhAMG85m0!(NIHhb0pEuj-~s@)~brhbLv1FWS;sSnb9W zqIRylhCMQmGmiJx_rc&By^mGAiJx~Rm+L>R)P- zHh)d#xv8-*>=n_+4^Ij6(jgU88Y3a^HyV3T?>Qjy)w7^QmH~g5(jj?0nVQ2jw|LCb z>c?bR{fXy5efx#MVj_|D$&ycwWpgjMC8O~{bZ*yz-B6A3Hxb9E#4w?j_DtU7GT~t1 z8~fQR_#!GT)ue8rC&7*|$6>q*QolyWHac&kL@P;yztH}u=zI=SZ1ux3rcc%hH648rNZLx%?ChdaNGsXF zx^Vfyczz~~P^`9g8rwjekIJ5UV3y@E)FUjCb}me+f;fByKMeIuxb;$Vr>BEmVSI5&R-lT@)j$?+|^XlFb47>eH5(E;9ghrTr5bT<e7vP2yAZQ|Hm5h>D;xQ3>DP&d&FwLP*d@Rov2j(I{D3)>-VR} zQPa_YgKy>jQKdK6mfk;+z?m!4JvVQt1AGT7er@r;up#&f+EiZ*R$f%-8>B&brF4+I z@w?83?x#ohaijqBr^L76|a>IbetlQwx2yDBy= zwe)>mKZfmMJ8T-+MJHNyCM2sUT_xOrV>`TB`yk_~BkBj4>Yw|YCYT>l~IIRgbVukul^La{*ZN z&UkYNI`OXvKMa%ygja*Lq*D_m%-ijo_N=JsN8Go`6#)uyAlHa|{nF*kqh>szMyME3 z$`O9|vk#W?3oA5Lkym9amQ!^+y4|VAhbW*D;>(&SB)8WgE$puY~4+C@43*jxDX!R47ayXp9tZBeqJEHIgp~Yhzse$U) zTCowdRF(Iu_@D0p_Z9ECN*sAV{CiUz1d+q0hR{VY-hWx5)w)u7Am4B9)UMOMB1RB4 zLccH&goacoD`MYALrSuiz`_L+!LVWSK}Nr!f&SiCx?ixfHwi!C{O86`sU8zc zzajhXO`0GEAhgxa?sfwWuyWjBcrVb4#>c&X^YSIf;Dj%QS%MYmE;?b*zRRWu(`j+Z z(M*Ca=b*2+V9t>Q@7RSl=c-l6SrTQI1N4|T*=Tf=|8o$ zhxzs#e&40nY5)nBgL!n=1AB~Hw?cIoncfb(!HAmQ*bZ5d$Y#Bzigfkll?duP1*+KR z=w(S~1j5>D)qb?~`*ibA&>hCa4W)&dpMk5+*W{ajG$hup2dKPaOU5R>6v%!j1e(}a zim2si4JoxgMmwjytGl{5Z!eVHbC#V8I62-sAGy0-CJQ4%2YWQ~V>42Ic^i=%TB%uc zfP+S^Lg&p#UO`Rrx&&5+xnbTsQ!;;>XNnzEtcz`oThYNUv|nIwBK;U8c#>rt<=Y3( z-!CPCRLE>$1UUH^u7NF0}36;;k$Lj_1st+9iC#q`azwu(&0x z>k1)JfD&l74#1$k*ORU%-L76W(*EFA_Egg7hh^k0MHFM7Cu(cSb53(&>X*-E*~^0z zk7)zdj5ZE1qtmttIF#eQS%X%eo-C@WO_>lLVy9qF@Wls)PR7Uy{AQb|O8^scO&KU* zkT~MsIFeI%qisy6YZxjX$-^M7ct@ zVAbMTfQT)X$R+Qf`l}hAQmd2mHUwzqKQo^8ycPAIuH;`Lb$uB1a>KleTWjZYNAE{G z5!MA~HHb`X@w7&xl@VirM2zKOvzXOK6Xg4mEJ>K7qz~UR(?i(W6x)gXYrO2d`6)h{EdA$c(sCg|i{b5J?e9>c1eChmK^YQ7D z={(wKY&G$?uLj;ox)@ZkGlC44J~-H#`co7K7_`DdM8m-wruIu6ge{EII*9Wag>a#8 z2&mMR<%UAb)iRh`#H%LR^)chD3BqyNa55<9dg|{mfw8d=`LLy~Z0Gl<7klZ$ASg7+ zJtTyUi{#xRcF)WjY%3$bBy&SQN~l)H>Rm;pl#fJQSIw!xrvLX8kX6@<9Lt4lkARLg z@WY0Vv!j)pON-cKf8Ux6I`iA)y%n8iW}c@d;@e5E(ioccdUD3eHlOAq5I?JZHWH@gC8Nf!yrnFSD}-w#6#b}do*|m~*U#*IiSx^CudsFVOSl^eRj$(3 zIK$Xs`b4k9|?xbc*DjE47b20sk-#f{dZx>oWG|&dGj`F=KToG z7_&k-x{D8>A}giWF}^Es!+&=&$~k&go9ECeHCVc)Oe2eKa*xK0W!2vQ7fiC57oCa-y#a?p-yGSNQmU>N~u0Yz-HN_VsfyMzQnbH-n1*pVg z#(GCAC@*aemRpfK-x)=ZW6k!?bAr3E*f6Qrr-_|jyo?vKny^P^KQTqP5xu23C)SFrS)#I8ap(AwpoA`k3_qUkh*Y5%IQJZVzSu8u= zo{E-e4vOeAgK3*c=N9|OgKtCzB~-L!NEno_LwSk5v9>(WU*bRHE*u4$=LSH4EGyDz zhY!mp>_Wmteh5wpZ!f=XtUucWFIn4$G>Dv2Xf+qFEM!~|TjN#&=%|G&~8wc0NQuC|*^tI57KB z^S#cA6JyAsAHp}MOrxZFYy!*45fumK+0n4*U48)@5@aJfb_Ol zfut4HREhr70i(^4S7Fm;GR=0bINNBm<+O;l*%wH&M{hzrxEjZX!K21?nA_h1I5#{= zJ;Ir)Z!=J0fI64qnNefot2gVzZh3(@gadihx`!OaDO!LrrCY0$_D30!cv#zq+uOK9iONv-z2FZ zZqID$;C$dWFoz0mgN`dsW2X4FzPFN{iMQ071Y;ncFm~CClLW{&!C zWi5{7C$~;JWXp2Fii-xWpvrYZspOSJsoK1$xdE{2HvI1}4hw)m~O!Sq?B1NqFF*#j0=l z*mL60+2SjkZLRw<^=U=gVi{dp->g#`B%J(3L#M?)TU3Lc7@+u_mXD(O32qF}Y9ART zD@+ZixS!Ja(KJV+k#MO_RM=3!n#%fHO}-R&W}=A_mCDlYk29^ug6taPN%X41rT%r# z54Sjni@>4~w?z?k*_{%>P@N0)mI_T->(mDh1H%n5_C#p{bDpH66v&KRqs!5*z1kuw z*?e`T>c!k?n!o331czY}0yw5*RfM*TJv0hiu3GUrQu;!uz26BowZkR|VSLde z4Q~t|6^yjS10uibL9{*=m8_?sP{bU?KIb*9Xa+yBFWj=#-jQPO*(R4a$Zkxkj=_6b z7?USfU_oq0BUD4tCl}nljiW`A)ms(@^$bK_BA#w1#j(`;-PHhFH|%UX{4OcF^lGT6#)f%hf7R;Jqz}(k>kF5}t8i5b zlOFJp#H+V-4i^zISt~XY!!NycyyWc!*V4mIn|lPf6Mh@yYk5n1RA`3#iIgvGv^ma+ z8Jqdin2@FDRlf7ClfuERFnoAC#PG2jWW#r%a#F|4!L>H))M-mP!Z+7B6xd=tJ!SDd zgSfR+-Odgi#2lqHm}r`(wQS)x!ZN6r{w@aG7W=}@l1tr=Rv&pyZ|YOFFgEk2<$rF^TjTllrsem&Nv}bZ=Hoavm_LmiW@XtfQ zFQUp6cYF>X(O6`?T>7H_o#z$K@wV_e*4YBA6d$%JJ9MyC4? zMZRmnfXc3HcVqUQ_}-^47Z?HRC|gQaV9fP8OAnyDfO?#|%_Y{$a%$G58+;yLv5&Sd zLvtgLe!nIhQH|v(l{CcE!hF6ckH0Ii(!6|G9=Un4g3WRcLU zcT80ym9@PQW%G6x<43aJeEBu^-8%J4a7yQs`lpU3ow;Hm#jn?9UR%X7i>jqXT7Z9~ zwSL;u#;wq9}%^`d+&*x1dtI*N%6D`<-#S_#{P;<>nbN9L@{5o&-$$N1*jDG+7#h-KS`zg7$HDD8n z_N4Z$zIQb0!VwwU)kbc7OsRcjqmjD`Ruso)?^twzLagi`I;dpy*8LG5Zh1!AEN zxl5Ht0E%g42nnP#U#ylZJLr#EY5rH>f0prl&`}xyVQp&>0XqU28I3~RjmPK^cktLB zykv~$p0Ax96Zx|PKzPA{0Awzx@a_qy5jsEtLFA$X1Q5h`bbu&=z{dbQxhEQpFaTzV zmZ6Hh*zp(Qu~CPY_9aR5}nNCrp_2N#qa7p^t-hjzgQNCMkg5ICGhh0fywgn^En2tXPS zAPRiI4W}ic9CQGDXcr!U5=g@b2ZW&b_y9tB_{00hDIgM((7!^(et>W@j1Rzq`ryMG zHToNn2j+?WCB%WM5WpMFll%+7g4PoN#DF(ae*=&Y61Y$dY5)k)8973DXO3hbU2^=; z7(%#T8Cf_j1HB*w2mt-$5VRc;oYqx@(~qD&nDE#SiQuu9DItWa#BgE86F4mmZ6yZq z15Hifv_LW`03FIg0uTp2H2<4VApwX0k1YPfQ~Wmoe=CT91wYh|6dpkDJuL&p;DI-^ zN(yi2#1$mw{ke37(a6@Pl&=7g@e=?KpU%op(z_nSR`qTh?gl|V`xC@j_1Xw{0phbWq_h4<_ zJqTgTCb)mQeR^((jk09>0i_mOY{S9k6KZiopC4Y~ja0AtWDE&v1M;STP7P@KTh!+QmK2<0Bp zeUl()HV9ss3b^2*W*`3%;T_;W_wRLePZ0oAk{dov6rKIeU_jH{bzq z_3{t%oCiRLC~VF=@b@@=1&!hXP$Pg6IDmY6g#=~b2TpU}l~<@x zeqMkWa@);+5eWAs9yE;?z=^DQ_cw|S-Gw8-M@Ue5egHM3>KgY?mDlEjcVioHkJ3Qj u^8w_5`6z#w9X@~{@IBf+qXi_!K-fX!_~HF3#Qej+_yM$Nl-K}xX8%8&;2TN+ delta 9864 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 delta 12735 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
    C*L6wlX_`E$3E5J2)#{ z12eIM!2%Vpol$&(BuVJQn^L0ms88CR3{_k9OjDVTR%_R9B2Vf|34yq?zKa}f?gT?A zJ-OA)X3<}15T8jVl*EWt>ZFmXDq5#++s>r-S^gexP6wXBhJ3xmQ&Ln2x#^~DJ!X|1 z()B$khpGJQKLPnvRI@E~#ebNNxRJ{=$Im|~qnaL6xfk5Ebwl^O!w|WQ8JJA~xd2;h zm+fnugLw^u>EF>5rKaqabv{GaB$H;g+VLIIQq&!mZsp%roG5GN>xl*V>__VY{w5av z`g*o(WZW22$Rp`s!si!#kd;+_0P`j}8p%@wI=FZaiP_nwBw{|mdK^mMPa~i-t~gM4 zJ$ud$^Fpq@cC0T8c!peL4XD11%T>YTTkpRn&~Ni3C6C*rkpG8nlUUkS#UZa7(<;L__=yw{yp+Dxgu#MT@L>k(G z?ibq4=ab!KctIXxQF@QF*S=htW9{Y@X@OPSGOK*6-ALStnN&_h2R|d3S#66{*gFoy z>CckIn^cd%oS9l4l=ym5i2O2I>rHT*BDFu-stlFeh%j2mRm?Nq6R+Ca3r*Zft9q^hRB3iQ@%$<)dNkdn4(|DmS%joh?8!5}9LJZw#b2yF?YsC69 zX<7I|*{%Vk_YAJKmlAKpeVf);Z;hkQ!o10Aou}1;^Ua7rd;joZ_LY$t$o8#P)t4XR zClEvm*pp$nj9es+1l8`aI=68*j(A_mBptjNj9HE@ZXp z^oAm_3^)-nunIx+Y6g7;+HSo-8K^(VZzoU>>=BS0#%PFf<_ak2pn0TE^dnfl_n;{kO0Cen)q4Dc;TPeB_!O*tn8deK2KlHiE z^bM|oG{6C0`ti{-khZ2+O#4(QK{>32uCuK%^W_aKb)B>kItz7{s<5PdApi8;JQSD2 zp3qa!7M6QF>xB|BO7f@C%Y%SQ+~{&%>gKnHgtnogUkgj!vu5L2+P>dc`6DQ^^_Bl| zOe-2U(43#r*M(Ac;@sE8Y6^^-f~r=XvBBah2DcFdQZ9uaAf0q>#tEzpRzi+3^)4Em zV*u_0F4_49_@h9hx1Xr!vUH6HMd2*jrSzigkSdo+B-Qh~BS(LU*RfO9QaTz;Em|_G z+TV_hSn?rv1~|rCH+9J7(B4R#+q^yn3iiz6T^R-MrWOC`mI6eOTN> zFM|mL7V8RCp!Zu1sv3%(fZC}aL8$z~;^Wr%q(5#_K6DiBC(N92bFyo{Yj?XMWlSP! zYW(Daugq>@hX5OGp3Wrb$>k37B19G@C%Ryny9`^m1ZcbAbsGIN)~fE%6<3RYum!F` z3QJ3mDygd1L#4z<_u?`j^3+OIXsnO>pWjm(X;1(71wx&pFi64Kck?sbHstLcF7OH@ z?p4U$?zi)Wy*~Wnh_h{0-UGZ$6Xcn?NTYKY)*9F8V!1)dQ)m$2_LOLwdmXVns1l*< zi>GX~(j{ZE=?yB102tfoek?6^j>H-OjOt4{JAb@V=8e?AoYg6+p)R6B2ww zyH8h2;Rc-_A$Rz3CE=Cr-{p<}7Ob4LANn`4kUIV?mp0*|RIcU^#SKl5h6YSRx9A~z zU#jn3KVI;&0oMd7@8{`ZFi&Wv2j)@DSHliI~``bHsCzJ9xD;3kKXOxb{q9P4u zO?C=e^fFmIN-Ii=U@%eawz_=S4b&&xzl3s7;G~!U0RqAS<6oyUBorpZ|5M+P*v~2U zUo8V17sr1n#Krm_I&*RVhgDpH|CKgeaw(zwo96QWCcq@hatnU{cj|xow7>sfX)ymA zQqdA`=`jCEhr$2P@P889|I=`X@E=2*L?&WHhW~lMe|P_%hbR3%b|TT#{ui<#G35XN diff --git a/src/main/java/fybug/nulll/pdfunctionlibrary/Util/DataContainer.java b/src/main/java/fybug/nulll/pdfunctionlibrary/Util/DataContainer.java index a5b0959..9865da4 100644 --- a/src/main/java/fybug/nulll/pdfunctionlibrary/Util/DataContainer.java +++ b/src/main/java/fybug/nulll/pdfunctionlibrary/Util/DataContainer.java @@ -11,6 +11,7 @@ import fybug.nulll.pdfunctionlibrary.Processing.CheckObject; import fybug.nulll.pdfunctionlibrary.Processing.Stop.MaybeStop; import fybug.nulll.pdfunctionlibrary.Processing.Stop.Stop; import fybug.nulll.pdfunctionlibrary.lang.CanEmpty; +import fybug.nulll.pdfunctionlibrary.lang.Cleanable; import fybug.nulll.pdfunctionlibrary.lang.ConsistentField; import fybug.nulll.pdfunctionlibrary.lang.MaybeSynchronized; @@ -30,7 +31,7 @@ import static fybug.nulll.pdfunctionlibrary.Processing.CheckUtil.checkArrayTable * @param 要存放的对象类型 * * @author fybug - * @version 0.0.5 + * @version 0.0.6 * @see Stop * @see ConsistentField * @see CanEmpty @@ -103,7 +104,10 @@ class DataContainer extends ConsistentField implements Cloneable, CanEmpty { @NotNull @MaybeStop protected - V getValue() {return (V) checkArrayTable(value);} + V getValue() { + Cleanable.checkClose(Cleanable.errmessage, value); + return (V) checkArrayTable(value); + } /* * Check @@ -194,7 +198,7 @@ class DataContainer extends ConsistentField implements Cloneable, CanEmpty { *

    已实现基本抽象并处理并发

    * * @author fybug - * @version 0.0.1 + * @version 0.0.2 * @see DataContainer * @since PDF 1.2 expander 2 */ @@ -215,6 +219,7 @@ class DataContainer extends ConsistentField implements Cloneable, CanEmpty { @NotNull protected DataContainer setValue(@Nullable final V value) { + Cleanable.checkClose(Cleanable.errmessage, value); @Nullable final Object[] v; synchronized ( this ){ @@ -248,7 +253,7 @@ class DataContainer extends ConsistentField implements Cloneable, CanEmpty { *

    已实现基本抽象但未处理并发

    * * @author fybug - * @version 0.0.1 + * @version 0.0.2 * @see DataContainer * @since PDF 1.2 expander 2 */ @@ -269,6 +274,7 @@ class DataContainer extends ConsistentField implements Cloneable, CanEmpty { @NotNull protected DataContainer setValue(@Nullable final V value) { + Cleanable.checkClose(Cleanable.errmessage, value); @Nullable final Object[] v; v = this.value; if (CheckObject.checkNull(v).length < 1) diff --git a/src/main/java/fybug/nulll/pdfunctionlibrary/Util/DataMap.java b/src/main/java/fybug/nulll/pdfunctionlibrary/Util/DataMap.java index 535083a..34b4c15 100644 --- a/src/main/java/fybug/nulll/pdfunctionlibrary/Util/DataMap.java +++ b/src/main/java/fybug/nulll/pdfunctionlibrary/Util/DataMap.java @@ -281,9 +281,9 @@ class DataMap extends DataGrid { @NoSynchronized public Object clone() throws CloneNotSupportedException { - @NotNull final Synchronized dataContainer = - (Synchronized) super.clone(); - ((Synchronized) dataContainer).keyLock = new Object(); + @NotNull final DataMap.Synchronized dataContainer = + (DataMap.Synchronized) super.clone(); + ((DataMap.Synchronized) dataContainer).keyLock = new Object(); return dataContainer; } diff --git a/src/main/java/fybug/nulll/pdfunctionlibrary/lang/Cleanable.java b/src/main/java/fybug/nulll/pdfunctionlibrary/lang/Cleanable.java index 45de8c3..483f671 100644 --- a/src/main/java/fybug/nulll/pdfunctionlibrary/lang/Cleanable.java +++ b/src/main/java/fybug/nulll/pdfunctionlibrary/lang/Cleanable.java @@ -1,4 +1,8 @@ package fybug.nulll.pdfunctionlibrary.lang; +import com.sun.istack.internal.NotNull; + +import org.jetbrains.annotations.Nls; + import java.io.Closeable; /** *

    可释放对象.

    @@ -13,12 +17,19 @@ import java.io.Closeable; * * * @author fybug - * @version 0.0.6 + * @version 0.0.7 * @see Closeable * @since PDF 1.2 */ public interface Cleanable extends Closeable { + /** + *

    通用错误信息.

    + * + * @since PDF 1.3 expander 3 fix 1 + */ + @NotNull String errmessage = "该对象已被关闭"; + /** *

    清空.

    *
    @@ -54,4 +65,23 @@ interface Cleanable extends Closeable {
          */
         @Override
         void close();
    +
    +    /**
    +     * 

    检查是否本对象已被关闭.

    + *
    +     * 关闭对象时通常会将一些私有变量设置为 {@code null} ,通过传入这些变量进行检查
    +     * 并在合适的时候抛出错误
    +     * 
    + * + * @param messg 抛出的错误信息 + * @param o 要检查的变量 + * + * @since PDF 1.3 expander 3 fix 1 + */ + static + void checkClose(@NotNull @Nls String messg, @NotNull final Object... o) { + for ( int i = 0; i < o.length; i++ ) + if (o[i] == null) + throw new Error(messg); + } } diff --git a/src/main/java/fybug/nulll/pdfunctionlibrary/lang/CloseAll.java b/src/main/java/fybug/nulll/pdfunctionlibrary/lang/CloseAll.java index 8106efa..2acc54f 100644 --- a/src/main/java/fybug/nulll/pdfunctionlibrary/lang/CloseAll.java +++ b/src/main/java/fybug/nulll/pdfunctionlibrary/lang/CloseAll.java @@ -17,7 +17,7 @@ import fybug.nulll.pdfunctionlibrary.Util.Processing.Arrarys; *
    * * @author fybug - * @version 0.0.6 + * @version 0.0.7 * @see ConsistentField * @see AutoCloseable * @see MaybeSynchronized @@ -95,6 +95,7 @@ class CloseAll extends ConsistentField implements AutoCloseable, MaybeSynchroniz @NotNull public CloseAll toSynchronized() { + Cleanable.checkClose(Cleanable.errmessage, linkedList); if (this instanceof Synchronized) return this; @NotNull final CloseAll c = new Synchronized(); @@ -114,6 +115,7 @@ class CloseAll extends ConsistentField implements AutoCloseable, MaybeSynchroniz @NotNull public CloseAll removerSynchronized() { + Cleanable.checkClose(Cleanable.errmessage, linkedList); if (this instanceof CloseALL) return this; @NotNull final CloseAll c = new CloseALL(); @@ -189,7 +191,7 @@ class CloseAll extends ConsistentField implements AutoCloseable, MaybeSynchroniz *

    {@link CloseAll} 的并发处理类.

    * * @author fybug - * @version 0.0.1 + * @version 0.0.2 * @see CloseAll * @since PDF 1.2 expander 2 */ @@ -205,6 +207,7 @@ class CloseAll extends ConsistentField implements AutoCloseable, MaybeSynchroniz @NotNull public CloseAll append(@Nullable final AutoCloseable... close) { + Cleanable.checkClose(Cleanable.errmessage, linkedList); Arrarys.conversionArrayType(close, (v) -> { // 仅锁住该部分,可在添加的同时进行关闭 synchronized ( this ){ @@ -241,7 +244,7 @@ class CloseAll extends ConsistentField implements AutoCloseable, MaybeSynchroniz *

    {@link CloseAll} 的非并发处理类.

    * * @author fybug - * @version 0.0.1 + * @version 0.0.2 * @see CloseAll * @since PDF 1.2 expander 2 */ @@ -257,6 +260,7 @@ class CloseAll extends ConsistentField implements AutoCloseable, MaybeSynchroniz @NotNull public CloseAll append(@Nullable final AutoCloseable... close) { + Cleanable.checkClose(Cleanable.errmessage, linkedList); Arrarys.conversionArrayType(close, (v) -> { linkedList.add(v); return null; -- Gitee