Dharmraj Gocher created GERONIMO-6852: -----------------------------------------
Summary: No default DataContentHandler like ObjectDataContentHandler present inside jakartaee-api-9.1.1-tomcat.jar of tomee 9.1.0 Key: GERONIMO-6852 URL: https://issues.apache.org/jira/browse/GERONIMO-6852 Project: Geronimo Issue Type: Bug Security Level: public (Regular issues) Components: general Reporter: Dharmraj Gocher 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 {code:java} String attachment = "Some base 64 encoded content"; MimeBodyPart emailAttachment = new MimeBodyPart(); emailAttachment.setContent(Base64.getMimeDecoder().decode(attachment), "application/octet-stream"); {code} 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 - {code:java} 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; } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)