Clover coverage report - Ant Coverage
Coverage timestamp: Tue Apr 8 2003 20:43:55 EST
file stats: LOC: 170   Methods: 2
NCLOC: 74   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
PlainMailer.java 0% 0% 0% 0%
 1   
 /*
 2   
  * The Apache Software License, Version 1.1
 3   
  *
 4   
  * Copyright (c) 2002 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.email;
 55   
 
 56   
 import java.io.BufferedInputStream;
 57   
 import java.io.File;
 58   
 import java.io.FileInputStream;
 59   
 import java.io.IOException;
 60   
 import java.io.PrintStream;
 61   
 import java.util.Enumeration;
 62   
 import org.apache.tools.ant.BuildException;
 63   
 import org.apache.tools.mail.MailMessage;
 64   
 
 65   
 /**
 66   
  * Class responsible for sending email through raw protocol methods.
 67   
  *
 68   
  * @author roxspring@imapmail.org Rob Oxspring
 69   
  * @since Ant 1.5
 70   
  */
 71   
 class PlainMailer extends Mailer {
 72   
     /**
 73   
      * Sends the email using the apache MailMessage class.
 74   
      *
 75   
      * @see org.apache.tools.mail.MailMessage
 76   
      */
 77  0
     public void send() {
 78  0
         try {
 79  0
             MailMessage mailMessage = new MailMessage(host,port);
 80   
 
 81  0
             mailMessage.from(from.toString());
 82   
 
 83  0
             Enumeration e;
 84   
 
 85  0
             e = toList.elements();
 86  0
             while (e.hasMoreElements()) {
 87  0
                 mailMessage.to(e.nextElement().toString());
 88   
             }
 89   
 
 90  0
             e = ccList.elements();
 91  0
             while (e.hasMoreElements()) {
 92  0
                 mailMessage.cc(e.nextElement().toString());
 93   
             }
 94   
 
 95  0
             e = bccList.elements();
 96  0
             while (e.hasMoreElements()) {
 97  0
                 mailMessage.bcc(e.nextElement().toString());
 98   
             }
 99   
 
 100  0
             if (subject != null) {
 101  0
                 mailMessage.setSubject(subject);
 102   
             }
 103   
 
 104  0
             mailMessage.setHeader("Date", getDate());
 105  0
             mailMessage.setHeader("Content-Type", message.getMimeType());
 106   
 
 107  0
             PrintStream out = mailMessage.getPrintStream();
 108   
 
 109  0
             message.print(out);
 110   
 
 111  0
             e = files.elements();
 112  0
             while (e.hasMoreElements()) {
 113  0
                 File file = (File) e.nextElement();
 114   
 
 115  0
                 attach(file, out);
 116   
             }
 117   
 
 118  0
             mailMessage.sendAndClose();
 119   
         } catch (IOException ioe) {
 120  0
             throw new BuildException("IO error sending mail", ioe);
 121   
         }
 122   
 
 123   
     }
 124   
 
 125   
 
 126   
     /**
 127   
      * Attaches a file to this email
 128   
      *
 129   
      * @param file The file to attache
 130   
      * @param out The message stream to add to
 131   
      * @throws IOException if errors occur
 132   
      */
 133  0
     protected void attach(File file, PrintStream out)
 134   
          throws IOException {
 135  0
         if (!file.exists() || !file.canRead()) {
 136  0
             throw new BuildException("File \"" + file.getName()
 137   
                  + "\" does not exist or is not "
 138   
                  + "readable.");
 139   
         }
 140   
 
 141  0
         if (includeFileNames) {
 142  0
             out.println();
 143   
 
 144  0
             String filename = file.getName();
 145  0
             int filenamelength = filename.length();
 146   
 
 147  0
             out.println(filename);
 148  0
             for (int star = 0; star < filenamelength; star++) {
 149  0
                 out.print('=');
 150   
             }
 151  0
             out.println();
 152   
         }
 153   
 
 154  0
         int length;
 155  0
         byte[] buf = new byte[1024];
 156  0
         FileInputStream finstr = new FileInputStream(file);
 157   
 
 158  0
         try {
 159  0
             BufferedInputStream in = new BufferedInputStream(finstr, buf.length);
 160   
 
 161  0
             while ((length = in.read(buf)) != -1) {
 162  0
                 out.write(buf, 0, length);
 163   
             }
 164   
         } finally {
 165  0
             finstr.close();
 166   
         }
 167   
     }
 168   
 }
 169   
 
 170