You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Dharmraj Gocher (Jira)" <ji...@apache.org> on 2023/09/01 17:28:00 UTC

[jira] [Created] (GERONIMO-6852) No default DataContentHandler like ObjectDataContentHandler present inside jakartaee-api-9.1.1-tomcat.jar of tomee 9.1.0

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)