[OpenJDK 2D-Dev] [9] RFR JDK-8034239, , PrintServiceLookup.lookupPrintServices() returns different amount of services in comparison with lpstat -v

Phil Race philip.race at oracle.com
Mon Mar 7 20:28:08 UTC 2016


Why do the copy ? Why not just add  one line

supportedDocFlavors = flavor

-phil.

On 03/07/2016 03:20 AM, prasanta sadhukhan wrote:
> Hi Phil,
>
> Please find the updated webrev:
> http://cr.openjdk.java.net/~psadhukhan/8034239/webrev.01/
>
> I checked JDK-8040139 also passed with this modification.
>
> Regards
> Prasanya
> On 3/5/2016 1:14 AM, Phil Race wrote:
>> if the class is supposed to use the return value in this way what 
>> about these lines :-
>>
>> 1209
>> 1210     public boolean isIPPSupportedImages(String mimeType) {
>> 1211         if (supportedDocFlavors == null) {
>> 1212             getSupportedDocFlavors();
>> 1213         }
>>
>> It looks to me as if what you should really be doing is modifying
>> the last few lines of getSupportedDocFlavors() as you are using
>> the return value to update the variable which it should have
>> assigned itself.
>>
>> -phil
>>   
>>
>>
>> On 03/04/2016 02:48 AM, prasanta sadhukhan wrote:
>>> Hi Phil,
>>>
>>> Please review a print service fix for jdk9
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8034239
>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8034239/webrev.00/
>>>
>>> The issue was lpstat -v was reporting 2 printer service but 
>>> PrintServiceLookup.lookupPrintServices() list only 1.
>>> #lpstat -v
>>> device for tta_printer: 
>>> ipp://<internal-printer-ip>/printers/tta_printer 
>>> <ipp://st-tta-adc-02.us.oracle.com/printers/tta_printer>
>>> device for Xerox-WorkCentre-4250: socket://spb04p12.ru.oracle.com:9100
>>>
>>> but lookupPrintServices() listed only "Xerox" printer and not 
>>> "tta_printer".
>>>
>>> It seems "tta_printer" was added using
>>> *lpadmin -pprinter-name  -E -vdevice  -m ppd
>>>
>>> *
>>> so it becomes a "Remote Printer" and even though Java sees that 
>>> printer, it calls getUnsupportedAttributes() on that printer service 
>>> to see if that printer matches the DocFlavor.
>>> In this case, this remote printer does not have any supported doc 
>>> flavor listed so when getSupportedDocFlavors() is called, it does 
>>> not see any "document-format-supported" attribute.
>>> Although JDK-8040139 fixed this problem by adding
>>> DocFlavor.SERVICE_FORMATTED.PAGEABLE andDocFlavor.SERVICE_FORMATTED.PRINTABLE
>>>
>>> to the supported DocFlavors since as per spec,
>>> as per spec
>>> /https://docs.oracle.com/javase/8/docs/api/index.html?javax/print/PrintService.html//
>>> //it clearly says, /
>>> getSupportedDocFlavors()
>>>
>>> /Returns:/
>>>     /Array of supported doc flavors, should have at least one element./
>>>
>>>
>>> the returned flavours are not populated to supported DocFlavors 
>>> called by IPPPrintService.java#getUnsupportedAttributes() -> 
>>> isDocFlavorSupported() so "supportedDocFlavors" was still false for 
>>> this case.
>>>
>>> I added a fix to populate the PAGEABLE & PRINTABLE docflavor to 
>>> "supportedDocFlavors" and tested in sqe machine and found it working.
>>>
>>> I could not add a regression testcase as it involves adding a 
>>> "remote printer" using lpadmin command. I would add "noreg-sqe" to 
>>> the bug.
>>>
>>> Regards
>>> Prasanta
>>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20160307/213fb656/attachment.html>


More information about the 2d-dev mailing list