Class MetaInfConfiguration

  • All Implemented Interfaces:
    Configuration

    public class MetaInfConfiguration
    extends AbstractConfiguration
    MetaInfConfiguration

    Scan META-INF of jars to find:

    • tlds
    • web-fragment.xml
    • resources
    The jars which are scanned are:
    1. those from the container classpath whose pattern matched the WebInfConfiguration.CONTAINER_JAR_PATTERN
    2. those from WEB-INF/lib
    • Field Detail

      • USE_CONTAINER_METAINF_CACHE

        public static final java.lang.String USE_CONTAINER_METAINF_CACHE
        See Also:
        Constant Field Values
      • DEFAULT_USE_CONTAINER_METAINF_CACHE

        public static final boolean DEFAULT_USE_CONTAINER_METAINF_CACHE
        See Also:
        Constant Field Values
      • CACHED_CONTAINER_TLDS

        public static final java.lang.String CACHED_CONTAINER_TLDS
        See Also:
        Constant Field Values
      • CACHED_CONTAINER_FRAGMENTS

        public static final java.lang.String CACHED_CONTAINER_FRAGMENTS
        See Also:
        Constant Field Values
      • CACHED_CONTAINER_RESOURCES

        public static final java.lang.String CACHED_CONTAINER_RESOURCES
        See Also:
        Constant Field Values
      • METAINF_FRAGMENTS

        public static final java.lang.String METAINF_FRAGMENTS
        See Also:
        Constant Field Values
      • METAINF_RESOURCES

        public static final java.lang.String METAINF_RESOURCES
        See Also:
        Constant Field Values
      • __allScanTypes

        public static final java.util.List<java.lang.String> __allScanTypes
    • Constructor Detail

      • MetaInfConfiguration

        public MetaInfConfiguration()
    • Method Detail

      • preConfigure

        public void preConfigure​(WebAppContext context)
                          throws java.lang.Exception
        Description copied from interface: Configuration
        Set up for configuration.

        Typically this step discovers configuration resources

        Specified by:
        preConfigure in interface Configuration
        Overrides:
        preConfigure in class AbstractConfiguration
        Parameters:
        context - The context to configure
        Throws:
        java.lang.Exception - if unable to pre configure
      • scanJars

        public void scanJars​(WebAppContext context,
                             java.util.Collection<Resource> jars,
                             boolean useCaches)
                      throws java.lang.Exception
        For backwards compatibility. This method will always scan for all types of data.
        Parameters:
        context - the context for the scan
        jars - the jars to scan
        useCaches - if true, the scanned info is cached
        Throws:
        java.lang.Exception - if unable to scan the jars
      • scanJars

        public void scanJars​(WebAppContext context,
                             java.util.Collection<Resource> jars,
                             boolean useCaches,
                             java.util.List<java.lang.String> scanTypes)
                      throws java.lang.Exception
        Look into the jars to discover info in META-INF. If useCaches == true, then we will cache the info discovered indexed by the jar in which it was discovered: this speeds up subsequent context deployments.
        Parameters:
        context - the context for the scan
        jars - the jars resources to scan
        useCaches - if true, cache the info discovered
        scanTypes - the type of things to look for in the jars
        Throws:
        java.lang.Exception - if unable to scan the jars
      • scanForResources

        public void scanForResources​(WebAppContext context,
                                     Resource target,
                                     java.util.concurrent.ConcurrentHashMap<Resource,​Resource> cache)
                              throws java.lang.Exception
        Scan for META-INF/resources dir in the given jar.
        Parameters:
        context - the context for the scan
        target - the target resource to scan for
        cache - the resource cache
        Throws:
        java.lang.Exception - if unable to scan for resources
      • scanForFragment

        public void scanForFragment​(WebAppContext context,
                                    Resource jar,
                                    java.util.concurrent.ConcurrentHashMap<Resource,​Resource> cache)
                             throws java.lang.Exception
        Scan for META-INF/web-fragment.xml file in the given jar.
        Parameters:
        context - the context for the scan
        jar - the jar resource to scan for fragements in
        cache - the resource cache
        Throws:
        java.lang.Exception - if unable to scan for fragments
      • scanForTlds

        public void scanForTlds​(WebAppContext context,
                                Resource jar,
                                java.util.concurrent.ConcurrentHashMap<Resource,​java.util.Collection<java.net.URL>> cache)
                         throws java.lang.Exception
        Discover META-INF/*.tld files in the given jar
        Parameters:
        context - the context for the scan
        jar - the jar resources to scan tlds for
        cache - the resource cache
        Throws:
        java.lang.Exception - if unable to scan for tlds
      • getTlds

        public java.util.Collection<java.net.URL> getTlds​(java.io.File dir)
                                                   throws java.io.IOException
        Find all .tld files in all subdirs of the given dir.
        Parameters:
        dir - the directory to scan
        Returns:
        the list of tlds found
        Throws:
        java.io.IOException - if unable to scan the directory
      • getTlds

        public java.util.Collection<java.net.URL> getTlds​(java.net.URI uri)
                                                   throws java.io.IOException
        Find all .tld files in the given jar.
        Parameters:
        uri - the uri to jar file
        Returns:
        the collection of tlds as url references
        Throws:
        java.io.IOException - if unable to scan the jar file