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]>

Reply via email to