[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-2d-dev
Subject: Re: [OpenJDK 2D-Dev] [9] RFR JDK-6575247: Banner checkbox in PrinterJob print dialog doesn't work
From: Phil Race <philip.race () oracle ! com>
Date: 2016-07-28 15:49:23
Message-ID: 361e6046-dd03-b524-061e-955e8da3658b () oracle ! com
[Download RAW message or body]
right .. when we talked off-line yesterday I said that if IPP is reporting
a default we should honour it. The default of standard/on is only for
the case we do not use IPP or it reports nothing.
if (noJobSheet) {
885 pFlags |= NOSHEET;
886 ncomps+=1;
887 } else {
888 ncomps+=1;
889 }
....
905 if ((pFlags & NOSHEET) != 0) {
906 execCmd[n++] = "-o nobanner";
907 } else if (getPrintService().
908 isAttributeCategorySupported(JobSheets.class)) {
909 execCmd[n++] = "-o job-sheets=standard";
910 }
So shouldn't the else at line 887 have the same condition
as at line 907 ?
2750 JobSheets js = (JobSheets)asCurrent.get(jsCategory);
2751 if (js == null) {
2752 js = (JobSheets)psCurrent.getDefaultAttributeValue(jsCategory);
2753 if (js == null) {
2754 js = JobSheets.STANDARD;
2755 }
Please make sure this isn't causing a surprise on OSX or Windows ..
ie that we report correctly a value there so that "null" doesn't
end up causing us to print a banner page where we did not before.
-phil.
On 7/28/2016 2:51 AM, Prasanta Sadhukhan wrote:
> The banner checkbox is not enabled initially as it calls
> getDefaultAttributeValue() and it seems printer is reporting the
> default job-sheet value as "none" so the below check is not satisfied.
> cbJobSheets.setSelected(js != JobSheets.NONE);
>
> When IPPPrintService#readIPPResponse() is called, it invokes /new
> AttributeClass(attribStr, valTagByte, outArray);
> /and stored the value corresponding to each attribute.
>
> I saw that IPP response has
> *job-sheets-default => job-sheets-default *and*
> **job-sheets-supported => job-sheets-supported*
>
> When AttributeClass constructor is called with ("job-sheets-default",
> 66, value) the value is
> [ 0] = (byte) 4 [ 1] = (byte) 110 [ 2] = (byte) 111 [ 3] =
> (byte) 110 [ 4] = (byte) 101 [ 5] = (byte) 4 [ 6] = (byte)
> 110 [ 7] = (byte) 111 [ 8] = (byte) 110 [ 9] = (byte) 101
> [10] = (byte) 2
> which basically translates to '',n,o,n,e,'',n,o,n,e,''
>
> so when ServiceDialog calls
> IPPPrintService#getDefaultAttributeValue(JobSheets)
> ----------------
> if (attribClass != null &&
> attribClass.getStringValue().equals("none")) {
> return JobSheets.NONE;
> } else {
> return JobSheets.STANDARD;
> }
> --------------
> we have attribClass.getStringValue() as "none" so default job sheet
> value is coming out to be NONE.
> Since it is coming out from IPP response, I think we should not change
> default value of JobSheets to STANDARD. Do you think otherwise?
>
> In the modified webrev, I have made the jobsheet default value
> STANDARD, only when IPP does not report any default value.
>
> http://cr.openjdk.java.net/~psadhukhan/6575247/webrev.03/
>
> Tested in ubuntu & solaris11.
>
> Regards
> Prasanta
> On 7/27/2016 7:20 PM, Philip Race wrote:
> > 883 } else {
> > 884 Class<?>[] supportedCats = getPrintService().
> > 885 getSupportedAttributeCategories();
> > 886 for (int i=0;i<supportedCats.length;i++) {
> > 887 if (JobSheets.class == supportedCats[i]) {
> > 888 pFlags |= JOBSHEET;
> > 889 ncomps+=1;
> > 890 break;
> > 891 }
> > 892 }
> >
> > What is wrong with
> >
> > getPrintService().isAttributeCategorySupported(JobSheets.class) ?
> >
> > https://docs.oracle.com/javase/8/docs/api/javax/print/PrintService.html#isAttributeCategorySupported-java.lang.Class- \
> >
> >
> > I am also very confused about why you added JOBSHEET
> > which seems to duplicate the functionality of NOSHEET.
> >
> > Also it seems to me like it was intentional that the banner page be
> > printed by default .. which is why the variable was called
> > "*no*JobSheet ..
> > so as to over-ride that behaviour.
> >
> > It is kind of what you'd want if you walk over to the shared printer in
> > your office to have a banner page which declares it as yours ...
> >
> > So the checkbox should probably be enabled in that case.
> >
> > Also you should verify that we report the default value for JobSheets
> > as being STANDARD, not NONE.
> >
> >
> > -phil.
> >
> > On 7/27/16, 3:02 AM, Prasanta Sadhukhan wrote:
> > > Modified webrev to take care of a problem in webrev.01 whereby
> > > banner page was getting printed by default.
> > > Now, banner page will get printed only if the checkbox is checked in
> > > printer dialog.
> > >
> > > http://cr.openjdk.java.net/~psadhukhan/6575247/webrev.02/
> > >
> > > Regards
> > > Prasanta
> > > On 7/22/2016 4:26 PM, Prasanta Sadhukhan wrote:
> > > > Hi Phil,
> > > >
> > > > I have modified the code to check if job-sheets is supported and
> > > > then only proceed to print the banner page.
> > > > Also, rectified the jobTitle and banner confusion by adding
> > > > jobsheet check.
> > > > Also added the same code in UnixPrintJob even though I found its
> > > > printExecCmd() does not get executed in linux and solaris
> > > > PSPrinterJob's printExecCmd() is executed instead. In mac, neither
> > > > UnixPrinterJob#printExecCmd() nor PSPrinterJob#printExecCmd() gets
> > > > executed.
> > > >
> > > > Tested on ubuntu and solaris 11 with the fix and banner page is
> > > > printed with the fix. In mac, cover page gets printed without any
> > > > change.
> > > >
> > > > http://cr.openjdk.java.net/~psadhukhan/6575247/webrev.01/
> > > >
> > > > Regards
> > > > Prasanta
> > > > On 7/20/2016 8:56 PM, Philip Race wrote:
> > > > > In my evaluation of that bug (which was 9 yrs ago so I do not have
> > > > > any memory of it :-)), I note that we first need to check
> > > > > that job-sheets is supported .. you are not doing that ..
> > > > > what happens if we pass an unsupported option ?
> > > > > "-o foobar" ?? This needs testing on Linux, OS X, and Solaris 11.
> > > > >
> > > > > Also -J (job-title) is something you can see in the queue when
> > > > > you do lpq. I don't know why it is tied to banner here but
> > > > > removing it seems wrong. Perhaps this should be renamed from
> > > > > "banner" and "BANNER" to jobTitle ?? Please examine this.
> > > > >
> > > > > In fact you seem to be conflicting with the -o nobanner.
> > > > >
> > > > > So in general we have some lack of clarity around job title and
> > > > > banner page
> > > > > (aka job sheet).
> > > > >
> > > > > Also we have PSPrinterJob and UnixPrinterJob with similar code.
> > > > > Please examine it to make sure no similar case is going missed.
> > > > >
> > > > > -phil.
> > > > >
> > > > > On 7/18/16, 4:27 AM, Prasanta Sadhukhan wrote:
> > > > > > Hi All,
> > > > > >
> > > > > > Please review a fix for an issue where it is seen that Banner
> > > > > > page in linux does not get printed despite user selecting the
> > > > > > Banner page checkbox in Printer dialog.
> > > > > >
> > > > > > Bug: https://bugs.openjdk.java.net/browse/JDK-6575247
> > > > > > webrev: http://cr.openjdk.java.net/~psadhukhan/6575247/webrev.00/
> > > > > >
> > > > > > It seems if we pass "-J <bannername>" option to lpr command, it
> > > > > > has no effect.
> > > > > > To print Banner page, we need to pass
> > > > > > "-o job-sheets=<either of "classified", "confidential", "secret",
> > > > > > "standard", "topsecret", or "unclassified">"
> > > > > >
> > > > > > Since we support only standard banner or none via a checkbox,
> > > > > > the proposed fix passes option "-o job-sheets=standard" to lpr
> > > > > > command to print the banner page.
> > > > > >
> > > > > > Regards
> > > > > > PRasanta
> > > >
> > >
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic