test/runtime/7158988/FieldMonitor.java

Print this page

        

@@ -32,17 +32,14 @@
  */
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.Writer;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.io.File;
 
 import com.sun.jdi.Bootstrap;
 import com.sun.jdi.Field;
 import com.sun.jdi.ReferenceType;
 import com.sun.jdi.VirtualMachine;

@@ -65,21 +62,20 @@
 public class FieldMonitor {
 
   public static final String CLASS_NAME = "TestPostFieldModification";
   public static final String FIELD_NAME = "value";
   public static final String ARGUMENTS = "-Xshare:off -XX:+PrintGC";
+  static final String MY_TMP_FILE_NAME = "FieldMonitor-tmp-filename-7158988";
 
   public static void main(String[] args)
       throws IOException, InterruptedException {
 
-    StringBuffer sb = new StringBuffer();
-
-    for (int i=0; i < args.length; i++) {
-        sb.append(' ');
-        sb.append(args[i]);
+    File file = new File(System.getProperty("user.dir"), MY_TMP_FILE_NAME);
+    if (file.exists()) {
+        file.delete();
     }
-    //VirtualMachine vm = launchTarget(sb.toString());
+    
     VirtualMachine vm = launchTarget(CLASS_NAME);
 
     System.out.println("Vm launched");
     // set watch field on already loaded classes
     List<ReferenceType> referenceTypes = vm

@@ -119,10 +115,17 @@
           System.out.println("ClassPrepareEvent");
           ClassPrepareEvent classPrepEvent = (ClassPrepareEvent) event;
           ReferenceType refType = classPrepEvent
               .referenceType();
           addFieldWatch(vm, refType);
+          
+          // inform TestPostFieldModification that it can exit. // JDK-8007710
+          if (!file.exists()) {
+                System.out.println("---FieldMonitor-main creating: " + file.getAbsolutePath());
+                file.createNewFile();
+                file.deleteOnExit();
+          }
         } else if (event instanceof ModificationWatchpointEvent) {
           System.out.println("sleep for 500 ms");
           Thread.sleep(500);
           System.out.println("resume...");