<AWT Dev> Request review for 7129742 : Unable to view focus in Non-Editable TextArea
Sean Chou
zhouyx at linux.vnet.ibm.com
Fri Feb 3 01:39:20 PST 2012
Problem resolved, I'll post the testcase later.
On Thu, Feb 2, 2012 at 2:31 PM, Sean Chou <zhouyx at linux.vnet.ibm.com> wrote:
> 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
>
>
--
Best Regards,
Sean Chou
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20120203/b1ab740e/attachment.html
More information about the awt-dev
mailing list