commits@javamail.java.net

[javamail~mercurial:322] Be sure to close SharedInputStream when done with it. Kenai issue #3566.

From: <shannon_at_kenai.com>
Date: Sat, 20 Nov 2010 08:42:51 +0000

Project: javamail
Repository: mercurial
Revision: 322
Author: shannon
Date: 2010-11-20 06:07:10 UTC
Link:

Log Message:
------------
Disambiguate Part to allow compiling with Java EE 6 / Servlet 3.0.
Fix javadoc error.
It's not "Java 2" anymore...
Make ant build work again. Kenai issue #3444.
Be sure to close SharedInputStream when done with it. Kenai issue #3566.


Revisions:
----------
318
319
320
321
322


Modified Paths:
---------------
servlet/src/main/java/JavaMailServlet.java
mail/src/main/java/com/sun/mail/util/TraceInputStream.java
mail/src/main/java/com/sun/mail/util/logging/package.html
build.properties
build.xml
doc/release/CHANGES.txt
mail/src/main/java/javax/mail/internet/MimeMultipart.java


Diffs:
------
diff -r bde75bc9eedb -r 1638b477bf2c servlet/src/main/java/JavaMailServlet.java
--- a/servlet/src/main/java/JavaMailServlet.java Sun Nov 14 22:36:36 2010 -0800
+++ b/servlet/src/main/java/JavaMailServlet.java Fri Nov 19 20:32:49 2010 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 1999-2010 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -36,6 +36,7 @@
 import javax.servlet.*;
 import javax.servlet.http.*;
 import javax.mail.*;
+import javax.mail.Part;
 import javax.mail.internet.*;
 import javax.activation.*;
 


diff -r 1638b477bf2c -r 942b5122dccd mail/src/main/java/com/sun/mail/util/TraceInputStream.java
--- a/mail/src/main/java/com/sun/mail/util/TraceInputStream.java Fri Nov 19 20:32:49 2010 -0800
+++ b/mail/src/main/java/com/sun/mail/util/TraceInputStream.java Fri Nov 19 21:03:20 2010 -0800
@@ -61,7 +61,7 @@
      * input stream.
      *
      * @param in the underlying input stream.
