Hi Phil,<div><br></div><div>    
Yes, a non-IO Exception is generated.  Another catch clause is of cause a choice;</div><div>however we are thinking the return true might wide the exception too much, so it is</div><div>modified. </div><div><br><div class="gmail_quote">
On Tue, Aug 28, 2012 at 1:57 AM, Phil Race <span dir="ltr"><<a href="mailto:philip.race@oracle.com" target="_blank">philip.race@oracle.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<div class="im"><br>
<br>
>The reason is quite straight forward as described in the first mail.<br>
>IPPPrintService.isPostscript catches all IOException and return true,<br>
> while the try block in PSPrinterJob catches all Throwable .<br>
>In our scenario, an non-io exception is produced in the try block and it get executed.<br>
<br></div>
So you mean the code in IPPPrintService somehow generates a non-IO Exception?<br>
In that case shouldn't you widen the catch there rather in the outer code ?</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
What precise exception happened, precisely where and precisely why ?<br>
<br>
As for the bug you point to, the Lexmark T632 is a Postscript capable printer<br>
so if it had problems with valid postscript, then its a Lexmark bug. I don't<br>
think we should bias the implementation to work around a bug in a particular printer.<br>
<br>
Also the source code of IPPPrintService has a comment which already answered your<br>
question as to why we chose to return true - it was expecting an IOException to most likely<br>
mean no PPD meaning a raw printer. Since we are sending postscript it had then better be a<br>
postscript capable printer ..<br>
Other reasons probably were indicative of being unable to print there at all.<br>
<br>
-phil.<div class="im"><br>
<br>
<br>
On 8/26/2012 5:24 AM, Sean Chou wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Phil,<div><div class="h5"><br>
<br>
On Sat, Aug 25, 2012 at 2:10 AM, Phil Race <<a href="mailto:philip.race@oracle.com" target="_blank">philip.race@oracle.com</a> <mailto:<a href="mailto:philip.race@oracle.com" target="_blank">philip.race@oracle.com</a><u></u>>> wrote:<br>

<br>
    Hi,<br>
<br>
    On 8/23/2012 10:23 PM, Sean Chou wrote:<br>
<br>
        Hi Phil,<br>
<br>
            I'm really sorry about this typo, the modification looks<br>
        so simple that I became careless when porting.<br>
<br>
<br>
    That's a slippery slope. Only send out code that you built and tested.<br>
    What if reviewer also thinks "this must be OK else it wouldn't<br>
    have built, and of course he built it ... "<br>
<br>
You are right, that's my fault and it won't happen again.<br>
<br>
<br>
<br>
            The patch is from ibmjdk and it has been tested on Java6<br>
        since Oct, 2007 and on Java7 since Feb, 2012.  To be honest,<br>
        this modification isn't related to a real bug in openjdk for<br>
        now; it is posted to see if there are any reason that the<br>
        printer is assumed to be a postscript printer in all exceptions.<br>
<br>
<br>
    The code went into JDK 6u2 on 27th Feb 2007 and would have been<br>
    released a few months later.<br>
    IBM apparently made this change pretty soon after that.<br>
    So the question that should be asked is not why is the openjdk<br>
    code like this,<br>
    but why did IBM make the change they did ?<br>
    I have no record or recollection of any problem reports.<br>
    I can't see any value to it. Unless there's a reflection problem<br>
    (which there should not be!)<br>
    its never going to get executed.<br>
<br>
<br>
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.<br>

<br>
As there are some bugs related to "/DeferredMediaSelection true" like <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6266343" target="_blank">http://bugs.sun.com/<u></u>bugdatabase/view_bug.do?bug_<u></u>id=6266343</a>; 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 ?<br>

<br>
<br>
    -phil.<br>
<br>
<br>
            Many thanks.<br>
<br>
        The false is corrected in this webrev:<br>
        <a href="http://cr.openjdk.java.net/~zhouyx/OJDK-429/webrev.02/" target="_blank">http://cr.openjdk.java.net/~<u></u>zhouyx/OJDK-429/webrev.02/</a><br>
        <<a href="http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.02/" target="_blank">http://cr.openjdk.java.net/%<u></u>7Ezhouyx/OJDK-429/webrev.02/</a>><br>
        <<a href="http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.02/" target="_blank">http://cr.openjdk.java.net/%<u></u>7Ezhouyx/OJDK-429/webrev.02/</a>><br>
<br>
<br>
        On Fri, Aug 24, 2012 at 12:20 AM, Phil Race<br>
        <<a href="mailto:philip.race@oracle.com" target="_blank">philip.race@oracle.com</a> <mailto:<a href="mailto:philip.race@oracle.com" target="_blank">philip.race@oracle.com</a><u></u>><br></div></div>
        <mailto:<a href="mailto:philip.race@oracle.com" target="_blank">philip.race@oracle.com</a><div class="im"><br>
        <mailto:<a href="mailto:philip.race@oracle.com" target="_blank">philip.race@oracle.com</a><u></u>>>> wrote:<br>
