Imported GNU Classpath 0.90

Imported GNU Classpath 0.90
       * scripts/makemake.tcl: LocaleData.java moved to gnu/java/locale.

       * sources.am: Regenerated.
       * gcj/javaprims.h: Regenerated.
       * Makefile.in: Regenerated.
       * gcj/Makefile.in: Regenerated.
       * include/Makefile.in: Regenerated.
       * testsuite/Makefile.in: Regenerated.

       * gnu/java/lang/VMInstrumentationImpl.java: New override.
       * gnu/java/net/local/LocalSocketImpl.java: Likewise.
       * gnu/classpath/jdwp/VMMethod.java: Likewise.
       * gnu/classpath/jdwp/VMVirtualMachine.java: Update to latest
       interface.
       * java/lang/Thread.java: Add UncaughtExceptionHandler.
       * java/lang/reflect/Method.java: Implements GenericDeclaration and
       isSynthetic(),
       * java/lang/reflect/Field.java: Likewise.
       * java/lang/reflect/Constructor.java
       * java/lang/Class.java: Implements Type, GenericDeclaration,
       getSimpleName() and getEnclosing*() methods.
       * java/lang/Class.h: Add new public methods.
       * java/lang/Math.java: Add signum(), ulp() and log10().
       * java/lang/natMath.cc (log10): New function.
       * java/security/VMSecureRandom.java: New override.
       * java/util/logging/Logger.java: Updated to latest classpath
       version.
       * java/util/logging/LogManager.java: New override.

From-SVN: r113887
This commit is contained in:
Mark Wielaard 2006-05-18 17:29:21 +00:00
parent eaec4980e1
commit 4f9533c772
1640 changed files with 126485 additions and 104808 deletions

View file

