From 7d3decea3940e53f5db43984a072c0edb2596b09 Mon Sep 17 00:00:00 2001 From: Spring Buildmaster Date: Mon, 11 Apr 2016 21:30:30 +0000 Subject: [PATCH 01/14] [artifactory-release] Next development version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index edb6f43..e709c4b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.2.6.RELEASE +version=1.2.7.BUILD-SNAPSHOT From 658a8678a672d24e9528fb63f70fa502ca7341ea Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Fri, 24 Jun 2016 17:10:51 -0700 Subject: [PATCH 02/14] Fix #155: adjust to new proxy generator method --- .../springsource/loaded/ReloadableType.java | 6 ++-- .../java/org/springsource/loaded/Utils.java | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java b/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java index d0fea4d..c2912f0 100644 --- a/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java +++ b/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java @@ -612,10 +612,8 @@ public class ReloadableType { if (relevantProxies != null) { for (ReloadableType relevantProxy : relevantProxies) { Class[] interfacesImplementedByProxy = relevantProxy.getClazz().getInterfaces(); - // check slashedname correct - // @SuppressWarnings("restriction") - byte[] newProxyBytes = sun.misc.ProxyGenerator.generateProxyClass( - relevantProxy.getSlashedName(), + // TODO confirm slashedname correct + byte[] newProxyBytes = Utils.generateProxyClass(relevantProxy.getSlashedName(), interfacesImplementedByProxy); relevantProxy.loadNewVersion(versionsuffix, newProxyBytes, true); } diff --git a/springloaded/src/main/java/org/springsource/loaded/Utils.java b/springloaded/src/main/java/org/springsource/loaded/Utils.java index a79c0e5..22ed787 100644 --- a/springloaded/src/main/java/org/springsource/loaded/Utils.java +++ b/springloaded/src/main/java/org/springsource/loaded/Utils.java @@ -44,6 +44,7 @@ import org.objectweb.asm.tree.AnnotationNode; import org.objectweb.asm.tree.FieldNode; import org.springsource.loaded.Utils.ReturnType.Kind; +import sun.misc.ProxyGenerator; // TODO debugging tests - how is the experience? rewriting of field accesses will really // affect field navigation in the debugger @@ -1935,4 +1936,38 @@ public class Utils implements Opcodes, Constants { cr.accept(v, 0); return v.classname; } + + private static boolean checkedForNewProxyGenerateMethod = false; + + private static Method newProxyGenerateMethod; + + public static byte[] generateProxyClass(String slashedName, Class[] interfacesImplementedByProxy) { + if (!checkedForNewProxyGenerateMethod) { + checkedForNewProxyGenerateMethod = true; + try { + newProxyGenerateMethod = ProxyGenerator.class.getDeclaredMethod("generateProxyClass", String.class, + Class[].class, Integer.TYPE); + } + catch (NoSuchMethodException nsme) { + // That's fine, we are early Java8 or before + } + } + if (newProxyGenerateMethod != null) { + try { + newProxyGenerateMethod.setAccessible(true); + byte[] bytes = (byte[]) newProxyGenerateMethod.invoke(null, slashedName, interfacesImplementedByProxy, + (Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL)); + return bytes; + } + catch (Exception e) { + // Unexpected + throw new RuntimeException("Unexpected exception calling proxy generator ", e); + } + } + else { + return sun.misc.ProxyGenerator.generateProxyClass( + slashedName, + interfacesImplementedByProxy); + } + } } From 386a7dcb03b558046260d931d7f41f85f5118f23 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Wed, 11 Jan 2017 09:56:55 -0800 Subject: [PATCH 03/14] Fix #190: remove printStackTrace from catch block --- .../org/springsource/loaded/ri/ReflectiveInterceptor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/springloaded/src/main/java/org/springsource/loaded/ri/ReflectiveInterceptor.java b/springloaded/src/main/java/org/springsource/loaded/ri/ReflectiveInterceptor.java index dc06ff1..46a647d 100644 --- a/springloaded/src/main/java/org/springsource/loaded/ri/ReflectiveInterceptor.java +++ b/springloaded/src/main/java/org/springsource/loaded/ri/ReflectiveInterceptor.java @@ -650,7 +650,7 @@ public class ReflectiveInterceptor { */ private static Field asSetableField(Field field, Object target, Class valueType, Object value, boolean makeAccessibleCopy) - throws IllegalAccessException { + throws IllegalAccessException { // Must do the checks exactly in the same order as JVM if we want identical error messages. // JVM doesn't do this, since it cannot happen without reloading, we do it first of all. @@ -1054,7 +1054,7 @@ public class ReflectiveInterceptor { c = jlClassGetDeclaredConstructor(clazz); } catch (NoSuchMethodException e) { - e.printStackTrace(); + // e.printStackTrace(); throw Exceptions.instantiation(clazz); } c = asAccessibleConstructor(c, true); From d1d0864905ab4d75667d0d79197f0310ac15bf26 Mon Sep 17 00:00:00 2001 From: graemerocher Date: Fri, 17 Mar 2017 12:15:09 +0100 Subject: [PATCH 04/14] Don't rewrite non-reloading types. Fixes https://github.com/spring-projects/spring-loaded/issues/165 --- .../java/org/springsource/loaded/MethodInvokerRewriter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/springloaded/src/main/java/org/springsource/loaded/MethodInvokerRewriter.java b/springloaded/src/main/java/org/springsource/loaded/MethodInvokerRewriter.java index 71d66b9..8f8eb62 100644 --- a/springloaded/src/main/java/org/springsource/loaded/MethodInvokerRewriter.java +++ b/springloaded/src/main/java/org/springsource/loaded/MethodInvokerRewriter.java @@ -1045,6 +1045,11 @@ public class MethodInvokerRewriter { throw new IllegalStateException("Unable to find classId for " + slashedclassname + " referenced from invokedynamic in " + this.methodname + "()"); } + if(typeRegistry.getReloadableType(classId) == null) { + // can't rewrite non-reloading type + super.visitInvokeDynamicInsn(name, desc, bsm, bsmArgs); + return; + } // Initially only rewriting use of INVOKEDYNAMIC to support Lambda execution // TODO support the more general invokedynamic usage From 0cfd2ff9f45097537021909ebdd9a9f4c4662cf6 Mon Sep 17 00:00:00 2001 From: graemerocher Date: Fri, 17 Mar 2017 14:03:48 +0100 Subject: [PATCH 05/14] Fix broken logic that uses null owner class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes https://github.com/spring-projects/spring-loaded/issues/173 Fixes https://github.com/spring-projects/spring-loaded/issues/187 Fixes https://github.com/spring-projects/spring-loaded/issues/175ยง --- .../springsource/loaded/support/Java8.java | 4 +- .../springsource/loaded/test/Java8Tests.java | 20 ++++++++ .../src/main/java/bugs/Issue173.java | 49 +++++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 testdata-java8/src/main/java/bugs/Issue173.java diff --git a/springloaded/src/main/java/org/springsource/loaded/support/Java8.java b/springloaded/src/main/java/org/springsource/loaded/support/Java8.java index 7218e13..25f2432 100644 --- a/springloaded/src/main/java/org/springsource/loaded/support/Java8.java +++ b/springloaded/src/main/java/org/springsource/loaded/support/Java8.java @@ -150,8 +150,8 @@ public class Java8 { if (null == ownerRType || !ownerRType.hasBeenReloaded()) { // target containing the reference/lambdaMethod has not been reloaded, no need to get over // complicated. - Class ownerClazz = ownerRType.getClazz(); - implMethod = caller.findVirtual(ownerClazz, name, implMethodType); + Class clazz = callerLoader.loadClass(owner.replace("/", ".")); + implMethod = caller.findVirtual(clazz, name, implMethodType); } else { MethodMember targetReferenceMethodMember = ownerRType.getCurrentMethod(name, descriptor); diff --git a/springloaded/src/test/java/org/springsource/loaded/test/Java8Tests.java b/springloaded/src/test/java/org/springsource/loaded/test/Java8Tests.java index 665880e..8c7779e 100644 --- a/springloaded/src/test/java/org/springsource/loaded/test/Java8Tests.java +++ b/springloaded/src/test/java/org/springsource/loaded/test/Java8Tests.java @@ -68,6 +68,26 @@ public class Java8Tests extends SpringLoadedTests { // TODO should assert something but the issue is that the JVM crashes... } + @Test + public void issue173() throws Exception { + String t = "bugs.Issue173"; + TypeRegistry typeRegistry = getTypeRegistry(t); + byte[] sc = loadBytesForClass(t); + ReloadableType rtype = typeRegistry.addType(t, sc); + + Class clazz = rtype.getClazz(); + @SuppressWarnings("unused") + Result r = runUnguarded(clazz, "run"); + + r = runUnguarded(clazz, "run"); + + rtype.loadNewVersion("002", rtype.bytesInitial); + + r = runUnguarded(clazz, "run"); + + assertEquals("https://www.redacted.com/path", r.returnValue); + } + @Test public void callBasicType() throws Exception { String t = "basic.FirstClass"; diff --git a/testdata-java8/src/main/java/bugs/Issue173.java b/testdata-java8/src/main/java/bugs/Issue173.java new file mode 100644 index 0000000..324ac9f --- /dev/null +++ b/testdata-java8/src/main/java/bugs/Issue173.java @@ -0,0 +1,49 @@ +package bugs; + +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class Issue173 { + public static void main(String[] args) { + System.out.println(run()); + } + + public static String run() { + return url("path").toString(); + } + + public static URI url(Object... args) { + try { + /* flattening the paths */ + final List paths = Arrays + .stream(args) + .flatMap(arg -> { + if (arg instanceof Collection) { + return ((Collection) arg).stream(); + } else if (arg instanceof Object[]) { + return Arrays.stream((Object[]) arg); + } + + return Arrays.stream(new Object[]{ + arg + }); + }) + .map(Object::toString) + .map(String::toLowerCase) + .collect(Collectors.toList()); + + Path path = Paths.get("/", paths.toArray(new String[0])); + URI uri = new URI("https", "www.redacted.com", path.toString(), null); + + return uri; + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + } +} From 3552a1c3ca28653ffd4dc4431ff7931133b38b18 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Tue, 21 Mar 2017 14:54:03 -0700 Subject: [PATCH 06/14] upgrade gradle --- build.gradle | 3 + gradle/wrapper/gradle-wrapper.jar | Bin 50518 -> 54212 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 74 ++++---- gradlew.bat | 174 +++++++++--------- springloaded/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 50514 -> 54212 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- springloaded/gradlew | 74 ++++---- springloaded/gradlew.bat | 174 +++++++++--------- 10 files changed, 258 insertions(+), 251 deletions(-) diff --git a/build.gradle b/build.gradle index 63356da..ec16738 100644 --- a/build.gradle +++ b/build.gradle @@ -24,3 +24,6 @@ subprojects { configure(subprojects.findAll { it.name.startsWith('testdata')}) { tasks.findByPath("artifactoryPublish")?.enabled = false } +task wrapper(type: Wrapper) { + gradleVersion = '3.4.1' +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index b979729db0ad460288cfe16f07072da7b1305e93..efa0965d11d9181bf42106aa9b84762e850bac4b 100644 GIT binary patch delta 46935 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

