{
VirtualFile virtualFile = VFS.getChild(jarURL);
VirtualFile sci = virtualFile.getChild("META-INF/services/javax.servlet.ServletContainerInitializer");
if (sci.exists())
{
ServletContainerInitializer service = loadSci(unit, sci, jarURL.getPath(), false);
if (service != null)
{
scis.add(service);
}
}
}
catch (URISyntaxException e)
{
DeploymentException.rethrowAsDeploymentException("Deployment error processing SCI for JAR: " + jarURL, e);
}
}
}
// Find local ServletContainerInitializer services
List<String> order =
(List<String>) unit.getAttachment(MergedJBossWebMetaDataDeployer.WEB_ORDER_ATTACHMENT_NAME);
Map<String, VirtualFile> localScis = (Map<String, VirtualFile>)
unit.getAttachment(MergedJBossWebMetaDataDeployer.WEB_SCIS_ATTACHMENT_NAME);
if (order != null && localScis != null)
{
for (String jar : order)
{
VirtualFile sci = localScis.get(jar);
if (sci != null)
{
ServletContainerInitializer service = loadSci(unit, sci, jar, true);
if (service != null)
{
scis.add(service);
}
}
}
}
unit.addAttachment(SCI_ATTACHMENT_NAME, scis);
// Process HandlesTypes for ServletContainerInitializer
Map<Class<?>, Set<ServletContainerInitializer>> typesMap =
new HashMap<Class<?>, Set<ServletContainerInitializer>>();
Map<ServletContainerInitializer, Set<Class<?>>> handlesTypes =
new HashMap<ServletContainerInitializer, Set<Class<?>>>();
for (ServletContainerInitializer service : scis)
{
if (service.getClass().isAnnotationPresent(HandlesTypes.class))
{
HandlesTypes handlesTypesAnnotation = service.getClass().getAnnotation(HandlesTypes.class);
Class<?>[] typesArray = handlesTypesAnnotation.value();
if (typesArray != null)
{
for (Class<?> type : typesArray)
{