Class ResourceLoader

java.lang.Object
de.iip_ecosphere.platform.support.resources.ResourceLoader

public class ResourceLoader extends Object
Support for class loading also in FAT jars. Resource resolvers can be added directly or via JLS. Resource filtering is currently only supported on the implicit classpath resource resolver.
Author:
Holger Eichelberger, SSE
  • Field Details

    • MAVEN_RESOLVER

      public static final ResourceResolver MAVEN_RESOLVER
      Optional Maven resource resolver looking in src/main/resources and src/test/resources in this sequence.
    • resolvers

      private static List<ResourceResolver> resolvers
    • filters

      private static List<Predicate<URI>> filters
  • Constructor Details

    • ResourceLoader

      public ResourceLoader()
  • Method Details

    • registerResourceResolver

      public static void registerResourceResolver(ResourceResolver resolver)
      Registers a resources resolver.
      Parameters:
      resolver - the resolver to be registered, ignored if null
    • registerResourceResolver

      public static void registerResourceResolver(ResourceResolver resolver, boolean prepend)
      Registers a resources resolver.
      Parameters:
      resolver - the resolver to be registered, ignored if null
      prepend - add the resolver to the front (handle with care)
    • knowsResourceResolver

      public static boolean knowsResourceResolver(ResourceResolver resolver)
      Returns whether the specific resolver is known.
      Parameters:
      resolver - the resolver to look for
      Returns:
      true for known, false else
    • unregisterResourceResolver

      public static void unregisterResourceResolver(ResourceResolver resolver)
      Unregisters a resources resolver.
      Parameters:
      resolver - the resolver to be unregistered, ignored if null
    • getResourceAsStream

      public static InputStream getResourceAsStream(String name, ResourceResolver... optional)
      Returns a resource as string taking the class loader of this class.
      Parameters:
      name - the name of the resource to load
      optional - further, optional on-the fly resolvers
      Returns:
      the resource as input stream, may be null if the resource was not found
    • getAllRegisteredResolver

      public static ResourceResolver getAllRegisteredResolver(ResourceResolver... resolver)
      Returns a resolver for all registered resolvers.
      Parameters:
      resolver - additional resolver that shall be part of the result
      Returns:
      a resolver for all registered resolvers
    • getResourceAsStream

      public static InputStream getResourceAsStream(Class<?> cls, String name, ResourceResolver... optional)
      Returns a resource as string.
      Parameters:
      cls - the class to take the class loader from
      name - the name of the resource to load
      optional - further, optional on-the fly resolvers
      Returns:
      the resource as input stream, may be null if the resource was not found
    • getResourceAsStream

      public static InputStream getResourceAsStream(ClassLoader loader, String name, ResourceResolver... optional)
      Returns a resource as string.
      Parameters:
      loader - the class loader to use
      name - the name of the resource to load (shall not start with "/", used as fallback alternative)
      optional - further, optional on-the fly resolvers
      Returns:
      the resource as input stream, may be null if the resource was not found
    • prependSlash

      public static final String prependSlash(String text)
      Prepends a "/" if there is none at the beginning of text.
      Parameters:
      text - the text to use as basis
      Returns:
      test with "/" prepended
    • addFilter

      public static void addFilter(Predicate<URI> filter)
      Adds a URL-based resource filter. If filters are added, only resources that are accepted by the filter are returned (if supported by the ResourceResolver. [testing]
      Parameters:
      filter - the filter to add, ignored if null
    • clearFilters

      public static void clearFilters()
      Clears all filters.
    • addTestExcludeFilters

      public static void addTestExcludeFilters()
      Adds a set of default exclude filters to focus on app resources rather than test resources. [convenience]
    • hasFilters

      public static boolean hasFilters()
      Returns whether resource filters have been defined. [testing]
      Returns:
      true for resource filters, false else
    • matchesFilter

      public static boolean matchesFilter(URI uri)
      Returns if any filter matches the given uri. [testing]
      Parameters:
      uri - the URI to test
      Returns:
      true if at least one filter matches the given uri, false else. Consider hasFilters() to identify whether false is significant.