< prev index next >

test/java/awt/Mixing/AWT_Mixing/OverlappingTestBase.java

Print this page

        

@@ -23,16 +23,16 @@
 
 import java.awt.*;
 import java.awt.event.*;
 import java.awt.peer.ComponentPeer;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import javax.swing.*;
 
-import sun.awt.AWTAccessor;
 import sun.awt.EmbeddedFrame;
 import java.io.*;
 import test.java.awt.regtesthelpers.Util;
 
 /**

@@ -72,10 +72,11 @@
     private static final String[] simpleAwtControls = {"Button", "Checkbox", "Label", "TextArea"};
     /**
      * Generic strings array. To be used for population of List based controls.
      */
     protected static final String[] petStrings = {"Bird", "Cat", "Dog", "Rabbit", "Rhynocephalia Granda", "Bear", "Tiger", "Mustang"};
+    static Field peerField;
     // "properties"
     /**
      * Tests customization. Set this variable to test only control from java.awt
      * <p>Usage of this variable should be marked with CR being the reason.
      * <p>Do not use this variable simultaneously with {@link OverlappingTestBase#skipClassNames}

@@ -243,12 +244,11 @@
                 long frameWindow = 0;
                 String getWindowMethodName = "getHWnd";
                 if (Toolkit.getDefaultToolkit().getClass().getName().contains("XToolkit")) {
                     getWindowMethodName = "getWindow";
                 }
-                ComponentPeer peer = AWTAccessor.getComponentAccessor()
-                                                .getPeer(embedder);
+                ComponentPeer peer = (ComponentPeer) peerField.get(embedder);
                 //  System.err.println("Peer: " + peer);
                 Method getWindowMethod = peer.getClass().getMethod(getWindowMethodName);
                 frameWindow = (Long) getWindowMethod.invoke(peer);
 //                System.err.println("frame peer ID: " + frameWindow);
 

@@ -566,10 +566,16 @@
      * Starting point for test runs. See usage at {@link OverlappingTestBase }
      * @param args regular main args, not used.
      * @throws InterruptedException
      */
     public static void doMain(String args[]) throws InterruptedException {
+        try {
+            peerField = Component.class.getDeclaredField("peer");
+        } catch (NoSuchFieldException e) {
+            throw new RuntimeException("peer field is not available");
+        }
+        peerField.setAccessible(true);
         mainThread = Thread.currentThread();
         try {
             init();
         } catch (TestPassedException e) {
             //The test passed, so just return from main and harness will
< prev index next >