You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by gr...@apache.org on 2008/08/25 17:37:17 UTC

svn commit: r688760 - /jakarta/cactus/trunk/integration/ant/src/main/java/org/apache/cactus/integration/ant/CactifyWarTask.java

Author: grimsell
Date: Mon Aug 25 08:37:17 2008
New Revision: 688760

URL: http://svn.apache.org/viewvc?rev=688760&view=rev
Log:
CACTUS-258
Improve performance of CactifyWarTask

Setter to avoid adding cactus classes which can be time consuming.

Modified:
    jakarta/cactus/trunk/integration/ant/src/main/java/org/apache/cactus/integration/ant/CactifyWarTask.java

Modified: jakarta/cactus/trunk/integration/ant/src/main/java/org/apache/cactus/integration/ant/CactifyWarTask.java
URL: http://svn.apache.org/viewvc/jakarta/cactus/trunk/integration/ant/src/main/java/org/apache/cactus/integration/ant/CactifyWarTask.java?rev=688760&r1=688759&r2=688760&view=diff
==============================================================================
--- jakarta/cactus/trunk/integration/ant/src/main/java/org/apache/cactus/integration/ant/CactifyWarTask.java (original)
+++ jakarta/cactus/trunk/integration/ant/src/main/java/org/apache/cactus/integration/ant/CactifyWarTask.java Mon Aug 25 08:37:17 2008
@@ -1,21 +1,21 @@
-/* 
+/*
  * ========================================================================
- * 
+ *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- * 
+ *
  * ========================================================================
  */
 package org.apache.cactus.integration.ant;
