src/share/classes/javax/print/PrintServiceLookup.java

Print this page

        

*** 67,78 **** */ public abstract class PrintServiceLookup { static class Services { ! private ArrayList listOfLookupServices = null; ! private ArrayList registeredServices = null; } private static Services getServicesForContext() { Services services = (Services)AppContext.getAppContext().get(Services.class); --- 67,78 ---- */ public abstract class PrintServiceLookup { static class Services { ! private ArrayList<PrintServiceLookup> listOfLookupServices = null; ! private ArrayList<PrintService> registeredServices = null; } private static Services getServicesForContext() { Services services = (Services)AppContext.getAppContext().get(Services.class);
*** 81,107 **** AppContext.getAppContext().put(Services.class, services); } return services; } ! private static ArrayList getListOfLookupServices() { return getServicesForContext().listOfLookupServices; } ! private static ArrayList initListOfLookupServices() { ! ArrayList listOfLookupServices = new ArrayList(); getServicesForContext().listOfLookupServices = listOfLookupServices; return listOfLookupServices; } ! private static ArrayList getRegisteredServices() { return getServicesForContext().registeredServices; } ! private static ArrayList initRegisteredServices() { ! ArrayList registeredServices = new ArrayList(); getServicesForContext().registeredServices = registeredServices; return registeredServices; } /** --- 81,107 ---- AppContext.getAppContext().put(Services.class, services); } return services; } ! private static ArrayList<PrintServiceLookup> getListOfLookupServices() { return getServicesForContext().listOfLookupServices; } ! private static ArrayList<PrintServiceLookup> initListOfLookupServices() { ! ArrayList<PrintServiceLookup> listOfLookupServices = new ArrayList<>(); getServicesForContext().listOfLookupServices = listOfLookupServices; return listOfLookupServices; } ! private static ArrayList<PrintService> getRegisteredServices() { return getServicesForContext().registeredServices; } ! private static ArrayList<PrintService> initRegisteredServices() { ! ArrayList<PrintService> registeredServices = new ArrayList<>(); getServicesForContext().registeredServices = registeredServices; return registeredServices; } /**
*** 118,129 **** * attributes. If no services match, the array is zero-length. */ public static final PrintService[] lookupPrintServices(DocFlavor flavor, AttributeSet attributes) { ! ArrayList list = getServices(flavor, attributes); ! return (PrintService[])(list.toArray(new PrintService[list.size()])); } /** * Locates MultiDoc print Services capable of printing MultiDocs --- 118,129 ---- * attributes. If no services match, the array is zero-length. */ public static final PrintService[] lookupPrintServices(DocFlavor flavor, AttributeSet attributes) { ! ArrayList<PrintService> list = getServices(flavor, attributes); ! return list.toArray(new PrintService[list.size()]); } /** * Locates MultiDoc print Services capable of printing MultiDocs
*** 146,158 **** * */ public static final MultiDocPrintService[] lookupMultiDocPrintServices(DocFlavor[] flavors, AttributeSet attributes) { ! ArrayList list = getMultiDocServices(flavors, attributes); ! return (MultiDocPrintService[]) ! list.toArray(new MultiDocPrintService[list.size()]); } /** * Locates the default print service for this environment. --- 146,157 ---- * */ public static final MultiDocPrintService[] lookupMultiDocPrintServices(DocFlavor[] flavors, AttributeSet attributes) { ! ArrayList<MultiDocPrintService> list = getMultiDocServices(flavors, attributes); ! return list.toArray(new MultiDocPrintService[list.size()]); } /** * Locates the default print service for this environment.
*** 175,188 **** * @return the default PrintService. */ public static final PrintService lookupDefaultPrintService() { ! Iterator psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { ! PrintServiceLookup lus = (PrintServiceLookup)psIterator.next(); PrintService service = lus.getDefaultPrintService(); if (service != null) { return service; } } catch (Exception e) { --- 174,187 ---- * @return the default PrintService. */ public static final PrintService lookupDefaultPrintService() { ! Iterator<PrintServiceLookup> psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { ! PrintServiceLookup lus = psIterator.next(); PrintService service = lus.getDefaultPrintService(); if (service != null) { return service; } } catch (Exception e) {
*** 206,216 **** * @return <code>true</code> if the new lookup service is newly * registered; <code>false</code> otherwise. */ public static boolean registerServiceProvider(PrintServiceLookup sp) { synchronized (PrintServiceLookup.class) { ! Iterator psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { Object lus = psIterator.next(); if (lus.getClass() == sp.getClass()) { return false; --- 205,216 ---- * @return <code>true</code> if the new lookup service is newly * registered; <code>false</code> otherwise. */ public static boolean registerServiceProvider(PrintServiceLookup sp) { synchronized (PrintServiceLookup.class) { ! Iterator<PrintServiceLookup> psIterator = ! getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { Object lus = psIterator.next(); if (lus.getClass() == sp.getClass()) { return false;
*** 247,257 **** public static boolean registerService(PrintService service) { synchronized (PrintServiceLookup.class) { if (service instanceof StreamPrintService) { return false; } ! ArrayList registeredServices = getRegisteredServices(); if (registeredServices == null) { registeredServices = initRegisteredServices(); } else { if (registeredServices.contains(service)) { --- 247,257 ---- public static boolean registerService(PrintService service) { synchronized (PrintServiceLookup.class) { if (service instanceof StreamPrintService) { return false; } ! ArrayList<PrintService> registeredServices = getRegisteredServices(); if (registeredServices == null) { registeredServices = initRegisteredServices(); } else { if (registeredServices.contains(service)) {
*** 324,349 **** * @return the default PrintService for this lookup service. * If there is no default, returns null. */ public abstract PrintService getDefaultPrintService(); ! private static ArrayList getAllLookupServices() { synchronized (PrintServiceLookup.class) { ! ArrayList listOfLookupServices = getListOfLookupServices(); if (listOfLookupServices != null) { return listOfLookupServices; } else { listOfLookupServices = initListOfLookupServices(); } try { java.security.AccessController.doPrivileged( ! new java.security.PrivilegedExceptionAction() { public Object run() { Iterator<PrintServiceLookup> iterator = ServiceLoader.load(PrintServiceLookup.class). iterator(); ! ArrayList los = getListOfLookupServices(); while (iterator.hasNext()) { try { los.add(iterator.next()); } catch (ServiceConfigurationError err) { /* In the applet case, we continue */ --- 324,349 ---- * @return the default PrintService for this lookup service. * If there is no default, returns null. */ public abstract PrintService getDefaultPrintService(); ! private static ArrayList<PrintServiceLookup> getAllLookupServices() { synchronized (PrintServiceLookup.class) { ! ArrayList<PrintServiceLookup> listOfLookupServices = getListOfLookupServices(); if (listOfLookupServices != null) { return listOfLookupServices; } else { listOfLookupServices = initListOfLookupServices(); } try { java.security.AccessController.doPrivileged( ! new java.security.PrivilegedExceptionAction<Object>() { public Object run() { Iterator<PrintServiceLookup> iterator = ServiceLoader.load(PrintServiceLookup.class). iterator(); ! ArrayList<PrintServiceLookup> los = getListOfLookupServices(); while (iterator.hasNext()) { try { los.add(iterator.next()); } catch (ServiceConfigurationError err) { /* In the applet case, we continue */
*** 362,379 **** return listOfLookupServices; } } ! private static ArrayList getServices(DocFlavor flavor, AttributeSet attributes) { ! ArrayList listOfServices = new ArrayList(); ! Iterator psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { ! PrintServiceLookup lus = (PrintServiceLookup)psIterator.next(); PrintService[] services=null; if (flavor == null && attributes == null) { try { services = lus.getPrintServices(); } catch (Throwable tr) { --- 362,379 ---- return listOfLookupServices; } } ! private static ArrayList<PrintService> getServices(DocFlavor flavor, AttributeSet attributes) { ! ArrayList<PrintService> listOfServices = new ArrayList<>(); ! Iterator<PrintServiceLookup> psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { ! PrintServiceLookup lus = psIterator.next(); PrintService[] services=null; if (flavor == null && attributes == null) { try { services = lus.getPrintServices(); } catch (Throwable tr) {
*** 389,410 **** } } catch (Exception e) { } } /* add any directly registered services */ ! ArrayList registeredServices = null; try { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } registeredServices = getRegisteredServices(); } catch (SecurityException se) { } if (registeredServices != null) { ! PrintService[] services = (PrintService[]) ! registeredServices.toArray( new PrintService[registeredServices.size()]); for (int i=0; i<services.length; i++) { if (!listOfServices.contains(services[i])) { if (flavor == null && attributes == null) { listOfServices.add(services[i]); --- 389,409 ---- } } catch (Exception e) { } } /* add any directly registered services */ ! ArrayList<PrintService> registeredServices = null; try { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } registeredServices = getRegisteredServices(); } catch (SecurityException se) { } if (registeredServices != null) { ! PrintService[] services = registeredServices.toArray( new PrintService[registeredServices.size()]); for (int i=0; i<services.length; i++) { if (!listOfServices.contains(services[i])) { if (flavor == null && attributes == null) { listOfServices.add(services[i]);
*** 419,437 **** } } return listOfServices; } ! private static ArrayList getMultiDocServices(DocFlavor[] flavors, AttributeSet attributes) { ! ArrayList listOfServices = new ArrayList(); ! Iterator psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { ! PrintServiceLookup lus = (PrintServiceLookup)psIterator.next(); MultiDocPrintService[] services = lus.getMultiDocPrintServices(flavors, attributes); if (services == null) { continue; } --- 418,436 ---- } } return listOfServices; } ! private static ArrayList<MultiDocPrintService> getMultiDocServices(DocFlavor[] flavors, AttributeSet attributes) { ! ArrayList<MultiDocPrintService> listOfServices = new ArrayList<>(); ! Iterator<PrintServiceLookup> psIterator = getAllLookupServices().iterator(); while (psIterator.hasNext()) { try { ! PrintServiceLookup lus = psIterator.next(); MultiDocPrintService[] services = lus.getMultiDocPrintServices(flavors, attributes); if (services == null) { continue; }
*** 440,467 **** } } catch (Exception e) { } } /* add any directly registered services */ ! ArrayList registeredServices = null; try { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } registeredServices = getRegisteredServices(); } catch (Exception e) { } if (registeredServices != null) { ! PrintService[] services = (PrintService[]) ! registeredServices.toArray( ! new PrintService[registeredServices.size()]); for (int i=0; i<services.length; i++) { if (services[i] instanceof MultiDocPrintService && !listOfServices.contains(services[i])) { if (flavors == null || flavors.length == 0) { ! listOfServices.add(services[i]); } else { boolean supported = true; for (int f=0; f<flavors.length; f++) { if (services[i].isDocFlavorSupported(flavors[f])) { --- 439,465 ---- } } catch (Exception e) { } } /* add any directly registered services */ ! ArrayList<PrintService> registeredServices = null; try { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPrintJobAccess(); } registeredServices = getRegisteredServices(); } catch (Exception e) { } if (registeredServices != null) { ! PrintService[] services = ! registeredServices.toArray(new PrintService[registeredServices.size()]); for (int i=0; i<services.length; i++) { if (services[i] instanceof MultiDocPrintService && !listOfServices.contains(services[i])) { if (flavors == null || flavors.length == 0) { ! listOfServices.add((MultiDocPrintService)services[i]); } else { boolean supported = true; for (int f=0; f<flavors.length; f++) { if (services[i].isDocFlavorSupported(flavors[f])) {
*** 474,484 **** supported = false; break; } } if (supported) { ! listOfServices.add(services[i]); } } } } } --- 472,482 ---- supported = false; break; } } if (supported) { ! listOfServices.add((MultiDocPrintService)services[i]); } } } } }