Skip to content

Commit ba8e952

Browse files
author
Greg Meyer
authored
Merge pull request #5 from DirectProjectJavaRI/develop
Releasing 6.0.1
2 parents e9b8b02 + 2935e2b commit ba8e952

File tree

4 files changed

+71
-7
lines changed

4 files changed

+71
-7
lines changed

pom.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<artifactId>direct-common</artifactId>
66
<name>Direct Project common APIs</name>
7-
<version>6.0</version>
7+
<version>6.0.1</version>
88
<description>Direct Project common APIs. Includes instrumentation, auditing, and other utility APIs</description>
99
<inceptionYear>2010</inceptionYear>
1010
<url>http://api.nhindirect.org/x/www/api.nhindirect.org/java/site/direct-common/${project.version}</url>
@@ -28,7 +28,7 @@
2828
<parent>
2929
<groupId>org.springframework.boot</groupId>
3030
<artifactId>spring-boot-dependencies</artifactId>
31-
<version>2.1.2.RELEASE</version>
31+
<version>2.1.6.RELEASE</version>
3232
</parent>
3333
<scm>
3434
<url>scm:git:https://github.com/DirectProjectJavaRI/direct-common.git</url>
@@ -45,14 +45,14 @@
4545
<dependency>
4646
<groupId>org.springframework.boot</groupId>
4747
<artifactId>spring-boot-dependencies</artifactId>
48-
<version>2.1.2.RELEASE</version>
48+
<version>2.1.6.RELEASE</version>
4949
<type>pom</type>
5050
<scope>import</scope>
5151
</dependency>
5252
<dependency>
5353
<groupId>org.springframework.cloud</groupId>
5454
<artifactId>spring-cloud-starter-parent</artifactId>
55-
<version>Greenwich.RELEASE</version>
55+
<version>Greenwich.SR1</version>
5656
<type>pom</type>
5757
<scope>import</scope>
5858
</dependency>
@@ -258,7 +258,7 @@
258258
<plugin>
259259
<groupId>org.apache.maven.plugins</groupId>
260260
<artifactId>maven-javadoc-plugin</artifactId>
261-
<version>2.6.1</version>
261+
<version>2.9.1</version>
262262
<configuration>
263263
<additionalparam>-Xdoclint:none</additionalparam>
264264
<charset>UTF-8</charset>
@@ -309,7 +309,7 @@
309309
<plugin>
310310
<groupId>org.apache.maven.plugins</groupId>
311311
<artifactId>maven-javadoc-plugin</artifactId>
312-
<version>2.6.1</version>
312+
<version>2.9.1</version>
313313
<configuration>
314314
<additionalparam>-Xdoclint:none</additionalparam>
315315
<charset>UTF-8</charset>

src/main/java/org/nhindirect/common/mail/dsn/impl/DefaultDSNFailureTextBodyPartGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ protected String headersToString(Enumeration<Header> originalMessageHeaders)
111111
while (originalMessageHeaders.hasMoreElements())
112112
{
113113
Header h = originalMessageHeaders.nextElement();
114-
sb.append(StringEscapeUtils.escapeHtml4(h.getName() + ": " + h.getValue()));
114+
// use escapeXml10 vs escapeHtml4 for its NUL character removing capabilities
115+
sb.append(StringEscapeUtils.escapeXml10(h.getName() + ": " + h.getValue()));
115116
sb.append("<br/>");
116117
}
117118
return sb.toString();

src/site/apt/releaseNotes.apt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,22 @@
66
Greg Meyer
77
---
88

9+
{6.0.1}
10+
11+
Changes included with release 6.0.1
12+
13+
[]
14+
15+
Enhancements
16+
17+
* NA
18+
19+
[]
20+
21+
Bug Fixes
22+
23+
* Fixed Null character in HTML parsing when generating DSN messages
24+
925
{6.0}
1026

1127
Changes included with release 6.0

src/test/java/org/nhindirect/common/mail/dsn/DNSGenerator_CreateDSNMessageTest.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
package org.nhindirect.common.mail.dsn;
22

