[OpenJDK 2D-Dev] [9] RFR JDK-6357887: selected printertray is ignored under linux
Philip Race
philip.race at oracle.com
Thu Aug 25 13:25:38 UTC 2016
+1
-phil
On 8/24/16, 11:27 PM, Prasanta Sadhukhan wrote:
> 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