package org.jboss.seam.bpm; import java.io.IOException; import java.io.InputStream; import java.util.HashSet; import java.util.Set; import org.dom4j.DocumentException; import org.dom4j.Element; import org.jboss.seam.deployment.AbstractDeploymentHandler; import org.jboss.seam.deployment.DeploymentMetadata; import org.jboss.seam.deployment.FileDescriptor; import org.jboss.seam.log.LogProvider; import org.jboss.seam.log.Logging; import org.jboss.seam.util.Resources; import org.jboss.seam.util.XML; public class PageflowDeploymentHandler extends AbstractDeploymentHandler { private static DeploymentMetadata NAMESPACE_METADATA = new DeploymentMetadata() { public String getFileNameSuffix() { return ".jpdl.xml"; } }; private static LogProvider log = Logging.getLogProvider(PageflowDeploymentHandler.class); public static final String NAME = "org.jboss.seam.bpm.PageflowDeploymentHandler"; public String getName() { return NAME; } @Override public void postProcess(ClassLoader classLoader) { Set<FileDescriptor> files = new HashSet<FileDescriptor>(); for (FileDescriptor fileDescriptor : getResources()) { try { InputStream inputStream = fileDescriptor.getUrl().openStream(); try { Element root = XML.getRootElementSafely(inputStream); if ("pageflow-definition".equals(root.getName())) { files.add(fileDescriptor); } } catch (DocumentException e) { log.debug("Unable to parse " + fileDescriptor.getName(), e); } finally { Resources.closeStream(inputStream); } } catch (IOException e) { log.trace("Error loading " + fileDescriptor.getName()); } } setResources(files); } public DeploymentMetadata getMetadata() { return NAMESPACE_METADATA; } }