diff --git a/springloaded/build.gradle b/springloaded/build.gradle index f0c414d..9c20276 100644 --- a/springloaded/build.gradle +++ b/springloaded/build.gradle @@ -41,8 +41,8 @@ task wrapper(type: Wrapper) { dependencies { tools 'com.googlecode.jarjar:jarjar:1.3' - compile 'org.ow2.asm:asm:5.0.2' - compile 'org.ow2.asm:asm-tree:5.0.2' + compile 'org.ow2.asm:asm:5.2' + compile 'org.ow2.asm:asm-tree:5.2' 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 28e6ca5..a81f974 100644 --- a/springloaded/src/main/java/org/springsource/loaded/ClassRenamer.java +++ b/springloaded/src/main/java/org/springsource/loaded/ClassRenamer.java @@ -206,7 +206,6 @@ public class ClassRenamer { @Override public void visitLdcInsn(Object obj) { - // System.out.println("Possibly remapping "+obj); if (obj instanceof Type) { Type t = (Type) obj; String s = t.getInternalName(); @@ -272,9 +271,6 @@ public class ClassRenamer { String owner = oldHandle.getOwner(); String name = oldHandle.getName(); String desc = oldHandle.getDesc(); - // System.out.println("handle: owner: "+owner); - // System.out.println("handle: name: "+name); - // System.out.println("handle: desc: "+desc); owner = renameRetargetIfNecessary(owner); desc = renameRetargetIfNecessary(desc); Handle newHandle = new Handle(tag, owner, name, desc); diff --git a/springloaded/src/main/java/org/springsource/loaded/Constants.java b/springloaded/src/main/java/org/springsource/loaded/Constants.java index 103e47c..9f3d0cd 100644 --- a/springloaded/src/main/java/org/springsource/loaded/Constants.java +++ b/springloaded/src/main/java/org/springsource/loaded/Constants.java @@ -30,6 +30,10 @@ import org.objectweb.asm.Opcodes; */ public interface Constants extends Opcodes { + public static final int preInvokeSpecial = 0; + + public static final int postInvokeSpecial = 1; + public static final Integer DEFAULT_INT = Integer.valueOf(0); public static final Byte DEFAULT_BYTE = Byte.valueOf((byte) 0); diff --git a/springloaded/src/main/java/org/springsource/loaded/ConstructorCopier.java b/springloaded/src/main/java/org/springsource/loaded/ConstructorCopier.java index 5745f55..1eabb99 100644 --- a/springloaded/src/main/java/org/springsource/loaded/ConstructorCopier.java +++ b/springloaded/src/main/java/org/springsource/loaded/ConstructorCopier.java @@ -25,10 +25,6 @@ import org.objectweb.asm.MethodVisitor; */ class ConstructorCopier extends MethodVisitor implements Constants { - private final static int preInvokeSpecial = 0; - - private final static int postInvokeSpecial = 1; - // It is important to know when an INVOKESPECIAL is hit, whether it is our actual one that delegates to the super or just // one being invoked due to some early object construction prior to the real INVOKESPECIAL running. By tracking // how many unitialized objects there are (count the NEWs) and how many INVOKESPECIALs have occurred, it is possible diff --git a/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java b/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java index e96c454..b7869a5 100644 --- a/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java +++ b/springloaded/src/main/java/org/springsource/loaded/ReloadableType.java @@ -450,7 +450,6 @@ public class ReloadableType { } catch(Exception e3) { //this better not blow up in my face } - // ReflectionUtils.clearCache(); typeRegistry.fireReloadEvent(this, versionsuffix); diff --git a/springloaded/src/main/java/org/springsource/loaded/Utils.java b/springloaded/src/main/java/org/springsource/loaded/Utils.java index ca92e59..30c3bf3 100644 --- a/springloaded/src/main/java/org/springsource/loaded/Utils.java +++ b/springloaded/src/main/java/org/springsource/loaded/Utils.java @@ -1016,7 +1016,7 @@ public class Utils implements Opcodes, Constants { public boolean isDoubleSlot() { if (kind == Kind.PRIMITIVE) { char ch = descriptor.charAt(0); - return ch == 'J' || ch == 'L'; + return ch == 'J' || ch == 'D'; } return false; } diff --git a/springloaded/src/main/java/org/springsource/loaded/agent/FileSystemWatcherInterface.java b/springloaded/src/main/java/org/springsource/loaded/agent/FileSystemWatcherInterface.java new file mode 100644 index 0000000..3859419 --- /dev/null +++ b/springloaded/src/main/java/org/springsource/loaded/agent/FileSystemWatcherInterface.java @@ -0,0 +1,18 @@ +package org.springsource.loaded.agent; + +import java.io.File; + +public interface FileSystemWatcherInterface { + /** + * Shutdown the thread. + */ + public void shutdown(); + + /** + * Add a new file to the list of those being monitored. If the file is something that can be watched, then this + * method will cause the thread to start (if it hasn't already been started). + * + * @param fileToMonitor the file to start monitor + */ + public void register(File fileToMonitor); +} diff --git a/springloaded/src/main/java/org/springsource/loaded/agent/MacOsFileSystemWatcher.java b/springloaded/src/main/java/org/springsource/loaded/agent/MacOsFileSystemWatcher.java new file mode 100644 index 0000000..476b38b --- /dev/null +++ b/springloaded/src/main/java/org/springsource/loaded/agent/MacOsFileSystemWatcher.java @@ -0,0 +1,4 @@ +package org.springsource.loaded.agent; + +public class MacOsFileSystemWatcher { +} diff --git a/springloaded/src/main/java/org/springsource/loaded/agent/PollingFileSystemWatcher.java b/springloaded/src/main/java/org/springsource/loaded/agent/PollingFileSystemWatcher.java new file mode 100644 index 0000000..f3e69fc --- /dev/null +++ b/springloaded/src/main/java/org/springsource/loaded/agent/PollingFileSystemWatcher.java @@ -0,0 +1,4 @@ +package org.springsource.loaded.agent; + +public class PollingFileSystemWatcher { +} diff --git a/springloaded/src/test/java/org/springsource/loaded/test/FileSystemWatcherTests.java b/springloaded/src/test/java/org/springsource/loaded/test/PollingFileSystemWatcherTests.java similarity index 99% rename from springloaded/src/test/java/org/springsource/loaded/test/FileSystemWatcherTests.java rename to springloaded/src/test/java/org/springsource/loaded/test/PollingFileSystemWatcherTests.java index e2f1ff7..d52db7c 100644 --- a/springloaded/src/test/java/org/springsource/loaded/test/FileSystemWatcherTests.java +++ b/springloaded/src/test/java/org/springsource/loaded/test/PollingFileSystemWatcherTests.java @@ -35,7 +35,7 @@ import org.springsource.loaded.ReloadableType; import org.springsource.loaded.agent.FileSystemWatcher; -public class FileSystemWatcherTests { +public class PollingFileSystemWatcherTests { /** * Create a folder, watch it then put a couple of files in and check they are detected diff --git a/springloaded/src/test/java/org/springsource/loaded/test/ReloadableTypeTests.java b/springloaded/src/test/java/org/springsource/loaded/test/ReloadableTypeTests.java index 4ad2538..7422ff2 100644 --- a/springloaded/src/test/java/org/springsource/loaded/test/ReloadableTypeTests.java +++ b/springloaded/src/test/java/org/springsource/loaded/test/ReloadableTypeTests.java @@ -564,6 +564,13 @@ public class ReloadableTypeTests extends SpringLoadedTests { assertFalse(rt.isDoubleSlot()); assertFalse(rt.isVoid()); + rt = ReturnType.getReturnType("D"); + assertEquals(ReturnType.Kind.PRIMITIVE, rt.kind); + assertEquals("D", rt.descriptor); + assertTrue(rt.isPrimitive()); + assertTrue(rt.isDoubleSlot()); + assertFalse(rt.isVoid()); + rt = ReturnType.getReturnType("[Ljava/lang/String;"); assertEquals(ReturnType.Kind.ARRAY, rt.kind); assertEquals("[Ljava/lang/String;", rt.descriptor);