--- 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 {