[OpenJDK 2D-Dev] [9] RFR JDK-6357887: selected printertray is ignored under linux
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Thu Aug 25 06:27:25 UTC 2016
Thanks Phil for the comments.
Modified webrev:
http://cr.openjdk.java.net/~psadhukhan/6357887/webrev.02/
Regards
Prasanta
On 8/25/2016 12:05 AM, Phil Race wrote:
> In fact what you should be doing here is
> Attribute attr = attrs.get(Media.class);
> if (attr instanceof CustomMediaTray) ....
>
> The program below should show that the lookup works so long as the key
> is the class understood by the API - not a sub-type.
>
> -phil.
> import javax.print.*;
> import javax.print.attribute.*;
> import javax.print.attribute.standard.*;
>
> public class CMT {
>
> public static void main(String args[]) throws Exception {
>
> PrintService svc =
> PrintServiceLookup.lookupPrintServices(null,null)[0];
> Media[] allMedia =
> (Media[])svc.getSupportedAttributeValues(Media.class, null,
> null);
> PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
> for (int m=0;m<allMedia.length;m++) {
> Media in = allMedia[m];
> aset.add(in);
> Media out1 = (Media)aset.get(Media.class);
> System.out.println("Class="+in.getClass()+" in="+in+ "
> out="+out1);
> Media out2 = (Media)aset.get(in.getClass());
> System.out.println("Class="+in.getClass()+" in="+in+ "
> out="+out2);
> }
> }
>
>
>
> On 8/18/2016 11:20 PM, Prasanta Sadhukhan wrote:
>>
>>
>> On 8/19/2016 3:36 AM, Philip Race wrote:
>>> Oh .. right under the covers the map is just a HashMap
>>> and the key to the map is the class so just decides if these are
>>> equal class objects. Hmm .. I don't know anymore if that was the
>>> original intent
>>> but we probably should not mess with it right now just for the
>>> optimisation.
>>> But now I am wondering why it has to be CustomMediaTray and not just
>>> MediaTray ... although I suspect that in the case of CUPS we are not
>>> ever mapping the media to standard ones, so they are always custom.
>> Yes, in CUPS
>> http://hg.openjdk.java.net/jdk9/client/jdk/file/9f38d4f86e3d/src/java.desktop/unix/classes/sun/print/CUPSPrinter.java#l254
>> we instantiate CustomMediaTray (and do not map to standard) so I need
>> to check for CustomMediatray to get the tray instance.
>>
>> Regards
>> Prasanta
>>> That might be arise as a problem in the case of your other open
>>> review regarding
>>> validating the margins. I'll comment on that in that review but
>>> still surely
>>> any MediaTray is what you would want here but it is probably moot if
>>> you don't ever get a standard one. Please check into this and confirm
>>> what I suspect .. or not ...
>>>
>>> -phil.
>>>
>>> On 8/17/16, 11:41 PM, Prasanta Sadhukhan wrote:
>>>> MediaTray values are bundled with "Media" attribute so calling
>>>> attributes.get(CustomMediatray.class) returns null.
>>>> Modified webrev to get Media attribute and then see if the
>>>> attribute is an instance of CustomMediatray.
>>>>
>>>> http://cr.openjdk.java.net/~psadhukhan/6357887/webrev.01/
>>>>
>>>> Regards
>>>> Prasanta
>>>> On 8/17/2016 9:09 PM, Philip Race wrote:
>>>>> This all looks fine although this can be a simple call to
>>>>> attributes.get(CustomMediaTray.class) can't it ?
>>>>>
>>>>> 502 for (int i=0; i< attrs.length; i++) {
>>>>> 503 Attribute attr = attrs[i];
>>>>> 504 try {
>>>>> 505 if (attr instanceof CustomMediaTray) {
>>>>> 506 CustomMediaTray customTray =
>>>>> (CustomMediaTray)attr;
>>>>> 507 mOptions = " InputSlot="+
>>>>> customTray.getChoiceName();
>>>>> 508 }
>>>>> 509 } catch (ClassCastException e) {
>>>>>
>>>>> -phil.
>>>>>
>>>>> On 8/10/16, 1:59 AM, Prasanta Sadhukhan wrote:
>>>>>> Hi All,
>>>>>>
>>>>>> Please review a fix for an issue where it is seen that the
>>>>>> selected printer tray is ignored in linux and default standard
>>>>>> tray is used for printing.
>>>>>>
>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-6357887
>>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/6357887/webrev.00/
>>>>>>
>>>>>> Issue was lpr command needs "-o InputSlot=<trayname>" to select
>>>>>> the printertray which was not being passed to lpr command.
>>>>>> Proposed fix added InputSlot option to lpr command to select the
>>>>>> printertray.
>>>>>>
>>>>>> Tested in ubuntu and solaris11.
>>>>>>
>>>>>> Regards
>>>>>> Prasanta
>>>>
>>
>
More information about the 2d-dev
mailing list