From 29edeabaae963f985dad9f4a60f79c84f290a00d Mon Sep 17 00:00:00 2001 From: Evan Sia Wai Suan Date: Sat, 12 May 2018 17:47:03 +0100 Subject: [PATCH] Fixes based on code review feedback --- dirty-flag/etc/dirty-flag.png | Bin 10870 -> 9192 bytes dirty-flag/etc/dirty-flag.ucls | 45 ++++++++++++++++++ dirty-flag/pom.xml | 4 +- .../main/java/com/iluwatar/dirtyflag/App.java | 2 +- .../com/iluwatar/dirtyflag/DataFetcher.java | 20 ++------ .../java/com/iluwatar/dirtyflag/World.java | 23 +++------ .../java/org/dirty/flag/DirtyFlagTest.java | 13 +---- 7 files changed, 60 insertions(+), 47 deletions(-) create mode 100644 dirty-flag/etc/dirty-flag.ucls diff --git a/dirty-flag/etc/dirty-flag.png b/dirty-flag/etc/dirty-flag.png index b882b6665bc3b62738b74a87c75f55029b7ca2c1..98d4f679d17c20324c6e8b510757e20256db1c08 100644 GIT binary patch literal 9192 zcmdsdXH=8h)-IqTilG+`2u7*W1QL*50tiSiA}F9p30-N@5s=U&(m`46s31U z7o==@2k9-q_p;S9_V~^@sCm^^}pd=@w?% zs_QE&D)Dg!1Z>gdAObX|aqTa@NoIUck9idKkd$k{s!_U+NS6ccL>*M>b!m#03fIKY zgu0#=92e)B*&Y$J*vDh(i3r~4x|dH95Imdk zMG_Fi`XW8e=GxVFrM*yFrG^>Xq|jNe+0H8sB|%lUdDWj?rl~2AhT}9Wqk3oreto7zkbsx3akv}%BGb^_=Vtw{ zf}$+6V?pZY%_6Y^PsHZ-WS#rkH&xSwyrOkVM5{4yKa+>>FY4lQtJ~qm6Gb!MUq{~R zh+C}<$*ahxLbPh1FOY{f!cs?^54VCnQoK*H<0hHvjso>sC+}D=jXRqR2mH{pREbt8 zdCB+bGIW*((8|&nKHDC;`+UOcx1IN{iNqx^YFe*JP(4f_Ur&xC_hVBtdnw9WOo zYbJtH(`~m;p5fw(NwT@n=+A_JG1sgSUB0R-fghMWb{A#`C%w;-n_6m98rSMZT~>NO zvE++YC)hN+4lZc*dlfmM5`Xz2Uw>q&MX!y(nlb`m2jE%x7<_y9Dc6Rf<6lk#4DNHu zj`ZW(gX$ajt5=F&wr$bIt?PfWnyh*lTVVRb@mPbIAG9fwFCl7gWOxPC1p=;J)W>i% zJ>e|&ZjH6zG?V<)bL7H`-das!W3OXNiu+n)bMIOl^LLIN!EvTJ<4o zJz2Qpg3HYCgOL&qD1ueaj1ea3y3*%`>~Aw9+R?HCBt z_B{Y@*Jjz}k?2`K@E0oT3P!1R9$;y*BtF^55!SRA>rcq%W4YOR!# zHU#9*w+!zf(n87RH?XBD1vNcaue6sTaqAj0F>OB&7M$b2SPO(PDZoRVeHsGE=?@kx zdIQ^nRn^9w<{O_SO_UnNyHc8az<0zWdORJH5D$wP3&K>tSrkPMQyFoTNJ^UfK#paX zY**XdCm584pDgyzgb_`}h0l%?!$s|5nPSDcY96`I2He73B?CK<0_W2pf_5pVw_^?b zm;Lihw-sli!45u+S&*&Q(%sve2#SmE5q^qBx_BIE7bmr?$DVucB>$}W_Nfa zXK;1UOrL&%gFVNw!Olo)Fb;JLc#G8-9{H%5Fu6p{9khwpV&l~0H-pkhF}_o1ctx>` z`96|@>P3|reRen5xGN~sC_F=NmYo?XTu{f+Q61}PifFY3$gEW^ET=Yp+V^+~q>4rl zTzY?#PLVyxDfDRb5?E{@0Cd}{b%hp`;1170QW3sNxC@RndMGIXofSH_9%DMw<lsTXfoN!~pJxs;YNP?6lE-ij_YnxSv_u2Gc`U&kM5AobUsAqRU!Z}Keal8CGqWw8MBQ~_S$d$D4?)%T`3AX;y@LGQ$ zj(dW}ck$mMc#U86s?)d0BEaeI>|Pf|kDV5dDshcvW#)gt8j%08Mq4jVx9(t1Rh_ub zZN?(dNJ5dW75-eRHo=K6d4TUk1~t}jhcdiMp?XE1rX`ay!Q;20Y@qSOu?QjYqP6T{ zvi|#WOp!6|u{)2lHp4p)*1o=FxSH{rBYNnkM;2D|H1;j;{jjE=TLeNm8zuKU*!UN&dQ52<4=3xYppDns$CHjPMvdd5^cYEDi z)2M+Yl3&irj`S*eM_qP$g%L-gCN0nZzrYXQI}kKa4te zzs0u6Cd#q6h16;=LZ8uCkRuajU5Ui36qkN!%pZRntzapeesJrB?a+hEM89&Vd3$Zvutxb0Elqgv z>q`AJhz1zAdS|qkrka0Ge&jXq-I!OeuFEw@IF;0g7T>4jfnJma(!Y6YEyuoHbK6TN z7Ro5(Rb-1y~{W#e#8+!w&b&uiS7s2*ZG@V** z7)ZnE0Fz$jZU0r@#3+MJbZR*S$HYaiNPcq`U({U0UmGuAbc~1%o_%Afg_(`-GWUA> zt5CW-LjU0ggGs;GfsO7O{(H7;avHPHhh55FrfRn^W??v+d+;DKRG^q*t+Rx0@95)H zR*xe~@nMz(Hr~|0Q%zDK{M9@5mQ~hcG8aKXSelv_Q#Aqe(NmsKUY~osssd_Sd}dm@5w&_=Wwmu`NhqFC@;-HiWTiyYsG4g znJv+d%Wt?Wvv%b59sjA(Rz2z+BYB_WAjdluNd?KmE@EU9+-$E)49t*Dw&e~7{mVw> zC44!M`4@RSS@B?ey%F;-J*Vrhd2}guMay_R&lA+0>7hqM763Pdkb;-BetYCk(chVl z9?X^M|6s3pMH;?-PDv(rcp338ZU3|g?IE=Ek8ARlz!-5`y(K&mh>(E$!vCLd4X{#& zxlH#oL&bzAc^(9ezScoWw9j4Xdd(Zn$i7xz0FoKOV`3mZ5foknY)JU*22ipSeHGY) zLiLyT(#(<}s+%opN)CrArr!|mjnfzkyDXvfd>M=&d2@u2hRYH5D&5>y zR`#(2%7-KF~78Q(gv2mOGZhZ{MwId`3A+u6ZFUG@aQ# zLDzJ@kI2}QyrC<)_ix?N4C;x}fA5Y6O2fkK+i!CQNrblE+?x#xqDtO0& z1T)|Dufpa(V9hm$OX+YF1Q739gm4;!K=yBgiUPs>;u|v{3?Yo9O{6j@98YE7I9&A` zx^ zAze~kgT5~?)K$M|DcWF>iRBydqSd!QnRL0Ah8FTgCWT<3a!dyeySE-p?MAK+b(&=w zBr}~7^qz~akG$&m`@4So8V=pF?8&;H;})@ssX@lcW@-m4g9`70rU;0|w@pOtM_Jg5RQV5w zxYm<0P2KS81G%F2F*LF!$XmMbtuW8S`z8@#>V%MvlYma;E_63mVTBKYT~&JmC?|@B zL`31|pr@nI()q90-3HZ&nj=Sttcpn=i_M|}_E*OR<>T&7T)``3_G~|X8fbQJJ1O7o z+3lsCZ|OG*bGZOiN1MAXlyM{L!FK6jT2X{Z;N9xjJS|}F!~u#(eAmE%bw9=Dc>}kN z#0!}pCvaRFNnaLI3cTGH^b}D6K*Lq()HAAkJY-nx$;#K&Ij6qo5FD|~(yYmg#ef=% zAV$ox-6$O`(OpI7yz7|<8nD5Oh(rbGTNWQ@=&7g&+<5GZT}x5TtcK6gUp;XWh2Db` zxk`)@uUE5&)od8Yy$^lE=iK2-hs>eUy(pIpO`OvKAO7<8PBQiH1GkIm7{Uk>u`VD; zo3UYdoe*f;!Ko$3OV1u`D{(d@)!M68bGTKJ^4R@nMwa8wK6%gN{n0A#O4lC+aZS@G zs2t{&i$p2C_7P|YtQBZuz7Db^*VR^igMF1Q3~f<5bpZP$PeubU8HADB*B*c0da_a1 zKz97k)(u?C8TEw;pYvb|v?SbmlYvUyQl!}3F{$p`-z{ev7o>TR2?uv zXuD5>&b@+zx`P$5P^3#25A4xeM9g_nrIHyt`lA<4Q3%K-U zCK1?y6=07H>Fc{`5IrKW74?4sxOHFT7A-`9L*ckDP zzQ!_N>l^vGv@tRleX07ROwaZ~Cwq(1LR^O9NE8dP#GXMtsgia`+pBbp*)(ZJ-Ancr zH+zn88?<_aAe99byQ5=cPpT=OTc4w7HV;XuU+z=DWqH#O`|-z83b%_FzLqH+`9Kv=`4&o@nN)_Cx~J7l!bDEHTDbMLct-q_&B?wKGgH zb}%9{dkKkT`GgVCmQ56rM@45{_r6$yoDOX04O*01Rw^oyfP92l);R1oPUxE31lc$9 zwI8S;?h4GMb8j1Ly|>5*oH_*4;ekEtn@AtxVDT_ZC?DAI1_l617rXSG^5n;B(5`+P ze>a(sM2CRy&mlouRH)oc%$VC|FgS9U3oNjU)B&*)O$+EkS!!ZEXA`W6pyAFS-G`u7 zC-@rNt8s^gwZUYMb4a6l3c|ttcODl}*@hE_J<4$uHKg^KnnoKC+5#P{9qy zutm1QQ*B`N6-6!;DzZIOv=HXL^8y}%tP&9#$X0Y09qfzm<<=I&MED^`8w2Q!Ah2gN zOSHsiNe{s}-)B`OqqD)w^TK992It!U#wa=H^Lc0+vz$@{U6+NgUj&i~VoL22bXHj! zZtDl+p+#7!Nz)|>951HRHYvhUnH=oE>AnaOp#nNngNr<4*>8|fuOPBiarMbp5v?(A zkfZ0qctiM9-MBbDb>k%RqJGeR`I+(Ib)3eB$3qlb_ymTtXrP*Ie^gX6x+?;(>pZ+n zx}Ba6?s~1>cb$27MRyq1rPApY{A>6Vjllfvc5|+AyU14U3YMIS|7hT##xSeI9Ow=TvW#xp| zraBbovSRyD97zW^?^^qkA%X%k{(kzi@Xkc7{~(m*BzM`8nSJbL=9$HNWDYH3jorR6 zd^J6^8mL)Bfl|Ok8Dth17;Ou(MI!-darOE~kd- z03+J$cm;S9dQc;aA$=%muZ`G0&7u&wgjl91yZ=`g-`Ju=-9yVDa?Q)#J4hBbC#TW~ z`*!6EAQ9RwM3z4!DEknI68-=trQwI)ygfDUUp2A-I3x3?auWJ@8B|7MP^sMuw{Ly_ z8;R%ej6yQ`;5VC^nwon$L@xZstS($mn)&RYCD{M;phc?O(V?6CH}ZpEgoH2Uel?`Fu^{ zv1K7G&4H|O_b*+|hl7>hgn?P>0^$;@lf4mG3+@j!9Oh=xB{0*-ov!O;xzIV+x1O)aT%n#}k(lcO;|ksV_^CfCX3&`_2D~ z66g%dUX9@#y9CzSkC}IVz>}b!V8fz+OTwazy(1djp3Cx?ap^+`C+TLo$`bRYPB{LJ z)tzT&CZHCv8Z_2OQ$-2e=t$! zj@vz%{%CyKAp2e}7Cm;V`3_lH)wZThb4@e!czzGrn8l<2%&`Vtt*o`pF&`~&S3@WE zFc&hHqMF=Cu_jD!RO`>>NYsE(^4LJ%@b|@GK&2y1}O&J2w7K*!2TGHSE@QO_3cMwRU*?X zGG;Y9IYXx*%QoLEky)yj&=c+mw6S|o;y$|t@1iKIF^X#*qtBvFNr)E4SODQrS$@RS z7lc66rkCf1(Lz}&GZY1JD5lb%Y#$wpr4d;fe)&4om!#o>zsQp>H%@PM<$S@f`UZSG zoeT}3{*8W}Uer;5M1T0~O@t!(ZxRebFPi`14G`;J`rpdLP2M7j8IUvq2)H!mKa{bE z7M@iEhMQKD|EWNVy2~S8eQ+?U&h51qweP*&RCm(tF1BRanGey?IytXdJxPsE#+;RY zNd8=>EPhs#>?B}5NO3ni7@)j%SpeymQTw~&q3+PP$~hIkn<5;F3#hi*xKF(JdkuH2 zU0}KzYOOy^?Qqgj+jA2&nW4R3<@MPJt<|W)#u!dX0ucw^GM10+34t^;Tk-Qtiqt{x z92f7=(rtZ`m|k^Al*NF70%4Emqa-`X1NbcG6q3~0%JN55RiR^NPBJikugI4~ne3dF+3fqJRp+`8k8aSyc(r5DwK;w)SlUDG{0 zd#`AXTT6JgCU|IF-?<+WgW4b1XFsgY|9d-@Pe|GE6Tj#uaflR?mS}}g^DoAzdEyJ@ zPkt$RT6Dr-=k4$#xyL4AhIcFO*QVrmg~F~M2N`z2;U%zB6F@DNHTeYhy0p%lBr31# zam-P=3j_P4e#m)7ZPLmAGIfovNaDWaHK91Id1wxucl9& z1dOvc2NNnk(R2%{s*Kz*{+_!}Y9fr+OtG5smKlkAi3ZqW8`)p4G`87E9=YMyChKAQ z)wjUfR^AMxpNmmw@TDUFl_`0XR?rUlRGV`FAYpHCKew|f*^|nS^TYwb?7VgVh0-g( ziS+*{Z0qC^SA~82u%j&kF`lp=+QO>DdXL`|tnjT}aNrwupD9p+W6$Ko+TbOxzLAr} zbV9V{yl6Fy%VdCCOxBkKpWGet7|h)A`DR?}J6Fg1VXJvw&p<%!`HX#~Fx2CbLQ%Il zcccEY$6if{6%kZbjdYlGFRC0}a%-g2R?@J@K~}QCQ$aN+&nD_4U-Z0dXDzQ(qGcqu zuqKgFK(vEchHqPPsZQj2uc>{_5%(i~_yVtS26DYKI;0In@b=_~rHmZ)yQsb!mt^Uz zs`v^7-LS=|mnDT4!*_XvDG&cT!l!T>274PzCOqIs@ng8`2O9MG7R@NIEjc1aFL2p3e`|CA7k74i#^kPXtyn=DZpA-mYNkVa zo5n+h+qP1}B5}(^L_#?_t-QA1BA^FV?N2K4!>>GRo_KKQA{s5kU-mO{gdWB$wc3!a z#gTk zkslU0VA4K}V!M*im!Tuv(cz@0;g@)Xbx};!BDZrFDdR!nOJtSOSuo7LNbcuWQ>-O? zR>fx7>aZNh1j5pXr9zk{hmZdYl6w!?osVCYs@M?q83dhGE)#FXaYw<9tWXn(Z}JJe z^d{90*~0Tmz>%XSM#@TvR!Jqi@gS?=wY;AqC2Qer-Dp$NJbm}3)QLKReh_YwZ z%B00!Wc~Vg+=$OvLEZT4NsrLb4IVo-nb@AwW92d=vSNCRoVT^R-PeI_3eM099%m(wElL=>YL1Y|Q5Iu3 zPvCB}2dhb|7%eF2ehh5Dh~bQc7)-_$&eG7Zl`UHZQ}7@%_aze|8Q9WVhtpM_!-KoEI0=*6$l=s^lCQ&~6xRE`r6nZr2+ z&=7)p0kCXH=ltJ4yfuTqrAg?@Xnl($An8Dma0+~Q`2GrrkRrAhcv2|tHZ_>&7Pp98 zI86fR_adL?5i|+&@sj5!NH4AyWG%4#`k05DXZa7qLK1?GUn)*z5^9;2N5o&Ie)IWK iYBRyP{LdR+iUV`|5DkuP2mZlBpd_y*moNLw?|%T<`ApmZ literal 10870 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 P@B>lOP^^%D5%PZkCib?k diff --git a/dirty-flag/etc/dirty-flag.ucls b/dirty-flag/etc/dirty-flag.ucls new file mode 100644 index 000000000..760d456f7 --- /dev/null +++ b/dirty-flag/etc/dirty-flag.ucls @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dirty-flag/pom.xml b/dirty-flag/pom.xml index aa76b5261..a50381a56 100644 --- a/dirty-flag/pom.xml +++ b/dirty-flag/pom.xml @@ -5,11 +5,11 @@ com.iluwatar java-design-patterns - 1.19.0-SNAPSHOT + 1.20.0-SNAPSHOT com.iluwatar dirty-flag - 1.19.0-SNAPSHOT + 1.20.0-SNAPSHOT dirty-flag http://maven.apache.org diff --git a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/App.java b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/App.java index dccc4756b..4d72b34da 100644 --- a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/App.java +++ b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/App.java @@ -57,7 +57,7 @@ public class App { executorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { - World world = World.getInstance(); + World world = new World(); List countries = world.fetch(); System.out.println("Our world currently has the following countries:-"); for (String country : countries) { diff --git a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/DataFetcher.java b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/DataFetcher.java index c850f044a..9123bf32d 100644 --- a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/DataFetcher.java +++ b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/DataFetcher.java @@ -15,23 +15,11 @@ import java.util.List; */ public class DataFetcher { - private static DataFetcher df; private final String filename = "world.txt"; - private long lastFetched = -1; + private long lastFetched; - private DataFetcher() { - } - - /** - * Init. - * - * @return DataFetcher instance - */ - public static DataFetcher getInstance() { - if (df == null) { - df = new DataFetcher(); - } - return df; + public DataFetcher() { + this.lastFetched = -1; } private boolean isDirty(long fileLastModified) { @@ -66,6 +54,6 @@ public class DataFetcher { return data; } - return null; + return new ArrayList(); } } diff --git a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/World.java b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/World.java index 7d3c5c0c4..d356e6581 100644 --- a/dirty-flag/src/main/java/com/iluwatar/dirtyflag/World.java +++ b/dirty-flag/src/main/java/com/iluwatar/dirtyflag/World.java @@ -12,22 +12,12 @@ import java.util.List; */ public class World { - private static World world; - private static List countries = new ArrayList(); + private List countries; + private DataFetcher df; - private World() { - } - - /** - * Init. - * - * @return World instance - */ - public static World getInstance() { - if (world == null) { - world = new World(); - } - return world; + public World() { + this.countries = new ArrayList(); + this.df = new DataFetcher(); } /** @@ -37,10 +27,9 @@ public class World { * @return List of strings */ public List fetch() { - DataFetcher df = DataFetcher.getInstance(); List data = df.fetch(); - countries = data == null ? countries : data; + countries = data.isEmpty() ? countries : data; return countries; } diff --git a/dirty-flag/src/test/java/org/dirty/flag/DirtyFlagTest.java b/dirty-flag/src/test/java/org/dirty/flag/DirtyFlagTest.java index b6cb57fa4..fc103e865 100644 --- a/dirty-flag/src/test/java/org/dirty/flag/DirtyFlagTest.java +++ b/dirty-flag/src/test/java/org/dirty/flag/DirtyFlagTest.java @@ -24,10 +24,8 @@ package org.dirty.flag; import static org.junit.jupiter.api.Assertions.assertTrue; -import java.lang.reflect.Field; import java.util.List; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import com.iluwatar.dirtyflag.DataFetcher; @@ -39,23 +37,16 @@ import com.iluwatar.dirtyflag.DataFetcher; */ public class DirtyFlagTest { - @BeforeEach - public void reset() throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { - Field instance = DataFetcher.class.getDeclaredField("df"); - instance.setAccessible(true); - instance.set(null, null); - } - @Test public void testIsDirty() { - DataFetcher df = DataFetcher.getInstance(); + DataFetcher df = new DataFetcher(); List countries = df.fetch(); assertTrue(!countries.isEmpty()); } @Test public void testIsNotDirty() { - DataFetcher df = DataFetcher.getInstance(); + DataFetcher df = new DataFetcher(); df.fetch(); List countries = df.fetch(); assertTrue(countries == null);