Clover coverage report - Ant Coverage
Coverage timestamp: Tue Apr 8 2003 20:43:55 EST
file stats: LOC: 175   Methods: 7
NCLOC: 67   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
Ear.java 0% 0% 0% 0%
 1   
 /*
 2   
  * The Apache Software License, Version 1.1
 3   
  *
 4   
  * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
 5   
  * reserved.
 6   
  *
 7   
  * Redistribution and use in source and binary forms, with or without
 8   
  * modification, are permitted provided that the following conditions
 9   
  * are met:
 10   
  *
 11   
  * 1. Redistributions of source code must retain the above copyright
 12   
  *    notice, this list of conditions and the following disclaimer.
 13   
  *
 14   
  * 2. Redistributions in binary form must reproduce the above copyright
 15   
  *    notice, this list of conditions and the following disclaimer in
 16   
  *    the documentation and/or other materials provided with the
 17   
  *    distribution.
 18   
  *
 19   
  * 3. The end-user documentation included with the redistribution, if
 20   
  *    any, must include the following acknowlegement:
 21   
  *       "This product includes software developed by the
 22   
  *        Apache Software Foundation (http://www.apache.org/)."
 23   
  *    Alternately, this acknowlegement may appear in the software itself,
 24   
  *    if and wherever such third-party acknowlegements normally appear.
 25   
  *
 26   
  * 4. The names "Ant" and "Apache Software
 27   
  *    Foundation" must not be used to endorse or promote products derived
 28   
  *    from this software without prior written permission. For written
 29   
  *    permission, please contact apache@apache.org.
 30   
  *
 31   
  * 5. Products derived from this software may not be called "Apache"
 32   
  *    nor may "Apache" appear in their names without prior written
 33   
  *    permission of the Apache Group.
 34   
  *
 35   
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 36   
  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 37   
  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 38   
  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 39   
  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 40   
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 41   
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 42   
  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 43   
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 44   
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 45   
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 46   
  * SUCH DAMAGE.
 47   
  * ====================================================================
 48   
  *
 49   
  * This software consists of voluntary contributions made by many
 50   
  * individuals on behalf of the Apache Software Foundation.  For more
 51   
  * information on the Apache Software Foundation, please see
 52   
  * <http://www.apache.org/>.
 53   
  */
 54   
 package org.apache.tools.ant.taskdefs;
 55   
 
 56   
 import java.io.File;
 57   
 import java.io.IOException;
 58   
 import org.apache.tools.ant.BuildException;
 59   
 import org.apache.tools.ant.Project;
 60   
 import org.apache.tools.ant.types.ZipFileSet;
 61   
 import org.apache.tools.ant.util.FileUtils;
 62   
 import org.apache.tools.zip.ZipOutputStream;
 63   
 
 64   
 /**
 65   
  * Creates a EAR archive. Based on WAR task
 66   
  *
 67   
  * @author Stefan Bodewig
 68   
  * @author <a href="mailto:leslie.hughes@rubus.com">Les Hughes</a>
 69   
  *
 70   
  * @since Ant 1.4
 71   
  *
 72   
  * @ant.task category="packaging"
 73   
  */
 74   
 public class Ear extends Jar {
 75   
 
 76   
     private File deploymentDescriptor;
 77   
     private boolean descriptorAdded;
 78   
     private static final FileUtils fu = FileUtils.newFileUtils();
 79   
 
 80   
     /**
 81   
      * Create an Ear task.
 82   
      */
 83  0
     public Ear() {
 84  0
         super();
 85  0
         archiveType = "ear";
 86  0
         emptyBehavior = "create";
 87   
     }
 88   
 
 89   
     /**
 90   
      * @deprecated Use setDestFile(destfile) instead
 91   
      */
 92  0
     public void setEarfile(File earFile) {
 93  0
         setDestFile(earFile);
 94   
     }
 95   
 
 96   
     /**
 97   
      * File to incorporate as application.xml.
 98   
      */
 99  0
     public void setAppxml(File descr) {
 100  0
         deploymentDescriptor = descr;
 101  0
         if (!deploymentDescriptor.exists()) {
 102  0
             throw new BuildException("Deployment descriptor: " 
 103   
                                      + deploymentDescriptor 
 104   
                                      + " does not exist.");
 105   
         }
 106   
 
 107   
         // Create a ZipFileSet for this file, and pass it up.
 108  0
         ZipFileSet fs = new ZipFileSet();
 109  0
         fs.setFile(deploymentDescriptor);
 110  0
         fs.setFullpath("META-INF/application.xml");
 111  0
         super.addFileset(fs);
 112   
     }
 113   
 
 114   
 
 115   
     /**
 116   
      * Adds zipfileset.
 117   
      *
 118   
      * @param fs zipfileset to add
 119   
      */
 120  0
     public void addArchives(ZipFileSet fs) {
 121   
         // We just set the prefix for this fileset, and pass it up.
 122   
         // Do we need to do this? LH
 123  0
         fs.setPrefix("/");
 124  0
         super.addFileset(fs);
 125   
     }
 126   
 
 127   
 
 128  0
     protected void initZipOutputStream(ZipOutputStream zOut)
 129   
         throws IOException, BuildException {
 130   
         // If no webxml file is specified, it's an error.
 131  0
         if (deploymentDescriptor == null && !isInUpdateMode()) {
 132  0
             throw new BuildException("appxml attribute is required", getLocation());
 133   
         }
 134   
 
 135  0
         super.initZipOutputStream(zOut);
 136   
     }
 137   
 
 138   
     /**
 139   
      * Overriden from Zip class to deal with application.xml
 140   
      */
 141  0
     protected void zipFile(File file, ZipOutputStream zOut, String vPath, 
 142   
                            int mode)
 143   
         throws IOException {
 144   
         // If the file being added is META-INF/application.xml, we
 145   
         // warn if it's not the one specified in the "appxml"
 146   
         // attribute - or if it's being added twice, meaning the same
 147   
         // file is specified by the "appxml" attribute and in a
 148   
         // <fileset> element.
 149  0
         if (vPath.equalsIgnoreCase("META-INF/application.xml"))  {
 150  0
             if (deploymentDescriptor == null 
 151   
                 || !fu.fileNameEquals(deploymentDescriptor, file)
 152   
                 || descriptorAdded) {
 153  0
                 log("Warning: selected " + archiveType
 154   
                     + " files include a META-INF/application.xml which will"
 155   
                     + " be ignored (please use appxml attribute to "
 156   
                     + archiveType + " task)", Project.MSG_WARN);
 157   
             } else {
 158  0
                 super.zipFile(file, zOut, vPath, mode);
 159  0
                 descriptorAdded = true;
 160   
             }
 161   
         } else {
 162  0
             super.zipFile(file, zOut, vPath, mode);
 163   
         }
 164   
     }
 165   
 
 166   
     /**
 167   
      * Make sure we don't think we already have a application.xml next
 168   
      * time this task gets executed.
 169   
      */
 170  0
     protected void cleanUp() {
 171  0
         descriptorAdded = false;
 172  0
         super.cleanUp();
 173   
     }
 174   
 }
 175