private static boolean cmdMapInitialized(MailcapCommandMap mailMap) { CommandInfo[] commands = mailMap.getAllCommands("text/xml"); if (commands == null || commands.length == 0) { return false; } // SAAJ RI implements it's own DataHandlers which can be used for JAX-WS too; // see com.sun.xml.internal.messaging.saaj.soap.AttachmentPartImpl#initializeJavaActivationHandlers // so if found any of SAAJ or our own handler registered, we are ok; anyway using SAAJ directly here // is not good idea since we don't want standalone JAX-WS to depend on specific SAAJ impl. // This is also reason for duplication of Handler's code by JAX-WS String saajClassName = "com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler"; String jaxwsClassName = "com.sun.xml.internal.ws.encoding.XmlDataContentHandler"; for (CommandInfo command : commands) { String commandClass = command.getCommandClass(); if (saajClassName.equals(commandClass) || jaxwsClassName.equals(commandClass)) { return true; } } return false; }
/** * Loads the default set of Java activation MIME mappings required by * the GData library. Extends the basic set configured by the JavaMail * library to add mappings for Atom, RSS, and JSON application types. */ public static void loadMimeMappings() { final String[] CONTENT_TYPES = new String[] { "application/atom+xml", "application/rss+xml", "application/json" }; final String CONTENT_HANDLER = ";; x-java-content-handler" + "=com.google.gdata.data.media.GDataContentHandler"; CommandMap commandMap = CommandMap.getDefaultCommandMap(); if (commandMap instanceof MailcapCommandMap) { MailcapCommandMap mailcapMap = (MailcapCommandMap) commandMap; for (int i = 0; i < CONTENT_TYPES.length; i++) { CommandInfo[] comm = mailcapMap.getAllCommands(CONTENT_TYPES[i]); if (comm == null || comm.length == 0) { mailcapMap.addMailcap(CONTENT_TYPES[i] + CONTENT_HANDLER); } } } else { LOGGER.warning( "Unable to find MailcapCommandMap, skipping dynamic mailcap config."); } }
/** * Sets the default mail caps. */ private void setDefaults() { MailcapCommandMap mailcap = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); for (int i = 0; i < mailcaps.length; i++) { CommandInfo command = mailcap.getCommand(mailcaps[i].getMimeType(), mailcaps[i].getCommandName()); if (command == null || !command.getCommandClass().equals(mailcaps[i].getClassName())) { mailcap.addMailcap(mailcaps[i].toString()); } } CommandMap.setDefaultCommandMap(mailcap); }
@Override public CommandInfo[] getAllCommands() { return delegate.getAllCommands(); }
@Override public Object getBean(CommandInfo paramCommandInfo) { return delegate.getBean(paramCommandInfo); }
@Override public CommandInfo getCommand(String paramString) { return delegate.getCommand(paramString); }
@Override public CommandInfo[] getPreferredCommands() { return delegate.getPreferredCommands(); }