33
import static org.junit.Assert.assertNotNull;
4+
import static org.junit.Assert.assertThat;
45
import static org.junit.Assert.assertTrue;
6+
import static org.hamcrest.CoreMatchers.containsString;
57
import static org.junit.Assert.assertEquals;
68

79
import java.util.ArrayList;
10+
import java.util.Collections;
811
import java.util.List;
912
import java.util.UUID;
1013

1114
import javax.mail.Address;
15+
import javax.mail.Header;
1216
import javax.mail.internet.InternetAddress;
1317
import javax.mail.internet.MimeBodyPart;
1418
import javax.mail.internet.MimeMessage;
19+
import javax.mail.internet.MimeMultipart;
1520

1621
import org.junit.Test;
1722
import org.nhindirect.common.mail.MailStandard;
@@ -62,4 +67,46 @@ public void testCreateDSNMessage_createGeneralDSNMessage() throws Exception
6267
assertTrue(!MailStandard.getHeader(dsnMessage, MailStandard.Headers.Date).isEmpty());
6368

6469
}
70+
71+
@Test
72+
public void testCreateDSNMessage_createDSNMessageWithOriginalHeaders() throws Exception
73+
{
74+
final DSNGenerator dsnGenerator = new DSNGenerator("Not Delivered:");
75+
76+
final DSNRecipientHeaders dsnRecipHeaders =
77+
new DSNRecipientHeaders(DSNAction.FAILED,
78+
DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.UNDEFINED_STATUS), new InternetAddress("ah4626@test.com"));
79+
80+
final List<DSNRecipientHeaders> dsnHeaders = new ArrayList<DSNRecipientHeaders>();
81+
dsnHeaders.add(dsnRecipHeaders);
82+
83+
final String originalMessageId = UUID.randomUUID().toString();
84+
final DSNMessageHeaders messageDSNHeaders = new DSNMessageHeaders("DirectJUNIT", originalMessageId, MtaNameType.DNS);
85+
86+
List<Address> faileRecips = new ArrayList<Address>();
87+
faileRecips.add(new InternetAddress("ah4626@test.com"));
88+
89+
List<Header> originalMessageHeaders = new ArrayList<Header>();
90+
originalMessageHeaders.add(new Header("Date", "Tue, 11 Jun 2015 02:43:38 -0500 (CDT)"));
91+
originalMessageHeaders.add(new Header("From", "\"Smith, John\" <from@test.com>"));
92+
originalMessageHeaders.add(new Header("To", "\"Ben & Jerry\" <benandjerry@test.com>"));
93+
originalMessageHeaders.add(new Header("Subject", "subject \0goes here")); // this subject contains a NUL character, which should get removed
94+
95+
final DefaultDSNFailureTextBodyPartGenerator textGenerator = new DefaultDSNFailureTextBodyPartGenerator("", "%headers_tag%", "",
96+
"", "", HumanReadableTextAssemblerFactory.getInstance());
97+
98+
99+
100+
final MimeBodyPart textBodyPart = textGenerator.generate(new InternetAddress("gm2552@test.com"), faileRecips, Collections.enumeration(originalMessageHeaders));
101+
102+
MimeMessage dsnMessage = dsnGenerator.createDSNMessage(new InternetAddress("gm2552@test.com"), "test", new InternetAddress("postmaster@test.com"),
103+
dsnHeaders, messageDSNHeaders, textBodyPart);
104+
105+
assertNotNull(dsnMessage);
106+
MimeBodyPart htmlBodyPart = (MimeBodyPart) ((MimeMultipart) dsnMessage.getContent()).getBodyPart(0);
107+
String htmlContent = (String) htmlBodyPart.getContent();
108+
assertThat(htmlContent, containsString("subject goes here")); // NUL is removed
109+
assertThat(htmlContent, containsString("Ben &amp; Jerry")); // ampersand is encoded
110+
assertThat(htmlContent, containsString("&lt;from@test.com&gt;")); // <> are encoded
111+
}
65112
}

0 commit comments

Comments
 (0)