Skip to content

Commit 2f152e1

Browse files
committed
Use session properties instead of setters
Signed-off-by: Jorge Bescos Gascon <[email protected]>
1 parent 06b7e50 commit 2f152e1

File tree

8 files changed

+150
-242
lines changed

8 files changed

+150
-242
lines changed

mail/src/main/java/com/sun/mail/util/MimeBodyPartPropOverrider.java

Lines changed: 0 additions & 83 deletions
This file was deleted.

mail/src/main/java/com/sun/mail/util/MimeMessagePropOverrider.java

Lines changed: 0 additions & 93 deletions
This file was deleted.

mail/src/main/java/com/sun/mail/util/MimePartDataSourcePropOverrider.java

Lines changed: 0 additions & 44 deletions
This file was deleted.

mail/src/main/java/jakarta/mail/internet/MimeBodyPart.java

Lines changed: 61 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,42 @@
1616

1717
package jakarta.mail.internet;
1818

19-
import jakarta.mail.*;
20-
import jakarta.activation.*;
21-
import java.io.*;
22-
import java.util.*;
23-
import com.sun.mail.util.PropUtil;
19+
import jakarta.activation.DataHandler;
20+
import jakarta.activation.DataSource;
21+
import jakarta.activation.FileDataSource;
22+
import jakarta.mail.BodyPart;
23+
import jakarta.mail.EncodingAware;
24+
import jakarta.mail.FolderClosedException;
25+
import jakarta.mail.Header;
26+
import jakarta.mail.IllegalWriteException;
27+
import jakarta.mail.Message;
28+
import jakarta.mail.MessageContext;
29+
import jakarta.mail.MessageRemovedException;
30+
import jakarta.mail.MessagingException;
31+
import jakarta.mail.Multipart;
32+
import jakarta.mail.Part;
33+
import jakarta.mail.Session;
34+
35+
import java.io.BufferedInputStream;
36+
import java.io.BufferedOutputStream;
37+
import java.io.ByteArrayInputStream;
38+
import java.io.File;
39+
import java.io.FileOutputStream;
40+
import java.io.IOException;
41+
import java.io.InputStream;
42+
import java.io.OutputStream;
43+
import java.io.UnsupportedEncodingException;
44+
import java.util.ArrayList;
45+
import java.util.Enumeration;
46+
import java.util.List;
47+
import java.util.Properties;
48+
2449
import com.sun.mail.util.ASCIIUtility;
25-
import com.sun.mail.util.MimeUtil;
26-
import com.sun.mail.util.MessageRemovedIOException;
2750
import com.sun.mail.util.FolderClosedIOException;
2851
import com.sun.mail.util.LineOutputStream;
52+
import com.sun.mail.util.MessageRemovedIOException;
53+
import com.sun.mail.util.MimeUtil;
54+
import com.sun.mail.util.PropUtil;
2955

3056
/**
3157
* This class represents a MIME body part. It implements the
@@ -193,6 +219,34 @@ public MimeBodyPart(InternetHeaders headers, byte[] content)
193219
this.content = content;
194220
}
195221

222+
/**
223+
* Initializes MimeBodyPart from the InputStream is and it overwrites
224+
* properties from session.
225+
*
226+
* @param session Session object for this message
227+
* @param is the message input stream
228+
* @exception MessagingException for failures
229+
*/
230+
public MimeBodyPart(Session session, InputStream is) throws MessagingException {
231+
this(is);
232+
initializeProperties(session);
233+
}
234+
235+
/**
236+
* Set the values from session properties if exist, otherwise it keeps the previous value.
237+
* @param session the not null session
238+
*/
239+
private void initializeProperties(Session session) {
240+
Properties props = session.getProperties();
241+
setDefaultTextCharset = PropUtil.getBooleanProperty(props, "mail.mime.setdefaulttextcharset", setDefaultTextCharset);
242+
setContentTypeFileName = PropUtil.getBooleanProperty(props, "mail.mime.setcontenttypefilename", setContentTypeFileName);
243+
encodeFileName = PropUtil.getBooleanProperty(props, "mail.mime.encodefilename", encodeFileName);
244+
decodeFileName = PropUtil.getBooleanProperty(props, "mail.mime.decodefilename", decodeFileName);
245+
ignoreMultipartEncoding = PropUtil.getBooleanProperty(props, "mail.mime.ignoremultipartencoding", ignoreMultipartEncoding);
246+
allowutf8 = PropUtil.getBooleanProperty(props, "mail.mime.allowutf8", allowutf8);
247+
cacheMultipart = PropUtil.getBooleanProperty(props, "mail.mime.cachemultipart", cacheMultipart);
248+
}
249+
196250
/**
197251
* Return the size of the content of this body part in bytes.
198252
* Return -1 if the size cannot be determined. <p>

mail/src/main/java/jakarta/mail/internet/MimeMessage.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -338,16 +338,21 @@ protected MimeMessage(Folder folder, InternetHeaders headers,
338338
}
339339

340340
/**
341-
* Set the strict flag based on property.
341+
* Set the properties from session if exists, otherwise it keeps the previous value.
342342
*/
343343
private void initStrict() {
344-
if (session != null) {
345-
Properties props = session.getProperties();
346-
strict = PropUtil.getBooleanProperty(props,
347-
"mail.mime.address.strict", true);
348-
allowutf8Headers = PropUtil.getBooleanProperty(props,
349-
"mail.mime.allowutf8", false);
350-
}
344+
if (session != null) {
345+
Properties props = session.getProperties();
346+
strict = PropUtil.getBooleanProperty(props, "mail.mime.address.strict", true);
347+
allowutf8Headers = PropUtil.getBooleanProperty(props, "mail.mime.allowutf8", false);
348+
setDefaultTextCharset = PropUtil.getBooleanProperty(props, "mail.mime.setdefaulttextcharset", setDefaultTextCharset);
349+
setContentTypeFileName = PropUtil.getBooleanProperty(props, "mail.mime.setcontenttypefilename", setContentTypeFileName);
350+
encodeFileName = PropUtil.getBooleanProperty(props, "mail.mime.encodefilename", encodeFileName);
351+
decodeFileName = PropUtil.getBooleanProperty(props, "mail.mime.decodefilename", decodeFileName);
352+
ignoreMultipartEncoding = PropUtil.getBooleanProperty(props, "mail.mime.ignoremultipartencoding", ignoreMultipartEncoding);
353+
allowutf8 = PropUtil.getBooleanProperty(props, "mail.mime.allowutf8", allowutf8);
354+
cacheMultipart = PropUtil.getBooleanProperty(props, "mail.mime.cachemultipart", cacheMultipart);
355+
}
351356
}
352357

353358
/**

mail/src/main/java/jakarta/mail/internet/MimeMultipart.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -991,7 +991,13 @@ protected MimeBodyPart createMimeBodyPart(InternetHeaders headers,
991991
*/
992992
protected MimeBodyPart createMimeBodyPart(InputStream is)
993993
throws MessagingException {
994-
return new MimeBodyPart(is);
994+
if (ds != null && ds instanceof MimePartDataSource) {
995+
Session session = ((MimePartDataSource)ds).getMessageContext().getSession();
996+
if (session != null) {
997+
return new MimeBodyPart(session, is);
998+
}
999+
}
1000+
return new MimeBodyPart(is);
9951001
}
9961002

9971003
private MimeBodyPart createMimeBodyPartIs(InputStream is)

0 commit comments

Comments
 (0)