Class AnnotationConfiguration

  • All Implemented Interfaces:
    org.eclipse.jetty.webapp.Configuration

    public class AnnotationConfiguration
    extends org.eclipse.jetty.webapp.AbstractConfiguration
    Configuration for Annotations
    • Field Detail

      • SERVLET_CONTAINER_INITIALIZER_EXCLUSION_PATTERN

        public static final java.lang.String SERVLET_CONTAINER_INITIALIZER_EXCLUSION_PATTERN
        See Also:
        Constant Field Values
      • SERVLET_CONTAINER_INITIALIZER_ORDER

        public static final java.lang.String SERVLET_CONTAINER_INITIALIZER_ORDER
        See Also:
        Constant Field Values
      • CLASS_INHERITANCE_MAP

        public static final java.lang.String CLASS_INHERITANCE_MAP
        See Also:
        Constant Field Values
      • CONTAINER_INITIALIZERS

        public static final java.lang.String CONTAINER_INITIALIZERS
        See Also:
        Constant Field Values
      • CONTAINER_INITIALIZER_STARTER

        public static final java.lang.String CONTAINER_INITIALIZER_STARTER
        See Also:
        Constant Field Values
      • DEFAULT_MULTI_THREADED

        public static final boolean DEFAULT_MULTI_THREADED
        See Also:
        Constant Field Values
      • _containerPathStats

        protected org.eclipse.jetty.util.statistic.CounterStatistic _containerPathStats
      • _webInfLibStats

        protected org.eclipse.jetty.util.statistic.CounterStatistic _webInfLibStats
      • _webInfClassesStats

        protected org.eclipse.jetty.util.statistic.CounterStatistic _webInfClassesStats
      • _sciExcludePattern

        protected java.util.regex.Pattern _sciExcludePattern
      • _initializers

        protected java.util.List<jakarta.servlet.ServletContainerInitializer> _initializers
    • Constructor Detail

      • AnnotationConfiguration

        public AnnotationConfiguration()
    • Method Detail

      • preConfigure

        public void preConfigure​(org.eclipse.jetty.webapp.WebAppContext context)
                          throws java.lang.Exception
        Specified by:
        preConfigure in interface org.eclipse.jetty.webapp.Configuration
        Overrides:
        preConfigure in class org.eclipse.jetty.webapp.AbstractConfiguration
        Throws:
        java.lang.Exception
      • configure

        public void configure​(org.eclipse.jetty.webapp.WebAppContext context)
                       throws java.lang.Exception
        Specified by:
        configure in interface org.eclipse.jetty.webapp.Configuration
        Overrides:
        configure in class org.eclipse.jetty.webapp.AbstractConfiguration
        Throws:
        java.lang.Exception
      • postConfigure

        public void postConfigure​(org.eclipse.jetty.webapp.WebAppContext context)
                           throws java.lang.Exception
        Specified by:
        postConfigure in interface org.eclipse.jetty.webapp.Configuration
        Overrides:
        postConfigure in class org.eclipse.jetty.webapp.AbstractConfiguration
        Throws:
        java.lang.Exception
      • scanForAnnotations

        protected void scanForAnnotations​(org.eclipse.jetty.webapp.WebAppContext context)
                                   throws java.lang.Exception
        Perform scanning of classes for discoverable annotations such as WebServlet/WebFilter/WebListener
        Parameters:
        context - the context for the scan
        Throws:
        java.lang.Exception - if unable to scan
      • createAnnotationParser

        protected AnnotationParser createAnnotationParser​(int javaPlatform)
        Parameters:
        javaPlatform - The java platform to scan for.
        Returns:
        a new AnnotationParser. This method can be overridden to use a different implementation of the AnnotationParser. Note that this is considered internal API.
      • isUseMultiThreading

        protected boolean isUseMultiThreading​(org.eclipse.jetty.webapp.WebAppContext context)
        Check if we should use multiple threads to scan for annotations or not
        Parameters:
        context - the context of the multi threaded setting
        Returns:
        true if multi threading is enabled on the context, server, or via a System property.
        See Also:
        MULTI_THREADED
      • getMaxScanWait

        protected int getMaxScanWait​(org.eclipse.jetty.webapp.WebAppContext context)
        Work out how long we should wait for the async scanning to occur.
        Parameters:
        context - the context of the max scan wait setting
        Returns:
        the max scan wait setting on the context, or server, or via a System property.
        See Also:
        MAX_SCAN_WAIT
      • cloneConfigure

        public void cloneConfigure​(org.eclipse.jetty.webapp.WebAppContext template,
                                   org.eclipse.jetty.webapp.WebAppContext context)
                            throws java.lang.Exception
        Overrides:
        cloneConfigure in class org.eclipse.jetty.webapp.AbstractConfiguration
        Throws:
        java.lang.Exception
      • createServletContainerInitializerAnnotationHandlers

        public void createServletContainerInitializerAnnotationHandlers​(org.eclipse.jetty.webapp.WebAppContext context,
                                                                        java.util.List<jakarta.servlet.ServletContainerInitializer> scis)
                                                                 throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getJarFor

        public org.eclipse.jetty.util.resource.Resource getJarFor​(jakarta.servlet.ServletContainerInitializer service)
                                                           throws java.net.MalformedURLException,
                                                                  java.io.IOException
        Throws:
        java.net.MalformedURLException
        java.io.IOException
      • isFromExcludedJar

        public boolean isFromExcludedJar​(org.eclipse.jetty.webapp.WebAppContext context,
                                         jakarta.servlet.ServletContainerInitializer sci,
                                         org.eclipse.jetty.util.resource.Resource sciResource)
                                  throws java.lang.Exception
        Check to see if the ServletContainerIntializer loaded via the ServiceLoader came from a jar that is excluded by the fragment ordering. See ServletSpec 3.0 p.85.
        Parameters:
        context - the context for the jars
        sci - the servlet container initializer
        sciResource - the resource for the servlet container initializer
        Returns:
        true if excluded
        Throws:
        java.lang.Exception - if unable to determine exclusion
      • matchesExclusionPattern

        public boolean matchesExclusionPattern​(jakarta.servlet.ServletContainerInitializer sci)
        Test if the ServletContainerIntializer is excluded by the o.e.j.containerInitializerExclusionPattern
        Parameters:
        sci - the ServletContainerIntializer
        Returns:
        true if the ServletContainerIntializer is excluded
      • isFromContainerClassPath

        public boolean isFromContainerClassPath​(org.eclipse.jetty.webapp.WebAppContext context,
                                                jakarta.servlet.ServletContainerInitializer sci)
        Test if the ServletContainerInitializer is from the container classpath
        Parameters:
        context - the context for the webapp classpath
        sci - the ServletContainerIntializer
        Returns:
        true if ServletContainerIntializer is from container classpath
      • isFromWebInfClasses

        public boolean isFromWebInfClasses​(org.eclipse.jetty.webapp.WebAppContext context,
                                           org.eclipse.jetty.util.resource.Resource sci)
        Test if the ServletContainerInitializer is from WEB-INF/classes
        Parameters:
        context - the webapp to test
        sci - a Resource representing the SCI
        Returns:
        true if the sci Resource is inside a WEB-INF/classes directory, false otherwise
      • getNonExcludedInitializers

        public java.util.List<jakarta.servlet.ServletContainerInitializer> getNonExcludedInitializers​(org.eclipse.jetty.webapp.WebAppContext context)
                                                                                               throws java.lang.Exception
        Get SCIs that are not excluded from consideration
        Parameters:
        context - the web app context
        Returns:
        the list of non-excluded servlet container initializers
        Throws:
        java.lang.Exception - if unable to get list
      • getInitializerOrdering

        public AnnotationConfiguration.ServletContainerInitializerOrdering getInitializerOrdering​(org.eclipse.jetty.webapp.WebAppContext context)
        Jetty-specific extension that allows an ordering to be applied across ALL ServletContainerInitializers.
        Parameters:
        context - the context for the initializer ordering configuration
        Returns:
        the ordering of the ServletContainerIntializer's
      • parseContainerPath

        public void parseContainerPath​(org.eclipse.jetty.webapp.WebAppContext context,
                                       AnnotationParser parser)
                                throws java.lang.Exception
        Scan jars on container path.
        Parameters:
        context - the context for the scan
        parser - the parser to scan with
        Throws:
        java.lang.Exception - if unable to scan
      • parseWebInfLib

        public void parseWebInfLib​(org.eclipse.jetty.webapp.WebAppContext context,
                                   AnnotationParser parser)
                            throws java.lang.Exception
        Scan jars in WEB-INF/lib. Only jars selected by MetaInfConfiguration, and that are not excluded by an ordering will be considered.
        Parameters:
        context - the context for the scan
        parser - the annotation parser to use
        Throws:
        java.lang.Exception - if unable to scan and/or parse
      • parseWebInfClasses

        public void parseWebInfClasses​(org.eclipse.jetty.webapp.WebAppContext context,
                                       AnnotationParser parser)
                                throws java.lang.Exception
        Scan classes in WEB-INF/classes.
        Parameters:
        context - the context for the scan
        parser - the annotation parser to use
        Throws:
        java.lang.Exception - if unable to scan and/or parse