diff --git a/build.gradle b/build.gradle index 62bda46..1c71080 100644 --- a/build.gradle +++ b/build.gradle @@ -5,6 +5,9 @@ allprojects { repositories { mavenCentral() + maven { + url "http://maven.springframework.org/milestone" + } } } @@ -13,10 +16,10 @@ subprojects { apply plugin: 'java' apply plugin: 'eclipse' - sourceCompatibility = 1.6 - targetCompatibility = 1.6 + sourceCompatibility = 1.6 + targetCompatibility = 1.6 } configure(subprojects.findAll { it.name.startsWith('testdata')}) { tasks.findByPath("artifactoryPublish")?.enabled = false -} \ No newline at end of file +} diff --git a/settings.gradle b/settings.gradle index 34851ef..dd5c165 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,5 +1,7 @@ include "springloaded" +include "springloaded-java8" include "testdata" +include "testdata-java8" include "testdata-groovy" include "testdata-plugin" include "testdata-subloader" diff --git a/springloaded/build.gradle b/springloaded/build.gradle index 40525f4..0e9af71 100644 --- a/springloaded/build.gradle +++ b/springloaded/build.gradle @@ -42,6 +42,7 @@ dependencies { compile 'org.ow2.asm:asm:5.0_BETA' compile 'org.ow2.asm:asm-tree:5.0_BETA' + compile project(':springloaded-java8') testCompile 'junit:junit:4.11' diff --git a/springloaded/src/main/java/org/springsource/loaded/ClassRenamer.java b/springloaded/src/main/java/org/springsource/loaded/ClassRenamer.java index 3673d8a..bbf88a0 100644 --- a/springloaded/src/main/java/org/springsource/loaded/ClassRenamer.java +++ b/springloaded/src/main/java/org/springsource/loaded/ClassRenamer.java @@ -255,7 +255,7 @@ public class ClassRenamer { } @Override - public void visitInvokeDynamicInsn(String name, String desc, org.objectweb.asm.Handle bsm, Object... bsmArgs) { + public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { // System.out.println("visitInvokeDynamicInsn(name="+name+",desc="+desc+",bsm="+toString(bsm)+",bsmArgs="+toString(bsmArgs)+")"); // Example: // visitInvokeDynamicInsn(name=m,desc=()Lbasic/LambdaA2$Foo;, diff --git a/springloaded/src/main/java/org/springsource/loaded/MethodInvokerRewriter.java b/springloaded/src/main/java/org/springsource/loaded/MethodInvokerRewriter.java index f838c8a..8dc4bac 100644 --- a/springloaded/src/main/java/org/springsource/loaded/MethodInvokerRewriter.java +++ b/springloaded/src/main/java/org/springsource/loaded/MethodInvokerRewriter.java @@ -990,7 +990,7 @@ public class MethodInvokerRewriter { } @Override - public void visitInvokeDynamicInsn(String name, String desc, org.objectweb.asm.Handle bsm, Object... bsmArgs) { + public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { // TODO *shudder* what about invoke dynamic calls that target reflective APIs int classId = typeRegistry.getTypeIdFor(slashedclassname, false); if (classId==-1) { diff --git a/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java b/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java index b7d4786..f0d8c46 100644 --- a/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java +++ b/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java @@ -1119,7 +1119,7 @@ public class TypeRegistry { } /** - *Used to determine if the invokedynamic needs to be intercepted. Currently very basic. + *Used to determine if the invokedynamic needs to be intercepted. * * @return null if nothing has been reloaded */ diff --git a/springloaded/src/main/java/org/springsource/loaded/test/infra/MethodPrinter.java b/springloaded/src/main/java/org/springsource/loaded/test/infra/MethodPrinter.java index 2f464c5..d00cc9a 100644 --- a/springloaded/src/main/java/org/springsource/loaded/test/infra/MethodPrinter.java +++ b/springloaded/src/main/java/org/springsource/loaded/test/infra/MethodPrinter.java @@ -56,7 +56,7 @@ public class MethodPrinter extends MethodVisitor implements Opcodes { } @Override - public void visitInvokeDynamicInsn(String name, String desc, org.objectweb.asm.Handle bsm, Object... bsmArgs) { + public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { to.println(" INVOKEDYNAMIC " + name+"."+desc+" bsm="+toString(bsm)); } diff --git a/springloaded/src/test/java/org/springsource/loaded/test/SpringLoadedTestsInSeparateJVM.java b/springloaded/src/test/java/org/springsource/loaded/test/SpringLoadedTestsInSeparateJVM.java index 83b88e9..d653bd1 100644 --- a/springloaded/src/test/java/org/springsource/loaded/test/SpringLoadedTestsInSeparateJVM.java +++ b/springloaded/src/test/java/org/springsource/loaded/test/SpringLoadedTestsInSeparateJVM.java @@ -79,6 +79,7 @@ public class SpringLoadedTestsInSeparateJVM extends SpringLoadedTests { @Test public void githubIssue34_2() throws Exception { jvm.copyToTestdataDirectory("issue34.InnerEnum$sorters"); + jvm.copyToTestdataDirectory("issue34.InnerEnum$MyComparator"); jvm.copyToTestdataDirectory("issue34.InnerEnum$sorters$1"); JVMOutput output = jvm.run("issue34.InnerEnum"); assertStdout("Hello World!\n", output); diff --git a/testdata-java8/build.gradle b/testdata-java8/build.gradle index 17b41ee..0c9263d 100644 --- a/testdata-java8/build.gradle +++ b/testdata-java8/build.gradle @@ -1,3 +1,4 @@ apply plugin: 'java' sourceCompatibility = 1.8 +targetCompatibility = 1.8 diff --git a/testdata/build.gradle b/testdata/build.gradle index b230c06..fa94bf2 100644 --- a/testdata/build.gradle +++ b/testdata/build.gradle @@ -1,4 +1,4 @@ -def aspectjVersion = "1.7.1" +def aspectjVersion = "1.8.0.M1" configurations { aspects @@ -9,8 +9,8 @@ dependencies { tools "org.aspectj:aspectjtools:$aspectjVersion" compile "org.aspectj:aspectjrt:$aspectjVersion" compile("cglib:cglib:2.2.2") { exclude group: 'asm' } // cglib 2.2.2 depends on asm 3.3 - compile 'asm:asm:3.2' - compile 'asm:asm-tree:3.2' + compile 'org.ow2.asm:asm:5.0_BETA' + compile 'org.ow2.asm:asm-tree:5.0_BETA' compile files("code.jar") } diff --git a/testdata/src/main/java/issue34/InnerEnum.java b/testdata/src/main/java/issue34/InnerEnum.java index c745261..e7b7e26 100644 --- a/testdata/src/main/java/issue34/InnerEnum.java +++ b/testdata/src/main/java/issue34/InnerEnum.java @@ -13,10 +13,17 @@ public class InnerEnum { @SuppressWarnings("unused") public static void main(String[] args) { System.out.println("Hello World!"); - Map map = new TreeMap(sorters.string); + Object o = sorters.string; +// Map map = new TreeMap(sorters.string); + } + + // May be able to switch back to using Comparator (and the TreeMap line above) once AspectJ 1.8.0 is out + interface MyComparator { + int compare(T a,T b); + boolean equals(Object o); } - private static enum sorters implements Comparator { + private static enum sorters implements MyComparator { string { private static final long serialVersionUID = 1L; @@ -24,6 +31,7 @@ public class InnerEnum { public int compare(String o1, String o2) { return o1.compareTo(o2); } + } } } \ No newline at end of file diff --git a/testdata/src/main/java/reflection/generics/GenericClass002.java b/testdata/src/main/java/reflection/generics/GenericClass002.java index eb031b8..427527e 100644 --- a/testdata/src/main/java/reflection/generics/GenericClass002.java +++ b/testdata/src/main/java/reflection/generics/GenericClass002.java @@ -6,7 +6,7 @@ public class GenericClass002> implements GenericInterfac //what we need in this v002 class... - // Same as in original class, but also with methods added (fore these cases) + // Same as in original class, but also with methods added (for these cases) public Iterator iterator() { return null;