JDK-6878168 : PIT: Showing Print/Page dialog throws CCE
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 6u18
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2009-09-02
  • Updated: 2011-02-16
  • Resolved: 2010-01-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7
6u16-revFixed 7Resolved
Related Reports
Relates :  
Description
Showing a Print or Page dialog thows ClassCastException.

This is seen only with 6u18 b02 PIT build, not with b01.

Exception:
Exception in thread "main" java.lang.ClassCastException: sun.awt.windows.WPrintDialogPeer cannot be cast to java.awt.peer.DialogPeer
        at java.awt.Dialog.blockWindows(Dialog.java:1552)
        at java.awt.Dialog.modalShow(Dialog.java:1442)
        at java.awt.Dialog.conditionalShow(Dialog.java:903)
        at java.awt.Dialog.show(Dialog.java:1035)
        at java.awt.Component.show(Component.java:1563)
        at java.awt.Component.setVisible(Component.java:1515)
        at java.awt.Window.setVisible(Window.java:842)
        at java.awt.Dialog.setVisible(Dialog.java:986)
        at sun.awt.windows.WPrinterJob.displayNativeDialog(WPrinterJob.java:441)
        at sun.awt.windows.WPrinterJob.printDialog(WPrinterJob.java:532)

Testcase:
public class Test {
    public static void main(String[] args) {
        PrinterJob.getPrinterJob().printDialog();
        //PrinterJob.getPrinterJob().pageDialog(new PageFormat());
    }
}

Comments
EVALUATION Fix as suggested by Yuri: to make WPrintDialogPeer implement DialogPeer WPageDialogPeer should take care auto. since it extends from WPrintDialogPeer ---- Test case passes after this 1 line change.
02-09-2009

SUGGESTED FIX Fix as suggested by Yuri N. src/windows/classes/sun/awt/windows/WPrintDialogPeer.java package sun.awt.windows; import java.awt.*; import java.awt.dnd.DropTarget; import java.util.Vector; import sun.awt.AppContext; import sun.awt.*; ! public class WPrintDialogPeer extends WWindowPeer { static { initIDs(); } --- 7,22 ---- package sun.awt.windows; import java.awt.*; import java.awt.dnd.DropTarget; + import java.awt.peer.*; import java.util.Vector; import sun.awt.AppContext; import sun.awt.*; ! public class WPrintDialogPeer extends WWindowPeer implements DialogPeer { static { initIDs(); }
02-09-2009