From a63819dfbf63524aa934c4733de2bd1293ced9d8 Mon Sep 17 00:00:00 2001 From: twogee Date: Sun, 4 Oct 2020 13:45:31 +0200 Subject: [PATCH 1/3] Update the optional dependencies --- lib/libraries.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libraries.properties b/lib/libraries.properties index 9cfc16820e..8acee94ad1 100644 --- a/lib/libraries.properties +++ b/lib/libraries.properties @@ -42,7 +42,7 @@ bsh.version=2.0b5 commons-net.version=3.8.0 commons-logging.version=1.1 commons-logging-api.version=${commons-logging.version} -js.version=20.1.0 +js.version=21.1.0 js-scriptengine.version=${js.version} hamcrest-core.version=1.3 hamcrest-library.version=${hamcrest-core.version} @@ -56,7 +56,7 @@ jasper-runtime.version=${jasper-compiler.version} jdepend.version=2.9.1 jruby.version=1.6.8 junit.version=4.13.1 -rhino.version=1.7.11 +rhino.version=1.7.13 junit-platform-launcher.version=1.2.0 # Only used for internal tests in Ant project junit-vintage-engine.version=5.2.0 From f77817b7cbdb9b28d0576834bb233861e5bfbb1b Mon Sep 17 00:00:00 2001 From: twogee Date: Thu, 4 Mar 2021 14:25:33 +0100 Subject: [PATCH 2/3] Update JUnit --- lib/libraries.properties | 2 +- .../{junit-4.13.jar => junit-4.13.2.jar} | Bin 381765 -> 384581 bytes 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/optional/{junit-4.13.jar => junit-4.13.2.jar} (78%) diff --git a/lib/libraries.properties b/lib/libraries.properties index 8acee94ad1..7940596695 100644 --- a/lib/libraries.properties +++ b/lib/libraries.properties @@ -55,7 +55,7 @@ jasper-compiler.version=4.1.36 jasper-runtime.version=${jasper-compiler.version} jdepend.version=2.9.1 jruby.version=1.6.8 -junit.version=4.13.1 +junit.version=4.13.2 rhino.version=1.7.13 junit-platform-launcher.version=1.2.0 # Only used for internal tests in Ant project diff --git a/lib/optional/junit-4.13.jar b/lib/optional/junit-4.13.2.jar similarity index 78% rename from lib/optional/junit-4.13.jar rename to lib/optional/junit-4.13.2.jar index acc3c4320b580776193b875cd6e131d460ce2b7a..6da55d8b8520dcc03c250a605151cc0d23a45518 100644 GIT binary patch delta 44326 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 J2D4u9{{iBjG&cYM delta 41411 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
GxpLr0ZiSo-5rywXV0 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⁣*et_ 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 From 7b2671133323b10fe6ac395956731a381a491a99 Mon Sep 17 00:00:00 2001 From: twogee Date: Thu, 4 Mar 2021 14:50:08 +0100 Subject: [PATCH 3/3] Use Jakarta EE --- build.xml | 10 + fetch.xml | 6 + lib/libraries.properties | 4 +- .../tools/ant/taskdefs/email/EmailTask.java | 65 ++-- .../ant/taskdefs/email/JakartaMimeMailer.java | 341 ++++++++++++++++++ .../apache/tools/ant/util/ClasspathUtils.java | 8 +- 6 files changed, 408 insertions(+), 26 deletions(-) create mode 100644 src/main/org/apache/tools/ant/taskdefs/email/JakartaMimeMailer.java diff --git a/build.xml b/build.xml index 35ba766f64..6437c63f6e 100644 --- a/build.xml +++ b/build.xml @@ -277,6 +277,12 @@ + + + + + + @@ -507,6 +513,9 @@ + @@ -704,6 +713,7 @@ + diff --git a/fetch.xml b/fetch.xml index 24e8e6df44..288700cdd3 100644 --- a/fetch.xml +++ b/fetch.xml @@ -335,6 +335,12 @@ Set -Ddest=LOCATION on the command line + + + + diff --git a/lib/libraries.properties b/lib/libraries.properties index 7940596695..4904b17774 100644 --- a/lib/libraries.properties +++ b/lib/libraries.properties @@ -48,7 +48,9 @@ hamcrest-core.version=1.3 hamcrest-library.version=${hamcrest-core.version} jai-core.version=1.1.3 jai-codec.version=1.1.3 -jakarta.mail.version=1.6.4 +# Later 1.6 versions call themselves "jakarta.mail" but do not use the namespace yet +javax.mail.version=1.6.2 +jakarta.mail.version=2.0.1 jakarta-regexp.version=1.4 # Later versions of Tomcat provide a jspc task jasper-compiler.version=4.1.36 diff --git a/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java b/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java index 54f811743c..21c0772150 100644 --- a/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java @@ -239,7 +239,7 @@ public void addMessage(Message message) throws BuildException { } /** - * Add a from address element. + * Add a "from" address element. * * @param address The address to send from. */ @@ -251,7 +251,7 @@ public void addFrom(EmailAddress address) { } /** - * Shorthand to set the from address element. + * Shorthand to set the "from" address element. * * @param address The address to send mail from. */ @@ -263,7 +263,7 @@ public void setFrom(String address) { } /** - * Add a replyto address element. + * Add a "replyto" address element. * * @param address The address to reply to. * @since Ant 1.6 @@ -273,7 +273,7 @@ public void addReplyTo(EmailAddress address) { } /** - * Shorthand to set the replyto address element. + * Shorthand to set the "replyto" address element. * * @param address The address to which replies should be directed. * @since Ant 1.6 @@ -283,7 +283,7 @@ public void setReplyTo(String address) { } /** - * Add a to address element. + * Add a "to" address element. * * @param address An email address. */ @@ -449,16 +449,9 @@ public void execute() { // prepare for the auto select mechanism boolean autoFound = false; // try MIME format - if (MIME.equals(encoding) - || (AUTO.equals(encoding) && !autoFound)) { + if (MIME.equals(encoding) || AUTO.equals(encoding)) { try { - //check to make sure that activation.jar - //and mail.jar are available - see bug 31969 - Class.forName("javax.activation.DataHandler"); - Class.forName("javax.mail.internet.MimeMessage"); - - mailer = ClasspathUtils.newInstance( - "org.apache.tools.ant.taskdefs.email.MimeMailer", + mailer = ClasspathUtils.newInstance(getMailerImplementation(), EmailTask.class.getClassLoader(), Mailer.class); autoFound = true; @@ -467,16 +460,16 @@ public void execute() { logBuildException("Failed to initialise MIME mail: ", e); } } - // SMTP auth only allowed with MIME mail - if (!autoFound && ((user != null) || (password != null)) - && (UU.equals(encoding) || PLAIN.equals(encoding))) { - throw new BuildException("SMTP auth only possible with MIME mail"); + if ((UU.equals(encoding) || PLAIN.equals(encoding)) + && !autoFound) { + // SMTP auth only allowed with MIME mail + if (user != null || password != null) { + throw new BuildException("SMTP auth only possible with MIME mail"); + } + // SSL only allowed with MIME mail + if (ssl || starttls) { + throw new BuildException("SSL and STARTTLS only possible with MIME mail"); } - // SSL only allowed with MIME mail - if (!autoFound && (ssl || starttls) - && (UU.equals(encoding) || PLAIN.equals(encoding))) { - throw new BuildException( - "SSL and STARTTLS only possible with MIME mail"); } // try UU format if (UU.equals(encoding) @@ -600,6 +593,32 @@ public void execute() { } } + private String getMailerImplementation() { + //check to make sure that activation.jar + //and mail.jar are available - see bug 31969 + try { + Class.forName("jakarta.activation.DataHandler"); + Class.forName("jakarta.mail.internet.MimeMessage"); + + return "org.apache.tools.ant.taskdefs.email.JakartaMimeMailer"; + } catch (ClassNotFoundException cnfe) { + logBuildException("Could not find Jakarta MIME mail: ", + new BuildException(cnfe)); + } + + try { + Class.forName("javax.activation.DataHandler"); + Class.forName("javax.mail.internet.MimeMessage"); + + return "org.apache.tools.ant.taskdefs.email.MimeMailer"; + } catch (ClassNotFoundException cnfe) { + logBuildException("Could not find MIME mail: ", + new BuildException(cnfe)); + } + + return "org.apache.tools.ant.taskdefs.email.Mailer"; + } + private void logBuildException(String reason, BuildException e) { Throwable t = e.getCause() == null ? e : e.getCause(); log(reason + t.getMessage(), Project.MSG_WARN); diff --git a/src/main/org/apache/tools/ant/taskdefs/email/JakartaMimeMailer.java b/src/main/org/apache/tools/ant/taskdefs/email/JakartaMimeMailer.java new file mode 100644 index 0000000000..eee328c8e6 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/email/JakartaMimeMailer.java @@ -0,0 +1,341 @@ +/* + * 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 + * + * https://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.tools.ant.taskdefs.email; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintStream; +import java.io.UnsupportedEncodingException; +import java.security.Provider; +import java.security.Security; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Properties; +import java.util.StringTokenizer; +import java.util.Vector; + +import jakarta.activation.DataHandler; +import jakarta.activation.DataSource; +import jakarta.activation.FileDataSource; +import jakarta.mail.Address; +import jakarta.mail.Authenticator; +import jakarta.mail.Message; +import jakarta.mail.MessagingException; +import jakarta.mail.PasswordAuthentication; +import jakarta.mail.SendFailedException; +import jakarta.mail.Session; +import jakarta.mail.Transport; +import jakarta.mail.internet.AddressException; +import jakarta.mail.internet.InternetAddress; +import jakarta.mail.internet.MimeBodyPart; +import jakarta.mail.internet.MimeMessage; +import jakarta.mail.internet.MimeMultipart; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; + + +/** + * Uses the JavaMail classes to send Mime format email. + * + * @since Ant 1.5 + */ +public class JakartaMimeMailer extends Mailer { + private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; + + private static final String GENERIC_ERROR = + "Problem while sending mime mail:"; + + /** Default character set */ + private static final String DEFAULT_CHARSET + = System.getProperty("file.encoding"); + + // To work properly with national charsets we have to use + // implementation of interface jakarta.activation.DataSource + /** + * String data source implementation. + * @since Ant 1.6 + */ + class StringDataSource implements DataSource { + private String data = null; + private String type = null; + private String charset = null; + private ByteArrayOutputStream out; + + @Override + public InputStream getInputStream() throws IOException { + if (data == null && out == null) { + throw new IOException("No data"); + } + if (out != null) { + final String encodedOut = out.toString(charset); + data = (data != null) ? data.concat(encodedOut) : encodedOut; + out = null; + } + return new ByteArrayInputStream(data.getBytes(charset)); + } + + @Override + public OutputStream getOutputStream() throws IOException { + out = (out == null) ? new ByteArrayOutputStream() : out; + return out; + } + + public void setContentType(final String type) { + this.type = type.toLowerCase(Locale.ENGLISH); + } + + @Override + public String getContentType() { + if (type != null && type.indexOf("charset") > 0 + && type.startsWith("text/")) { + return type; + } + // Must be like "text/plain; charset=windows-1251" + return (type != null ? type : "text/plain") + + "; charset=" + charset; + } + + @Override + public String getName() { + return "StringDataSource"; + } + + public void setCharset(final String charset) { + this.charset = charset; + } + + public String getCharset() { + return charset; + } + } + + /** + * Send the email. + * + * @throws BuildException if the email can't be sent. + */ + @Override + public void send() { + try { + final Properties props = new Properties(); + + props.put("mail.smtp.host", host); + props.put("mail.smtp.port", String.valueOf(port)); + + // Aside, the JDK is clearly unaware of the Scottish + // 'session', which involves excessive quantities of + // alcohol :-) + Session sesh; + Authenticator auth = null; + if (SSL) { + try { + final Provider p = + Class.forName("com.sun.net.ssl.internal.ssl.Provider") + .asSubclass(Provider.class).getDeclaredConstructor().newInstance(); + Security.addProvider(p); + } catch (final Exception e) { + throw new BuildException( + "could not instantiate ssl security provider, check that you have JSSE in your classpath"); + } + // SMTP provider + props.put("mail.smtp.socketFactory.class", SSL_FACTORY); + props.put("mail.smtp.socketFactory.fallback", "false"); + props.put("mail.smtps.host", host); + if (isPortExplicitlySpecified()) { + props.put("mail.smtps.port", String.valueOf(port)); + props.put("mail.smtp.socketFactory.port", + String.valueOf(port)); + } + } + if (user != null || password != null) { + props.put("mail.smtp.auth", "true"); + auth = new SimpleAuthenticator(user, password); + } + if (isStartTLSEnabled()) { + props.put("mail.smtp.starttls.enable", "true"); + } + sesh = Session.getInstance(props, auth); + + //create the message + final MimeMessage msg = new MimeMessage(sesh); + final MimeMultipart attachments = new MimeMultipart(); + + //set the sender + if (from.getName() == null) { + msg.setFrom(new InternetAddress(from.getAddress())); + } else { + msg.setFrom(new InternetAddress(from.getAddress(), + from.getName())); + } + // set the reply to addresses + msg.setReplyTo(internetAddresses(replyToList)); + msg.setRecipients(Message.RecipientType.TO, + internetAddresses(toList)); + msg.setRecipients(Message.RecipientType.CC, + internetAddresses(ccList)); + msg.setRecipients(Message.RecipientType.BCC, + internetAddresses(bccList)); + + // Choosing character set of the mail message + // First: looking it from MimeType + String charset = parseCharSetFromMimeType(message.getMimeType()); + if (charset != null) { + // Assign/reassign message charset from MimeType + message.setCharset(charset); + } else { + // Next: looking if charset having explicit definition + charset = message.getCharset(); + if (charset == null) { + // Using default + charset = DEFAULT_CHARSET; + message.setCharset(charset); + } + } + // Using jakarta.activation.DataSource paradigm + final StringDataSource sds = new StringDataSource(); + sds.setContentType(message.getMimeType()); + sds.setCharset(charset); + + if (subject != null) { + msg.setSubject(subject, charset); + } + msg.addHeader("Date", getDate()); + + if (headers != null) { + for (Header h : headers) { + msg.addHeader(h.getName(), h.getValue()); + } + } + final PrintStream out = new PrintStream(sds.getOutputStream()); + message.print(out); + out.close(); + + final MimeBodyPart textbody = new MimeBodyPart(); + textbody.setDataHandler(new DataHandler(sds)); + attachments.addBodyPart(textbody); + + for (File file : files) { + MimeBodyPart body = new MimeBodyPart(); + if (!file.exists() || !file.canRead()) { + throw new BuildException( + "File \"%s\" does not exist or is not readable.", + file.getAbsolutePath()); + } + final FileDataSource fileData = new FileDataSource(file); + final DataHandler fileDataHandler = new DataHandler(fileData); + + body.setDataHandler(fileDataHandler); + body.setFileName(file.getName()); + attachments.addBodyPart(body); + } + msg.setContent(attachments); + try { + // Send the message using SMTP, or SMTPS if the host uses SSL + final Transport transport = sesh.getTransport(SSL ? "smtps" : "smtp"); + transport.connect(host, user, password); + transport.sendMessage(msg, msg.getAllRecipients()); + } catch (final SendFailedException sfe) { + if (!shouldIgnoreInvalidRecipients()) { + throw new BuildException(GENERIC_ERROR, sfe); + } + if (sfe.getValidSentAddresses() == null + || sfe.getValidSentAddresses().length == 0) { + throw new BuildException("Couldn't reach any recipient", + sfe); + } + Address[] invalid = sfe.getInvalidAddresses(); + if (invalid == null) { + invalid = new Address[0]; + } + for (Address address : invalid) { + didntReach(address, "invalid", sfe); + } + Address[] validUnsent = sfe.getValidUnsentAddresses(); + if (validUnsent == null) { + validUnsent = new Address[0]; + } + for (Address address : validUnsent) { + didntReach(address, "valid", sfe); + } + } + } catch (MessagingException | IOException e) { + throw new BuildException(GENERIC_ERROR, e); + } + } + + private static InternetAddress[] internetAddresses(final Vector list) + throws AddressException, UnsupportedEncodingException { + + final List addrs = new ArrayList<>(); + + for (final EmailAddress addr : list) { + final String name = addr.getName(); + addrs.add((name == null) + ? new InternetAddress(addr.getAddress()) + : new InternetAddress(addr.getAddress(), name)); + } + return addrs.toArray(new InternetAddress[addrs.size()]); + } + + private String parseCharSetFromMimeType(final String type) { + if (type == null) { + return null; + } + final int pos = type.indexOf("charset"); + if (pos < 0) { + return null; + } + // Assuming mime type in form "text/XXXX; charset=XXXXXX" + final StringTokenizer token = new StringTokenizer(type.substring(pos), "=; "); + token.nextToken(); // Skip 'charset=' + return token.nextToken(); + } + + private void didntReach(final Address addr, final String category, + final MessagingException ex) { + final String msg = "Failed to send mail to " + category + " address " + + addr + " because of " + ex.getMessage(); + if (task != null) { + task.log(msg, Project.MSG_WARN); + } else { + System.err.println(msg); + } + } + + static class SimpleAuthenticator extends Authenticator { + private String user = null; + private String password = null; + + public SimpleAuthenticator(final String user, final String password) { + this.user = user; + this.password = password; + } + + @Override + public PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(user, password); + } + } +} + diff --git a/src/main/org/apache/tools/ant/util/ClasspathUtils.java b/src/main/org/apache/tools/ant/util/ClasspathUtils.java index 9e9b2ddc54..93cd60666e 100644 --- a/src/main/org/apache/tools/ant/util/ClasspathUtils.java +++ b/src/main/org/apache/tools/ant/util/ClasspathUtils.java @@ -26,6 +26,7 @@ import org.apache.tools.ant.types.Reference; import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; // CheckStyle:HideUtilityClassConstructorCheck OFF - bc @@ -251,6 +252,9 @@ public static T newInstance(String className, ClassLoader userDefinedLoader, try { @SuppressWarnings("unchecked") Class clazz = (Class) Class.forName(className, true, userDefinedLoader); + if (Modifier.isAbstract(clazz.getModifiers())) { + throw new BuildException("Abstract class " + className); + } T o = clazz.getDeclaredConstructor().newInstance(); if (!expectedType.isInstance(o)) { throw new BuildException( @@ -262,10 +266,10 @@ public static T newInstance(String className, ClassLoader userDefinedLoader, throw new BuildException("Class not found: " + className, e); } catch (InstantiationException e) { throw new BuildException("Could not instantiate " + className - + ". Specified class should have a no " + "argument constructor.", e); + + ". Specified class should have a no argument constructor.", e); } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { throw new BuildException("Could not instantiate " + className - + ". Specified class should have a " + "public constructor.", e); + + ". Specified class should have a public constructor.", e); } catch (LinkageError e) { throw new BuildException("Class " + className + " could not be loaded because of an invalid dependency.", e);