1 /*
2  * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 import javax.print.PrintService;
25 import javax.print.PrintServiceLookup;
26 import javax.print.attribute.AttributeSet;
27 import javax.print.attribute.HashAttributeSet;
28 import javax.print.attribute.standard.PrinterName;
29 
30 /*
31  * @test
32  * @bug 8013810 8025439
33  * @summary Test that print service returned without filter are of the same class
34  *          as with name filter
35  */
36 public class GetPrintServices {
37 
main(String[] args)38     public static void main(String[] args) throws Exception {
39         for (PrintService service : PrintServiceLookup.lookupPrintServices(null, null)) {
40             String serviceName = service.getName();
41             PrinterName name = service.getAttribute(PrinterName.class);
42             String printerName = name.getValue();
43 
44             PrintService serviceByName = lookupByName(printerName);
45             System.out.println("service " + service);
46             System.out.println("serviceByName " + serviceByName);
47             if (!service.equals(serviceByName)) {
48                 throw new RuntimeException("NOK " + serviceName
49                                    + " expected: " + service.getClass().getName()
50                                    + " got: " + serviceByName.getClass().getName());
51             }
52         }
53         System.out.println("Test PASSED");
54     }
55 
lookupByName(String name)56     private static PrintService lookupByName(String name) {
57         AttributeSet attributes = new HashAttributeSet();
58         attributes.add(new PrinterName(name, null));
59         for (PrintService service :
60              PrintServiceLookup.lookupPrintServices(null, attributes)) {
61             return service;
62         }
63         return null;
64     }
65 }
66