OpenJDK / jdk / jdk
changeset 1720:539a197aefbd
6731937: javax/print/CheckDupFlavor.java fails
Reviewed-by: campbell, tdv
author | jgodinez |
---|---|
date | Thu, 07 Aug 2008 11:19:06 -0700 |
parents | b1cdf8806a6d |
children | 7a86d7e13fdf |
files | jdk/src/solaris/classes/sun/print/IPPPrintService.java jdk/test/javax/print/CheckDupFlavor.java |
diffstat | 2 files changed, 81 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/src/solaris/classes/sun/print/IPPPrintService.java Tue Aug 05 09:37:03 2008 -0700 +++ b/jdk/src/solaris/classes/sun/print/IPPPrintService.java Thu Aug 07 11:19:06 2008 -0700 @@ -57,6 +57,7 @@ import java.nio.charset.Charset; import java.util.Iterator; +import java.util.HashSet; public class IPPPrintService implements PrintService, SunPrinterJobService { @@ -822,7 +823,7 @@ boolean psSupported = false; String[] docFlavors = attribClass.getArrayOfStringValues(); DocFlavor[] flavors; - ArrayList docList = new ArrayList(); + HashSet docList = new HashSet(); int j; String hostEnc = DocFlavor.hostEncoding. toLowerCase(Locale.ENGLISH); @@ -839,18 +840,6 @@ docList.addAll(Arrays.asList(flavors)); - if (isCupsPrinter) { - /* - Always add Pageable and Printable for CUPS - since it uses Filters to convert from Postscript - to device printer language. - */ - docList.add( - DocFlavor.SERVICE_FORMATTED.PAGEABLE); - docList.add( - DocFlavor.SERVICE_FORMATTED.PRINTABLE); - } - if (mimeType.equals("text/plain") && addHostEncoding) { docList.add(Arrays.asList(textPlainHost)); @@ -880,16 +869,19 @@ } // check if we need to add image DocFlavors + // and Pageable/Printable flavors if (psSupported || isCupsPrinter) { - if (!jpgImagesAdded) { - docList.addAll(Arrays.asList(imageJPG)); - } - if (!pngImagesAdded) { - docList.addAll(Arrays.asList(imagePNG)); - } - if (!gifImagesAdded) { - docList.addAll(Arrays.asList(imageGIF)); - } + /* + Always add Pageable and Printable for CUPS + since it uses Filters to convert from Postscript + to device printer language. + */ + docList.add(DocFlavor.SERVICE_FORMATTED.PAGEABLE); + docList.add(DocFlavor.SERVICE_FORMATTED.PRINTABLE); + + docList.addAll(Arrays.asList(imageJPG)); + docList.addAll(Arrays.asList(imagePNG)); + docList.addAll(Arrays.asList(imageGIF)); } supportedDocFlavors = new DocFlavor[docList.size()]; docList.toArray(supportedDocFlavors);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/print/CheckDupFlavor.java Thu Aug 07 11:19:06 2008 -0700 @@ -0,0 +1,67 @@ +/* + * Copyright 2004-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 4996318 6731937 + * @summary There should be no duplicates returned by getSupportedDocFlavors. + * @run main CheckDupFlavor + */ +import javax.print.*; +import javax.print.attribute.*; +import javax.print.attribute.standard.*; +import java.util.ArrayList; + + +public class CheckDupFlavor { + public static void main(String[] args){ + PrintService pservice = + PrintServiceLookup.lookupDefaultPrintService(); + + if (pservice == null) { + System.out.println("No default PrintService found. Test ABORTED."); + return; + } + + System.out.println("Default service = "+pservice); + + DocFlavor[] flavors = pservice.getSupportedDocFlavors(); + if (flavors==null) { + System.out.println("No flavors supported. Test PASSED."); + return; + } + + + ArrayList flavorList = new ArrayList(); + for (int i=0; i<flavors.length; i++) { + if (flavors[i] == null) { + throw new RuntimeException("Null flavor. Test FAILED."); + } else if (flavorList.contains(flavors[i])) { + throw new RuntimeException("\n\tDuplicate flavor found : "+flavors[i]+" : Test FAILED."); + } else { + flavorList.add(flavors[i]); + } + } + System.out.println("No duplicate found. Test PASSED."); + } +}