Class Loader

java.lang.Object
org.apache.wss4j.common.util.Loader

public final class Loader extends Object
Load resources (or images) from various sources.

  • Field Details

    • ALLOWED_URL_SCHEMES_PROPERTY

      public static final String ALLOWED_URL_SCHEMES_PROPERTY
      System property holding a comma-separated list of URL schemes that loadInputStream(ClassLoader, String) is allowed to open when a resource string parses as a URL. The default is "file,jar": remote fetching of configured resources (keystores, truststores, CRLs, properties files) over e.g. http is not enabled unless explicitly configured. For a nested-URL scheme such as "jar" (jar:<url>!/<entry>), the embedded URL must use an allowed scheme as well: "jar:file:..." is permitted by default, "jar:http://..." is not.
      See Also:
  • Method Details

    • loadInputStream

      public static InputStream loadInputStream(ClassLoader loader, String resource) throws WSSecurityException, IOException
      Load a resource as a stream. The resolution order is:
      1. the file system - an existing file wins, so that a path configured by the operator cannot be shadowed by a same-named classpath resource;
      2. a URL, if the resource string parses as one and its scheme is in the allowed list (see ALLOWED_URL_SCHEMES_PROPERTY; "file" and "jar" by default) - for a nested-URL scheme such as "jar", the embedded URL's scheme must also be in the allowed list;
      3. the classpath.
      Note: prior to the introduction of this ordering, URLs (any scheme) and the classpath were consulted before the file system.
      Throws:
      WSSecurityException
      IOException
    • getResource

      public static URL getResource(String resource)
      This method will search for resource in different places. The search order is as follows:

      1. Search for resource using the thread context class loader under Java2.

      2. Try one last time with ClassLoader.getSystemResource(resource), that is is using the system class loader in JDK 1.2 and virtual machine's built-in class loader in JDK 1.1.

      Parameters:
      resource -
      Returns:
      the url to the resource or null if not found
    • getResource

      public static URL getResource(ClassLoader loader, String resource)
      This method will search for resource in different places. The search order is as follows:

      1. Search for resource using the supplied class loader. If that fails, search for resource using the thread context class loader.

      2. Try one last time with ClassLoader.getSystemResource(resource), that is is using the system class loader in JDK 1.2 and virtual machine's built-in class loader in JDK 1.1.

      Parameters:
      resource -
      Returns:
      the url to the resource or null if not found
    • getResourceAsStream

      public static InputStream getResourceAsStream(String resourceName)
      This is a convenience method to load a resource as a stream.

      The algorithm used to find the resource is given in getResource()

      Parameters:
      resourceName - The name of the resource to load
    • getTCL

      Get the Thread context class loader.

      Returns:
      the Thread context class loader
      Throws:
      IllegalAccessException
      InvocationTargetException
    • getClassLoader

      public static ClassLoader getClassLoader(Class<?> clazz)
      Get the class loader of the class argument

      Returns:
      the class loader of the argument
    • loadClass

      public static Class<?> loadClass(ClassLoader loader, String clazz) throws ClassNotFoundException
      Try the specified classloader and then fall back to the loadClass

      Parameters:
      loader -
      clazz -
      Returns:
      Class
      Throws:
      ClassNotFoundException
    • loadClass

      public static <T> Class<? extends T> loadClass(ClassLoader loader, String clazz, Class<T> type) throws ClassNotFoundException
      Try the specified classloader and then fall back to the loadClass

      Parameters:
      loader -
      clazz -
      type -
      Returns:
      Class
      Throws:
      ClassNotFoundException
    • loadClass

      public static Class<?> loadClass(String clazz) throws ClassNotFoundException
      If running under JDK 1.2 load the specified class using the Thread contextClassLoader if that fails try Class.forname.

      Parameters:
      clazz -
      Returns:
      the class
      Throws:
      ClassNotFoundException
    • loadClass

      public static <T> Class<? extends T> loadClass(String clazz, Class<T> type) throws ClassNotFoundException
      If running under JDK 1.2 load the specified class using the Thread contextClassLoader if that fails try Class.forname.

      Parameters:
      clazz -
      type - Type to cast it to
      Returns:
      the class
      Throws:
      ClassNotFoundException
    • loadClass

      public static <T> Class<? extends T> loadClass(String clazz, boolean warn, Class<T> type) throws ClassNotFoundException
      Throws:
      ClassNotFoundException
    • loadClass

      public static Class<?> loadClass(String clazz, boolean warn) throws ClassNotFoundException
      Throws:
      ClassNotFoundException