jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java
changeset 18115 dbd9791b69d2
parent 13048 82534e9c5cc7
child 18752 2a4f599c6bff
--- a/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Fri Jun 07 14:45:29 2013 +0400
+++ b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Fri Jun 07 10:26:29 2013 -0700
@@ -362,10 +362,33 @@
      */
     private PrintService getServiceByName(PrinterName nameAttr) {
         String name = nameAttr.getValue();
-        PrintService printer = null;
         if (name == null || name.equals("") || !checkPrinterName(name)) {
             return null;
         }
+        /* check is all printers are already available */
+        if (printServices != null) {
+            for (PrintService printService : printServices) {
+                if (printService.getName().equals(name)) {
+                    return printService;
+                }
+            }
+        }
+        /* take CUPS into account first */
+        if (CUPSPrinter.isCupsRunning()) {
+            try {
+                return new IPPPrintService(name,
+                                           new URL("http://"+
+                                                   CUPSPrinter.getServer()+":"+
+                                                   CUPSPrinter.getPort()+"/"+
+                                                   name));
+            } catch (Exception e) {
+                IPPPrintService.debug_println(debugPrefix+
+                                              " getServiceByName Exception "+
+                                              e);
+            }
+        }
+        /* fallback if nothing not having a printer at this point */
+        PrintService printer = null;
         if (isMac() || isSysV()) {
             printer = getNamedPrinterNameSysV(name);
         } else {