Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
9.1.0
-
None
Description
In jakartaee-api-9.1.1-tomcat.jar of tomee 9.1.0, we could see a new package jakarta.activation introduced which contains classes like jakarta.activation.DataHandler.class etc. which were present in jakarta.activation.jar earlier in tomee 8.0.15 but not in javaee-api-8.0-6-tomcat.jar.
The implementation for jakarta.activation.DataHandler inside jakartaee-api-9.1.1-tomcat.jar does not have any default DataContentHandler.
The below code used to work until tomee 8.0.15
String attachment = "Some base 64 encoded content"; MimeBodyPart emailAttachment = new MimeBodyPart(); emailAttachment.setContent(Base64.getMimeDecoder().decode(attachment), "application/octet-stream");
The above same code is failing in tomee 9.1.0 with error -
ERROR-
Caused by: jakarta.activation.UnsupportedDataTypeException: application/octet-stream
at jakarta.activation.DataHandler.writeTo(DataHandler.java:75)
at jakarta.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:489)
at jakarta.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:255)
at org.apache.geronimo.mail.handlers.MultipartHandler.writeTo(MultipartHandler.java:57)
at jakarta.activation.DataHandler.writeTo(DataHandler.java:77)
at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1287)
at jakarta.mail.internet.MimeMessage.writeTo(MimeMessage.java:1256)
Instead of making mandatory to pass DataContentHandler can we provide some default handler like ObjectDataContentHandler similar to jakarta activation.jar? This ensures backward compatibility.
Something like -
private synchronized DataContentHandler getDataContentHandler() { Class var2 = DataHandler.class; DataContentHandlerFactory localFactory; synchronized(DataHandler.class) { if (factory != this.originalFactory) { this.dch = null; this.originalFactory = factory; } localFactory = this.originalFactory; } if (this.dch == null) { String mimeType = this.getMimeType(this.ds.getContentType()); if (localFactory != null) { this.dch = localFactory.createDataContentHandler(mimeType); } if (this.dch == null) { if (this.commandMap != null) { this.dch = this.commandMap.createDataContentHandler(mimeType); } else { this.dch = CommandMap.getDefaultCommandMap().createDataContentHandler(mimeType); } } } if(this.dch == null){ this.dch = <Some default data handler>; } return this.dch; }
Attachments
Issue Links
- is related to
-
GERONIMO-6852 No default DataContentHandler like ObjectDataContentHandler present inside jakartaee-api-9.1.1-tomcat.jar of tomee 9.1.0
- Open