Uploaded image for project: 'TomEE'
  1. TomEE
  2. TOMEE-4241

No default DataContentHandler like ObjectDataContentHandler present inside jakartaee-api-9.1.1-tomcat.jar of tomee 9.1.0

    XMLWordPrintableJSON

Details

    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

          Activity

            People

              Unassigned Unassigned
              dgocher Dharmraj Gocher
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: