package org.jfox.ejb.meta;
import java.io.InputStream;
import java.net.URL;
import java.util.jar.JarFile;
import java.util.zip.ZipEntry;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class EjbJarDocumentBuilder {
private static DocumentBuilder db = null;
static {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
dbf.setValidating(false);
db = dbf.newDocumentBuilder();
db.setEntityResolver(new EJBEntityResolver());
}
catch(ParserConfigurationException e){
throw new RuntimeException(e);
}
}
public static Element getEjbJarDocument(URL url) throws EJBDescriptionException {
try {
JarFile jarFile = new JarFile(url.getFile());
ZipEntry ejbJarEntry = jarFile.getEntry("META-INF/ejb-jar.xml");
if(ejbJarEntry == null) return null;
InputStream is = jarFile.getInputStream(ejbJarEntry);
Document doc = db.parse(is);
return doc.getDocumentElement();
}
catch(Exception e){
e.printStackTrace();
throw new EJBDescriptionException(e);
}
}
public static void main(String[] args) {
System.out.println(EjbJarDocumentBuilder.class.getPackage().getName());
}
}