[OpenJDK 2D-Dev] Suggest a modification to isPostscript exception handling

Phil Race philip.race at oracle.com
Mon Sep 3 17:41:47 UTC 2012


Hi,

You didn't answer any of these very specific and direct questions I posed :

 > What precise exception happened, precisely where and precisely why ?


-phil.

On 9/2/12 7:34 PM, Sean Chou wrote:
> Hi Phil,
>
> Yes, a non-IO Exception is generated.  Another catch clause is of 
> cause a choice;
> however we are thinking the return true might wide the exception too 
> much, so it is
> modified.
>
> On Tue, Aug 28, 2012 at 1:57 AM, Phil Race <philip.race at oracle.com 
> <mailto:philip.race at oracle.com>> wrote:
>
>     Hi,
>
>
>     >The reason is quite straight forward as described in the first mail.
>     >IPPPrintService.isPostscript catches all IOException and return true,
>     > while the try block in PSPrinterJob catches all Throwable .
>     >In our scenario, an non-io exception is produced in the try block
>     and it get executed.
>
>     So you mean the code in IPPPrintService somehow generates a non-IO
>     Exception?
>     In that case shouldn't you widen the catch there rather in the
>     outer code ?
>
>
>     What precise exception happened, precisely where and precisely why ?
>
>     As for the bug you point to, the Lexmark T632 is a Postscript
>     capable printer
>     so if it had problems with valid postscript, then its a Lexmark
>     bug. I don't
>     think we should bias the implementation to work around a bug in a
>     particular printer.
>
>     Also the source code of IPPPrintService has a comment which
>     already answered your
>     question as to why we chose to return true - it was expecting an
>     IOException to most likely
>     mean no PPD meaning a raw printer. Since we are sending postscript
>     it had then better be a
>     postscript capable printer ..
>     Other reasons probably were indicative of being unable to print
>     there at all.
>
>     -phil.
>
>
>
>     On 8/26/2012 5:24 AM, Sean Chou wrote:
>
>         Hi Phil,
>
>
>         On Sat, Aug 25, 2012 at 2:10 AM, Phil Race
>         <philip.race at oracle.com <mailto:philip.race at oracle.com>
>         <mailto:philip.race at oracle.com
>         <mailto:philip.race at oracle.com>>> wrote:
>
>             Hi,
>
>             On 8/23/2012 10:23 PM, Sean Chou wrote:
>
>                 Hi Phil,
>
>                     I'm really sorry about this typo, the modification
>         looks
>                 so simple that I became careless when porting.
>
>
>             That's a slippery slope. Only send out code that you built
>         and tested.
>             What if reviewer also thinks "this must be OK else it wouldn't
>             have built, and of course he built it ... "
>
>         You are right, that's my fault and it won't happen again.
>
>
>
>                     The patch is from ibmjdk and it has been tested on
>         Java6
>                 since Oct, 2007 and on Java7 since Feb, 2012.  To be
>         honest,
>                 this modification isn't related to a real bug in
>         openjdk for
>                 now; it is posted to see if there are any reason that the
>                 printer is assumed to be a postscript printer in all
>         exceptions.
>
>
>             The code went into JDK 6u2 on 27th Feb 2007 and would have
>         been
>             released a few months later.
>             IBM apparently made this change pretty soon after that.
>             So the question that should be asked is not why is the openjdk
>             code like this,
>             but why did IBM make the change they did ?
>             I have no record or recollection of any problem reports.
>             I can't see any value to it. Unless there's a reflection
>         problem
>             (which there should not be!)
>             its never going to get executed.
>
>
>         The reason is quite straight forward as described in the first
>         mail. IPPPrintService.isPostscript catches all IOException and
>         return true, while the try block in PSPrinterJob catches all
>         Throwable . In our scenario, an non-io exception is produced
>         in the try block and it get executed.
>
>         As there are some bugs related to "/DeferredMediaSelection
>         true" like
>         http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6266343;
>         and it is strange to return true when exceptions are seen
>         because the default behavior in try block is to return true.
>         We think the expansion from IOException to Throwable is too
>         much, and return false for exception is better. Does it return
>         true because it is assumed not to run ?
>
>
>             -phil.
>
>
>                     Many thanks.
>
>                 The false is corrected in this webrev:
>         http://cr.openjdk.java.net/~zhouyx/OJDK-429/webrev.02/
>         <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.02/>
>                 <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.02/>
>                 <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.02/>
>
>
>                 On Fri, Aug 24, 2012 at 12:20 AM, Phil Race
>                 <philip.race at oracle.com
>         <mailto:philip.race at oracle.com> <mailto:philip.race at oracle.com
>         <mailto:philip.race at oracle.com>>
>                 <mailto:philip.race at oracle.com
>         <mailto:philip.race at oracle.com>
>
>                 <mailto:philip.race at oracle.com
>         <mailto:philip.race at oracle.com>>>> wrote:
>
>                     Sean,
>
>                     Without even commenting on the merits or necessity
>         I note
>                 that you
>                     cannot possibly
>                     have even built this patch, much less tested it.
>
>                 > 625 return Boolean.FLASE;
>
>                     -phil.
>
>
>                     On 8/23/12 1:58 AM, Sean Chou wrote:
>
>                         Hello,
>
>                             I updated the repository to 2d, the webrev
>         is now:
>         http://cr.openjdk.java.net/~zhouyx/OJDK-429/webrev.01/
>         <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.01/>
>                    
>         <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.01/>
>                    
>         <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.01/>
>
>                         Please take a look.
>
>                         ---------- Forwarded message ----------
>                         From: *Sean Chou* <zhouyx at linux.vnet.ibm.com
>         <mailto:zhouyx at linux.vnet.ibm.com>
>                     <mailto:zhouyx at linux.vnet.ibm.com
>         <mailto:zhouyx at linux.vnet.ibm.com>>
>                     <mailto:zhouyx at linux.vnet.ibm.com
>         <mailto:zhouyx at linux.vnet.ibm.com>
>                     <mailto:zhouyx at linux.vnet.ibm.com
>         <mailto:zhouyx at linux.vnet.ibm.com>>>>
>                         Date: Thu, Aug 23, 2012 at 2:24 PM
>                         Subject: Suggest a modification to isPostscript
>                     exception handling
>                         To: 2d-dev at openjdk.java.net
>         <mailto:2d-dev at openjdk.java.net>
>                     <mailto:2d-dev at openjdk.java.net
>         <mailto:2d-dev at openjdk.java.net>>
>                     <mailto:2d-dev at openjdk.java.net
>         <mailto:2d-dev at openjdk.java.net>
>
>                     <mailto:2d-dev at openjdk.java.net
>         <mailto:2d-dev at openjdk.java.net>>>
>
>
>                         Hello,
>
>                              This is a simple modification to
>                     sun/print/PSPrinterJob.java.
>                              When sun.print.IPPPrintService.isPostscript
>                     method checks if
>                         the printer is a postscript printer, if
>         IOException
>                     happens, the
>                         method assumes the printer is postscript printer
>                         (IPPPrintService.java, line 1605). In class
>                     PSPrinterJob, it
>                         invoke isPostscript and assumes all
>          Throwables to be a
>                         postscript printer ( PSPrinterJob.java, line
>         625 ).  I
>                     think it
>                         should return false in cases exceptions other
>                         than IOException are caught, IOException
>         should not be
>                     expanded
>                         to all Throwable.
>
>                         The webrev is at:
>         http://cr.openjdk.java.net/~zhouyx/OJDK-429/webrev.00/
>         <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.00/>
>                    
>         <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.00/>
>                    
>         <http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.00/>  .
>
>
>                         Please take a look.
>
>                         --     Best Regards,
>                         Sean Chou
>
>
>
>
>
>                 --         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/2d-dev/attachments/20120903/c0a07262/attachment.html>


More information about the 2d-dev mailing list