<AWT Dev> Request review for 7129742 : Unable to view focus in Non-Editable TextArea
Sean Chou
zhouyx at linux.vnet.ibm.com
Wed Feb 1 22:31:10 PST 2012
Hi Artem, Alexander and Pavel ,
I'm writing the testcase, but while testing it, I got IllegalAccessError
.
Compilation of the testcase is successful. The spec says
" this error can only occur at run time if the definition of a
class has incompatibly changed." I'm using jdk8 built on
2012_02_01_17_01 and I changed nothing about that class.
Do you have any idea about the error ? Thanks.
The test case and error are as follow:
////////// includes two classes.
package sun.awt.X11 ;
import java.awt.TextArea;
import javax.swing.text.Caret;
import javax.swing.JTextArea;
import java.lang.reflect.Field;
public class XPeerTestHelper extends XTextAreaPeer{
public XPeerTestHelper(TextArea target) {
super(target);
}
public Caret getCaret() {
return jtext.getCaret(); // Exception reported to this line.
}
}
/////
import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.text.DefaultCaret;
import sun.awt.SunToolkit;
import sun.awt.X11.XPeerTestHelper;
public class bug7129742 {
public static boolean passed = false;
public static JFrame frame = null;
public static JButton button = null;
public static TextArea textArea = null;
public static DefaultCaret caret = null;
public static void main(String[] args) throws Exception {
SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame = new JFrame("Test");
button = new JButton("JButton");
textArea = new TextArea("Non-editable textArea");
textArea.setEditable(false);
frame.setLayout(new FlowLayout());
frame.getContentPane().add(button);
frame.getContentPane().add(textArea);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
toolkit.realSync();
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
//caret = (DefaultCaret)
try {
XPeerTestHelper helper = new XPeerTestHelper(textArea);
caret = (DefaultCaret) helper.getCaret();
} catch (ClassCastException e ){
// If it is not XTextAreaPeer, the test case is skipped
System.out.println("It is not it is not XTextAreaPeer,
testcase skipped");
passed = true;
}
}
});
toolkit.realSync();
if (passed){
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.dispose();
}
});
toolkit.realSync();
return;
}
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
button.requestFocusInWindow();
}
});
toolkit.realSync();
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
textArea.requestFocusInWindow();
}
});
toolkit.realSync();
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
passed = caret.isVisible();
frame.dispose();
}
});
toolkit.realSync();
if (!passed) {
throw new RuntimeException("The test for bug 71297422 failed");
}
}
}
///////////////////////// end testcase
Error information is:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1238)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1344)
at bug7129742.main(bug7129742.java:80)
Caused by: java.lang.IllegalAccessError: class sun.awt.X11.XPeerTestHelper
cannot access its superclass sun.awt.X11.XTextAreaPeer
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
at java.net.URLClassLoader.access$100(URLClassLoader.java:64)
at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
at java.net.URLClassLoader$1.run(URLClassLoader.java:348)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at bug7129742$2.run(bug7129742.java:85)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
at java.awt.EventQueue.access$000(EventQueue.java:102)
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:216)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
On Mon, Jan 16, 2012 at 11:56 PM, Artem Ananiev <artem.ananiev at oracle.com>wrote:
> Hi, Sean,
>
> text components in XToolkit use Swing peers, so this change should better
> be reviewed on the swing-dev alias. To save everybody's time, I've asked
> Alex and Pavel from the Swing team (in CC) to take a look and they confirm
> the fix looks fine.
>
> Did you consider creating a new regression test for this fix? I'm not sure
> it's easy to detect if caret is visible in the text component or not,
> though.
>
> Thanks,
>
> Artem
>
>
> On 1/16/2012 7:08 AM, Sean Chou wrote:
>
>> Hi all,
>>
>> I made a patch for bug 7129742,
>> http://bugs.sun.com/**bugdatabase/view_bug.do?bug_**id=7129742<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7129742>.
>> The webrev link is : http://cr.openjdk.java.net/~**
>> zhouyx/7129742/webrev.00/<http://cr.openjdk.java.net/~zhouyx/7129742/webrev.00/>
>>
>> The solution is very simple, just set the cursor visible.
>>
>> Please have a look and give some comments. Thanks.
>>
>> --
>> Best Regards,
>> Sean Chou
>>
>>
--
Best Regards,
Sean Chou
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20120202/d58bf641/attachment.html
More information about the awt-dev
mailing list