Class GenericSniffer
- java.lang.Object
-
- org.glassfish.internal.deployment.GenericSniffer
-
- All Implemented Interfaces:
Sniffer
- Direct Known Subclasses:
AppClientSniffer
,ConnectorSniffer
,EarSniffer
,EjbSniffer
,GrizzlyAdapterSniffer
,JPASniffer
,OSGiSniffer
,ResourcesCompositeSniffer
,ResourcesSniffer
,SecuritySniffer
,WebServicesSniffer
,WebSniffer
,WeldSniffer
public abstract class GenericSniffer extends Object implements Sniffer
Generic implementation of the Sniffer service that can be programmatically instantiated- Author:
- Jerome Dochez, Sanjeeb Sahoo
-
-
Field Summary
Fields Modifier and Type Field Description protected org.glassfish.hk2.api.ServiceLocator
habitat
protected com.sun.enterprise.module.ModulesRegistry
modulesRegistry
-
Constructor Summary
Constructors Constructor Description GenericSniffer(String containerName, String appStigma, String urlPattern)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object other)
String[]
getAnnotationNames(DeploymentContext context)
Returns the list of annotation names that this sniffer is interested in.Class<? extends Annotation>[]
getAnnotationTypes()
Returns the list of annotations types that this sniffer is interested in.protected String[]
getContainerModuleNames()
protected List<String>
getDeploymentConfigurationPaths()
Returns a list of paths within an archive that represents deployment configuration files.Map<String,String>
getDeploymentConfigurations(ReadableArchive location)
Returns a map of deployment configurations composed by reading from a list of paths in the readable archive.String[]
getIncompatibleSnifferTypes()
String
getModuleType()
Returns the container name associated with this snifferString[]
getURLPatterns()
Returns the pattern to apply against the request URL If the pattern matches the URL, the service method of the associated container will be invokedboolean
handles(ReadableArchive location)
Returns true if the passed file or directory is recognized by this instance.boolean
handles(DeploymentContext context)
Returns true if the passed file or directory is recognized by this composite sniffer.int
hashCode()
boolean
isJavaEE()
boolean
isUserVisible()
com.sun.enterprise.module.HK2Module[]
setup(String containerHome, Logger logger)
Sets up the container libraries so that any imported bundle from the connector jar file will now be known to the module subsystem This method returns aModuleDefinition
for the module containing the core implementation of the container.void
tearDown()
Tears down a container, remove all imported libraries from the module subsystem.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.glassfish.api.container.Sniffer
getContainersNames, supportsArchiveType
-
-
-
-
Method Detail
-
handles
public boolean handles(DeploymentContext context)
Returns true if the passed file or directory is recognized by this composite sniffer.
-
getAnnotationNames
public String[] getAnnotationNames(DeploymentContext context)
Returns the list of annotation names that this sniffer is interested in. If an application bundle contains at least one class annotated with one of the returned annotations, the deployment process will not call the handles method but will invoke the containers deployers as if the handles method had been called and returned true.- Specified by:
getAnnotationNames
in interfaceSniffer
- Parameters:
context
- deployment context- Returns:
- list of annotations this sniffer is interested in or an empty array
-
handles
public boolean handles(ReadableArchive location)
Returns true if the passed file or directory is recognized by this instance.
-
getURLPatterns
public String[] getURLPatterns()
Returns the pattern to apply against the request URL If the pattern matches the URL, the service method of the associated container will be invoked- Specified by:
getURLPatterns
in interfaceSniffer
- Returns:
- pattern instance
-
getModuleType
public String getModuleType()
Returns the container name associated with this sniffer- Specified by:
getModuleType
in interfaceSniffer
- Returns:
- the container name
-
setup
public com.sun.enterprise.module.HK2Module[] setup(String containerHome, Logger logger) throws IOException
Sets up the container libraries so that any imported bundle from the connector jar file will now be known to the module subsystem This method returns aModuleDefinition
for the module containing the core implementation of the container. That means that this module will be locked as long as there is at least one module loaded in the associated container.- Specified by:
setup
in interfaceSniffer
- Parameters:
containerHome
- is where the container implementation resides (Not used anymore)logger
- the logger to use- Returns:
- the module definition of the core container implementation.
- Throws:
IOException
- exception if something goes sour
-
getContainerModuleNames
protected String[] getContainerModuleNames()
-
tearDown
public void tearDown()
Tears down a container, remove all imported libraries from the module subsystem.
-
getAnnotationTypes
public Class<? extends Annotation>[] getAnnotationTypes()
Returns the list of annotations types that this sniffer is interested in. If an application bundle contains at least one class annotated with one of the returned annotations, the deployment process will not call the handles method but will invoke the containers deployers as if the handles method had been called and returned true.- Specified by:
getAnnotationTypes
in interfaceSniffer
- Returns:
- list of annotations this sniffer is interested in.
-
isUserVisible
public boolean isUserVisible()
- Specified by:
isUserVisible
in interfaceSniffer
- Returns:
- whether this sniffer should be visible to user
-
isJavaEE
public boolean isJavaEE()
-
getDeploymentConfigurations
public Map<String,String> getDeploymentConfigurations(ReadableArchive location) throws IOException
Returns a map of deployment configurations composed by reading from a list of paths in the readable archive. (For Java EE applications the deployment configurations correspond to the deployment descriptors.) ThegetDeploymentConfigurationPaths()
method returns this list of paths which might exist in archives that this sniffer handles.In each returned map entry the key is a path and the value is the contents of the archive entry at that path. This method creates a map entry only if the path exists in the readable archive.
Sniffers for applications that do not store their configurations as deployment descriptors at predictable paths within an archive are free to override this implementation to return whatever information is appropriate to that application type. A key usage of the returned Map is in the application type's GUI plug-in (if desired) to allow users to customize the deployment configuration after the application has been deployed. The concrete Sniffer implementation and the GUI plug-in must agree on the conventions for storing deployment configuration inforation in the Map.
- Specified by:
getDeploymentConfigurations
in interfaceSniffer
- Parameters:
location
- the readable archive for the application of interest- Returns:
- a map from path names to the contents of the archive entries at those paths
- Throws:
IOException
- in case of errors retrieving an entry or reading the archive contents at an entry
-
getDeploymentConfigurationPaths
protected List<String> getDeploymentConfigurationPaths()
Returns a list of paths within an archive that represents deployment configuration files.Sniffers that recognize Java EE applications typically override this default implementation to return a list of the deployment descriptors that might appear in the type of Java EE application which the sniffer recognizes. For example, the WebSniffer implementation of this method returns WEB-INF/web.xml, WEB-INF/glassfish-web.xml, WEB-INF/payara-web.xml and WEB-INF/sun-web.xml.
- Returns:
- list of paths in the archive where deployment configuration archive entries might exist
-
getIncompatibleSnifferTypes
public String[] getIncompatibleSnifferTypes()
- Specified by:
getIncompatibleSnifferTypes
in interfaceSniffer
- Returns:
- the set of the sniffers that should not co-exist for the same module. For example, ejb and appclient sniffers should not be returned in the sniffer list for a certain module. This method will be used to validate and filter the retrieved sniffer lists for a certain module
-
-