<br>
            Sean,<br>
<br>
            Without even commenting on the merits or necessity I note<br>
        that you<br>
            cannot possibly<br>
            have even built this patch, much less tested it.<br>
<br>
        > 625 return Boolean.FLASE;<br>
<br>
            -phil.<br>
<br>
<br>
            On 8/23/12 1:58 AM, Sean Chou wrote:<br>
<br>
                Hello,<br>
<br>
                    I updated the repository to 2d, the webrev is now:<br>
            <a href="http://cr.openjdk.java.net/~zhouyx/OJDK-429/webrev.01/" target="_blank">http://cr.openjdk.java.net/~<u></u>zhouyx/OJDK-429/webrev.01/</a><br>
            <<a href="http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.01/" target="_blank">http://cr.openjdk.java.net/%<u></u>7Ezhouyx/OJDK-429/webrev.01/</a>><br>
            <<a href="http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.01/" target="_blank">http://cr.openjdk.java.net/%<u></u>7Ezhouyx/OJDK-429/webrev.01/</a>><br>
<br>
                Please take a look.<br>
<br>
                ---------- Forwarded message ----------<br>
                From: *Sean Chou* <<a href="mailto:zhouyx@linux.vnet.ibm.com" target="_blank">zhouyx@linux.vnet.ibm.com</a><br>
            <mailto:<a href="mailto:zhouyx@linux.vnet.ibm.com" target="_blank">zhouyx@linux.vnet.ibm.<u></u>com</a>><br></div><div class="im">
            <mailto:<a href="mailto:zhouyx@linux.vnet.ibm.com" target="_blank">zhouyx@linux.vnet.ibm.<u></u>com</a><br>
            <mailto:<a href="mailto:zhouyx@linux.vnet.ibm.com" target="_blank">zhouyx@linux.vnet.ibm.<u></u>com</a>>>><br>
                Date: Thu, Aug 23, 2012 at 2:24 PM<br>
                Subject: Suggest a modification to isPostscript<br>
            exception handling<br>
                To: <a href="mailto:2d-dev@openjdk.java.net" target="_blank">2d-dev@openjdk.java.net</a><br>
            <mailto:<a href="mailto:2d-dev@openjdk.java.net" target="_blank">2d-dev@openjdk.java.<u></u>net</a>><br></div>
            <mailto:<a href="mailto:2d-dev@openjdk.java.net" target="_blank">2d-dev@openjdk.java.<u></u>net</a><div><div class="h5"><br>
            <mailto:<a href="mailto:2d-dev@openjdk.java.net" target="_blank">2d-dev@openjdk.java.<u></u>net</a>>><br>
<br>
<br>
                Hello,<br>
<br>
                     This is a simple modification to<br>
            sun/print/PSPrinterJob.java.<br>
                     When sun.print.IPPPrintService.<u></u>isPostscript<br>
            method checks if<br>
                the printer is a postscript printer, if IOException<br>
            happens, the<br>
                method assumes the printer is postscript printer<br>
                (IPPPrintService.java, line 1605). In class<br>
            PSPrinterJob, it<br>
                invoke isPostscript and assumes all  Throwables to be a<br>
                postscript printer ( PSPrinterJob.java, line 625 ).  I<br>
            think it<br>
                should return false in cases exceptions other<br>
                than IOException are caught, IOException should not be<br>
            expanded<br>
                to all Throwable.<br>
<br>
                The webrev is at:<br>
            <a href="http://cr.openjdk.java.net/~zhouyx/OJDK-429/webrev.00/" target="_blank">http://cr.openjdk.java.net/~<u></u>zhouyx/OJDK-429/webrev.00/</a><br>
            <<a href="http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.00/" target="_blank">http://cr.openjdk.java.net/%<u></u>7Ezhouyx/OJDK-429/webrev.00/</a>><br>
            <<a href="http://cr.openjdk.java.net/%7Ezhouyx/OJDK-429/webrev.00/" target="_blank">http://cr.openjdk.java.net/%<u></u>7Ezhouyx/OJDK-429/webrev.00/</a>>  .<br>
<br>
<br>
                Please take a look.<br>
<br>
                --     Best Regards,<br>
                Sean Chou<br>
<br>
<br>
<br>
<br>
<br>
        --         Best Regards,<br>
        Sean Chou<br>
<br>
<br>
<br>
<br>
<br>
-- <br>
Best Regards,<br>
Sean Chou<br>
<br>
</div></div></blockquote>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Best Regards,<br>Sean Chou<br><br>
</div>