From 5193630b9acf8472e003848aefffe0944eac4940 Mon Sep 17 00:00:00 2001 From: Stefano Mazzocchi Date: Fri, 25 Jun 2010 07:03:16 +0000 Subject: [PATCH] updating to the latest butterfly (and remove the version number that is a pain to maintain for now) git-svn-id: http://google-refine.googlecode.com/svn/trunk@1034 7d457c2a-affb-35e4-300a-418c747d4874 --- broker/appengine/.classpath | 4 +- broker/core/.classpath | 4 +- broker/core/WEB-INF/web.xml | 5 +-- .../gridworks/broker/GridworksBroker.java | 21 +++++++--- .../gridworks/broker/GridworksBrokerImpl.java | 38 +++++++++++++----- build.xml | 18 ++------- gridworks | 5 ++- main/.classpath | 2 +- ...ources.jar => butterfly-trunk-sources.jar} | Bin 34244 -> 34354 bytes main/webapp/WEB-INF/lib/butterfly-trunk.jar | Bin 0 -> 74010 bytes .../src/com/metaweb/gridworks/Gridworks.java | 18 +++++++-- 11 files changed, 70 insertions(+), 45 deletions(-) rename main/webapp/WEB-INF/lib-src/{butterfly-trunk-r26-sources.jar => butterfly-trunk-sources.jar} (58%) create mode 100644 main/webapp/WEB-INF/lib/butterfly-trunk.jar diff --git a/broker/appengine/.classpath b/broker/appengine/.classpath index 14955e135..cdc386254 100644 --- a/broker/appengine/.classpath +++ b/broker/appengine/.classpath @@ -2,8 +2,8 @@ - - + + diff --git a/broker/core/.classpath b/broker/core/.classpath index 20ee43c61..18c5ef28a 100644 --- a/broker/core/.classpath +++ b/broker/core/.classpath @@ -1,9 +1,9 @@ - - + + diff --git a/broker/core/WEB-INF/web.xml b/broker/core/WEB-INF/web.xml index 63b0c075a..133a9f960 100644 --- a/broker/core/WEB-INF/web.xml +++ b/broker/core/WEB-INF/web.xml @@ -7,13 +7,12 @@ - Butterfly + gridworks-broker edu.mit.simile.butterfly.Butterfly - 1 - Butterfly + gridworks-broker /* diff --git a/broker/core/src/com/metaweb/gridworks/broker/GridworksBroker.java b/broker/core/src/com/metaweb/gridworks/broker/GridworksBroker.java index 9629dadce..de358cc4b 100644 --- a/broker/core/src/com/metaweb/gridworks/broker/GridworksBroker.java +++ b/broker/core/src/com/metaweb/gridworks/broker/GridworksBroker.java @@ -67,12 +67,16 @@ public abstract class GridworksBroker extends ButterflyModuleImpl { protected HttpClient httpclient; + protected boolean developmentMode; + @Override public void init(ServletConfig config) throws Exception { super.init(config); httpclient = getHttpClient(); + developmentMode = Boolean.parseBoolean(config.getInitParameter("gridworks.development")); + if (developmentMode) logger.warn("Running in development mode"); } - + @Override public void destroy() throws Exception { httpclient.getConnectionManager().shutdown(); @@ -91,14 +95,14 @@ public abstract class GridworksBroker extends ButterflyModuleImpl { try { String uid = getUserId(request); - logger.debug("uid: {}", path); + logger.debug("uid: {}", uid); String pid = getParameter(request, "pid"); - logger.debug("pid: {}", path); + logger.debug("pid: {}", pid); // NOTE: conditionals should be ordered by call frequency estimate to (slightly) improve performance // we could be using a hashtable and some classes that implement the commands, but the complexity overhead // doesn't seem to justify the marginal benefit. - + if ("get_lock".equals(path)) { getLock(response, pid); } else if ("expire_locks".equals(path)) { @@ -159,6 +163,11 @@ public abstract class GridworksBroker extends ButterflyModuleImpl { @SuppressWarnings("unchecked") protected String getUserId(HttpServletRequest request) throws Exception { + // This is useful for testing + if (developmentMode) { + return getParameter(request, "uid"); + } + String oauth = request.getHeader(DELEGATED_OAUTH_HEADER); if (oauth == null) { throw new RuntimeException("The request needs to contain the '" + DELEGATED_OAUTH_HEADER + "' header set to obtain user identity via Freebase."); @@ -188,7 +197,7 @@ public abstract class GridworksBroker extends ButterflyModuleImpl { static protected String getParameter(HttpServletRequest request, String name) throws ServletException { String param = request.getParameter(name); if (param == null) { - throw new ServletException("request must come with a '" + name + "' parameter"); + throw new RuntimeException("request must come with a '" + name + "' parameter"); } return param; } @@ -206,7 +215,7 @@ public abstract class GridworksBroker extends ButterflyModuleImpl { static protected int getInteger(HttpServletRequest request, String name) throws ServletException, JSONException { return Integer.parseInt(getParameter(request, name)); } - + static protected void respondError(HttpServletResponse response, String error) throws IOException, ServletException { if (response == null) { diff --git a/broker/core/src/com/metaweb/gridworks/broker/GridworksBrokerImpl.java b/broker/core/src/com/metaweb/gridworks/broker/GridworksBrokerImpl.java index a4fedc155..11b6fd827 100644 --- a/broker/core/src/com/metaweb/gridworks/broker/GridworksBrokerImpl.java +++ b/broker/core/src/com/metaweb/gridworks/broker/GridworksBrokerImpl.java @@ -21,6 +21,7 @@ import org.slf4j.LoggerFactory; import com.sleepycat.je.Environment; import com.sleepycat.je.EnvironmentConfig; import com.sleepycat.je.Transaction; +import com.sleepycat.persist.EntityCursor; import com.sleepycat.persist.EntityStore; import com.sleepycat.persist.PrimaryIndex; import com.sleepycat.persist.StoreConfig; @@ -40,7 +41,7 @@ public class GridworksBrokerImpl extends GridworksBroker { Timer timer; LockExpirer expirer; - + @Override public void init(ServletConfig config) throws Exception { super.init(config); @@ -49,9 +50,11 @@ public class GridworksBrokerImpl extends GridworksBroker { expirer = new LockExpirer(); timer.schedule(expirer, LOCK_EXPIRATION_CHECK_DELAY, LOCK_EXPIRATION_CHECK_DELAY); - File dataPath = new File("data"); // FIXME: data should be configurable; + String dataDir = config.getInitParameter("gridworks.data"); + if (dataDir == null) dataDir = "data"; + File dataPath = new File(dataDir); if (!dataPath.exists()) dataPath.mkdirs(); - + EnvironmentConfig envConfig = new EnvironmentConfig(); envConfig.setAllowCreate(true); envConfig.setTransactional(true); @@ -73,30 +76,43 @@ public class GridworksBrokerImpl extends GridworksBroker { if (projectStore != null) { projectStore.close(); + projectById = null; } if (lockStore != null) { lockStore.close(); + lockByProject = null; } + if (timer != null) { + timer.cancel(); + timer.purge(); + timer = null; + } + if (env != null) { - env.cleanLog(); env.close(); + env = null; } } class LockExpirer extends TimerTask { public void run() { if (lockByProject != null) { - for (Lock lock : lockByProject.entities()) { - if (lock.timestamp + LOCK_DURATION < System.currentTimeMillis()) { - try { - releaseLock(null, lock.pid, lock.uid, lock.id); - } catch (Exception e) { - logger.error("Exception while expiring lock for project '" + lock.pid + "'", e); + EntityCursor cursor = lockByProject.entities(); + try { + for (Lock lock = cursor.first(); lock != null; lock = cursor.next()) { + if (lock.timestamp + LOCK_DURATION < System.currentTimeMillis()) { + try { + releaseLock(null, lock.pid, lock.uid, lock.id); + } catch (Exception e) { + logger.error("Exception while expiring lock for project '" + lock.pid + "'", e); + } } } - } + } finally { + cursor.close(); + } } } } diff --git a/build.xml b/build.xml index 84b09a5d1..8a9041558 100644 --- a/build.xml +++ b/build.xml @@ -118,11 +118,6 @@ - - - - - @@ -178,14 +173,6 @@ - - - - - - - - @@ -194,7 +181,7 @@ - + @@ -451,7 +438,7 @@ - + @@ -537,6 +524,7 @@ + diff --git a/gridworks b/gridworks index 94ee79352..923d8dc8c 100755 --- a/gridworks +++ b/gridworks @@ -585,7 +585,7 @@ run() { fi if [ -d $GRIDWORKS_CLASSES_DIR ]; then - add_option "-Dgridworks.autoreloading=true" + add_option "-Dgridworks.autoreload=true -Dbutterfly.autoreload=true" fi if $DARWIN ; then @@ -650,7 +650,8 @@ broker_run() { fi if [ -d $GRIDWORKS_CLASSES_DIR ]; then - add_option "-Dgridworks.autoreloading=true" + add_option "-Dgridworks.autoreload=true -Dbutterfly.autoreload=true" + add_option "-Dgridworks.development=true" fi add_option "-Dgridworks.webapp=broker/core" diff --git a/main/.classpath b/main/.classpath index ae1ef41af..64deac402 100644 --- a/main/.classpath +++ b/main/.classpath @@ -3,6 +3,7 @@ + @@ -38,6 +39,5 @@ - diff --git a/main/webapp/WEB-INF/lib-src/butterfly-trunk-r26-sources.jar b/main/webapp/WEB-INF/lib-src/butterfly-trunk-sources.jar similarity index 58% rename from main/webapp/WEB-INF/lib-src/butterfly-trunk-r26-sources.jar rename to main/webapp/WEB-INF/lib-src/butterfly-trunk-sources.jar index e0e3540923db66f073dbd124e62a2bda44f872ec..dd94d5074015a663f0fccb1303419c7445723054 100644 GIT binary patch delta 12679 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 delta 12533 zcmZX4WmH{Dm+isb-QAr8cMtCF?uX#c#$AGYfS|$MgG;dB?g4@X2^yS7(%A%nL4b33h0_T8$IM#RMj< zk-gh;V$`tY)zsZ`8H0`{u43Jjk&)fw##wOQ5+fnHsNo1+CSAYvZu4pb{ZGpN@czWF z#IUbv{-7iB|Da@a2)aM;K4dmo2!i7us~d#SKd=RY_aAr-!SfH~gyhF~Z4ctZtf1?q zJ>nfT2sBuk><`HgT(@R^9dSHc;dj2t8L(ZuUR_q|XjvBy*d>UUiIdJsep|O*`SJka zhjmLk0&e&9@z{x%3?_$%B!>^KaJ#4Y@;!EPVT98@iC^D}PnmU5vA@DQ;Nfw)(4md7 zBK#>UKq0wO!KiBA)#!XVpiYm+T5)i8?@}jI{o^;UJ^uhCKoQ#5qj%s;#`3b+0I%Uo zHiI#juC7<{O@csI(-c)?u7>XPqlTs87Lmqybj8$gFwe-tY{=HwqNVDu&k0HsrS>5A z>|>?U&gudk^;B=@-|x5A2K%u?z<$tnhUd%R{6qKTy%DfxaSNR8I&{|;St3%eFWQyq zopMy5&Eo6t0K1`7SI)VL!~;qnQ$-S^xOq zyc+Xtiwwruq)z?0+ujI`&9G+l(+?Ki(IZA#?L)WTWWct~pikx&DVDjlQRxOuXf%Gy z%XFZnNE364 zdT+U<$1Yl!CugA#Rg^0n=BZCX9(calN)TtOT{G6-6Ew@e?TdzmTpUGfPou$hvZ7;M zI(8c$Y6I*(d+k{lAv2h%Pw3wkn3!K|epb|w*3~TCQC1K<*66;s3Vbv8hMC3c`xxg0 z;*ePNdc7usIKKV2vFKvQT)K)2!c@eLAL+=_ZzfB`@oDN2P&g{;z%<@$9pi0*$r5a$ ze#%Q4=SYv}amLm-){5SP5HZoFnv(nGdX{_bR%3um^EW=qJZ=@7cPg$PNN!@(Ah)NKN zEA+YE_TvH<1r^?#5-W>^I^_gX4lfOqtrghk@dnC?%sJEJ_4DPs!HzHMJiet45pmD= zyN-aaVJXgdC*9d-JAu#{)UW&71HZExZsfsfWu+Ob0`hn4`LUt}OYbi*^LrvKZJ()X z?C=MFKRAKDHJm+Po$ze>U!HUWmshJ!FPF=nFXt0H`P#l)22=&!*WvqzEPY=0R}79K z8*zo}{X&vmmftB2FP=}&KIR;g_;&-l8n8gXmUu04;IHS$Teq_SH=bNJxyxl88s~w=^q3Vw6i|2Bun~l>h5#H`!*&oln+rJUTiIe5` zuRl>i!B`HJSr<*mdr>fTV>|fz_`R?7Tp7-5_L43T15Rs$jawR~SOqtzdvK=L$Duotlnthmhalvwr`*4JXy?UE2<&oF%V)-a4d0+9rI8uq46H1 zoO>22Ln>>qMZw{Nn)fVPP8Bu>MDzjuW7&ggA+&(TkN6b~KcGomjH>ver|O*E+LDMq zR57yV!yq1;*k;lI#w(T`gRX2lZw zln+TQ=M8qtqMB9e*3um>v#~0kfA(sqMpTt>Rb^A1vng;n$e#!`Otbtp8(a*eyJyxA zk>;mm(TfEyM~@U_R^w9;F(fJA**2|aQ;WU!moB*?mHwi%P`{@z-HtSFIk;aARv+zsGamC2`Xl=zzwXo1>Bf=^ZyAlU z31{3Mp5oHN6Z?ik6w5xU4&$2uS3$CbF19fyovh=&?=q}~L1sOS${+78nM#}^MCvOP zQ~T87sbuKQ6EPFsk!4!>u9%_dU#!I{*VQy#19gi-~bNtVo13*S618NLbn5ZVxMwBmZ zi|)LHj|(~P;NllJVnR&kz2;4KylJ?`a_lSv1G91CG1X0_X5P#Y4!H)+ zJgG3tA|$6vSGIV&fea1lN}DZ+f{qG(#)jgio@ zh>!d={kFd5q%}B(-cG6YrxcguVD%fF z+$3-yIbeEOZVaezrD~_VPeyTo?e^{cH;XL)TRYCf;mbM z>^QJ;CI0JTaH&ajt=z=6m(bd6p$LcY=6IGwKFMM(i!~83RR6t64?nir!7Pae3Ihe? zS0Z(yi|V`J+d$Y|DWA+sf<1kNPq|p!p|kF)k?k-@l}nI@S?6Qd^IlhKI@M1!^=~Hw zc4iEj`HfZA{M^MBIoLJ8)DoObt7S0UH@5(&G?{4O7iFV~4`2KQnq@AWw(fj;G-AEIR@JbZW|C! zTR0|^6S{zA)s!&~7~#K)$`8@0WExYi+#FVHLalnIa0@3TQPbn;5KJl2D56PWI`C0D zGez@+k$Qj*v#KcEr!_?ICc6>FtCW}SyIWxIf~7;3qN!PQuD#es8cvyC2K%ZCyMO)O zSPbeNW^$eo)Cx^+QH*5r2p6&gS~Sp+)X>RNJ-vsTigHBSKPQ#Pdm}0FotQ$eRUS*v z5!wS`2Q`79Ml5Yp&unhKX3vhsBPospR*yS0jy-3@hv0BH%|z3%tS3sl<>0MS=s7`c zR$m290uuJ9+8&fID-;$uGb0|xs!+a3I8p*nnvi{pFb%S>`Rc8qF^fqjo()i&w7@NW z%%O6?LFCALS^0YDbsvAGE;bz4tKs#|!d3qm(UMOoAs|X~>nPo|&XpVHG>foOzPK zcFQ$B6c4dzQsS^hF%e|~Ap|m}Sf2I!IQh}4c4>ql=yJxT+X#mp%Aph3Q*(PL9tEjb z5*&DkhCGq=r@oJ!DWQ@*SmzYb;@*hK(Z;>}AGF~uiK|@jc9n7DE_s0E#P|EQ z43Uw{zkDC1wUV&Mj~tuN4^hL=Ar|H>YgINIX@<}BRG+nh3?H5J-_wkGeK4U;2PQ+<~Qei%TCKbt-02fSr*k4S-oZ&LQ&3$5r|Kj zi96vBDraOB-A0)vIW++U2=Xa9rd1X2=HYL!2W7%jlee*G+x+ZRvTX>J+%^l5+F0>M zo>n`Ced;Q<#o|!UdqZ0bR821>@U_xW&VzzxIqdi)^E?JS`ww8RH(@hYKgZwUt*l)? zG#bBclqg44z^_bUo+ZkONT%~>Rqo!yTTXwQt@t#?Vm5nK)m#Mp3c%oq__UC0qoTX* z2C5R3pVMtp=4O^SEa{=v$?3!VAu_+Wiup;NZA~RHCd8+E3PYuqklmWC4vIFs;U60~@$@RnM&i(wrD?&aCr z2N@{BZg|cyHoT&MW#y8QtzS2zgcD}%Ay{APIxI61e)(H$voLs&8+LLJh7M~lkKztJ zfw@Xs&s1FX5L;(*a+NdCxpbkYgr-^7G@x9_+&;GD?H3q!iKyl93G!)tkhKlHc|#%Lctinh)<+7DfSpXJ1FawlHiMTNWCMf%eH^NH5>2U?WEhbGyE zPial3JNdXD0U-x=e7c{yQ;q6ERWoTdvxp(m^>*#wW)X4E@Eb>C7>=F@v_mJO6D*%G zK3DEm_BbB!ulFHO7V$#Qp;>xG$)E_bz55lO&$SWD*|qrT2L=pyiI|<_=u~zveNSdm zuEdIQFhV{KQ1qD@1rH&JU>jsp!NvWGHM|1GpLz;jXVKSStidoEl`BILWNd zR>aatH!z$DCZY3wtDH=`u%X@$oi3~L(7{$_^KPKG_Aq%U@WSJ#BKOZEfg^mk?VkGb zI}3>o?K8Pilk;v`4<|=-;&ro54AW+rvnzx`UDu5=npY+H$`oNyKnQXjodiK&!va=l zurYNnDbSygcmCVSu7FJ!e)ENL6hTkOYNxKCAJ6gl+rgyHfZwte)#S!-gaseFPcU9V zzx0w1$%Qym9yi<6XMY_nKel~&qk%r(ueU6%hzWu12Rm9g5^*YKT$+dug75lyU~M!6yfvrcXsm&IKR1ln$AYO@)Hp2JaL5`6Ecb$ z4NZ*W4VwAtlZrz*0O!cTL4V0PIc85?7pTs3D8Z8AxHgRBy0(ALJjrfDu?D3uK1EKZ zOPl=VgbaM$#j$kz_8BIc&Pc!xvK6m1Q^fCjNZ-cfVAhjnF_C274oNnMO)TNR6NL6b{9bFFeFg7hjSITIZEqk9+M zgwH&^rL2x^Kz1``?Cmgpz8qBe5kMAwK{$Y~Q85^#N^vR6N)$*H3opqB(<<3BpFt!e z`CeQeN4_TTGZxKS*9xMyzhM8#c1(-bk9R62DsowKr{})sNpc!(SS(}GxJrFd1>w?( zKKlI$j$nPL@&uX+#leMzXaX)y={DeD;e{;%ozQrsU`4c~HONI?rMlwQ3rMMWh@cxT z-S3duUo{I%ZMSZ~e8b5>b4fXV6(%O?jw`JT{t_?oP**R;&d)mzV}w1hcQMwo$9URv*${-S!UocKiVozE&I5SY=?*F|YggXaJB_sYz0$iclK zku@|~p19)i9+$N?P05IvAJ7JQUWFuZuO?Ya1v|&$l=i*^#y^s1vZ5h9NZJh*<^yOD z*^mf!o8w~eW|QsGt&YGhC&yFO@Jw3Da>=WF)>bE_R^<8VjL2EC1D+E^hs1o^9d-Sc zz074mq88^TuLG8xja$9%^Xd29t6S*3--9qKYIu026U@7LU-nq=oq!DttV}32B-J9U z_}+4{R`?&#hF{hhpOf(W?kwEA9*2ZrnAXRXT>1$ewAl|{f=wB znc(t7E=FOSE43Y_z)ez!YZxB31wMiVO=FXyzvzn-!)Lr3<t5*?COkVbABXY8CG6WIwAu1?o3fAIXu>;+F~T zkh)0{Bv)DvKnxrD)9_Hb=3kA1&eku)#R3QH?7`QW-vF_fy$Hjso}H4>P^Z)rg`c@*Ec4ajbg?1U2BRmf>bX z{N(TEVhYq3CSE*if}q`vX|XopjMPq6Zo)KcviFHSN1vDnN8%gB+2ZO!rZnMMO6W$U ze56MXM~ynEk@!IUGS;Xz<&R(-3n>kScd3Llv}zMgSaN);>r|iYw8Ox->bkRSPxd9m z?)@cvANTs#e9L53a2Y_BSyxVKSa*bTX#x=E*dVIwBDei!2C~S&w`MD&9T-qRQ5oy~eun>E}T%^DDkCaN_%ut@X0`CuhJW@F$DN4MtusXE)mqnF2W5P_e2 zT^}Nv7{br6;kVdrTf3yazaPdlNd;kH>qUn{j-+)j5!ycs z_N&h4t70DI8lACDP{?`*a@QZB$lIwVD6X5Q+oZqyP+k`ZEv?pO{f&G1EyTr1%-ZBE zTxlD;owYyE+F^9gP@R&RrUk$88+{RTu_ajJn}T6hSk0TZ0XULxmPn}GDGEA;Eg5TP zQ1Q4iE*JP!f{M7=KjPuvlqA}#gzIoK;dYJ=s7P54Fb-Z$NBAs`D+!z5tksPtI^FPn z(}-x3ZHmWE?(!=>DhR_+hQZKg6>2(nz9*Z)hkn-sbe*igxtQq7H4~M;siJgjr2C+$ z<&kwt%fh~hf)JQuO&N9`KTNqylUH&vz^iR^&Yk5c0k+6E$HJMyhWzjb6_+^ATVJc! z0-J@5o>P)nY#gpCsESaD=?beH!f=27#EW1~_IAJ_18R@*QWM?O{1He>JFDSj+i zdU7ZP7!_b)Lo{oks@D8k+U&Xgbzl=G_pHFfhKGQbUKkCDaX`ji-{BBCd8Z$#tg^pZ z|9lQZn#1P)Azp5|etfLP8p@dwfyup(GsBOD6_M512jL9BERl2zAR|PUwN8bZ z4QLR+Jnzb|iL4aX+`lvV*u+(M;T#yNTSO)XL>r_#q#+DPiE6hmN?I{uvvYCc7H13Q zuiqfjD0ty@%J=z1V9TcW?Jt_!Gw@GYEOP{ALM;sM=c@VgRA~6H+LUwlI{^dO4?^|@ zDr3^!$6rlkP>dNQ7QH`H4Y^f8SUc%M3{)_sYh{FeRdseQm%2wAbEobdWg{+)1vk6_ zIN|-B#>S8*_rQhDT z_X&X^Q&@dya7@|ckG;Jrh-BYe;@UdGfXo)BX`XknzOsjKBf}yFc4v4Q8&kr(A8@|R z?7PZufHR#mah}q333Q{Z6$B=+=*8#Xu9^{W3)`KHz3&G;X+?xZ4@gZux6k&j4H4*i z!Jx;WuE`SlE_|t)z)4HZXtj&V?)@?`zdMdp zc{>n!aJ#y)D?+I&p$Sew_1T^!N-58)eV_&}T=izBLJYTCuEz@uPT z?-VDqfW&(geJ)V;3WcQnYFptH2^_d0RNSETN28JIJ~fiYL|l=QeGy>{oI<%T0QC{x zJQtrfQk-0sTC+-aqkh`kcb3B`rW3crVn`qHaw36lE4VeVdT9S`MJfDI@tmE8-R~!A z9=PHM#EnExiSwSOW?EXqEO8<)7nvCm1%Z`5mc%SGwPDe|L@eT5bK38fI-qO@uRy8R zFBm)F7qcse`(Q-pX=TT6?uA%j_u@kj?7})bF)ZSNdDb5OvyiDa{#m2ZI@T(LfimjT zG!q)v@EO#{1J-uE!k?tHr)~up4vk|7&*tX#g{8Bkblw}{s?+6f1`?vAh_y=qB!L~;68wjbbJpr_T3tDWiPIlWEP~DOD?(87>0j^9kXV1z=2MC z!OwLHr`yOA`}GvO`%`N{9?vfx5xoe(x6_UR5(T_1qLUq;*1}805dbbS=tCon?NaG! zWp*h!huHIGNb7B*&mA7uCGW}j-y*%d(^gW*GJH@FO7mkmPdk9R<j>aVvL*!xcTY!6M1l>Z=#pW{qup}%lotM zTerTCFUv1Exo0Fsox)2(0#Fwo>$0fybRy%z#3|Y}ct2_RnS6kBwijXrh>05Dpufq! zk%9fTyAfxO>zCSke56veT7Lrb5L~P1o|1fO*tsP8PvQni8ysplA)U=GwXP~k_k<^| zk^q$DU(%J_I03$VX^5Yb5Q?Qp{cy_LdJ44jn(9R}UW4O^iw9&j)-bI-D-nq^gxbE_?==KzV;^m$Lk-Ay_~&HXBx$797S2R)>zAzL2;{# z!eun*Qk2br=K(~$^^mOIHiSMWTY#cS$&oNTzuL7PbMbzls|Mdp>E`4S!saBGOa$!Q z4LLQGLlv_xsU4-=NdII)`?V^v@drGg9KJ&Q&2i#0^+%nQuwJ33FBtv9Hrd(C874M8 zvb6H9&8FYue>jMMKA#8Q%Dju$Y1j~P}Abuxq z{!C)dmXeE0=rdW7`jNjLC}LGhml6;saqxnoE>na{#F+587Hts}7DF1ct=Wu>>gb4M zS5q;s-#4}(L6I(A1)sZDwmJ?A_nWLgTfV`_t7=KpZP2uqR}s}8O0JzZN}8?8e>u#$ zcC}FlDqKS}j-IZpbhMvQVfZAE0V8KJ+#eDdUAcqYlb+1*ezq+q@Oi8pFmHEH<=cxp)sMm*hh zU_Yst-~IE&QFy}vqH?D{i}~?J`_znn%NI9g{k!Gw3ir%{WFo=>Yim{yMDny2Eb=w8 zawHK>xSg;oY;1SPws)tG=u4?X}7}@3ie;QeClk{?&NhI8*7%3nD@I@5x;aYTeq;;ej=Km>SQLGo;nyzqlcQ8 z5||88S1$Q@EO*6aTSIT>;~ir`n)3Sx?!?_m^bYQlA{9CUZ9?Bn47LSRewVhw7?8Qd z?F&5LjI=a9B5b`%4NPlkJJJ9TJ#u#4Jsy5p%Q}lNu1oR#v$%i=G4Jq{wA?`u2RT{i zVL1iefV{gfo|lE7F`k(xYQMe)ZCTNT!60`MiU*G=;B$X<_~Q~!zdS&O$VK7lEUg$l zok%bZf|GOT$6|d~7Q4KzCu&zEP&`yxBI5CG!xV@O?k{JpTp%05Hp)>;k}1q9kf;VF zj0m$b<#HWf^|wvkFM?M+b9c7cy_6}xJr!PlnJrw0N=$S;yD~ewy1I2UQ%%&FeEyJ) z9AP?0s8wDj_tv;CU%pVT-drO+eigBNw_7wDQ*k9oDMFlI`vEZPR@@*4SXixZ$<>dS z7oBHU>mVi?TT^ZErWvsqh^%RA!oL!R`Wm+vNR=0Yt)d(>dD6LCXTw#?i{Cj@ftr8% zKqN+yJl{h#@~NBH&2b?Mn+2M3Pu?om5!fj+)$?iWb-f#%^(g0Y@yJrug@_W8;hATyJZAltfdf@m)mm+lw1ik zX)Dmp;oBtdMPh-nt`?Du=pp4`P%8A7$?gz1WLHs)cJC20g;LLZgNb2B3=cJA#6F3R z8XAh}Ci=q6{)!Y;enZP^j`0I8jdIajVxBr#!nJz2B#uYe5RZ}$V5h>{g2nnk8aW?o zq}g-zf$b{w^xz(cty2HR!gt}&5k+|*?=Z#*%9QBd#Vr#`8W+isqsSnP5FIJ9z1h(P zOR|Y|s198|wK80Zl8a(3bHAEA%$Ha-Ac{tjcm0p<3Kb9HPk zbe(WZI3-cPI!_#E^|vr%Ze}4Oc~1t_?!#W#`tDJX`6cUJ)_gX!Q#|H<;JdK8gJ+^G z)UqNc_t>G-Hk&>J-JLH#jr}lO57v3~?P_tb`PEHBcbKu&(2FZ_On413kci+|=1gfA zV#3&x7rnCwEz{?{5jn5aWu&(v6yAMyV$G@8VF?NvZk{p)_Hvh#+}GE>7JPElvLM?sHRjw zC@c#p@b=;(U;?>qX#--vB33zyo6@3sJd9uA_3|8Gtg>^L?S&S=!yr$ri$KJx$V)t$ z_7$uYo5_vpt$ln>Jvl+6TyIO~GMQ!3YHDvWHg1?ecM7N&k5o2BSBO;^&oySC6Xu3V z!ESfU*x%>~l3oeS-|5f^o?>sWil3aCC>nKc(ned6;J(;gx{Mzhaw6Q~XDM>?MX=|Q zB7kZZP!@q#Mj=F_?rP({xkD2nT@hr8x+JN$>2jf#Y(VnaR-6_kM+x%T$oYpw}JRkC+c_*RqLLl_#)CjH;nGvio^Tc0xz3Iz(@j{i0^`?&2_wFhtX{u0?KZzjw01ary zE}yR3sBtuH0dxFe07Iyo+`VK!CrY`o{z-ez;{LMX!n|fVxZM7eNR@e-T{u_X^EpP| z*fR4))vB|c9962+&%dxWf0Zph$p?zT93PUmwm=^8P}>B@2>8?Xo+jLfmLpx}{-kFEUtY zgp~jGF)e55(fncTS!7%9w4YLe4z!e4M2n?Vb&14)A87N$wl6u}>Hjm62^LFG3b1YY*Nfx3uEXUC1iTvqc~dOhw45qro|-$LNa- z91y2I@IXa#SO2EnHB#?@-8`FzdSun7dq`qXDoDvyX;N19R<13+3l$b#uWBg?Ke`cO zO%7g0ROO@Yf$^zGf{HkoAW%3YLLXjXH;B>RKfSc9g!}c*W9LI~n4pEIi^$+`O1A0% z#hj$7sWdtwq9PAhEXLJ>^uzO3e}KS{fLq>@u_j4y;Jpz}g(UuC(`q}JZUQMN-$on126?Tfi@}bNhB9_x{dDrOqNEyU{yv-@0+5^;ti@ojhxR6n zhZUIIWd5vH`H6yLM)Vp|D3>UH>r~&_(f|U!KL5dnlBQI$=evrkJU?VOlYRjBz}{BL zlBzs)rP-o>A{&O=?+!8uDvuG*PG>-mEDjDK-qe9qvhb8&nYi&|<`TWyjG0&LG2zzJ zo2%=9)`ULBb=^AkC_o?~Lqt+IbYkJGpprtMY$;Hgp`?*$SxLCj;q@~z#;~3=&LuUp zNRHgWq^(8WA!Gjgj`bE77pcx?IL+N7iO3TNsAVUiaY!2h{eqi%)ojyM*^{BjRMU;b zRi5`1sDtpO;;L5@jp(pg{>UxokL>4s6i+6={)q_t?|~R3?RMOYyw17p4+qD4r_osw*+b?487W;ZUXe%c!@k;hJVwS_ zym~Wr>56Y(Pve-5wa`q_*Jm*Ab-=JpH^e+jzQAME`sP>?9-nY@h9cPSyK4rX5sFj+ zj_iaKd6RZ^+BKNxSL2!1#?>|n_i=UA%j`slol@m`N#2|OP3>5y{^TC%jEaZCss%Vmd^m0Im~iblti+? zS0Jg9zWJh-@1W}w&2n5AS9}rGJDw^5qqt9dS0n}-so2LzRXM2EmW$SyYV%OVliCJ6 zB^jqwW2&9hodr%M9}2yY(NDzY<2_L4BPl6ZR4PLSBAmlK*p=G4H6`QANja~WquGX` zCu`%{gGDg+p`ODt^AP^NPZe$`hIf_Y6I(b$Js$Xi>|1tRx= z_1}pePU_;U@zY{wVH$e4Z2HbEg0COooT$Ww_H23ERjhO4$R0Sc&Ui^W_H~6a0c@ya zW(Kli5zC5aBL8y@VrkAd$n)et!@gdF@UQqp-~jgz-g?EWYT7V=uv^5p23{TZzxY+v z+yFLIg@k#v6NWYn7)QYUxj|pef;?`VBT0}TkOMpjM4v1QN!;LTT?Y9lfy!$#2D>9T zxc_)I5W498CH`ddc7y+0{SS`t`u$qvuP{3~G=S^>D6^AC0yzJXMneEZigmBPmKN@8 zD)JDJ*iio^>i*NptNFjzYd8N{=%5p^*;o80!qL|4|Bp(x1&BoM{ul3R>uBp>`7gIu z{r10-6a14K^d~tjM6wtpQSt_W@K2K`01>3&e_205prZV%%Vg0&BFOyzBE169{|SkI zwQl^El?)O-`CA~|Kg{YYLj?I+f;O2n2#)G?Gykm%2Z8ARyB!dyC`cbNIS7&g?SD4s z@2e*{Fo*~;lkSzGWpVxA-2Zt6{VQ1`+iL{%>!S#r`F{t!&W~X3L^G8(Gzb)p1p=}B zD`<-QZxFd4Y_d-<>VIY|IX;*O(na7u3|jI=@auN{ow($aSH?u`FT)yw^PkyEmJK0- z{G$EWYOjO%ukwEmyJ~-%9P)MUR$g1+`B(W%gTFz$A*6pci!gLR&YN(jf$a z82{xfXZ-iVR&#te&)X9}@ g#Q!?f*8<7YVMLI~UVrI!FT`ZxaCBI>fIq?i51pVFyZ`_I diff --git a/main/webapp/WEB-INF/lib/butterfly-trunk.jar b/main/webapp/WEB-INF/lib/butterfly-trunk.jar new file mode 100644 index 0000000000000000000000000000000000000000..765092c09c87db5f27e727f20922c1f671e71263 GIT binary patch literal 74010 zcma&MV{m3sv@IIjwr!_lCmq|)7rSG2Y@=h_M#r{o`-|=5b-i=XdFQ@cb?WZgt7`uk zqt={zjWx&ItG1FXI0PIB2n+}aeb*{K$bY+FK_EcnCDcS1r4=NZzs5m8l>QeK288Y( zR9m>#-QXYG`rp9#H~tGMFQOnVDWR&yBrka{KRF>M%g8i`D9cDUJvq~;!m`M|d*n1J zhW3l$r`+^Ub&yC26Kvw@;$r4xZtM9!(1`yhnv0pUi}QaY|Nj#u`=7{eX0{Fh zE0_Ooau^Vpe+yRy$pb|L1_I*u?=8{&Pkhn;jGls(31DmN?EFVnUlCmdLtr6=soF*t zR6?oVB%lRGb_rS@7M3d`ele~nba3SIst#f8imIbA=7ZiB1x@|~^o#f)^LE-+B!tF{ zJE_h2I_uxvc7J(tQVXKvVM{WgbYO3S7~EvSiXzzh7Lm-qeve#jL9J13MlzzrQy129 zv=Ly@bw%tbg*VF1VCgWKO@Ved>xCXcI_I&us{1&M;~(oV@{7AkpQsse(^RViLo(ZHdysL{JniA{B5A1A z_~*M$Q=|SMSOwJ8eEm$Y+~xq8*cn8w3j1WX1+KczAcM8cIA!STn-CXmh{adI&-b8N z1XuKxUqSh+@JXY4%)w~wE?$GKkR~(_!Pu*85j3Y+)WENvF)rrvZ>%l-SI^xSV+OEm z%GCFKn_d&G&a{!D)cbfH2~Juu&ZR?vB`ic=rfLIT_kJTq4;@@*Y8a2Ag?k+JL<(5| zSe1(Ml#C*)Y#|8cGG;>#iI|X*ZO!k%HGau6@@lrfB|f|bvpcL3Dbg)>3ING>=`+*` z)oe%_zrKr(W7OkV#}k}qp)8dn*Ow7uj-%v~26>JN@(juhb=yE1jp@L2sLDtuOUud# zbpfH?jHem^c$`ZJEuwGFe{IbF(A(sQC{Gl-7p%In!1A4I5jd6qs2a^{QK4_*#pU6GQDOQZc=#0;?x>qCyz=L_|y#>fa{($$(Pui{ zdH9C~r|YdhL#HTukX6lVGa#Fdv%9!uX<){I%K<`_q+?;Ke|M@ZX;aBFV|p?T-IAgn*G9lHc30DV$6$nBjpL}lJUXVnBT6!RT=IT-Jx5PK z23|v2B-&*2^kN6=1%bW)jidcq-W)CN-%uev4UKW0tZ`?)In9-9bo?IIDNXBb6}7oy z?pbs?g~igY4lFh?gja-T-nYQD+eQA*BK#j};C-baZGr>=>460SVfnvPgPN0-g@u{Z z|5|;GcV~2Uj4!T^vy!uQ(Y%lpO*oA8CMytnYhn^cHPwYXOFKs7UrC!qx-A`M?%<2q zf;XSPb$upZ(0c++Y%UQFYTvL~q7Q5qe+@rJPnQ+$w`In2fkLw{Tx>bd2%NlkJ6}l) zeVqh3gK+IL;u3+9rc8@r7!a%m9$*>SG ztm9V>K5eYu45G!+LtrTwK|l@kSSxv&vVJtM1ak!jDI8C=Nyw z6yCm}8}e{<{&OA3;+qLAYT_{!P(ep$EMniINo57UP(}!$a(#Mojhb?-mF>m z4RbCb0_8eTd{_=X$uT?4t1dx3*%b4YDMh6k)jHf2Rdtn&gu{AB+rM57qG4>C;as@Y zVB_$WwRwbu$(r(1kZRMlGA;NUKXR%M^K5<*w72iEjjc9V z&d~U+Le;ytHAogKrLm}&CpUr7C-79>8r+b~`;_wuKqF+UPFu|jNgz?}Wf@kpA}yB8qJJhoB5SY61_FfByfBhAJ+j!%lGkIM$HL3#hi30@~iVE zFI3U^E&Kka?Pm*{d$lmxIVTOZETne-!(r}xZ{Rbk2e$0YUwh7n%Tnq=_?w86`pM?I z8K>Sa13aqec6L}hf zRgRbx+|AuSrDZetwkDaS#B;SXUUk`k%sT_;GSOi8{nGeBMJ3YTp?J5>ixGx-(jRDq z`1#xFX$_ZMprCzy@5RgUwV(Cd1thLU557E z3wNtnh50Qi{(+A_wk-M0#prDHli#=-i_l{&WJt4iS3Ocq;y3lCj>k;~zBd~6mO&Ay z{|ao=x8eWp0IoC>Rkyq#Ae`PHATqG5#pVPh$Ehr>U?+Y2vS8i8rCpn+n+%vzwcL&5>%CceNP4Ljl9jYxOsp!$>N-P0I zCRR3VxDm`Ydb+Hnk60v8R$=c4xOzCV^ zAA{13>2M{o-;u+P&SFDZru^%hETQGzu2nn<2;9^sVfeb_NUi{&tIzA9mXGTX1LAV# zTr^n_r8uBA`-uXtAmjuow(CeLz?Q9nO4|TkfobFi2^u2zblf2NoYsA3IeNNBhQRK? zwN20W3y?g0b7{|X>+YwINfB%3GS$7}_n)y0p5Mb1VQ-+OUd02M1M;XP_6IiBR8#!s zK)I%{G&uIly_A%n&SFit*?|WqQ`wx}^AFkw)Vv(=<%$}$%ccxOR?#8ntW(L_Y*Sx6 z3k-2%9LxRMYy%@y5GNtEapHt`$=6R8w3_=49R`6 z2>{6_`m1B4iIrM$4@##W-v5}4mpC@z{)IQTn8^^-=PFBW6{#Mx1Pnb`l0{seaZ#_& z5-79`gYNYrO{sTWooFGzGFU}(a)|FY?A3dSNfi8A+oPu|$>ilYVIHG`V}?MIZ3wqw zzNOi*kme6f&%mz$)c=_qjlRjaMJzimm-CcOoTCcZ;e*d_Q-Qp>N^Bo?Bx5CRSxSEVgUdYG2#AsmbOVuFb`Lg_lghL zBj;s}eD(H#h#97%0=NZbvXoiDGieiQ^EP{?(_WAdq)6cF92kQNTFL7dNf@NPnX^i? z^KvHOqV}~s-&kZ5)POTrnc-R2IYefo+1Vm!!oWCS(^WY0f+^L${fw$AY_qqM=Wk$W zAI{en<{;u}P{h67!xv3i zS3bIC?grW%s;FshfBvB5XRU~m<>W*+sUQCNcdhp{r;wHaPOO8G+q_VB>ZMIJWpOe` z{XnTpuB8Yv#bgZaH2w%xQRI*@YAE`GN8L4M?%2|aA&H5Ii zIrKchcxS(gb6TezY!RQ`HouNI`CxLnq&VSa^JacHe6HHH&ed3pKUv-^o`Vw>?OZQI zG7R!mYISnbRJA|iD9MM#Np(x+Id&@$voNhrB5o>0$3Q6DV|m{|Jve@ zmNFU3P^pk_J-kXo8>~qbJ4?~3(d}2|2MI9> z9`0?t+l%kC{WI?;PIIvj@;a>nx1$W7_QV>bS#>#RSJ+V5b1QHUXc)QM^uyhK{XRFg zB(ar#(La!9yzQjID`J|i7yI+fXOcK=;<5mY3A}aOO^NI_>43jsS(f89%3zJ*DE|8) z*`f?Luov`NGa(f~x@>H>1|RL`OQtOmcToyF<5@^DQ>zM&kM-h?Ga`;fM&ywZ0HMb1 zqVdwaQ?Bgu0yv3BfvZ)&a3HoSzbnwbrD3XgstGb{Ii9P4=*l;e4;M8L+PIomL(wvZ z%LEX#JH7Mw0Y!iBcH?k)SaOfM4~UvdR6HX5qQ0Lxt+N~etJ1KBi@AOVtBj!NhH|p_ zHJwVdp|`G}7(_7q7;u>C9x>!II7Knj{-8@5oD@BEJ9ZqLN@WsLEqxj$ybgMH>Cn{U z`mezJaqZcimwfw!@<5qtfb~NZG@ruOhe5d31l=v$ca1H7oqmx5{CjsE370034ce=R zmQ3DZe0~GA|&srMpmeh-ZWIG;{iK8zhe>vDtd4TPj=#+$(O_@ z#i~4FC6iQ?Njy5 zwLd}oGiOMgahTK?*wYcaO7>zqhQmPa*msWiBB%kcB*mKX!~BDyq#%|p?G|TGsE^=q z!M%xHcn7>xz(qWG@Z$1!%>*qw!bYQN#!SW~2>BrX-_qYqCr4MYb+H3T<^oh$HkQ#C zF%DL=8K(T+wlL88(-ym!;r-}Z1NA4J?6upiD7E{GNQH#q};tw#!PXQJy#jx#AQ&f)U-aF=(fg-7W=# z$Ixxb6X1F&ci0X345uPQOn5v}N2MRNAjE;%jfGHQQvUaJ5S0V^M6@MpSVDYg_86CF zhj3n^@k0H@5gcQCGB*Q((&*!*(^=76HG#mx!ZakB=@X;7j#;Y;X_ zJP{%bAJUxDd58+68`BbFeWboX{xN)krQ%;4+j{_Klkb!&tEU58BZzgBUG470@qYed zl=9s5&H0SM3bMTt5aQGZ&9CuBydb>+=U_qSdS${>^2{GeC$i^YG1S{>~ z?Q>&^D4ToeX_1wH>X=7~se02nwo!9sFI0(ii9ARqD(ssGHfX)mL;?1d&7<2@>tC|0 zl>>WO(*Bb~)ahfcOe;|~b}O92XsD#SY^nGjZKZY%Vo6`LjSg9xRX1d#^nY1Ou}c1#z8^IsRrDAvhKY3q_Zy1(SPUsPzzmXxwIi z)P^=T+f+{2ykgjjHY$&`O-C`OH3Z@|0M7LU^#}Qc66VOjJ`hr84jV~?Ck7(Yp^!GK zL)i8SQfH3t^B#p64K*OA^xbXu>O%Va9iOGbb%Hu}*a!M!>O%)Ke|(^ya^7bQEMWT7 zPo$1McqVYdn941gF&Q#(Bt`?Cid&8gq>bic5iRblGA(Rs3OUx$aEgrMg;sN6?uJ#s~#_wkIfef+bpr+ zFIciJI_o7&Sk3e@Co)5{+Vtuu#MHzExC2`jGyJ zi9dd9?$kWg$sKqUzKyt$>4I)UmA*q$LYwvEx|JuAq|MwpgMQh?c7^o^={Uc7eq}>^ zSKoRR@tmoV+zY|vHI{E?iD)6PWssIM^mu{F_7{n2R5O=o+ z^fz`m8#fW=9>N_pzm(-Wa;nh5Og$%>mHBeK0z#^}L(I<{i%VXr;*(Hx`VpAl-!89) z9}YON5W}*ejExDv8gH<~D062j$+4?qSMdtl)^EeCY}K1 z!-+|I`b(vsH~w%XXpZ}nljGKos)%i4=FD~0(x${KrhEu84NC9wJ3;87e*^1z-W7Mq z%>nacS9*gKQrRrseos}OyzVM2su=6}?AM^f1l_P205%j4JR8`hKnt$Jz^W;Qd-ENI zSDD#SY5W?yh?m#FeFdemb#=Q8@SL}wU~rz*g`q|TJY!n2QL9-Th2fW~&=o=8z&wH# zE6Kk@>SF4wEjtWW*eBJzmsN3Nnv^$PYF4rLDOSj3PI;S4gDr)0d91@&uO8l1cvMP+ zaOk50ck1c9lj;)vndEczbghMjlH>%^4i3utf18bYaJ+erC$D%oeqI89rnXd$Bb{Y! zQAMeo5lE>ApoYT90Q6m(JXYK&h~gr2R1fqy`%Kf%`=?wJB&FmrG6`*BN$7%*WhwO) zZ}_a?vPSDAte!`e7lilf_XDDe8ONWlhs)1uG7@A$ykMdRXPm6qz_>$%i%A4T60*?M z19jN!V=Is8coh5o0?2LZXNEcyp^n&m<7-sm_1X;yna2XAo%~~U!b?K5{1Pbc>7)Mb zVf$aouUdYxivHY1SnPyr#j~yVMjnYe`xQwTCRp4=R{l2l5zHJGW!@2`3jyVYK>q{r z>yPH2(}sJE>R5;Zu3Jh0M8B5UZacktkKeN)y5sG6eohAwLh>M+z3-u{k2f_ zw@c?xT#o+z+{|W$JeYxwS;#E?%FDyv8miBnA?;0cuf%%X$!}28;b|K)K zv>`&Wby$%(lzz!14WnpAS;EB!)Zozs)=|M$=8aD78CPIwgyBQZ64tbP+kY{t;0rM3|NxVP<77wJcC=Dq{u8gZ0)B}v8g{jP4(6_eQ$cGkFyJPb)*5TxsEkbo_ry)NFV1k{*+`H5N7LY)2hHSy2q=qP z%NYI95_8#}iNORLg?|XRU=@vfrN1oX6Ie|@7T>eml+ScYlgfrBmuyUtE^qVCRaHtt zANH@y*GhPAg(^V1LWi*Ai)YKcQr`0;Wi~ zqvoo{TNutMHgghn`pf%=UE%<)QLiuIR;HDaq?5bxH<=W6AQw-dv1kI;^{|4lztqwA zUsW$L=Gz5t6Wp0Az_MfdUnqKBtfeC6|s z#CDA*8)xx(D~_8@a@dt=)6Kym-2d&6(#;CEXYTeM?2xv zUf~PWlER5uKh|MstzS)r$i`&adoY^BCCJYjr(0ntSQrU2doj{e)$*vqzzCnz-te6;yiGiudvY$+G z7_X@k;w>lbUOAf%r&iOucp~5G!zMpBz%+?#ZTj-N$;Z@s_|#whXyoDVAIZ9Y{bkFL>X|P zy7eO;Hrgo_+wzJ=6+Sj_NVnHD5aV!}p-DEN;arkx|D=vYlU`f2Z3;yuW(u!%e3aR; zynBi7Sl<4+%747kZo??T!&JF{F3i z)QM#lvTM3!Khi&viQQ~X8437&TPv^U!ml_w*N{@V+;WB1o5$y1z@hPuOtIpRl8QxH zy2gSjI~b6o<}>xXBwFEv$S$z1*Y78=T*GtcoGUB+$jw=ZnLtfwosH0D!>^Dw2kLb+ zwzKlDzXDI;-3I-!jW%9b@+AK`;{Tie<%KYS`xs1j6nwLm&vx99nshy7Vt&)xWr;#(H{zJsocg$xN*7mrBpL5AZX8TAB4e z6+fAo+ft`tFifFs(a3(Psg-;m0GS{CRDC~@2}0eE#D6@71VNwJX!?$@rERo zTQTQH-=p=PPNFHLjq<~@2j0M#GC73SNJ`<1j4n>LN$H93MM7jCF zO9Rbba0Gh~7+J73gq5vh7cOKD1#|y8p$WmcVl=8(Z^YXgSwG>VA&Kx|-F_#>Y$vlI zgSp`BWf14+#6QS%Sdg}e!C)oSgtAvX=?>a#mJ|e)qh&$3ZI6;g)ueLj>;MUKIb~Uf z^{f(u6af~xf-0KG>IhC`c@yS3$av@YA4Y^QiXN?|9L~!yt9h;<0-z3CctD+@6usmq zD)aYp-?iv{0b5BZI3LXsx{#5h#__uwy1GH2ma^|+7Ae?gGORA4JQMe3BFLT-7K|Hh zSP+}b-#pbloiMF1yq!_8;ow?*k)tq{H~^u!R?&h04lE>li{*SqN}WY|12drbxp!gP zY}s;!x1V>uLp{T!52G|0^E)1A7_9P75F^=bXlP%4t>aV~?lRNJ!Fm~_9Yl@6V| zPSr2DF!fIqmM>*gEcU+U3W=4+P(1~CU;M*Y%4G_r;tG1TUsZtKKtNOpR}}2%)KG8S zm`E-@p-l!)bnV!Wx%8QIIp+51j4K^>ic%wyCGI|RokqP%NhUtsh*R1`yL$7EWdd1S z12TGJ@R1*H;4b6H5lVaj+Lx$8_Q-mkl*HvpO^ve`5@3komy|pi=t$-USVwUnfDuBu zvR!mhdKtE+S<6F(32Hia$Y<(E>n6#@M`UUo7gm9mRGw4_Q#sBuB~*h)UL;MmmA^T| zREBTQ%o36XITL)J0MpW`fVK~UF`t9o>_$2D5SN!Eu?10sZ64yf(t;z5o^ov+LsDSG zNvP!UQ;y?j6{c7v)EK|vbmN?74i@y!zD~hRi@;lk3`#k)PJm9AM;f3xW5c+d-iz?F zoz14%rW$qZB4@Na=S=HHGO!^-5|GvYtK2oirn*sKgzRKG2bz`s;!vYL{0)~W*Cu;R zt?lGsbTNLKi5i-9W39$D_GR!&rFQ;(a+P-mhtfG}TD-vuA*d6~AlDTXMHf>f3(Sv) zI$o=xTX;_hsj@_XX(O0CF9KgD}Fjc>#eFa^FmlNP(l zs90P#4RdKr9C`ACXL;tCKaAkw$FjQQH%vK7H(|^B)o$Qv!=gm(Q9}Eldd@BcHJMF zO@Yt$pnRg;2ai-Zku{MJRWWj6&kF54)r@RAcC#wKW;By4>+W*h>qj|0NG8y-N{%Ad1;)OV)PW_5UaU>4tf=dME5vu+VgRub5n$sA<4bvq|t zd0TxO^qJaN1mm505`xX{k^NR+@^(ofT1PzhXiBj`S>DkUVQqqwceN#E1yZ1oW$6DF+- z;Gs+d`MZJL__nEG%VmRz3Eg_;AOEQdG838lhn*wyhFU|4KPkoM$lrz-9@A#glgPh| z2DcOgy!n!E{7MGs^LY~PGog+JrEBGQLcYJUw=;iEv1r7;Uk;%3tcS4^eg;iTyQ}k{ zp|vvU2Y5gyGW*B*8#kfC$6iIYUkr9i2UCX0dlD5BzSEQ$uQA*^L%n(>_%_+Z$!=|N z;ICyR>n_F$fD-k0wk1u(#T%gOdnY~s$-7d*4)%EEc*@(DsNUpx2@cj(FUq&eZv#CR ze_*Y(R6sS|;15Gw0xoeuy}gzNUaHJja;(r=7*&>5FIGA8WR~v4MtGlW^VHOh4NlnP z%kQu_muFIjb&`fAbTX%^tM`p1O3BLXYT~Mia(J_7c`GbWZ}KJ1$0L#W4&%i_W6CRT zM!<=siPpy~=Lrz1o^G!U zbzK;&soDowrhn~^HvhhQCRbe(G@cBy^#0a>VGJ92V!Mw5%O><252eOC99Ux*oNs;P zBeC^xr>tt+N^9F&HRGc%s6P>mzu_4UxKq&cGCebSfJ{`)%p|`Bs>!(LZuty>o8JhT z<@W_cqRp|uCCGcyKq{#m<`GQNoh*O=6$Ivwa%i5X>9F(sa;v_4mA9!YH;IoxwU7Qi zGFS4$92HdE86_i+(h-N>^=TjF(;!dKr5c5@(Mfs!rPZ9(zT3+7Bo+xvKiT_orWhV` z#)uidCwPSz<)^ob_SBeDKITb@<(m1$L8K@v2*Ne<@9>pW;Ij zasrZ(5ON}yY|}74lFv_F$&Y<-yb$=n8!OeuRoRJhB%ytTu4IsSxij29(%SG%L3quh~>cU`*bi$VXREgLNoYtzQ4YG{Wj z)aKY<>e!?1q znF~+O)}cGO&xHmUpZ36SN=OC1PrbQ^dAr4qrriv#x1s2UhOp{4)CJjVX~oUBL+Cv$ zut74IepsWYA)|dt^F%Ualr3@YOzAhJ)%Z^2@Za!Ta4=hktsEZ_4p4XVe&*65-RT~Z zYg~AG8q1Qc+K+ZFnzfPmG-@TPN8T2;MMlzmb|xA1*IsaT#ZT*rj7_fa0-fnZQnjV) zr|I6~Y-vbry82-}=K)s1GWA{LEcY}zprN*t{T?N8^_>FHB_YkA^g_s+kOw=(tTmv+ z4Q=34oA37dJKjm)mDuS%2=n(RxQV&8$7d%ovNP-~0yAP~F)wJo!7bIgXP6hCHVdFn zt_&?0Hr@act3KkR0L&itMj!mP;v<#KpGh)vmx^qBcpGN|CCVDwePMPFb6#*y&0b4- zielq%U*_YlzSY~Ek6st{wc}iGE+STjl`(>bO6!u}<9PybgJ5X!q3W~tm3>P#{#QDd z1*)ecyqI^*NM8Fcj>~Z*$`&Ax?B$T_A}OAKTS5HNkvQji&V;lK6h~K6L$iWNslSIZ zhhN~{;4((QP`gVUe8|)aDveP?D&u2I}ih{$~I zY%q%cwkiuvLV~To5s|kW-}uSMa69KF&NFU0pg%Lyp6ZT*x7_r~^A{B@%C$!zGkE$V zGn_{Ch^@aG$(O7W`@K8tq1BqxYc9&Tk`k{^htaN27INL5sy&{H3OcdJtqlT{*=yX` z6;}tBJhFpV09?1pqB$)gr86`e3ceqx0Ob%=d|E@gaS(edO&wiN^Gl7Ia>kv>M(+Dg z8F+z8F%5j;o&==wrdB5rJ5px2wM@@j^74J@->iynj9Wk5%t(@-f0opRkpFQTwLh@z zI2@tB=b8u2?{u>_^GdD}v*3g9%GEhbYy0QXF^Wk~#H@C!ZH402@J~y2K2KC%_3@_Q zgqow+Mm%Y(%oZZp>5y$IsN(~XAo%fq?KzRNUk8tix{;|*`GJfd>F_{qLWbowSeLL*6^%$jd3V z$2+!rQbb3kT(?h*9|*j*4hK6Eg`F{mlDR8IGsIlCNQ;*@89T`vQv8QsnW7kZ zBVKt@-i(H&vtL+p51&-qv?#Yb(;RXOiuEhC@>aFBnRi{gUwo&uUOJGI_pVEbGsrhW z1wHdSXY7BFjXyKGRbS~8vn!{iw4<_q2?3U`11)zDmmHZ1V&C@?`9bvCVVQc(R|6PP z9^A?zpwDbi8{yB4EhnWwKYzU;3Wz8!Bt2A3{@k#Hwi}671Poi8vA;3;f?mEkbozxo zXFs6nKCofW({~DWjSoHG5r^I>HwDENb9-`i4Z)wq`OtMuSuF7RkakUIF66#Ky~SVW z#d*;C_A4&zyvn~N3l+~8A@nGDJ}_53?^ICde4goYLY&j*UoX+Dmk+a7(pD|`v@EK$ zEYVG?o-`IR1=qAi-Y>~->TgX5EQ)Qa3QTn^B3)H)p9liUuS&nB-f_B|Io0qvA{{ht z%{fpOLMoJ9x#6xgtxJHQaMtZ&gq21+8O z)sl?NEx-iM>cXE)ne^_eiM>7Z4K3M*^BAjpJpkPcY51Uu_A2mQGz68Y-?+of9W7ttBxozZz%|fOT=s! zncD}~pgwBQ0S%`fpca$)^UO;))Li>^xj69$tLS9Qwazs3k(B;u@aXJqXDyZ-zX#b& zh-q}_n2xQ|dN`<3myAB8fpTMj4}q_)ocC~4!w{$JAd1E zw9E5Hrv<2`LBa~#8^(j()^lI1Xp>yAUUwVk8XrH#cho8gfK-4(`*Cl~cK|M=$CEX6 z%!b1!T5S6^*?rNPQZ15jEA#;H?ATcG6`4y6p$Mc!^I?S|ogS z(IIvEoE|0a3f&tYgRU|I>5VMdo8}1QfZ4d-@C1%vskuJ>45TCSGa4c>b|Xxz8!eqt zDOG{ELUSU;QlmvkJ$WIq&u0E~`y;@qTMpQaEu8=o{2iEL7-l*sb{o|4-VYD2#!>xYoGTm3v<_Nz6qJyZVd!KTz5N6fdyCa}Lx2W&1W`)Bmo!#wHJ74XJ zS*J+c;JszH2Jyto8D6(YZf_5V%nf{Svyyc;8bLoNFmBkvp!XdQzYqmqy{t7xY#YJ* z4r!Y~+4#D- z{`*T)6{I318i?I}2pYYXRfNVz6$0kBa#Mids8(mK(XIF|zobZT#DP?Aft7__xtVKu zMI5QKBGzk3UZ~F|jV2J3y6R+lr*{{WwuU>~2yeq-UUOUN%xQ-e0m%J;Q(88MlEtou z5)9w$c~AozkeIwg!y&Sq zrC+T>8_N2VWoN=2oT~&@7wdI?8aD_y5nPj4-qdeCNnhZ2yei&Z1N&wBIN8~+ri-t0 z{4-1Bdf32KW0T5zM67LyKcL9HMV(=%?K=8`rC1F7rC6xjS#G`v2&z`vnK@8YLUsb# z5PWWHZoHBy2pvcy>?#9s1Ht{o!%Ogx{^tY|e_|oRip?&)x*?6zbe1z~Emz<}K4a-< z=@+RnfyH1A@&oj=e=}D7B<`DBW4-MI zik=yZ8)z05;ycO@*6%E#J?2+ciH~&Dl&JDB78~AKqa=W_=YsSWTnh5diq{|Ibpccv zk4PWlFRfaxewE1{O^0(%kDg%3)8;n}m>pLXys-e@2PDM#QoKijaLMxp5=&5=HBhf? zSe`_sYP1@N7Y3nDn4*4o;`K9s^RZID-&iMxP;|=hKOl8vHkTsr*2jAX3hy3hyvZ-| z;U1c$)N~-JjW-_FsCdk_ykn<)FS|W^Hea_jd=>2aq_-t=sA0JVzqg<4mQSLvpbS5Y zfr zIfJhiKPNv{*e+=5pA?Hzj5sT%bEQw8mv=n7^&@J>P&M>!q#;SmFG1S?qq(nl?vyaQ<0=EsUVLylFc9^c2OB1ycQ`xku_zMkozxHS5 zV|SqZ08E!nHcoAtXw za{dnxMpz(`t3t+0SbZ+Znn9p2w&Y~#hnIFtDPcv%R}t0x2uf>D{*{n*=vp_HvHlxd zm#-mEYVs-M)b5jJ`;dg%%C@+KwMj(?idhCpUtuw>aH-_aA&|Ov*^}g_yU?O<==fvO z8|}dyAwo++(>W5|;>IM5>~Dxc0Q45(5y|5AJ&{$bchTb}$!GKnTTo|;MWe0{^cm3_ zW6$7$IZg{r*#MUe?*jglo@YkSIQ-*vFn}Q|$wz>e+FrgAk;WZ& zh=pgzR~WziYN61xfu~HzSL=6sm%iUo&+o;Wo<|j`;+r7^cc)@i4HiulAQrGC1}_*V z-(GNuuE?f+afZ2=K-PksP#Fyv`d8IpqP1U~P zfd*N&z8#bu`mfg3XW2CH$WEE&n#lGF@PMbq^hdodA+m3CBtYbN7KAf3w8E1^g-~&+ zA|+N8{!H8zEX|9Raxuas18xD*npVFAXc?p<$z4vfRjx4$s6Y)6MbG0}$fT1bE{E`~ zNqoTU$NPJ;sakyuYK=%-q_Br-O&F(Edan$W;upyd5I&R>RL&lvu5?Dh`b=|B$G#;5 zQh)fr(FzqY9a$_LN#ZE5uH~LADD2;NCuvP#;|*)N5DfPK&}`{F%hmn4;f;62D`)GT zGlM)=#4pmlwtb-xK*Ti7dA zw=qRAPZo&T03U0kdM>~d7tZ_!?{d+SU@j7@l8;)HF^!eL31cR$U&7aVan_M9gBqgkqK zgbUBo2v>fYyjc+3Oth>cm~?BZdj`gJr~5uYKUpVz&h%czaUtC#*R{S5vOEOx(^pxP zz7ad;SA(^)I}ItrjyYo@pczc0GLIr8MePv<0J%n6^)Mml?_3ZYomxdP>&1=+kJ!seQ7Bv(q!aTCQ(q>fRZlE4%c4~-% zcs;XP%cwmvy&?_OHeL{$x=M5QW|p!)n!OYrRc9)}7q1s#9=$pLwcgfCvOtQ*2AzBZ z<&!eaB?%yBvq2Y<`vWqNs9DTT#i2}UNf$`?*z#8Cr3t;5+f?~g6;{@B8npP{F7BHr zRTk$`{FYgxnG5{u1u4=S^~V3G_{sj5)vfUXqsoXvP*tw zy^+tuQ90!M8@(#?6wHCuD_-GZ z4R{^z)6DXIUR>AlU{S|5-z+-+q_DBu-oc<>|GuUudj^kilX^jLNQ0f1Nr~`>eF2Hp z2IjVld<)P}+hhX}scQpfk0!3}afS>E4=k1H{h{6|=5hLni6~JTBa}DB1_ds2e<{r8x`&7CJ?5_Rn za?l>8rmKYK>SbT85%2;o_-gqAosGQ1ORjSf#cH8sw)wbpGr%$RVEk&qagK?2?~Yx4 zi~4ar1Dl=t_IL{&$p1sxJ$4Ba1!)2<+qP}nwr$(CZQHiZF59;4E_-{D6U^&v)?g@SxX`LUS3k?WerLtYI%Kyr(TlFe- zuXt6n9k*%P+qdm*+4RO^)+Rs$;|j<}Z`JhMHU5y5cUBBD@ja4#ny2MI*!v&Gx>RH^ zSAHxuTaXdA#KNW6epnI1)?Cwxj-d$e;7?GM$mlGfU0EX>b$?Qq^sc(-iyQUzN|fikCDf=PikF4~2zzoV2Y7`JZt@+N%4NJx^MM4!dhHLZV% zGl7By0nS}^VOx^I6lf+t%bEIlO@2+M2yTcI(ox;~WJ*3Zlfk~fNS58uRl9>&3g62N zJXbnkLfpb`t&O$LA7dys<~Qh3rM14khHUdcex7>QyEWKX+WfR)RmLg2d&nt67g)FQ z$>E2eb$(cWv#=}}eYgJ5`NlbM(F$q$qTR-u+RNuid<1CxWw)jtX+0LQ+hS?p+51-@>j22s6SnNxbpml@a3N~ zKbL>leB*lEEuU%bJio63+-QKGL)Sw2CTfV!76TStDT6P3M5{mmQy68lxE)#Uapj5T zZ-S500zCO{@gWe(;O#)|3CW29@x;Ql-L}F9)oNGIHs*zVH^2LQu=CpE!(4eF`WnKw zMlalvEyFOgIdbRP2;~y=OTelv(-r#sK+iNw-!QGWN?n=`<`;AYB)f6$pHx2U*u$&) zmj`sEOHJoeit~!|-ay4bSQXXJ*uc^Jrkl0d?H3fo_7vC^J9}`61oFD2ULdz*5mt+qa94j{qO#WEo>Dw3?pWvolNb zJF_e5!(7u9>U}6(R?`=MKg~7OmBC7xtAcG1&$t5gV0zcf>`*LQUW)R@j2QxEr`M$W z+Q^aF-pYhXO>N#ROp1#&$?ix^9=!F|-5gUohtS*rarhpW^ENA$_p3c|mh-oFNf&O9Kj=cv!Q3XNO2 zVUgy~5beu)qOy{)Qd3hjo@4*SC|Y;{`t%^o|6H2X z*y0l`YG5irpQKLj-)}0ARNa(5p6glM{i5eUchl|Gt*<2hfd~8zuZ;H#0XrA3glO_j z@XMKeN_MI6i;7#_Vk*~Tp^N?PVEH-n`8uf`FnPTLD(@k>;$3R2*3wCbpgNF%V zXUT-Vt2|wKZ5C)bc8z8kZo+RdiqJ1+lOJ z973Tch~ZK4kKk)DOCpghahw5}B$(y$%y?u#`8#jSiC{ZY;_g1_LOhWwC}b%N{@nj; z*CUOS!aruuZNYddFjsS)10`!*l>GX6 zxJ4sDM~p81WkzPJtWVsQio-9_r8>kaMN(`EaG42p`*E&A`G|FI!APyr9rbNm0<5c6 z!5R2Xcdq0?&@s!vdL_t3w8OIjnbPsN?A2lhj7L)L4AVSOD?Pp}hP%Q*c3<{J4c*5W z8XWX0ep6!{*wBXl5Ze^L*e4KU4h^{cf(oa#Oe_Uo#fR_L`?5HIZ^AcWj7EY6zVp_H zlqD!{DVk=8v_zWLxL*szB;kzy_=Yy5-}yB@*AFmE<+=?}-h*>D=>^#8&NLEbM4crx z?&dK4HxHP&;E^5Dzycwtq$^^bCy=!;s0m|;a>R8`)>*?a3^W;4tF0(G83V3}0m@(= zrHhcHQrJO=)XF_DI(TQmF#zcSS?83vJU^Y0kQ0LgOW?&ZI#)}4KcKPHq;|m*&k0nJ z)(|-^#HMhcFa0z(Si!Bn`K_8oZV{_x>U9@8JkS%Da?6PPS4~5uO6#^mA{(1UV4iTYim0SU}6+0pu8{*q^=)%fx)kU^943qfoG%4 ze&ew$xtD&I4@0jdIo+m;vP^$L-4+lv6=7MiUObIOW`1x+Gsp_Rzeo5f@KmPE7yXg^ zstJ>;zIO1)c|jDyj8Wep9u~^xk^Jt;k{?r^OgQ@Q3px6?drY_^5uH;82{NPN(m)07 zan-&RL~!s$Dg;F%wco{$c#hl~SX67`Aw&XZyF2_{PW+v&E`}G5L}2Zb1sr6u6}Sy+ zG@56Y^v(l#Yn#1~@LFh}`ud%#V_Dg{?LZ?g*qcr{T9mPHjvXAP6~X(LbEj!&lXDc4 zn_9IR(r~bS4w{c|sO+CgPuCqTZmaCcH5xaYu~9s^flq^OH`>9zeVIQfsm%4>oGyPj zboXnMm_!hluJ_GmnXn3k66*{qRoqxHY}l~#^RWD=(15>>8gtAm{8MNLh8xM5KcV;^ zrl>(CAyh~uVhAch3K2t61uz0BK+|Bg3{bmTj+t+OS^Lc*qlR+7;aX~# zkjykpN)%%-SP*D3;utGZM`1bzY4{f0D#DGO*e^W#Xx{;%{IKTi2ae=+{MQ?#j;(s mtwz~igJmo{kDR(uw0D>lZdk||GE;K8D0pU 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 literal 0 HcmV?d00001 diff --git a/server/src/com/metaweb/gridworks/Gridworks.java b/server/src/com/metaweb/gridworks/Gridworks.java index f02d05153..09de902e0 100644 --- a/server/src/com/metaweb/gridworks/Gridworks.java +++ b/server/src/com/metaweb/gridworks/Gridworks.java @@ -156,7 +156,7 @@ class GridworksServer extends Server { this.setSendServerVersion(true); // Enable context autoreloading - if (Configurations.getBoolean("gridworks.autoreloading",false)) { + if (Configurations.getBoolean("gridworks.autoreload",false)) { scanForUpdates(webapp, context); } @@ -191,6 +191,7 @@ class GridworksServer extends Server { scanList.add(new File(contextRoot, "WEB-INF/web.xml")); findFiles(".class", new File(contextRoot, "WEB-INF/classes"), scanList); + findFiles(".jar", new File(contextRoot, "WEB-INF/lib"), scanList); logger.info("Starting autoreloading scanner... "); @@ -237,8 +238,19 @@ class GridworksServer extends Server { // parameters if we set them in the webapp context upon reading the web.xml file static private void configure(WebAppContext context) throws Exception { ServletHolder servlet = context.getServletHandler().getServlet("gridworks"); - servlet.setInitParameter("gridworks.data", getDataDir()); - servlet.doStart(); + if (servlet != null) { + servlet.setInitParameter("gridworks.data", getDataDir()); + servlet.setInitOrder(1); + servlet.doStart(); + } + + servlet = context.getServletHandler().getServlet("gridworks-broker"); + if (servlet != null) { + servlet.setInitParameter("gridworks.data", getDataDir() + "/broker"); + servlet.setInitParameter("gridworks.development", Configurations.get("gridworks.development","false")); + servlet.setInitOrder(1); + servlet.doStart(); + } } static private String getDataDir() {