1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
/* * @(#)CommandMap.java 1.20 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ package javax.activation; /** * The CommandMap class provides an interface to a registry of * command objects available in the system. * Developers are expected to either use the CommandMap * implementation included with this package (MailcapCommandMap) or * develop their own. Note that some of the methods in this class are * abstract. * * @since 1.6 */ public abstract class CommandMap { private static CommandMap defaultCommandMap = null; /** * Get the default CommandMap. * <p> * * <ul> * <li> In cases where a CommandMap instance has been previously set * to some value (via <i>setDefaultCommandMap</i>) * return the CommandMap. * <li> * In cases where no CommandMap has been set, the CommandMap * creates an instance of <code>MailcapCommandMap</code> and * set that to the default, returning its value. * * </ul> * * @return the CommandMap */ public static CommandMap getDefaultCommandMap() { if (defaultCommandMap == null) defaultCommandMap = new MailcapCommandMap(); return defaultCommandMap; } /** * Set the default CommandMap. Reset the CommandMap to the default by * calling this method with <code>null</code>. * * @param commandMap The new default CommandMap. * @exception SecurityException if the caller doesn't have permission * to change the default */ public static void setDefaultCommandMap(CommandMap commandMap) { SecurityManager security = System.getSecurityManager(); if (security != null) { try { // if it's ok with the SecurityManager, it's ok with me... security.checkSetFactory(); } catch (SecurityException ex) { // otherwise, we also allow it if this code and the // factory come from the same class loader (e.g., // the JAF classes were loaded with the applet classes). if (CommandMap.class.getClassLoader() != commandMap.getClass().getClassLoader()) throw ex; } } defaultCommandMap = commandMap; } /** * Get the preferred command list from a MIME Type. The actual semantics * are determined by the implementation of the CommandMap. * * @param mimeType the MIME type * @return the CommandInfo classes that represent the command Beans. */ abstract public CommandInfo[] getPreferredCommands(String mimeType); /** * Get the preferred command list from a MIME Type. The actual semantics * are determined by the implementation of the CommandMap. <p> * * The <code>DataSource</code> provides extra information, such as * the file name, that a CommandMap implementation may use to further * refine the list of commands that are returned. The implementation * in this class simply calls the <code>getPreferredCommands</code> * method that ignores this argument. * * @param mimeType the MIME type * @param ds a DataSource for the data * @return the CommandInfo classes that represent the command Beans. * @since JAF 1.1 */ public CommandInfo[] getPreferredCommands(String mimeType, DataSource ds) { return getPreferredCommands(mimeType); } /** * Get all the available commands for this type. This method * should return all the possible commands for this MIME type. * * @param mimeType the MIME type * @return the CommandInfo objects representing all the commands. */ abstract public CommandInfo[] getAllCommands(String mimeType); /** * Get all the available commands for this type. This method * should return all the possible commands for this MIME type. <p> * * The <code>DataSource</code> provides extra information, such as * the file name, that a CommandMap implementation may use to further * refine the list of commands that are returned. The implementation * in this class simply calls the <code>getAllCommands</code> * method that ignores this argument. * * @param mimeType the MIME type * @param ds a DataSource for the data * @return the CommandInfo objects representing all the commands. * @since JAF 1.1 */ public CommandInfo[] getAllCommands(String mimeType, DataSource ds) { return getAllCommands(mimeType); } /** * Get the default command corresponding to the MIME type. * * @param mimeType the MIME type * @param cmdName the command name * @return the CommandInfo corresponding to the command. */ abstract public CommandInfo getCommand(String mimeType, String cmdName); /** * Get the default command corresponding to the MIME type. <p> * * The <code>DataSource</code> provides extra information, such as * the file name, that a CommandMap implementation may use to further * refine the command that is chosen. The implementation * in this class simply calls the <code>getCommand</code> * method that ignores this argument. * * @param mimeType the MIME type * @param cmdName the command name * @param ds a DataSource for the data * @return the CommandInfo corresponding to the command. * @since JAF 1.1 */ public CommandInfo getCommand(String mimeType, String cmdName, DataSource ds) { return getCommand(mimeType, cmdName); } /** * Locate a DataContentHandler that corresponds to the MIME type. * The mechanism and semantics for determining this are determined * by the implementation of the particular CommandMap. * * @param mimeType the MIME type * @return the DataContentHandler for the MIME type */ abstract public DataContentHandler createDataContentHandler(String mimeType); /** * Locate a DataContentHandler that corresponds to the MIME type. * The mechanism and semantics for determining this are determined * by the implementation of the particular CommandMap. <p> * * The <code>DataSource</code> provides extra information, such as * the file name, that a CommandMap implementation may use to further * refine the choice of DataContentHandler. The implementation * in this class simply calls the <code>createDataContentHandler</code> * method that ignores this argument. * * @param mimeType the MIME type * @param ds a DataSource for the data * @return the DataContentHandler for the MIME type * @since JAF 1.1 */ public DataContentHandler createDataContentHandler(String mimeType, DataSource ds) { return createDataContentHandler(mimeType); } /** * Get all the MIME types known to this command map. * If the command map doesn't support this operation, * null is returned. * * @return array of MIME types as strings, or null if not supported * @since JAF 1.1 */ public String[] getMimeTypes() { return null; } }