6731937: javax/print/CheckDupFlavor.java fails

Reviewed-by: campbell, tdv
This commit is contained in:
Jennifer Godinez 2008-08-07 11:19:06 -07:00
parent 0c7e3a5aaf
commit 3630a38b8f
2 changed files with 81 additions and 22 deletions

View File

@ -57,6 +57,7 @@ import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.Iterator;
import java.util.HashSet;
public class IPPPrintService implements PrintService, SunPrinterJobService {
@ -822,7 +823,7 @@ public class IPPPrintService implements PrintService, SunPrinterJobService {
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 @@ public class IPPPrintService implements PrintService, SunPrinterJobService {
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 @@ public class IPPPrintService implements PrintService, SunPrinterJobService {
}
// 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);

View File

@ -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.");
}
}