@@ -55,30 +55,30 @@
 /**
  * An Ant task that injects elements necessary to run Cactus tests into an
  * existing WAR file.
- * 
+ *
  * @version $Id: CactifyWarTask.java 394252 2006-04-15 04:20:17Z felipeal $
  */
 public class CactifyWarTask extends War
 {
 
     // Constants ---------------------------------------------------------------
-    
+
     /**
      * Context of the cactus web application.
      */
     private String context;
-    
+
     /**
      * Name of the generated web app file.
      */
     private String FILE_NAME = "cactus.war";
-    
+
     /**
      * Get some non-crypto-grade randomness from various places.
      */
     private static Random rand = new Random(System.currentTimeMillis()
             + Runtime.getRuntime().freeMemory());
-    
+
     /**
      * The name of the Cactus filter redirector class.
      */
@@ -108,7 +108,7 @@
      */
     private static final String DEFAULT_SERVLET_REDIRECTOR_MAPPING =
         "/ServletRedirector";
-    
+
     // Inner Classes -----------------------------------------------------------
 
     // Instance Variables ------------------------------------------------------
@@ -119,7 +119,7 @@
     private File srcFile;
 
     /**
-     * Location of the descriptor of which the content should be merged into 
+     * Location of the descriptor of which the content should be merged into
      * the descriptor of the cactified archive.
      */
     private File mergeWebXml;
@@ -138,9 +138,9 @@
      * The web-app version to use when creating a WAR from scratch.
      */
     private String version = null;
-    
+
     /**
-     * List of ejb-refs to add to the deployment descriptor 
+     * List of ejb-refs to add to the deployment descriptor
      * of the cactified war.
      */
     private List ejbRefs = new ArrayList();
@@ -149,9 +149,14 @@
      */
     private ResourceUtils utils = new ResourceUtils();
 
+    /**
+     * Determines if cactus jars should be included.
+     */
+    private boolean includeCactusJars = true;
+
     // Public Methods ----------------------------------------------------------
 
-    
+
     /**
      * {@inheritDoc}
      * @see org.apache.tools.ant.Task#execute()
@@ -174,12 +179,12 @@
             addZipfileset(currentFiles);
 
             // Parse the original deployment descriptor
-            try 
+            try
             {
                 webXml = getOriginalWebXml();
 
             }
-            catch (JDOMException e) 
+            catch (JDOMException e)
             {
                 throw new BuildException("Unable to get the original exception", e);
             }
@@ -199,27 +204,30 @@
             else if (this.version.equals("2.3"))
             {
                 webXmlVersion = WebXmlVersion.V2_3;
-            } 
-            else 
+            }
+            else
             {
                 webXmlVersion = WebXmlVersion.V2_4;
             }
-            
+
             webXml = WebXmlIo.newWebXml(webXmlVersion);
         }
-        
+
         File tmpWebXml = null;
-        try 
+        try
         {
             tmpWebXml = cactifyWebXml(webXml);
-        } 
-        catch (JDOMException e) 
+        }
+        catch (JDOMException e)
         {
             throw new BuildException("Unable to cactify your application.", e);
         }
         setWebxml(tmpWebXml);
 
-        addCactusJars();
+        if(includeCactusJars)
+        {
+            addCactusJars();
+        }
 
         try
         {
@@ -236,7 +244,7 @@
 
     /**
      * Adds a Cactus filter test redirector.
-     * 
+     *
      * @param theFilterRedirector The redirector to add
      */
     public final void addFilterRedirector(FilterRedirector theFilterRedirector)
@@ -246,7 +254,7 @@
 
     /**
      * Adds a Cactus JSP test redirector.
-     * 
+     *
      * @param theJspRedirector The redirector to add
      */
     public final void addJspRedirector(JspRedirector theJspRedirector)
@@ -256,7 +264,7 @@
 
     /**
      * Adds a Cactus servlet test redirector.
-     * 
+     *
      * @param theServletRedirector The redirector to add
      */
     public final void addServletRedirector(
@@ -282,17 +290,17 @@
 
     /**
      * Adds a configured EjbRef instance. Called by Ant.
-     * 
+     *
      * @param theEjbRef the EjbRef to add
      */
     public final void addConfiguredEjbref(EjbRef theEjbRef)
     {
         ejbRefs.add(theEjbRef);
     }
-    
+
     /**
      * The descriptor to merge into the original file.
-     * 
+     *
      * @param theMergeFile the <code>web.xml</code> to merge
      */
     public final void setMergeWebXml(File theMergeFile)
@@ -302,8 +310,8 @@
 
     /**
      * Sets the web application archive that should be cactified.
-     * 
-     * @param theSrcFile The WAR file to set  
+     *
+     * @param theSrcFile The WAR file to set
      */
     public final void setSrcFile(File theSrcFile)
     {
@@ -312,7 +320,7 @@
 
     /**
      * Sets the web-app version to use when creating a WAR file from scratch.
-     * 
+     *
      * @param theVersion The version
      */
     public final void setVersion(Version theVersion)
@@ -320,6 +328,19 @@
         this.version = theVersion.getValue();
     }
 
+    /**
+     * Sets whether the cactus jars should be included or not.
+     * If not set, the jars are included by default.
+     *
+     * @param includeCactusJars <code>true</code> if cactus jars should be included,
+     * <code>false</code> otherwise.
+     */
+    public final void setIncludeCactusJars(boolean includeCactusJars)
+    {
+        this.includeCactusJars = includeCactusJars;
+    }
+
+
     // Private Methods ---------------------------------------------------------
 
     /**
@@ -340,7 +361,7 @@
     /**
      * Adds the JAR file containing the specified resource to the WEB-INF/lib
      * folder of a web-application archive.
-     * 
+     *
      * @param theClassName The name of the class that the JAR contains
      * @param theDescription A description of the JAR that should be displayed
      *        to the user in log messages
@@ -413,8 +434,8 @@
 
     /**
      * Adds the definitions corresponding to the nested redirector elements to
-     * the provided deployment descriptor. 
-     * 
+     * the provided deployment descriptor.
+     *
      * @param theWebXml The deployment descriptor
      */
     private void addRedirectorDefinitions(WebXml theWebXml)
@@ -422,11 +443,11 @@
         boolean filterRedirectorDefined = false;
         boolean jspRedirectorDefined = false;
         boolean servletRedirectorDefined = false;
-        
+
         // add the user defined redirectors
         for (Iterator i = this.redirectors.iterator(); i.hasNext();)
         {
-        
+
             Redirector redirector = (Redirector) i.next();
             if (redirector instanceof FilterRedirector)
             {
@@ -462,9 +483,9 @@
     }
 
     /**
-     * Enhances the provided web deployment descriptor with the definitions 
+     * Enhances the provided web deployment descriptor with the definitions
      * required for testing with Cactus.
-     * 
+     *
      * @param theWebXml The original deployment descriptor
      * @return A temporary file containing the cactified descriptor
      * @throws JDOMException in case a JDOM exception is thrown.
@@ -474,9 +495,9 @@
         addRedirectorDefinitions(theWebXml);
         addJspRedirector();
         addEjbRefs(theWebXml);
-        
+
         // If the user has specified a deployment descriptor to merge into the
-        // cactified descriptor, perform the merge 
+        // cactified descriptor, perform the merge
         if (this.mergeWebXml != null)
         {
             try
@@ -485,7 +506,7 @@
                     this.mergeWebXml, this.xmlCatalog);
                 WebXmlMerger merger = new WebXmlMerger(theWebXml);
                 merger.setLogger(new AntLogger(this));
-               
+
                 merger.merge(parsedMergeWebXml);
             }
             catch (IOException e)
@@ -494,7 +515,7 @@
                     "Could not merge deployment descriptors", e);
             }
         }
-        
+
         // Serialize the cactified deployment descriptor into a temporary file,
         // so that it can get picked up by the War task
         //FileUtils fileUtils = FileUtils.newFileUtils();
@@ -508,10 +529,10 @@
             ZipFileSet fileSet = new ZipFileSet();
             fileSet.setDir(tmpDir);
             tmpDir.mkdir();
-            File[] files = WebXmlIo.writeAll(theWebXml, 
+            File[] files = WebXmlIo.writeAll(theWebXml,
                 tmpDir.getAbsolutePath());
-        
-            
+
+
             for (int i = 0; i < files.length; i++)
             {
                 File f = files[i];
@@ -538,9 +559,9 @@
     /**
      * Extracts and parses the original web deployment descriptor from the
      * web-app.
-     * 
+     *
      * @return The parsed descriptor or null if not found
-     * @throws BuildException If the descriptor could not be 
+     * @throws BuildException If the descriptor could not be
      *         parsed
      * @throws JDOMException in case is JDOM exception is thrown.
      */
@@ -562,7 +583,7 @@
 
     /**
      * Add ejb references to a web.xml.
-     * 
+     *
      * @param theWebXml the web.xml to modify
      */
     private void addEjbRefs(WebXml theWebXml)
@@ -574,7 +595,7 @@
             WebXmlUtils.addEjbRef(theWebXml, ref);
         }
     }
-    
+
     /**
      * A method to create the temporary files.
      * @param thePrefix the prefix of the filename.
@@ -583,8 +604,8 @@
      * @param isDeleteOnExit should we delete the directories on exit?
      * @return the temporary file
      */
-    public File createTempFile(String thePrefix, String theSuffix, 
-                                   File theParentDir, boolean isDeleteOnExit) 
+    public File createTempFile(String thePrefix, String theSuffix,
+                                   File theParentDir, boolean isDeleteOnExit)
     {
     File result = null;
     String parent = (theParentDir == null)
@@ -592,26 +613,26 @@
             : theParentDir.getPath();
 
         DecimalFormat fmt = new DecimalFormat("#####");
-        synchronized (rand) 
+        synchronized (rand)
         {
-            do 
+            do
             {
                 result = new File(parent,
                    thePrefix + fmt.format(Math.abs(rand.nextInt()))
                    + theSuffix);
-            } 
+            }
             while (result.exists());
         }
-        if (isDeleteOnExit) 
+        if (isDeleteOnExit)
         {
             result.deleteOnExit();
         }
         return result;
     }
-    
+
     /**
      * Gets the file name.
-     * 
+     *
      * @return the name of the web app file
      */
     public String getFileName()
@@ -621,7 +642,7 @@
 
     /**
      * Returns the context.
-     * 
+     *
      * @return <code>java.lang.String</code>
      */
     public String getContext() {
@@ -630,12 +651,12 @@
 
     /**
      * Sets the context.
-     * 
+     *
      * @param context
      */
     public void setContext(String context) {
         this.context = context;
     }
-    
-    
+
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org