# HG changeset patch # User jgodinez # Date 1218133146 25200 # Node ID 539a197aefbd72f6ad93482f3238f49d0e84ac15 # Parent b1cdf8806a6d479c8738dd52d720fff42530345e 6731937: javax/print/CheckDupFlavor.java fails Reviewed-by: campbell, tdv diff -r b1cdf8806a6d -r 539a197aefbd jdk/src/solaris/classes/sun/print/IPPPrintService.java --- 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); diff -r b1cdf8806a6d -r 539a197aefbd jdk/test/javax/print/CheckDupFlavor.java --- /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