1%aP8&tw>Py?G7ZE=nfEFDD+?pJH z>%*iyBV>>ken|52lc(8J@8_qyrSt28l`~x%FW7prGTlo)@HLLHoNlP8oQ~PJ0wH(w zjXTO7zr)w(zv6-a3kOy?W?nw{BLp09L>-+3S*lY2+hVI>3K1}%3~HCxo~emg<*`_U zo+RpDWYzM1FzzWCENy5yJ75s@1z%h4*ey3^7VfdD=E6y@A~#H!M( z)jslYw$_HkWOB9iC8n)F`QVW8RUnYrU~#R?tz*@tO7$QB#HZt^ zLey!@(KQ_CAj)C1pGuR&iQ;vo0@GJ(l+qH1PW)^u~)L;i)mD019*t)Pa2MK zk!Zv{xy2zuGDb<5z{)4yE)oVoYmaY-6MQ4=SH(p}W?8hbK_#+b)O&hqV{`_0sb&%{{)E;4B>#i^QL73% zy-3^hB^W!DK3>w#c5mAw9EIt{sqIpYLpDDva1<<7(L(o`T5YOX9W;|S`AV}TVnqPbjjc8pL-;c5$%-MtbvPKoTw@~D8fk9mlj>aX)s<~guG|?ok`5Apb{Ev6- za`Mgm=8H`DTrpus%w2*=gwMy1-EnfH1$p>q$~!_4)U;j#cm`die-Mtuhw+4tV76Z5 z=L?4+3@%68Zv&0qCJI(+u4hcG_O9bluX?PA+chQ|l1Yu-M2gxqsLZ;tSw>^AzEAih z=938@T4qC~3#YI%Yh_XBfoNT0)zPTkh>%whhvr{d7{}sYSrSXO_03st=8e$R(%(;> z+_Y#*5S>zWaCyBRcW$7(fpxAJC0jt|n*au6wJGdi;yknyo2ufkR+ZnZd8gaPGRD9_ zi&?S3>YpWCR}(km6f4K`3xs}1)^@316D}Nf9Y@`Ft2WbHz-`x8Dlj0yC_C&V(piK9lwZJm>W_hTV5M$nB)OjD!#9p8t|cExe`jx zSCE9_+Z@*L0NmbPzRR@=QB#VuR^TgYupJEJ`@y=@-BG5i#R^Ce`RS7HPai$++ax-< z+6pRKYPad5AydaQ;6NXIOaQ@AGlA*KIgOEDECx?1H=d`D96TOQaSyZpS5&(p({yq>Hw5t&-4F}meqTSh_739we(-Yt8u9Y^>f?x2JS-2@H($wm{lttGL0^I*bv%E1dP7Bl zxKB0M`c~UI2tw&ymT%r{2zx2+*thoLbF_0lDrXj^nqw%zB47JLGV->FWrk3=YbO2^ z7|b33yIli#wC?7&V{A-w!sIo|k?00H9;8F4kKG&47UeSB_gdPLKwUt2QZ#J;unK^h zAkp_m#4h{0N_;v^y?=B<)1$cah%brz2p*(JT;8gez+|q!%|!DkU;>@SBz?+aWGgj?fFiALbL3Rl&Wm|fV_QeA335y-tQ61i1M&dO%0{JJwu<}X z5xTEP!qIZ%3f(-dVdBp@Ka3^Sn-a<^#QWz}2+Xr2FX(yo@=A_uBFIBz1-5G(x=-j-XVWv@j?fT|nY zRJVq|Zg;b;7kyrVM^>Vu;NtgVn)PR`*g0d4^XzsW<8I7fWL;&yZF8*y#6irhs6r8% zUY8u`)N-FKPeyy_R|3R;j!i^@(eZzcIwkwj4^-58Yl#ZLqnL4 zQD#{az+6GYq{z{NAz$cbK7}3^dnre!%DL0X;Lkq9BpzN@4FU++tQ~QQUx6!;PAD5y zOHX;n{FhP(zgmh(>GmHnqd&DlxsW2ww9bB5!2ugh^X9BEWX#JO|C0r)97 z4??MHiq&NC^YCLlRU*%ImBUyhyu{!p?EGp!5Ii_3>avFz_Ub!f`FYA@sHT+fl}U2D z3mJP7(g2d`8yn<_bw&w^I;NyO_O?Zz8F^#g$ynUS2fLZbChcg}bnU0*Xx<#V&nsTi zbF}d#O}|J~L)M#!!YFvd_L*2i&#`BkNO*=xSWi%#<%wtNm%U})IU6�$-lVjSz(0 zN^i1u{JhJ*?kW*qKdpNPRTv#Wf<7wW$|Vp$m`3ryJ=))tanvxcl?`-1v#MfZ?!Ao@ zWwS=1HpXJnDt+UJhkaQWTf-U)s04KD?8ACtD007}?FBy;4#5DXRvBdKdiX}2Z4RX- z2`nWgr6mcqU3*=iQ-+vh4M&lHg5O&DGRIhtg;EJ(vNJDJeF_V~WPiLI?PHH+r1%!| zK(bu}3~L|g@hv?5REE$aCNL?kD!(#XV_i`hg426aoBfKG2LMnXYPRa__b{B~dFcmi zENeV(!>@JA>1X}eHn1#5NWv(ALcqLhTlRiK!CXitrZzWP&Eb7W;eof<*2*qtb>DM? zB7wXlcczvmBOkM<7tR14909rvoex&IMUmH4U^@ooR~y}jVNv(@qS}&pA#1&#HV1Yh8SE$Q@oktbQKOokbyl`KY-`^S}sudE@ z!qqRLe1E({mXhdWfolA@F&5*wQ1d$gX{jq#tK>On|8m(nsedA`%W&A!yn~Rh%oRk- zU%}C1flSz5mU#Pyow)h%L$ZlIq!O+**6d+g&Sp|e6X8NvVc1)Y1u=GTd<~{3noU}4 ziEMC7ddgU(75S;jS+d>1u*(;FeQFV&pkUdzDxmT5Xyg<3ww2U{w{M3=Lnl)bLH^>6JYY-k-Bx~^7fK6a;%FZt zvAu2mnOBbcf^rklY*Vnj@3KYxgN`xSc?!^;IAY1LVc&*YU(9|byi-gu#K|o3eLWcc zGpW+!7>@buInpT%OP?T1!F{Asw*7$C?2$JV@1CRHNX}6O)KG$mAAE-izX-zoRKGyg z{IUZxICnp~5_I!9ju*W@etf_v(?4&;f~ocy>}Iy9>uP-{xr4vs>03v&F|0Ft3R?=9 zuT1rc*<)vN9T7=s-G-wWRSnd3D};u+q9Pp}DJY-S99iE+rA?QIbNIZJq<;c8e7w3% z{lO;NRgl^vxbu@JeKsL1*h&hErX^v^bYDgv7eY?35&T$a^)D}TV0L^f1C{ZRf)I5+ z*7^TYqpRlR)cC)s(XHRppo4vY3-`Zs{TFET0n*xu{|pmmM+|BRMoCIjj73ganoU*V zK1xI(J>gbSL=*bKy+!_$a(y8fU1Z>Y@>_%Ecl!nO(s7rdFVp@>w+0fSf8Xv4^=ICH zGf;jJU~U=B|1kd9N$USe#D?Oak|+P9Tju7iST5$@1PDeS;lo^CVps?V3LZqX50Czj zf+IJN_~1iJZU-&3U){EJiIe%h>XGfcd_PVr5NF%!vCt!+H>6_8N=U^(0l0qG-6uj+h`0eDJGP| zat~jNa)(!eMTA5cYTmB!>SGmg^YU4x!*QN*EaE@4qS6_lWq;3YZ#^lhxE3=;-)&OZ?ue`|q03Fy2wu zdnx{GiF^Cq{%h#A&)C`S@G7u)|0&COmL`T76RYX7QMLTNPjsKc5NWmCF)6}pW$ z{#KrZfq`z=_HWAdeXa$0)kzHgvtMorw}@X(jqxx1*3p34|8wepT-4MWbkDzU$-m_u zVPH7^CEqq*)PKohCXP-Hkn0I*lz&|FHV25^;H}^G>Op{|G?21E)L&!Z_RHUbc`z`7 z_p-0lzrzcSQT~a)CsK9~UjcyFH$Q=DmXZ94|1Aymck$DVq4|?Sg`!CR#Q!bA^vgu9 zFQ*BFV?^>#?45c8v|;C_KA$BA8 zIKP*||LwoEc6a4p9>Dt3#{ZUV!ocK1@9+5U*#NlQwU44B*55XMujBmNhQ1rbH{qx}v_5{8J5!rv>h&&X|&lZzp#Bcgw{)4$J*(CZ85J?l25 zckS9=`JZ9)`!VA0wrVfG&ZmcqcWL4PbU MVPHO2-~RW10D$C`_5c6? diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 819f739..702d0d8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Sep 03 18:56:14 CEST 2013 +#Tue Mar 21 14:51:43 PDT 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-bin.zip diff --git a/gradlew b/gradlew index 91a7e26..4453cce 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,12 +6,30 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282..e95643d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,90 +1,84 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/springloaded/build.gradle b/springloaded/build.gradle index 73490ae..8a2402f 100644 --- a/springloaded/build.gradle +++ b/springloaded/build.gradle @@ -35,7 +35,7 @@ configurations { } task wrapper(type: Wrapper) { - gradleVersion = '1.8' + gradleVersion = '3.4.1' } dependencies { diff --git a/springloaded/gradle/wrapper/gradle-wrapper.jar b/springloaded/gradle/wrapper/gradle-wrapper.jar index 667288ad6c2b3b87c990ece1267e56f0bcbf3622..efa0965d11d9181bf42106aa9b84762e850bac4b 100644 GIT binary patch delta 46929 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 z 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 DtEX}m delta 43124 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 diff --git a/springloaded/gradle/wrapper/gradle-wrapper.properties b/springloaded/gradle/wrapper/gradle-wrapper.properties index f0031c8..702d0d8 100644 --- a/springloaded/gradle/wrapper/gradle-wrapper.properties +++ b/springloaded/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Oct 15 14:09:30 PDT 2013 +#Tue Mar 21 14:51:43 PDT 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-bin.zip diff --git a/springloaded/gradlew b/springloaded/gradlew index 91a7e26..4453cce 100755 --- a/springloaded/gradlew +++ b/springloaded/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,12 +6,30 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/springloaded/gradlew.bat b/springloaded/gradlew.bat index 8a0b282..e95643d 100644 --- a/springloaded/gradlew.bat +++ b/springloaded/gradlew.bat @@ -1,90 +1,84 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 81426ac29d37d56e71821853705f18bb7e7536bb Mon Sep 17 00:00:00 2001 From: Spring Buildmaster Date: Wed, 22 Mar 2017 17:55:07 +0000 Subject: [PATCH 07/14] [artifactory-release] Release version 1.2.7.BUILD --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index e709c4b..ed5ee49 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.2.7.BUILD-SNAPSHOT +version=1.2.7.RELEASE From 37cbf5e285e4eacade502396116106c56dc6625c Mon Sep 17 00:00:00 2001 From: Spring Buildmaster Date: Wed, 22 Mar 2017 17:55:08 +0000 Subject: [PATCH 08/14] [artifactory-release] Next development version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ed5ee49..2efe363 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.2.7.RELEASE +version=1.2.8.BUILD-SNAPSHOT From 5fda98052468d1fed83e198942174513300be943 Mon Sep 17 00:00:00 2001 From: David Estes Date: Fri, 18 Aug 2017 09:58:53 -0400 Subject: [PATCH 09/14] Resolving Issue #194 by swapping out a WeakHashMap for a ConcurrentWeakHashMap implementation --- .../loaded/ri/ReflectiveInterceptor.java | 5 +- .../ConcurrentWeakIdentityHashMap.java | 267 ++++++++++++++++++ 2 files changed, 270 insertions(+), 2 deletions(-) create mode 100644 springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java diff --git a/springloaded/src/main/java/org/springsource/loaded/ri/ReflectiveInterceptor.java b/springloaded/src/main/java/org/springsource/loaded/ri/ReflectiveInterceptor.java index 46a647d..28d8fd7 100644 --- a/springloaded/src/main/java/org/springsource/loaded/ri/ReflectiveInterceptor.java +++ b/springloaded/src/main/java/org/springsource/loaded/ri/ReflectiveInterceptor.java @@ -53,7 +53,7 @@ import org.springsource.loaded.TypeRegistry; import org.springsource.loaded.Utils; import org.springsource.loaded.infra.UsedByGeneratedCode; import org.springsource.loaded.jvm.JVM; - +import org.springsource.loaded.support.ConcurrentWeakIdentityHashMap; /** * The reflective interceptor is called to rewrite any reflective calls that are found in the bytecode. Intercepting the @@ -84,7 +84,8 @@ public class ReflectiveInterceptor { classToRType = Collections.synchronizedMap(new WeakHashMap, WeakReference>()); } else { - classToRType = new WeakHashMap, WeakReference>(); + classToRType = new ConcurrentWeakIdentityHashMap, WeakReference>(); + // classToRType = new WeakHashMap, WeakReference>(); } } diff --git a/springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java b/springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java new file mode 100644 index 0000000..0b5f9ac --- /dev/null +++ b/springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java @@ -0,0 +1,267 @@ +/* + * Copyright 2016 zhanhb. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springsource.loaded.support; + +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.Iterator; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * + * @author zhanhb + * @param + * @param + */ +public class ConcurrentWeakIdentityHashMap extends AbstractMap + implements ConcurrentMap { + + private final ConcurrentMap, V> map; + private final ReferenceQueue queue = new ReferenceQueue(); + private transient Set> es; + + public ConcurrentWeakIdentityHashMap(int initialCapacity) { + this.map = new ConcurrentHashMap, V>(initialCapacity); + } + + @SuppressWarnings("CollectionWithoutInitialCapacity") + public ConcurrentWeakIdentityHashMap() { + this.map = new ConcurrentHashMap, V>(); + } + + @Override + public V get(Object key) { + purgeKeys(); + return map.get(new Key(key, null)); + } + + @Override + public V put(K key, V value) { + purgeKeys(); + return map.put(new Key(key, queue), value); + } + + @Override + public int size() { + purgeKeys(); + return map.size(); + } + + @SuppressWarnings({"NestedAssignment", "element-type-mismatch"}) + private void purgeKeys() { + Reference reference; + while ((reference = queue.poll()) != null) { + map.remove(reference); + } + } + + @Override + @SuppressWarnings("NestedAssignment") + public Set> entrySet() { + Set> entrySet; + return ((entrySet = this.es) == null) ? es = new EntrySet() : entrySet; + } + + @Override + public V putIfAbsent(K key, V value) { + purgeKeys(); + return map.putIfAbsent(new Key(key, queue), value); + } + + @Override + public V remove(Object key) { + return map.remove(new Key(key, null)); + } + + @Override + public boolean remove(Object key, Object value) { + purgeKeys(); + return map.remove(new Key(key, null), value); + } + + @Override + public boolean replace(K key, V oldValue, V newValue) { + purgeKeys(); + return map.replace(new Key(key, null), oldValue, newValue); + } + + @Override + public V replace(K key, V value) { + purgeKeys(); + return map.replace(new Key(key, null), value); + } + + @Override + public boolean containsKey(Object key) { + purgeKeys(); + return map.containsKey(new Key(key, null)); + } + + @Override + @SuppressWarnings("empty-statement") + public void clear() { + while (queue.poll() != null); + map.clear(); + } + + @Override + public boolean containsValue(Object value) { + purgeKeys(); + return map.containsValue(value); + } + + private static class Key extends WeakReference { + + private final int hash; + + Key(T t, ReferenceQueue queue) { + super(t, queue); + hash = System.identityHashCode(Objects.requireNonNull(t)); + } + + @Override + public boolean equals(Object obj) { + return this == obj || obj instanceof Key && ((Key) obj).get() == get(); + } + + @Override + public int hashCode() { + return hash; + } + + } + + private class Iter implements Iterator> { + + private final Iterator, V>> it; + private Map.Entry nextValue; + + Iter(Iterator, V>> it) { + this.it = it; + } + + @Override + public boolean hasNext() { + if (nextValue != null) { + return true; + } + while (it.hasNext()) { + Map.Entry, V> entry = it.next(); + K key = entry.getKey().get(); + if (key != null) { + nextValue = new Entry(key, entry.getValue()); + return true; + } else { + it.remove(); + } + } + return false; + } + + @Override + public Map.Entry next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + Map.Entry entry = nextValue; + nextValue = null; + return entry; + } + + @Override + public void remove() { + it.remove(); + nextValue = null; + } + + } + + private class EntrySet extends AbstractSet> { + + @Override + public Iterator> iterator() { + return new Iter(map.entrySet().iterator()); + } + + @Override + public int size() { + return ConcurrentWeakIdentityHashMap.this.size(); + } + + @Override + public void clear() { + ConcurrentWeakIdentityHashMap.this.clear(); + } + + @Override + @SuppressWarnings("element-type-mismatch") + public boolean contains(Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + Map.Entry e = (Map.Entry) o; + return ConcurrentWeakIdentityHashMap.this.get(e.getKey()) == e.getValue(); + } + + @Override + public boolean remove(Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + Map.Entry e = (Map.Entry) o; + return ConcurrentWeakIdentityHashMap.this.remove(e.getKey(), e.getValue()); + } + } + + private class Entry extends AbstractMap.SimpleEntry { + + private static final long serialVersionUID = 1L; + + Entry(K key, V value) { + super(key, value); + } + + @Override + public V setValue(V value) { + ConcurrentWeakIdentityHashMap.this.put(getKey(), value); + return super.setValue(value); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof Map.Entry) { + Map.Entry e = (Map.Entry) obj; + return getKey() == e.getKey() && getValue() == e.getValue(); + } + return false; + } + + @Override + public int hashCode() { + return System.identityHashCode(getKey()) + ^ System.identityHashCode(getValue()); + } + } + +} \ No newline at end of file From d8be2da0ff4e76e0a8177f3bf51cae9371a4ff08 Mon Sep 17 00:00:00 2001 From: David Estes Date: Wed, 23 Aug 2017 08:58:09 -0400 Subject: [PATCH 10/14] compatibility fix for java 1.5 --- .../loaded/support/ConcurrentWeakIdentityHashMap.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java b/springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java index 0b5f9ac..0b98744 100644 --- a/springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java +++ b/springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java @@ -23,7 +23,7 @@ import java.util.AbstractSet; import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; -import java.util.Objects; +import java.lang.NullPointerException; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -137,7 +137,11 @@ public class ConcurrentWeakIdentityHashMap extends AbstractMap Key(T t, ReferenceQueue queue) { super(t, queue); - hash = System.identityHashCode(Objects.requireNonNull(t)); + if(t == null) { + throw new NullPointerException(); + } else { + hash = System.identityHashCode(t); + } } @Override From 914aa12a29fcb001cdacca552368b6f2461c40c1 Mon Sep 17 00:00:00 2001 From: Spring Buildmaster Date: Thu, 31 Aug 2017 19:05:48 +0000 Subject: [PATCH 11/14] [artifactory-release] Release version 1.2.8.BUILD --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2efe363..fb80229 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.2.8.BUILD-SNAPSHOT +version=1.2.8.RELEASE From 17a02584cfb35b015e5fb807b8deb2ad3d4c2258 Mon Sep 17 00:00:00 2001 From: Spring Buildmaster Date: Thu, 31 Aug 2017 19:05:49 +0000 Subject: [PATCH 12/14] [artifactory-release] Next development version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index fb80229..353f142 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.2.8.RELEASE +version=1.2.9.BUILD-SNAPSHOT From 13a36168b090b83cbb1c875675d3200ab61bf640 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Thu, 23 Nov 2017 12:55:33 -0800 Subject: [PATCH 13/14] Fix #197: allow for differing cglib code in recent Spring --- .../springsource/loaded/ReloadableType.java | 18 +++++- .../loaded/agent/CglibPluginCapturing.java | 57 +++++++++++++++++-- .../loaded/test/ConstantPoolScannerTests.java | 2 + 3 files changed, 69 insertions(+), 8 deletions(-) diff --git a/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java b/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java index c2912f0..6aa8ba2 100644 --- a/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java +++ b/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java @@ -166,8 +166,9 @@ public class ReloadableType { this.typeRegistry = typeRegistry; this.dottedtypename = dottedtypename; this.slashedtypename = dottedtypename.replace('.', '/'); - this.typedescriptor = (typeDescriptor != null ? typeDescriptor : typeRegistry.getExtractor().extract( - initialBytes, true)); + this.typedescriptor = (typeDescriptor != null ? typeDescriptor + : typeRegistry.getExtractor().extract( + initialBytes, true)); this.interfaceBytes = InterfaceExtractor.extract(initialBytes, typeRegistry, this.typedescriptor); this.bytesInitial = initialBytes; rewriteCallSitesAndDefine(); @@ -544,12 +545,17 @@ public class ReloadableType { private void reloadProxiesIfNecessary(String versionsuffix) { ReloadableType proxy = typeRegistry.cglibProxies.get(this.slashedtypename); if (proxy != null) { + if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + log.log(Level.INFO, "Attempting reload of cglib proxy for type " + this.slashedtypename); + } + Object[] strategyAndGeneratorPair = CglibPluginCapturing.clazzToGeneratorStrategyAndClassGeneratorMap.get( getClazz()); if (strategyAndGeneratorPair == null) { if (log.isLoggable(Level.SEVERE)) { log.severe( - "Unable to find regeneration methods for cglib proxies - proxies will be out of date for this type"); + "Unable to find regeneration methods for cglib proxies - proxies will be out of date for type: " + + getClazz()); } return; } @@ -567,6 +573,9 @@ public class ReloadableType { } found.setAccessible(true); byte[] bs = (byte[]) found.invoke(a, b); + if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + log.log(Level.INFO, "Proxy regenerate successful for " + this.slashedtypename); + } proxy.loadNewVersion(versionsuffix, bs); proxy.runStaticInitializer(); } @@ -596,6 +605,9 @@ public class ReloadableType { } } byte[] bs = (byte[]) found.invoke(a, b); + if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + log.log(Level.INFO, "Proxy (fastclass) regenerate successful for " + this.slashedtypename); + } proxy.loadNewVersion(versionsuffix, bs); proxy.runStaticInitializer(); } diff --git a/springloaded/src/main/java/org/springsource/loaded/agent/CglibPluginCapturing.java b/springloaded/src/main/java/org/springsource/loaded/agent/CglibPluginCapturing.java index 41611c3..a0dac3b 100644 --- a/springloaded/src/main/java/org/springsource/loaded/agent/CglibPluginCapturing.java +++ b/springloaded/src/main/java/org/springsource/loaded/agent/CglibPluginCapturing.java @@ -19,23 +19,28 @@ package org.springsource.loaded.agent; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; import org.springsource.loaded.Constants; +import org.springsource.loaded.GlobalConfiguration; /** * This bytecode rewriter intercepts calls to generate made in the CGLIB framework and allows us to record what * generator is called to create the proxy for some type. The same generator can then be driven again if the type is * reloaded. - * + * * @author Andy Clement * @since 0.8.3 */ public class CglibPluginCapturing extends ClassVisitor implements Constants { + private static Logger log = Logger.getLogger(CglibPluginCapturing.class.getName()); + public static Map, Object[]> clazzToGeneratorStrategyAndClassGeneratorMap = new HashMap, Object[]>(); public static Map, Object[]> clazzToGeneratorStrategyAndFastClassGeneratorMap = new HashMap, Object[]>(); @@ -68,11 +73,22 @@ public class CglibPluginCapturing extends ClassVisitor implements Constants { return ((ClassWriter) cv).toByteArray(); } + @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { if (name.equals("create")) { + if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + log.info("intercepting create method"); + } MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); return new CreateMethodInterceptor(mv); } + else if (name.equals("generate")) { + if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + log.info("intercepting generate method"); + } + MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); + return new GenerateMethodInterceptor(mv); + } else { return super.visitMethod(access, name, desc, signature, exceptions); } @@ -98,6 +114,9 @@ public class CglibPluginCapturing extends ClassVisitor implements Constants { final boolean itf) { super.visitMethodInsn(opcode, owner, name, desc, itf); if (name.equals("generate")) { + if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + log.info("intercepting call to generate in create method"); + } // Code that calls generate: // ALOAD 0 // GETFIELD net/sf/cglib/core/AbstractClassGenerator.strategy : Lnet/sf/cglib/core/GeneratorStrategy; @@ -108,22 +127,46 @@ public class CglibPluginCapturing extends ClassVisitor implements Constants { "L" + prefix + "/cglib/core/GeneratorStrategy;"); mv.visitVarInsn(ALOAD, 0); // AbstractClassGenerator instance mv.visitMethodInsn(INVOKESTATIC, "org/springsource/loaded/agent/CglibPluginCapturing", "record", - "(Ljava/lang/Object;Ljava/lang/Object;)V", false);//Lnet/sf/cglib/core/GeneratorStrategy;Lnet/sf/cglib/core/AbstractClassGenerator);"); + "(Ljava/lang/Object;Ljava/lang/Object;)V", false);//Lnet/sf/cglib/core/GeneratorStrategy;Lnet/sf/cglib/core/AbstractClassGenerator);"); } } } + + class GenerateMethodInterceptor extends MethodVisitor implements Constants { + + public GenerateMethodInterceptor(MethodVisitor mv) { + super(ASM5, mv); + } + + @Override + public void visitCode() { + mv.visitVarInsn(ALOAD, 0); // AbstractClassGenerator instance + mv.visitFieldInsn(GETFIELD, prefix + "/cglib/core/AbstractClassGenerator", "strategy", + "L" + prefix + "/cglib/core/GeneratorStrategy;"); + mv.visitVarInsn(ALOAD, 0); // AbstractClassGenerator instance + mv.visitMethodInsn(INVOKESTATIC, "org/springsource/loaded/agent/CglibPluginCapturing", "record", + "(Ljava/lang/Object;Ljava/lang/Object;)V", false);//Lnet/sf/cglib/core/GeneratorStrategy;Lnet/sf/cglib/core/AbstractClassGenerator);"); + + } + + } + /** * The classloader for class artifacts is used to load the generated classes for call sites. We need to rewrite * these classes because they may be either calling something that disappears on a later reload (so need to fail * appropriately) or calling something that isnt there on the first load - in this latter case they are changed to * route the dynamic executor method. - * + * * @param a the GeneratorStrategy being used * @param b the AbstractClassGenerator */ public static void record(Object a, Object b) { + // if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + // log.info("recording invocation of generate with " + (a == null ? "null" : a.getClass().getName()) + " b=" + // + (b == null ? "null" : b.getClass().getName())); + // } // a is a Lnet/sf/cglib/core/GeneratorStrategy; // b is a Lnet/sf/cglib/core/AbstractClassGenerator (or specifically net/sf/cglib/reflect/FastClass$Generator) // a is something like 'UndeclaredThrowableStrategy' @@ -134,7 +177,9 @@ public class CglibPluginCapturing extends ClassVisitor implements Constants { Field f = b.getClass().getDeclaredField("superclass"); f.setAccessible(true); Class clazz = (Class) f.get(b); - // System.out.println("Recording pair " + clazz.getName() + " > " + b); + if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + log.info("recording pair " + clazz.getName() + " > " + b); + } clazzToGeneratorStrategyAndClassGeneratorMap.put(clazz, new Object[] { a, b }); } catch (Throwable re) { @@ -146,7 +191,9 @@ public class CglibPluginCapturing extends ClassVisitor implements Constants { Field f = b.getClass().getDeclaredField("type"); f.setAccessible(true); Class clazz = (Class) f.get(b); - // System.out.println("Recording pair (fastclass) " + clazz.getName() + " > " + b); + if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { + log.info("recording pair (fastclass) " + clazz.getName() + " > " + b); + } clazzToGeneratorStrategyAndFastClassGeneratorMap.put(clazz, new Object[] { a, b }); } catch (Throwable re) { diff --git a/springloaded/src/test/java/org/springsource/loaded/test/ConstantPoolScannerTests.java b/springloaded/src/test/java/org/springsource/loaded/test/ConstantPoolScannerTests.java index 0c55c10..1c32efe 100644 --- a/springloaded/src/test/java/org/springsource/loaded/test/ConstantPoolScannerTests.java +++ b/springloaded/src/test/java/org/springsource/loaded/test/ConstantPoolScannerTests.java @@ -23,6 +23,7 @@ import java.io.FileInputStream; import java.io.Serializable; import java.util.List; +import org.junit.Ignore; import org.junit.Test; import org.springsource.loaded.ConstantPoolScanner; import org.springsource.loaded.ConstantPoolScanner.References; @@ -55,6 +56,7 @@ public class ConstantPoolScannerTests { } + @Ignore @Test public void foo() throws Exception { From 7818d5e8ab70a81269f29dcb14fd54736d9a3791 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Thu, 23 Nov 2017 16:54:19 -0800 Subject: [PATCH 14/14] Fixed up SpringPlugin to handle Spring 4 changes --- .../loaded/agent/SpringPlugin.java | 173 ++++++++++++++---- 1 file changed, 134 insertions(+), 39 deletions(-) diff --git a/springloaded/src/main/java/org/springsource/loaded/agent/SpringPlugin.java b/springloaded/src/main/java/org/springsource/loaded/agent/SpringPlugin.java index 4b0d7bf..19840c3 100644 --- a/springloaded/src/main/java/org/springsource/loaded/agent/SpringPlugin.java +++ b/springloaded/src/main/java/org/springsource/loaded/agent/SpringPlugin.java @@ -110,8 +110,8 @@ public class SpringPlugin implements LoadtimeInstrumentationPlugin, ReloadEventP public byte[] modify(String slashedClassName, ClassLoader classLoader, byte[] bytes) { - if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { - log.info("loadtime modifying " + slashedClassName); + if ((GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) || debug) { + log.info("SPRING_PLUGIN: loadtime modifying " + slashedClassName); } if (slashedClassName.equals("org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter")) { return bytesWithInstanceCreationCaptured(bytes, THIS_CLASS, @@ -140,6 +140,9 @@ public class SpringPlugin implements LoadtimeInstrumentationPlugin, ReloadEventP } public static void recordRequestMappingHandlerMappingInstance(Object obj) { + if (debug) { + System.out.println("SPRING_PLUGIN: Recording request mapping handler mapping instance..." + obj); + } requestMappingHandlerMappingInstances.add(obj); } @@ -163,7 +166,7 @@ public class SpringPlugin implements LoadtimeInstrumentationPlugin, ReloadEventP // called by the modified code public static void recordDefaultAnnotationHandlerMappingInstance(Object obj) { if (debug) { - System.out.println("Recording new instance of DefaultAnnotationHandlerMappingInstance"); + System.out.println("SPRING_PLUGIN: Recording new instance of DefaultAnnotationHandlerMappingInstance"); } defaultAnnotationHandlerMappingInstances.add(obj); } @@ -188,7 +191,7 @@ public class SpringPlugin implements LoadtimeInstrumentationPlugin, ReloadEventP return; } if (debug) { - System.out.println("ParameterNamesCache: Clearing parameter name discoverer caches"); + System.out.println("SPRING_PLUGIN: ParameterNamesCache: Clearing parameter name discoverer caches"); } if (parameterNamesCacheField == null) { try { @@ -207,7 +210,8 @@ public class SpringPlugin implements LoadtimeInstrumentationPlugin, ReloadEventP Object o = parameterNamesCache.remove(clazz); if (debug) { System.out.println( - "ParameterNamesCache: Removed " + clazz.getName() + " from cache?" + (o != null)); + "SPRING_PLUGIN: ParameterNamesCache: Removed " + clazz.getName() + " from cache?" + + (o != null)); } } catch (IllegalAccessException e) { @@ -230,7 +234,7 @@ public class SpringPlugin implements LoadtimeInstrumentationPlugin, ReloadEventP Method removeMethod = Map.class.getDeclaredMethod("remove", Object.class); Object ret = removeMethod.invoke(map, clazz); if (GlobalConfiguration.debugplugins) { - System.err.println("SpringPlugin: clearing methodResolverCache for " + clazz.getName()); + System.err.println("SPRING_PLUGIN: clearing methodResolverCache for " + clazz.getName()); } if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.INFO)) { log.info("cleared a cache entry? " + (ret != null)); @@ -342,7 +346,8 @@ public class SpringPlugin implements LoadtimeInstrumentationPlugin, ReloadEventP // protected void detectHandlers() throws BeansException { is defined on AbstractDetectingUrlHandlerMapping for (Object o : defaultAnnotationHandlerMappingInstances) { if (debug) { - System.out.println("Invoking detectHandlers on instance of DefaultAnnotationHandlerMappingInstance"); + System.out.println( + "SPRING_PLUGIN: Invoking detectHandlers on instance of DefaultAnnotationHandlerMappingInstance"); } try { Class clazz_AbstractDetectingUrlHandlerMapping = o.getClass().getSuperclass(); @@ -360,50 +365,140 @@ public class SpringPlugin implements LoadtimeInstrumentationPlugin, ReloadEventP } } - @SuppressWarnings("rawtypes") private void reinvokeInitHandlerMethods() { // org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping (super AbstractHandlerMethodMapping) - call protected void initHandlerMethods() on it. - for (Object o : requestMappingHandlerMappingInstances) { if (debug) { - System.out.println("Invoking initHandlerMethods on instance of RequestMappingHandlerMapping"); + System.out.println( + "SPRING_PLUGIN: Invoking initHandlerMethods on instance of RequestMappingHandlerMapping"); } + Class clazz_AbstractHandlerMethodMapping = null; try { - Class clazz_AbstractHandlerMethodMapping = o.getClass().getSuperclass().getSuperclass(); - - // private final Map handlerMethods = new LinkedHashMap(); - Field field_handlerMethods = clazz_AbstractHandlerMethodMapping.getDeclaredField("handlerMethods"); - field_handlerMethods.setAccessible(true); - Map m = (Map) field_handlerMethods.get(o); - m.clear(); - - Field field_urlMap = clazz_AbstractHandlerMethodMapping.getDeclaredField("urlMap"); - field_urlMap.setAccessible(true); - m = (Map) field_urlMap.get(o); - m.clear(); - - Method method_initHandlerMethods = clazz_AbstractHandlerMethodMapping.getDeclaredMethod( - "initHandlerMethods"); - method_initHandlerMethods.setAccessible(true); - method_initHandlerMethods.invoke(o); - } - catch (NoSuchFieldException nsfe) { - if (debug) { - if (nsfe.getMessage().equals("handlerMethods")) { - System.out.println( - "problem resetting request mapping handlers - unable to find field 'handlerMethods' on type 'AbstractHandlerMethodMapping' - you probably are not on Spring 3.1"); - } - else { - System.out.println("problem resetting request mapping handlers - NoSuchFieldException: " - + nsfe.getMessage()); - } - } + clazz_AbstractHandlerMethodMapping = o.getClass().getSuperclass().getSuperclass(); } catch (Exception e) { + if (debug) { + System.out.println("SPRING_PLUGIN: Unable to get to AbstractHandlerMethodMapping from RMHM"); + } if (GlobalConfiguration.debugplugins) { e.printStackTrace(); } } + + if (clazz_AbstractHandlerMethodMapping != null) { + try { + // private final Map handlerMethods = new LinkedHashMap(); + Field field_handlerMethods = clazz_AbstractHandlerMethodMapping.getDeclaredField("handlerMethods"); + field_handlerMethods.setAccessible(true); + Map m = (Map) field_handlerMethods.get(o); + m.clear(); + } + catch (NoSuchFieldException e) { + if (debug) { + System.out.println("SPRING_PLUGIN: Unable to find handlerMethods field to clear"); + } + } + catch (Exception e) { + if (GlobalConfiguration.debugplugins) { + e.printStackTrace(); + } + } + + try { + Field field_urlMap = clazz_AbstractHandlerMethodMapping.getDeclaredField("urlMap"); + field_urlMap.setAccessible(true); + Map m = (Map) field_urlMap.get(o); + m.clear(); + } + catch (NoSuchFieldException e) { + if (debug) { + System.out.println("SPRING_PLUGIN: Unable to find urlMap field to clear"); + } + } + catch (Exception e) { + if (GlobalConfiguration.debugplugins) { + e.printStackTrace(); + } + } + clearMappingRegistry(o, clazz_AbstractHandlerMethodMapping); + + + try { + + Method method_initHandlerMethods = clazz_AbstractHandlerMethodMapping.getDeclaredMethod( + "initHandlerMethods"); + method_initHandlerMethods.setAccessible(true); + method_initHandlerMethods.invoke(o); + } + catch (Exception e) { + if (GlobalConfiguration.debugplugins || debug) { + e.printStackTrace(); + } + } + } + + } + + } + + + // More recent Springs use a MappingRegistry - clear it out if we can get at it, otherwise on re-driving + // the initHandlerMethods below we will get an error about already existing mappings + private void clearMappingRegistry(Object o, Class clazz_AbstractHandlerMethodMapping) { + if (debug) { + System.out.println("SPRING_PLUGIN: clearing out mapping registry..."); + } + Object mappingRegistryInstance = null; + try { + Field field_mappingRegistry = clazz_AbstractHandlerMethodMapping.getDeclaredField("mappingRegistry"); + field_mappingRegistry.setAccessible(true); + mappingRegistryInstance = field_mappingRegistry.get(o); + } + catch (NoSuchFieldException e) { + if (debug) { + System.out.println( + "SPRING_PLUGIN: Unable to get mappingRegistry field on AbstractHandlerMethodMapping"); + } + } + catch (IllegalAccessException e) { + if (GlobalConfiguration.debugplugins || debug) { + System.out.println( + "SPRING_PLUGIN: Problem accessing mappingRegistry field on AbstractHandlerMethodMapping: "); + e.printStackTrace(System.out); + } + } + + if (mappingRegistryInstance == null) { + return; + } + Class mappingRegistryClass = mappingRegistryInstance.getClass(); + + clearMapField(mappingRegistryClass, mappingRegistryInstance, "registry"); + clearMapField(mappingRegistryClass, mappingRegistryInstance, "mappingLookup"); + clearMapField(mappingRegistryClass, mappingRegistryInstance, "urlLookup"); + clearMapField(mappingRegistryClass, mappingRegistryInstance, "nameLookup"); + clearMapField(mappingRegistryClass, mappingRegistryInstance, "corsLookup"); + if (debug) { + System.out.println("SPRING_PLUGIN: ... cleared out the mapping registry contents"); + } + } + + private void clearMapField(Class clazz, Object instance, String name) { + try { + Field field = clazz.getDeclaredField(name); + field.setAccessible(true); + Map m = (Map) field.get(instance); + m.clear(); + } + catch (NoSuchFieldException e) { + if (debug) { + System.out.println("SPRING_PLUGIN: Unable to find field '" + name + "' to clear"); + } + } + catch (Exception e) { + if (GlobalConfiguration.debugplugins || debug) { + e.printStackTrace(); + } } }