Package org.eclipse.jetty.annotations
Class AnnotationConfiguration
- java.lang.Object
-
- org.eclipse.jetty.webapp.AbstractConfiguration
-
- org.eclipse.jetty.annotations.AnnotationConfiguration
-
- All Implemented Interfaces:
Configuration
- Direct Known Subclasses:
AnnotationConfiguration
public class AnnotationConfiguration extends AbstractConfiguration
Configuration for Annotations
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AnnotationConfiguration.ClassInheritanceMap
class
AnnotationConfiguration.ParserTask
ParserTask Task to executing scanning of a resource for annotations.class
AnnotationConfiguration.ServletContainerInitializerComparator
ServletContainerInitializerComparator Comparator impl that orders a set of ServletContainerInitializers according to the list of classnames (optionally containing a "*" wildcard character) established in a ServletContainerInitializerOrdering.class
AnnotationConfiguration.ServletContainerInitializerOrdering
ServletContainerInitializerOrderingclass
AnnotationConfiguration.TimeStatistic
TimeStatistic Simple class to capture elapsed time of an operation.-
Nested classes/interfaces inherited from interface org.eclipse.jetty.webapp.Configuration
Configuration.ClassList, Configuration.Wrapper, Configuration.WrapperFunction
-
-
Field Summary
-
Fields inherited from interface org.eclipse.jetty.webapp.Configuration
ATTR
-
-
Constructor Summary
Constructors Constructor Description AnnotationConfiguration()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDiscoverableAnnotationHandler(AbstractDiscoverableAnnotationHandler handler)
void
cloneConfigure(WebAppContext template, WebAppContext context)
Clone configuration instance.void
configure(WebAppContext context)
Configure WebApp.protected AnnotationParser
createAnnotationParser(int javaPlatform)
void
createServletContainerInitializerAnnotationHandlers(WebAppContext context, java.util.List<javax.servlet.ServletContainerInitializer> scis)
FragmentDescriptor
getFragmentFromJar(Resource jar, java.util.List<FragmentDescriptor> frags)
Get the web-fragment.xml from a jarAnnotationConfiguration.ServletContainerInitializerOrdering
getInitializerOrdering(WebAppContext context)
Jetty-specific extension that allows an ordering to be applied across ALL ServletContainerInitializers.Resource
getJarFor(javax.servlet.ServletContainerInitializer service)
protected int
getMaxScanWait(WebAppContext context)
Work out how long we should wait for the async scanning to occur.java.util.List<javax.servlet.ServletContainerInitializer>
getNonExcludedInitializers(WebAppContext context)
Get SCIs that are not excluded from considerationboolean
isFromContainerClassPath(WebAppContext context, javax.servlet.ServletContainerInitializer sci)
Test if the ServletContainerInitializer is from the container classpathboolean
isFromExcludedJar(WebAppContext context, javax.servlet.ServletContainerInitializer sci, Resource sciResource)
Check to see if the ServletContainerIntializer loaded via the ServiceLoader came from a jar that is excluded by the fragment ordering.boolean
isFromWebInfClasses(WebAppContext context, Resource sci)
Test if the ServletContainerInitializer is from WEB-INF/classesboolean
isMetaDataComplete(WebDescriptor d)
protected boolean
isUseMultiThreading(WebAppContext context)
Check if we should use multiple threads to scan for annotations or notboolean
matchesExclusionPattern(javax.servlet.ServletContainerInitializer sci)
Test if the ServletContainerIntializer is excluded by the o.e.j.containerInitializerExclusionPatternvoid
parseContainerPath(WebAppContext context, AnnotationParser parser)
Scan jars on container path.void
parseWebInfClasses(WebAppContext context, AnnotationParser parser)
Scan classes in WEB-INF/classesvoid
parseWebInfLib(WebAppContext context, AnnotationParser parser)
Scan jars in WEB-INF/libvoid
postConfigure(WebAppContext context)
Clear down after configuration.void
preConfigure(WebAppContext context)
Set up for configuration.protected void
scanForAnnotations(WebAppContext context)
Perform scanning of classes for annotations-
Methods inherited from class org.eclipse.jetty.webapp.AbstractConfiguration
deconfigure, destroy
-
-
-
-
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
-
MULTI_THREADED
public static final java.lang.String MULTI_THREADED
- See Also:
- Constant Field Values
-
MAX_SCAN_WAIT
public static final java.lang.String MAX_SCAN_WAIT
- See Also:
- Constant Field Values
-
DEFAULT_MAX_SCAN_WAIT
public static final int DEFAULT_MAX_SCAN_WAIT
- See Also:
- Constant Field Values
-
DEFAULT_MULTI_THREADED
public static final boolean DEFAULT_MULTI_THREADED
- See Also:
- Constant Field Values
-
_discoverableAnnotationHandlers
protected final java.util.List<AbstractDiscoverableAnnotationHandler> _discoverableAnnotationHandlers
-
_classInheritanceHandler
protected ClassInheritanceHandler _classInheritanceHandler
-
_containerInitializerAnnotationHandlers
protected final java.util.List<ContainerInitializerAnnotationHandler> _containerInitializerAnnotationHandlers
-
_parserTasks
protected java.util.List<AnnotationConfiguration.ParserTask> _parserTasks
-
_containerPathStats
protected CounterStatistic _containerPathStats
-
_webInfLibStats
protected CounterStatistic _webInfLibStats
-
_webInfClassesStats
protected CounterStatistic _webInfClassesStats
-
_sciExcludePattern
protected java.util.regex.Pattern _sciExcludePattern
-
_loadedInitializers
protected java.util.ServiceLoader<javax.servlet.ServletContainerInitializer> _loadedInitializers
-
-
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 interfaceConfiguration
- Overrides:
preConfigure
in classAbstractConfiguration
- Parameters:
context
- The context to configure- Throws:
java.lang.Exception
- if unable to pre configure
-
addDiscoverableAnnotationHandler
public void addDiscoverableAnnotationHandler(AbstractDiscoverableAnnotationHandler handler)
-
configure
public void configure(WebAppContext context) throws java.lang.Exception
Description copied from interface:Configuration
Configure WebApp.Typically this step applies the discovered configuration resources to either the
WebAppContext
or the associatedMetaData
.- Specified by:
configure
in interfaceConfiguration
- Overrides:
configure
in classAbstractConfiguration
- Parameters:
context
- The context to configure- Throws:
java.lang.Exception
- if unable to configure- See Also:
AbstractConfiguration.configure(org.eclipse.jetty.webapp.WebAppContext)
-
postConfigure
public void postConfigure(WebAppContext context) throws java.lang.Exception
Description copied from interface:Configuration
Clear down after configuration.- Specified by:
postConfigure
in interfaceConfiguration
- Overrides:
postConfigure
in classAbstractConfiguration
- Parameters:
context
- The context to configure- Throws:
java.lang.Exception
- if unable to post configure- See Also:
AbstractConfiguration.postConfigure(org.eclipse.jetty.webapp.WebAppContext)
-
scanForAnnotations
protected void scanForAnnotations(WebAppContext context) throws java.lang.Exception
Perform scanning of classes for annotations- 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(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(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(WebAppContext template, WebAppContext context) throws java.lang.Exception
Description copied from interface:Configuration
Clone configuration instance.Configure an instance of a WebAppContext, based on a template WebAppContext that has previously been configured by this Configuration.
- Specified by:
cloneConfigure
in interfaceConfiguration
- Overrides:
cloneConfigure
in classAbstractConfiguration
- Parameters:
template
- The template contextcontext
- The context to configure- Throws:
java.lang.Exception
- if unable to clone- See Also:
AbstractConfiguration.cloneConfigure(org.eclipse.jetty.webapp.WebAppContext, org.eclipse.jetty.webapp.WebAppContext)
-
createServletContainerInitializerAnnotationHandlers
public void createServletContainerInitializerAnnotationHandlers(WebAppContext context, java.util.List<javax.servlet.ServletContainerInitializer> scis)
-
getJarFor
public Resource getJarFor(javax.servlet.ServletContainerInitializer service) throws java.io.IOException
- Throws:
java.io.IOException
-
isFromExcludedJar
public boolean isFromExcludedJar(WebAppContext context, javax.servlet.ServletContainerInitializer sci, Resource sciResource)
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 jarssci
- the servlet container initializersciResource
- the resource for the servlet container initializer- Returns:
- true if excluded
-
matchesExclusionPattern
public boolean matchesExclusionPattern(javax.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(WebAppContext context, javax.servlet.ServletContainerInitializer sci)
Test if the ServletContainerInitializer is from the container classpath- Parameters:
context
- the context for the webapp classpathsci
- the ServletContainerIntializer- Returns:
- true if ServletContainerIntializer is from container classpath
-
isFromWebInfClasses
public boolean isFromWebInfClasses(WebAppContext context, Resource sci)
Test if the ServletContainerInitializer is from WEB-INF/classes- Parameters:
context
- the webapp to testsci
- 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<javax.servlet.ServletContainerInitializer> getNonExcludedInitializers(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(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(WebAppContext context, AnnotationParser parser) throws java.lang.Exception
Scan jars on container path.- Parameters:
context
- the context for the scanparser
- the parser to scan with- Throws:
java.lang.Exception
- if unable to scan
-
parseWebInfLib
public void parseWebInfLib(WebAppContext context, AnnotationParser parser) throws java.lang.Exception
Scan jars in WEB-INF/lib- Parameters:
context
- the context for the scanparser
- the annotation parser to use- Throws:
java.lang.Exception
- if unable to scan and/or parse
-
parseWebInfClasses
public void parseWebInfClasses(WebAppContext context, AnnotationParser parser) throws java.lang.Exception
Scan classes in WEB-INF/classes- Parameters:
context
- the context for the scanparser
- the annotation parser to use- Throws:
java.lang.Exception
- if unable to scan and/or parse
-
getFragmentFromJar
public FragmentDescriptor getFragmentFromJar(Resource jar, java.util.List<FragmentDescriptor> frags) throws java.lang.Exception
Get the web-fragment.xml from a jar- Parameters:
jar
- the jar to look in for a fragmentfrags
- the fragments previously found- Returns:
- true if the fragment if found, or null of not found
- Throws:
java.lang.Exception
- if unable to determine the the fragment contains
-
isMetaDataComplete
public boolean isMetaDataComplete(WebDescriptor d)
-
-