[OpenJDK 2D-Dev] [9] RFR JDK-8170578: The Pages Range From in print dialog is disabled

Philip Race philip.race at oracle.com
Tue Jan 31 19:10:08 UTC 2017

I spent some significant amount of time trying to make sure I know the 
IPP protocol
that is underpinning this. Prasanta provided me with some additional 
logging from
which it seems that there are 3 repeated attributes.
IPPPrintService>> readIPPResponse pwg-raster-document-resolution-supported
IPPPrintService>> readIPPResponse pwg-raster-document-sheet-back
IPPPrintService>> readIPPResponse pwg-raster-document-type-supported

Furthermore I have determined that 16.10 ships with CUPS 2.2 - released 
only a few weeks before 16.10
Whereas 16.04 has 2.1.3. So what we have here is a major CUPS upgrade 
and I am still not 100% sure
if these duplicates are a CUPS bug - but I think it probable.

These duplicated attributes are not important to our implementation, so 
all we need to do
is make sure they don't break us. I don't see a reason to care if we 
keep the first or replace
it with the second. Any new attributes we've previously ignored will 
still be ignored.

What Prasanta has implemented will fix our bug so I am approving.

However our implementation looks odd to me - I do not understand why there
was an expectation a new HashMap ever needed to be created. It only makes
sense if duplicate attributes are normal. But then there is no rhyme nor 
to then simply picking the first HashMap and ignoring the rest.
If anything I'd expect that you may want to tie a HashMap to each group tag.
In which case the first one would be operational attributes, not printer 
And it isn't done like that anyway. It just creates a new one "on 
demand" when
it sees the key is already used. This happens in the middle of 
processing a particular group.
So it still makes no sense.
Accordingly I think we need a follow-on bug to examine, explain and if 
necessary update this in 10.


On 1/18/17, 3:11 AM, Prasanta Sadhukhan wrote:
> Ok. Updated webrev just in case we are not reading the protocol wrongly.
> http://cr.openjdk.java.net/~psadhukhan/8170578/webrev.02/
> Regards
> Prasanta
> On 1/12/2017 8:04 AM, Philip Race wrote:
>> I am looking at this and the hold up is I can't remember the protocol 
>> readIPPResponse() is
>> trying to follow. Without that understanding it is hard to say much 
>> .. so I need to go read
>> up and remember ..
>> Two  comments : There is an extra space in
>> if (responseMap.length>   1) {
>> The test update is bogus in referring to this bug. The change is 
>> nothing to do with the bug.
>> And I actually prefer printer tests to throw nasty exceptions when 
>> there are no printers
>> and they need one ... else SQE just don't configure printers on test 
>> systems and the tests all wrongly pass.
>> Would you run Linux UI tests on a blade with no X-server running ?
>> -phil.
>> On 1/10/17, 1:14 AM, Prasanta Sadhukhan wrote:
>>> On 1/10/2017 2:43 PM, Prasanta Sadhukhan wrote:
>>>> Actually, in ubuntu16.10 attribute map did not have 
>>>> "page-ranges-supported" attribute because 2 attribute hashmap is 
>>>> created in IPPPrintService#readIPPResponse() and most of the 
>>>> supported attributes are part of the 2nd hashmap (responseMap[1])
>>>> whereas only the 1st hashmap is utilised through responseMap[0] 
>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/8be0bb1aa238/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1760]
>>>> As to why 2 hashmaps are created in ubuntu16.10, it is because 
>>>> readIPPResponse() checks if key is already present in existing map, 
>>>> then create a new hashmap through this code 
>>>> <http://hg.openjdk.java.net/jdk9/client/jdk/file/8be0bb1aa238/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1887>
>>>> and in ubuntu16.10, some attributes (like 
>>>> pwg-raster-document-type-supported which is not there in ubuntu 
>>>> 14.04] are duplicated.
>>>> Proposed fix is to check if there are more than 1 hashmaps, if it 
>>>> is, get the entries from those maps, remove duplicate entries and 
>>>> append to existing hashmap to get a consolidated map having all the 
>>>> IPP attributes.
>>> Missing webrev link: 
>>> http://cr.openjdk.java.net/~psadhukhan/8170578/webrev.01/
>>>> Regards
>>>> Prasanta
>>>> On 12/21/2016 11:28 PM, Phil Race wrote:
>>>>> So now I am very suspicious.
>>>>> First (previous fix I reviewed) Job Sheets weren't supported on 
>>>>> 16.10, now its PageRanges.
>>>>> I think this merits investigation of what is going on before we 
>>>>> commit this fix.
>>>>> Why are attributes that have always been supported by CUPS 
>>>>> suddenly unavailable ?
>>>>> And for the cases we image the pages ourselves, we can implement 
>>>>> PageRanges
>>>>> internally, so for a normal PrinterJob it always can be supported 
>>>>> .. regardless of
>>>>> what the printer says.
>>>>> -phil.
>>>>> On 12/14/2016 09:50 PM, Prasanta Sadhukhan wrote:
>>>>>> Hi All,
>>>>>> Please review a testbug fix for jdk9 for an issue where it it 
>>>>>> seen that PageRanges option is disabled in printer dialog in 
>>>>>> ubuntu16.10.
>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8170578
>>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8170578/webrev.00/
>>>>>> Issue was, in ubuntu16.10 the attribute map [obtained here 
>>>>>> http://hg.openjdk.java.net/jdk9/client/jdk/file/dc658d7dde90/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1767]
>>>>>> does not have
>>>>>> "pageranges-supported" attribute returned by CUPS
>>>>>> so this category is not added to supported categories
>>>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/7f09d558b044/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1030]
>>>>>> so isAttributeCategorySupported() called by ServiceDialog returns 
>>>>>> false
>>>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/7f09d558b044/src/java.desktop/share/classes/sun/print/ServiceDialog.java#l1141]
>>>>>> resulting in PageRanges option getting disabled.
>>>>>> Fix is to check if PageRanges category is supported in underlying 
>>>>>> platform, only then proceed with the test.
>>>>>> Regards
>>>>>> Prasanta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20170131/398f28a4/attachment.html>

More information about the 2d-dev mailing list