60 |
60 |
61 protected static final Logger log = |
61 protected static final Logger log = |
62 Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, |
62 Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, |
63 "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); |
63 "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); |
64 |
64 |
65 static { |
|
66 try { |
|
67 CommandMap map = CommandMap.getDefaultCommandMap(); |
|
68 if (map instanceof MailcapCommandMap) { |
|
69 MailcapCommandMap mailMap = (MailcapCommandMap) map; |
|
70 String hndlrStr = ";;x-java-content-handler="; |
|
71 mailMap.addMailcap( |
|
72 "text/xml" |
|
73 + hndlrStr |
|
74 + "com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler"); |
|
75 mailMap.addMailcap( |
|
76 "application/xml" |
|
77 + hndlrStr |
|
78 + "com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler"); |
|
79 mailMap.addMailcap( |
|
80 "application/fastinfoset" |
|
81 + hndlrStr |
|
82 + "com.sun.xml.internal.messaging.saaj.soap.FastInfosetDataContentHandler"); |
|
83 /* Image DataContentHandler handles all image types |
|
84 mailMap.addMailcap( |
|
85 "image/jpeg" |
|
86 + hndlrStr |
|
87 + "com.sun.xml.internal.messaging.saaj.soap.JpegDataContentHandler"); |
|
88 mailMap.addMailcap( |
|
89 "image/gif" |
|
90 + hndlrStr |
|
91 + "com.sun.xml.internal.messaging.saaj.soap.GifDataContentHandler"); */ |
|
92 /*mailMap.addMailcap( |
|
93 "multipart/*" |
|
94 + hndlrStr |
|
95 + "com.sun.xml.internal.messaging.saaj.soap.MultipartDataContentHandler");*/ |
|
96 mailMap.addMailcap( |
|
97 "image/*" |
|
98 + hndlrStr |
|
99 + "com.sun.xml.internal.messaging.saaj.soap.ImageDataContentHandler"); |
|
100 mailMap.addMailcap( |
|
101 "text/plain" |
|
102 + hndlrStr |
|
103 + "com.sun.xml.internal.messaging.saaj.soap.StringDataContentHandler"); |
|
104 } else { |
|
105 throw new SOAPExceptionImpl("Default CommandMap is not a MailcapCommandMap"); |
|
106 } |
|
107 } catch (Throwable t) { |
|
108 log.log( |
|
109 Level.SEVERE, |
|
110 "SAAJ0508.soap.cannot.register.handlers", |
|
111 t); |
|
112 if (t instanceof RuntimeException) { |
|
113 throw (RuntimeException) t; |
|
114 } else { |
|
115 throw new RuntimeException(t.getLocalizedMessage()); |
|
116 } |
|
117 } |
|
118 }; |
|
119 |
|
120 private final MimeHeaders headers; |
65 private final MimeHeaders headers; |
121 private MimeBodyPart rawContent = null; |
66 private MimeBodyPart rawContent = null; |
122 private DataHandler dataHandler = null; |
67 private DataHandler dataHandler = null; |
123 |
68 |
124 //alternate impl that uses a MIMEPart |
69 //alternate impl that uses a MIMEPart |
125 private MIMEPart mimePart = null; |
70 private MIMEPart mimePart = null; |
126 |
71 |
127 public AttachmentPartImpl() { |
72 public AttachmentPartImpl() { |
128 headers = new MimeHeaders(); |
73 headers = new MimeHeaders(); |
|
74 |
|
75 // initialization from here should cover most of cases; |
|
76 // if not, it would be necessary to call |
|
77 // AttachmentPartImpl.initializeJavaActivationHandlers() |
|
78 // explicitly by programmer |
|
79 initializeJavaActivationHandlers(); |
129 } |
80 } |
130 |
81 |
131 public AttachmentPartImpl(MIMEPart part) { |
82 public AttachmentPartImpl(MIMEPart part) { |
132 headers = new MimeHeaders(); |
83 headers = new MimeHeaders(); |
133 mimePart = part; |
84 mimePart = part; |
617 |
568 |
618 public MimeHeaders getMimeHeaders() { |
569 public MimeHeaders getMimeHeaders() { |
619 return headers; |
570 return headers; |
620 } |
571 } |
621 |
572 |
|
573 public static void initializeJavaActivationHandlers() { |
|
574 // DataHandler.writeTo() may search for DCH. So adding some default ones. |
|
575 try { |
|
576 CommandMap map = CommandMap.getDefaultCommandMap(); |
|
577 if (map instanceof MailcapCommandMap) { |
|
578 MailcapCommandMap mailMap = (MailcapCommandMap) map; |
|
579 |
|
580 // registering our DCH since javamail's DCH doesn't handle |
|
581 if (!cmdMapInitialized(mailMap)) { |
|
582 mailMap.addMailcap("text/xml;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler"); |
|
583 mailMap.addMailcap("application/xml;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler"); |
|
584 mailMap.addMailcap("application/fastinfoset;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.FastInfosetDataContentHandler"); |
|
585 mailMap.addMailcap("multipart/*;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.MultipartDataContentHandler"); |
|
586 mailMap.addMailcap("image/*;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.ImageDataContentHandler"); |
|
587 mailMap.addMailcap("text/plain;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.StringDataContentHandler"); |
|
588 } |
|
589 } |
|
590 } catch (Throwable t) { |
|
591 // ignore the exception. |
|
592 } |
|
593 } |
|
594 |
|
595 private static boolean cmdMapInitialized(MailcapCommandMap mailMap) { |
|
596 |
|
597 // checking fastinfoset handler, since this one is specific to SAAJ |
|
598 CommandInfo[] commands = mailMap.getAllCommands("application/fastinfoset"); |
|
599 if (commands == null || commands.length == 0) { |
|
600 return false; |
|
601 } |
|
602 |
|
603 String saajClassName = "com.sun.xml.internal.ws.binding.FastInfosetDataContentHandler"; |
|
604 for (CommandInfo command : commands) { |
|
605 String commandClass = command.getCommandClass(); |
|
606 if (saajClassName.equals(commandClass)) { |
|
607 return true; |
|
608 } |
|
609 } |
|
610 return false; |
|
611 } |
622 } |
612 } |