@ -1,5 +1,5 @@
/* PrintServiceLookup.java --
Copyright (C) 2004 Free Software Foundation, Inc.
Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -38,39 +38,266 @@ exception statement from your version. */
package javax.print;
import gnu.classpath.ServiceFactory;
import gnu.javax.print.CupsPrintServiceLookup;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import javax.print.attribute.AttributeSet;
/**
* <code>PrintServiceLookup</code> implementations provide a way to lookup
* print services based on different constraints.
* <p>
* Implementations are located and loaded automatically through the SPI JAR
* file specification. Therefore implementation classes must provide a default
* constructor for instantiation. Furthermore, applications are able to
* register further instances directly at runtime.
* </p><p>
* If an SecurityManager is installed implementors should call
* <code>checkPrintJobAccess()</code> to disable access for untrusted code.
* This check is to be made in every lookup service implementation for
* flexibility. Print services registered by applications through
* <code>registerService(PrintService)</code> are suppressed in the
* lookup results if a security manager is installed and disallows access.
* </p>
*
* @author Michael Koch (konqueror@gmx.de)
* @author Wolfgang Baer (WBaer@gmx.de)
*/
public abstract class PrintServiceLookup
{
private static final CupsPrintServiceLookup systemProvider;
private static final HashSet printServices;
private static final HashSet printServiceLookups;
static
{
systemProvider = new CupsPrintServiceLookup();
printServices = new HashSet();
printServiceLookups = new HashSet();
// check for service providers
Iterator it = ServiceFactory.lookupProviders(PrintServiceLookup.class);
while (it.hasNext())
printServiceLookups.add(it.next());
}
/**
* Constructs a <code>PrintServiceLookup</code> object.
*/
public PrintServiceLookup()
{
// Do nothing here
// nothing to do here
}
/**
* Not called direclty by applications.
* Explicitly registers the provided print service lookup implementation.
* <p>
* The registration will silently fail (returning <code>false</code>) if
* the lookup service is already registered or the registration somehow
* else fails.
* </p>
*
* @param sp the print service lookup implementation to register.
* @return <code>true</code> if registered, <code>false</code> otherwise.
*/
public static boolean registerServiceProvider(PrintServiceLookup sp)
{
return printServiceLookups.add(sp);
}
/**
* Explicitly registers the provided print service instance.
* <p>
* The registration will silently fail (returning <code>false</code>) if
* the print service instance is already registered or the registration
* somehow else fails.
* </p>
* @param service the single print service to register.
* @return <code>true</code> if registered, <code>false</code> otherwise.
*/
public static boolean registerService(PrintService service)
{
if (service instanceof StreamPrintService)
return false;
// security
try
{
SecurityManager sm = System.getSecurityManager();
if (sm != null)
sm.checkPrintJobAccess();
return printServices.add(service);
}
catch (SecurityException se)
{
return false;
}
}
/**
* Searches print services capable of printing in the given document flavor
* which supports the specified printing attributes.
*
* @param flavor the document flavor to support. If <code>null</code> this
* constraint is ignored during lookup.
* @param attributes the printing attributes to support. If
* <code>null</code> this constraint is ignored during lookup.
* @return The resulting available print services, or an array of length 0
* if none is found.
*/
public static final PrintService[] lookupPrintServices(DocFlavor flavor,
AttributeSet attributes)
{
ArrayList result = new ArrayList();
PrintService[] services =
systemProvider.getPrintServices(flavor, attributes);
result.addAll(Arrays.asList(services));
for (Iterator it = printServiceLookups.iterator(); it.hasNext(); )
{
PrintServiceLookup lookup = (PrintServiceLookup) it.next();
services = lookup.getPrintServices(flavor, attributes);
result.addAll(Arrays.asList(services));
}
for (Iterator it = printServices.iterator(); it.hasNext(); )
{
PrintService service = (PrintService) it.next();
if (systemProvider.checkPrintService(flavor, attributes, service))
result.add(service);
}
return (PrintService[]) result.toArray(new PrintService[result.size()]);
}
/**
* Searches print services capable of multi document printing in all of the
* given document flavors and supporting the specified printing attributes.
*
* @param flavors the document flavors to support. If <code>null</code> this
* constraint is ignored during lookup.
* @param attributes the printing attributes to support. If
* <code>null</code> this constraint is ignored during lookup.
* @return The resulting available multi document print services, or an
* array of length 0 if none is found.
*/
public static final MultiDocPrintService[] lookupMultiDocPrintServices(
DocFlavor[] flavors, AttributeSet attributes)
{
ArrayList result = new ArrayList();
MultiDocPrintService[] services =
systemProvider.getMultiDocPrintServices(flavors, attributes);
result.addAll(Arrays.asList(services));
for (Iterator it = printServiceLookups.iterator(); it.hasNext(); )
{
PrintServiceLookup lookup = (PrintServiceLookup) it.next();
services = lookup.getMultiDocPrintServices(flavors, attributes);
result.addAll(Arrays.asList(services));
}
for (Iterator it = printServices.iterator(); it.hasNext(); )
{
PrintService service = (PrintService) it.next();
if (systemProvider.checkMultiDocPrintService(flavors, attributes, service))
result.add(service);
}
return (MultiDocPrintService[]) result.toArray(
new MultiDocPrintService[result.size()]);
}
/**
* Searches the default print service in the current environment.
* <p>
* If multiple lookup services are registered and each has a default
* print service the result is not specified. Usually the default
* print service of the native platform lookup service is returned.
* </p><p>
* The GNU classpath implementation will return the CUPS default
* printing service as the default print service, if available.
* </p><p>
* The default print service may be overriden by users through
* the property <code>javax.print.defaultPrinter</code>. A service
* specified must be found to be returned as the default.
* </p>
*
* @return The default print service, or <code>null</code> if none found.
*/
public static final PrintService lookupDefaultPrintService()
{
// TODO Find out what the property controls and use it
// String defaultPrinter = System.getProperty("javax.print.defaultPrinter");
// first test for platform specified default services
PrintService service = systemProvider.getDefaultPrintService();
if (service != null)
return service;
// none available by systemDefaultProvider
// search in other registered ones and take first
for (Iterator it = printServiceLookups.iterator(); it.hasNext(); )
{
service = ((PrintServiceLookup) it.next()).getDefaultPrintService();
if (service != null)
return service;
}
return null;
}
/**
* Not to be called directly by applications.
*
* @return The default lookup service of the implementing lookup service or
* <code>null</code> if there is no default one.
*/
public abstract PrintService getDefaultPrintService();
/**
* Not called direclty by applications.
* Not to be called directly by applications.
*
* @param flavors the document flavors which have to be supported.
* @param attributes the attributes which have to be supported.
*
* @return The multidoc print services of the implementing lookup service
* for the given parameters, or an array of length 0 if none is available.
*/
public abstract MultiDocPrintService[] getMultiDocPrintServices(DocFlavor[] flavors, AttributeSet attributes);
public abstract MultiDocPrintService[]
getMultiDocPrintServices(DocFlavor[] flavors, AttributeSet attributes);
/**
* Not called direclty by applications.
* Not to be called directly by applications.
*
* @return All known print services of the implementing lookup service
* regardless of supported features, or an array of length 0 if none is
* available.
*/
public abstract PrintService[] getPrintServices();
/**
* Not called direclty by applications.
* Not to be called directly by applications.
*
* @param flavor the document flavor which has to be supported.
* @param attributes the attributes which have to be supported.
*
* @return The print services of the implementing lookup service
* for the given parameters, or an array of length 0 if none is available.
*/
public abstract PrintService[] getPrintServices(DocFlavor flavor, AttributeSet attributes);
public abstract PrintService[]
getPrintServices(DocFlavor flavor, AttributeSet attributes);
}