dion 02/05/14 17:03:01
Modified: src/java/org/apache/maven/j2ee WarValidator.java
Log:
WIP - Moving towards validating servlets
Revision Changes Path
1.5 +57 -0
jakarta-turbine-maven/src/java/org/apache/maven/j2ee/WarValidator.java
Index: WarValidator.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/j2ee/WarValidator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- WarValidator.java 12 May 2002 15:26:24 -0000 1.4
+++ WarValidator.java 15 May 2002 00:03:01 -0000 1.5
@@ -55,12 +55,21 @@
*/
import java.io.File;
+import java.io.InputStream;
import java.io.IOException;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
+import java.util.zip.ZipException;
+import java.util.Iterator;
+import java.util.List;
import org.apache.maven.executor.ProjectExecutor;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+
/**
* A task to validate a war file. The following is checked:
* <ol>
@@ -137,6 +146,10 @@
getBroadcaster().fireWarningEvent(new ValidationEvent(this,
jarFile, "WEB-INF/web.xml entry not found"));
}
+ else
+ {
+ validateWebXml(jarFile);
+ }
}
catch (IOException ioe)
@@ -148,6 +161,50 @@
{
getBroadcaster().fireEndedEvent( new ValidationEvent(this,
getWarFileName(), "ended"));
+ }
+ }
+
+ /** Validate the web.xml entry in the provided jar file.
+ * @param jarFile - a jar file with a known WEB-INF/web.xml
+ */
+ private void validateWebXml(JarFile jarFile)
+ {
+ try
+ {
+ JarEntry webXmlEntry = jarFile.getJarEntry("WEB-INF/web.xml");
+ InputStream webXmlStream = jarFile.getInputStream(webXmlEntry);
+ SAXReader xmlReader = new SAXReader(false);
+ Document webXmlDoc = xmlReader.read(webXmlStream);
+ List servletNodes = webXmlDoc.selectNodes("//servlet");
+ Node node = null;
+ for (Iterator nodes = servletNodes.iterator(); nodes.hasNext();)
+ {
+ node = (Node) nodes.next();
+ String servletName =
node.selectSingleNode("./servlet-name").getText();
+ String servletClass =
node.selectSingleNode("./servlet-class").getText();
+ System.out.println("Servlet Name: " + servletName +
+ ", Servlet Class: " + servletClass);
+ // check class (jarFile, servletClass)
+ }
+ }
+ catch (DocumentException de)
+ {
+ de.printStackTrace();
+ getBroadcaster().fireErrorEvent(new ValidationEvent(this,
+ getWarFileName(), "Error producing XML from WEB-INF/web.xml"));
+
+ }
+ catch (ZipException ze)
+ {
+ ze.printStackTrace();
+ getBroadcaster().fireErrorEvent(new ValidationEvent(this,
+ getWarFileName(), "Error retrieving WEB-INF/web.xml from the jar"));
+ }
+ catch (IOException ioe)
+ {
+ ioe.printStackTrace();
+ getBroadcaster().fireErrorEvent(new ValidationEvent(this,
+ getWarFileName(), "Error reading WEB-INF/web.xml"));
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>