- * @param out the trace stream
+ * @param traceOut the trace stream
      */
     public TraceInputStream(InputStream in, OutputStream traceOut) {
         super(in);


diff -r 942b5122dccd -r 17ce245a3854 mail/src/main/java/com/sun/mail/util/logging/package.html
--- a/mail/src/main/java/com/sun/mail/util/logging/package.html Fri Nov 19 21:03:20 2010 -0800
+++ b/mail/src/main/java/com/sun/mail/util/logging/package.html Fri Nov 19 21:38:21 2010 -0800
@@ -49,7 +49,7 @@
   </head>
   <body>
       Contains JavaMail<sup><font size="-2">TM</font></sup> extensions for
- Java<SUP><FONT SIZE="-2">TM</FONT></SUP> 2 platform's core logging
+ the Java<SUP><FONT SIZE="-2">TM</FONT></SUP> platform's core logging
       facilities. This package contains classes used to export log messages
       as a formatted email message. Classes in this package typically use
       LogManager properties to set default values; see the specific


diff -r 17ce245a3854 -r 8c3ce0c9bcd0 build.properties
--- a/build.properties Fri Nov 19 21:38:21 2010 -0800
+++ b/build.properties Fri Nov 19 22:03:50 2010 -0800
@@ -79,21 +79,24 @@
 src.logging.dir=logging/src/main/java
 component.classes.logging.dir=logging/target/classes
 # legal
-resources.legal.dir=legal/src/main/resources
+resources.legal.dir=mail/src/main/resources
 #
 maven.netbeans.exec.build=target/classes
-# XXX - following only works within Sun
+# XXX - following only works within Oracle
 spec.dir=/net/anybodys.sfbay/export6/javamail/spec
 
 # needed to build everything on JDK 1.5
 activation.jar=activation.jar
 # needed to build servlet and webapp demo programs
 javaee.jar=javaee.jar
+# external URL references for javadocs
+javase.url=http://java.sun.com/j2se/1.4.2/docs/api/
+jaf.url=http://java.sun.com/javase/technologies/desktop/javabeans/glasgow/javadocs/
 
 ### Additonal Component Properties for standalone release ###
 release.dir=target/release
 release.specversion=1.4
-release.version=1.4.2ea
+release.version=1.4.4ea
 release.mail.jar=${release.dir}/mail.jar
 release.mailapi.jar=${release.dir}/lib/mailapi.jar
 release.imap.jar=${release.dir}/lib/imap.jar

diff -r 17ce245a3854 -r 8c3ce0c9bcd0 build.xml
--- a/build.xml Fri Nov 19 21:38:21 2010 -0800
+++ b/build.xml Fri Nov 19 22:03:50 2010 -0800
@@ -82,11 +82,10 @@
     <target name="compile" depends="init"
             description="Compile JavaMail sources">
 
- <!-- XXX - following filtering doesn't currently work -->
         <copy file="${resources.dir}/javax/mail/Version.java"
                 toFile="${src.dir}/javax/mail/Version.java">
- <filterset>
- <filter token="VERSION" value="${release.version}"/>
+ <filterset begintoken="$${" endtoken="}">
+ <filter token="mail.version" value="${release.version}"/>
             </filterset>
         </copy>
         <javac srcdir="${src.dir}"
@@ -429,7 +428,6 @@
         </jar>
     </target>
 
-
     <!-- javadocs -->
     <target name="docs" depends="init, jar, jar">
         <copy todir="${release.dir}">
@@ -441,47 +439,75 @@
             <fileset dir="${spec.dir}"
                     includes="JavaMail-1.4.pdf,Providers.pdf" />
         </copy>
+ <!--
+ To allow us to generate javadocs that only include some
+ classes in certain packages, we need to copy the sources
+ to another location and run javadoc against that subset
+ of the sources.
+ -->
+ <copy todir="${release.dir}/javadoc">
+ <fileset dir="${src.dir}">
+ <include name="**/*.html"/>
+ <include name="javax/mail/**"/>
+ </fileset>
+ <fileset dir="${src.dir}"
+ includes="
+ com/sun/mail/imap/IMAPFolder.java,
+ com/sun/mail/imap/IMAPMessage.java,
+ com/sun/mail/imap/IMAPStore.java,
+ com/sun/mail/imap/IMAPSSLStore.java
+ com/sun/mail/imap/ACL.java,
+ com/sun/mail/imap/Rights.java,
+ com/sun/mail/imap/Quota.java,
+ com/sun/mail/imap/SortTerm.java,
+ com/sun/mail/pop3/POP3Store.java,
+ com/sun/mail/pop3/POP3SSLStore.java,
+ com/sun/mail/pop3/POP3Folder.java,
+ com/sun/mail/pop3/POP3Message.java,
+ com/sun/mail/smtp/SMTPMessage.java,
+ com/sun/mail/smtp/SMTPAddressFailedException.java,
+ com/sun/mail/smtp/SMTPAddressSucceededException.java,
+ com/sun/mail/smtp/SMTPSendFailedException.java,
+ com/sun/mail/smtp/SMTPSenderFailedException.java,
+ com/sun/mail/smtp/SMTPTransport.java,
+ com/sun/mail/smtp/SMTPSSLTransport.java,
+ com/sun/mail/util/MailSSLSocketFactory.java,
+ com/sun/mail/util/logging/MailHandler.java
+ "/>
+ <fileset dir="${src.dsn.dir}"
+ includes="
+ com/sun/mail/dsn/package.html,
+ com/sun/mail/dsn/DeliveryStatus.java,
+ com/sun/mail/dsn/DispositionNotification.java,
+ com/sun/mail/dsn/MessageHeaders.java,
+ com/sun/mail/dsn/MultipartReport.java,
+ com/sun/mail/dsn/Report.java
+ "/>
+ </copy>
         <mkdir dir="${release.javadocs.dir}"/>
- <javadoc packagenames="javax.mail, javax.mail, javax.mail.internet,
+ <javadoc packagenames="javax.mail, javax.mail.internet,
                                javax.mail.search, javax.mail.event,
                                javax.mail.util,
                                com.sun.mail.imap,
                                com.sun.mail.pop3,
                                com.sun.mail.smtp,
+ com.sun.mail.util, com.sun.mail.util.logging,
                                com.sun.mail.dsn"
             destdir="${release.javadocs.dir}"
+ sourcepath="${release.dir}/javadoc"
             classpath="${activation.jar}:${release.mail.jar}:${release.dsn.jar}"
             author="false"
             version="false"
             use="true"
- overview="${src.dir}/overview.html"
+ overview="${release.dir}/javadoc/overview.html"
             windowtitle="JavaMail API documentation"
             doctitle="JavaMail API documentation">
             <group title="JavaMail API Packages" packages="javax.*"/>
             <group title="Sun-specific Packages" packages="com.sun.*"/>
- <fileset dir="${src.dir}">
- <include name="javax/mail/**/*.java"/>
- <include name="com/sun/mail/imap/IMAPMessage.java" />
- <include name="com/sun/mail/imap/IMAPFolder.java" />
- <include name="com/sun/mail/imap/IMAPStore.java" />
- <include name="com/sun/mail/imap/IMAPSSLStore.java" />
- <include name="com/sun/mail/imap/ACL.java" />
- <include name="com/sun/mail/imap/Rights.java" />
- <include name="com/sun/mail/imap/Quota.java" />
- <include name="com/sun/mail/pop3/POP3Store.java" />
- <include name="com/sun/mail/pop3/POP3SSLStore.java" />
- <include name="com/sun/mail/pop3/POP3Folder.java" />
- <include name="com/sun/mail/pop3/POP3Message.java" />
- <include name="com/sun/mail/smtp/SMTPMessage.java" />
- <include name="com/sun/mail/smtp/SMTPAddressFailedException.java" />
- <include name="com/sun/mail/smtp/SMTPAddressSucceededException.java" />
- <include name="com/sun/mail/smtp/SMTPSendFailedException.java" />
- <include name="com/sun/mail/smtp/SMTPTransport.java" />
- <include name="com/sun/mail/smtp/SMTPSSLTransport.java" />
- <include name="com/sun/mail/dsn/DeliveryStatus.java" />
- <include name="com/sun/mail/dsn/MessageHeaders.java" />
- <include name="com/sun/mail/dsn/MultipartReport.java" />
- </fileset>
+ <!-- following can really slow down javadoc generation
+ <link href="${javase.url}"/>
+ <link href="${jaf.url}"/>
+ -->
         </javadoc>
     </target>
 


diff -r 8c3ce0c9bcd0 -r 75aae993e34c doc/release/CHANGES.txt
--- a/doc/release/CHANGES.txt Fri Nov 19 22:03:50 2010 -0800
+++ b/doc/release/CHANGES.txt Fri Nov 19 22:07:10 2010 -0800
@@ -27,6 +27,7 @@
 G 11069 update the mail.jar manifest to include DynamicImport-Package
 K 3442 make sure socket is closed if SMTP connect fails
 K 3539 Multiparts do not parse correctly in presence of legacy Mac line endings
+K 3566 InputStreams are not closed in MimeMultipart
 <no id> add mail.mime.windowsfilenames System property to handle IE6 breakage
 <no id> properly disable TOP if POP3 CAPA response doesn't include it
 <no id> add mail.pop3.disablecapa property to disable use of the CAPA command

diff -r 8c3ce0c9bcd0 -r 75aae993e34c mail/src/main/java/javax/mail/internet/MimeMultipart.java
--- a/mail/src/main/java/javax/mail/internet/MimeMultipart.java Fri Nov 19 22:03:50 2010 -0800
+++ b/mail/src/main/java/javax/mail/internet/MimeMultipart.java Fri Nov 19 22:07:10 2010 -0800
@@ -742,7 +742,7 @@
                  */
                 MimeBodyPart part;
                 if (sin != null)
- part = createMimeBodyPart(sin.newStream(start, end));
+ part = createMimeBodyPartIs(sin.newStream(start, end));
                 else
                     part = createMimeBodyPart(headers, buf.toByteArray());
                 super.addBodyPart(part);
@@ -1088,7 +1088,7 @@
                  */
                 MimeBodyPart part;
                 if (sin != null) {
- part = createMimeBodyPart(sin.newStream(start, end));
+ part = createMimeBodyPartIs(sin.newStream(start, end));
                 } else {
                     // write out data from previous buffer, not including EOL
                     if (prevSize - eolLen > 0)
@@ -1205,4 +1205,17 @@
                                 throws MessagingException {
         return new MimeBodyPart(is);
     }
+
+ private MimeBodyPart createMimeBodyPartIs(InputStream is)
+ throws MessagingException {
+ try {
+ return createMimeBodyPart(is);
+ } finally {
+ try {
+ is.close();
+ } catch (IOException ex) {
+ // ignore it
+ }
+ }
+ }
 }