Class MetaInfConfiguration

    • 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
      • CONTAINER_JAR_PATTERN

        public static final java.lang.String CONTAINER_JAR_PATTERN
        See Also:
        Constant Field Values
      • WEBINF_JAR_PATTERN

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

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

        public static final java.lang.String RESOURCE_DIRS
        If set, to a list of URLs, these resources are added to the context resource base as a resource collection.
        See Also:
        Constant Field Values
    • 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. Calls to preConfigure may alter the Configurations configured on the WebAppContext, so long as configurations prior to this configuration are not altered.

        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
      • findAndFilterContainerPaths

        public void findAndFilterContainerPaths​(WebAppContext context)
                                         throws java.lang.Exception
        Find jars and directories that are on the container's classpath and apply an optional filter. The filter is a pattern applied to the full jar or directory names. If there is no pattern, then no jar or dir is considered to match. Those jars that do match will be later examined for META-INF information and annotations. To find them, examine the classloaders in the hierarchy above the webapp classloader that are URLClassLoaders. For jdk-9 we also look at the java.class.path, and the jdk.module.path.
        Parameters:
        context - the WebAppContext being deployed
        Throws:
        java.lang.Exception
      • findAndFilterWebAppPaths

        public void findAndFilterWebAppPaths​(WebAppContext context)
                                      throws java.lang.Exception
        Finds the jars that are either physically or virtually in WEB-INF/lib, and applies an optional filter to their full pathnames. The filter selects which jars will later be examined for META-INF information and annotations. If there is no pattern, then all jars are considered selected.
        Parameters:
        context - the WebAppContext being deployed
        Throws:
        java.lang.Exception
      • getAllContainerJars

        protected java.util.List<java.net.URI> getAllContainerJars​(WebAppContext context)
                                                            throws java.net.URISyntaxException
        Throws:
        java.net.URISyntaxException
      • scanJars

        protected void scanJars​(WebAppContext context)
                         throws java.lang.Exception
        Throws:
        java.lang.Exception
      • 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
      • findClassDirs

        protected java.util.List<Resource> findClassDirs​(WebAppContext context)
                                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • findJars

        protected java.util.List<Resource> findJars​(WebAppContext context)
                                             throws java.lang.Exception
        Look for jars that should be treated as if they are in WEB-INF/lib
        Parameters:
        context - the context to find the jars in
        Returns:
        the list of jar resources found within context
        Throws:
        java.lang.Exception - if unable to find the jars
      • findWebInfLibJars

        protected java.util.List<Resource> findWebInfLibJars​(WebAppContext context)
                                                      throws java.lang.Exception
        Look for jars in WEB-INF/lib
        Parameters:
        context - the context to find the lib jars in
        Returns:
        the list of jars as Resource
        Throws:
        java.lang.Exception - if unable to scan for lib jars
      • findExtraClasspathJars

        protected java.util.List<Resource> findExtraClasspathJars​(WebAppContext context)
                                                           throws java.lang.Exception
        Get jars from WebAppContext.getExtraClasspath as resources
        Parameters:
        context - the context to find extra classpath jars in
        Returns:
        the list of Resources with the extra classpath, or null if not found
        Throws:
        java.lang.Exception - if unable to resolve the extra classpath jars
      • findWebInfClassesDir

        protected Resource findWebInfClassesDir​(WebAppContext context)
                                         throws java.lang.Exception
        Get WEB-INF/classes dir
        Parameters:
        context - the context to look for the WEB-INF/classes directory
        Returns:
        the Resource for the WEB-INF/classes directory
        Throws:
        java.lang.Exception - if unable to find the WEB-INF/classes directory
      • findExtraClasspathDirs

        protected java.util.List<Resource> findExtraClasspathDirs​(WebAppContext context)
                                                           throws java.lang.Exception
        Get class dirs from WebAppContext.getExtraClasspath as resources
        Parameters:
        context - the context to look for extra classpaths in
        Returns:
        the list of Resources to the extra classpath
        Throws:
        java.lang.Exception - if unable to resolve the extra classpath resources