package org.jboss.seam.deployment;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Pattern;
/**
* The {@link ComponentsXmlDeploymentHandler} components.xml and .component.xml files
*
* @author Pete Muir
*
*/
public class ComponentsXmlDeploymentHandler extends AbstractDeploymentHandler
{
private Pattern INF_PATTERN = Pattern.compile("(WEB-INF/components.xml$)|(META-INF/components.xml$)");
private static DeploymentMetadata COMPONENTSXML_SUFFIX_FILE_METADATA = new DeploymentMetadata()
{
public String getFileNameSuffix()
{
return "components.xml";
}
};
/**
* Name under which this {@link DeploymentHandler} is registered
*/
public static final String NAME = "org.jboss.seam.deployment.ComponentsXmlDeploymentHandler";
public String getName()
{
return NAME;
}
public DeploymentMetadata getMetadata()
{
return COMPONENTSXML_SUFFIX_FILE_METADATA;
}
@Override
public void postProcess(ClassLoader classLoader)
{
Set<FileDescriptor> resources = new HashSet<FileDescriptor>();
for (FileDescriptor fileDescriptor : getResources())
{
// we want to skip over known meta-directories since Seam will auto-load these without a scan
String path = fileDescriptor.getName();
if (!INF_PATTERN.matcher(path).matches())
{
resources.add(fileDescriptor);
}
}
setResources(resources);
}
}