systemflavormap.java

来自「linux下建立JAVA虚拟机的源码KAFFE」· Java 代码 · 共 430 行 · 第 1/2 页

JAVA
430
字号
  }  /**   * Decodes a <code>String</code> native for use as a Java MIME type.   *   * @param name the <code>String</code> to decode   * @return the decoded Java MIME type, or <code>null</code> if nat    *         is not an encoded <code>String</code> native   */  public static String decodeJavaMIMEType (String name)  {    if (isJavaMIMEType(name))      {        return name.substring(GNU_JAVA_MIME_PREFIX.length());      }    else       return null;  }  /**   * Returns the data flavor given the native type name   * or null when no such data flavor exists.   */  public static DataFlavor decodeDataFlavor (String name)    throws ClassNotFoundException  {    String javaMIMEType = decodeJavaMIMEType (name);        if (javaMIMEType != null)      return new DataFlavor (javaMIMEType);    else      return null;  }  /**    * Returns a List of <code>DataFlavors</code> to which the specified    * <code>String</code> native can be translated by the data transfer    * subsystem. The <code>List</code> will be sorted from best    * <code>DataFlavor</code> to worst. That is, the first <code>DataFlavor    * </code> will best reflect data in the specified native to a Java    * application.    * <p>   * If the specified native is previously unknown to the data transfer    * subsystem, and that native has been properly encoded, then invoking    * this method will establish a mapping in both directions between the    * specified native and a DataFlavor whose MIME type is a decoded    * version of the native.   */   public List getFlavorsForNative (String nat)  {    throw new Error ("Not implemented");  }  public List getNativesForFlavor (DataFlavor flav)  {    throw new Error ("Not implemented");  }    /**   * Adds a mapping from a single <code>String</code> native to a single   * <code>DataFlavor</code>. Unlike <code>getFlavorsForNative</code>, the   * mapping will only be established in one direction, and the native will   * not be encoded. To establish a two-way mapping, call   * <code>addUnencodedNativeForFlavor</code> as well. The new mapping will   * be of lower priority than any existing mapping.   * This method has no effect if a mapping from the specified   * <code>String</code> native to the specified or equal   * <code>DataFlavor</code> already exists.   *   * @param nativeStr the <code>String</code> native key for the mapping   * @param flavor the <code>DataFlavor</code> value for the mapping   * @throws NullPointerException if nat or flav is <code>null</code>   *   * @see #addUnencodedNativeForFlavor   * @since 1.4   */  public synchronized void addFlavorForUnencodedNative(String nativeStr,                                                        DataFlavor flavor)  {    if ((nativeStr == null) || (flavor == null))      throw new NullPointerException();    List flavors = (List) nativeToFlavorMap.get(nativeStr);    if (flavors == null)       {        flavors = new ArrayList();        nativeToFlavorMap.put(nativeStr, flavors);      }    else      {        if (! flavors.contains(flavor))          flavors.add(flavor);      }  }    /**   * Adds a mapping from the specified <code>DataFlavor</code> (and all   * <code>DataFlavor</code>s equal to the specified <code>DataFlavor</code>)   * to the specified <code>String</code> native.   * Unlike <code>getNativesForFlavor</code>, the mapping will only be   * established in one direction, and the native will not be encoded. To   * establish a two-way mapping, call   * <code>addFlavorForUnencodedNative</code> as well. The new mapping will    * be of lower priority than any existing mapping.   * This method has no effect if a mapping from the specified or equal   * <code>DataFlavor</code> to the specified <code>String</code> native   * already exists.   *   * @param flavor the <code>DataFlavor</code> key for the mapping   * @param nativeStr the <code>String</code> native value for the mapping   * @throws NullPointerException if flav or nat is <code>null</code>   *   * @see #addFlavorForUnencodedNative   * @since 1.4   */  public synchronized void addUnencodedNativeForFlavor(DataFlavor flavor,                                                       String nativeStr)   {    if ((nativeStr == null) || (flavor == null))      throw new NullPointerException();    List natives = (List) flavorToNativeMap.get(flavor);    if (natives == null)       {        natives = new ArrayList();        flavorToNativeMap.put(flavor, natives);      }    else      {        if (! natives.contains(nativeStr))          natives.add(nativeStr);      }  }    /**   * Discards the current mappings for the specified <code>DataFlavor</code>   * and all <code>DataFlavor</code>s equal to the specified   * <code>DataFlavor</code>, and creates new mappings to the    * specified <code>String</code> natives.   * Unlike <code>getNativesForFlavor</code>, the mappings will only be   * established in one direction, and the natives will not be encoded. To   * establish two-way mappings, call <code>setFlavorsForNative</code>   * as well. The first native in the array will represent the highest   * priority mapping. Subsequent natives will represent mappings of   * decreasing priority.   * <p>   * If the array contains several elements that reference equal   * <code>String</code> natives, this method will establish new mappings   * for the first of those elements and ignore the rest of them.   * <p>    * It is recommended that client code not reset mappings established by the   * data transfer subsystem. This method should only be used for   * application-level mappings.   *   * @param flavor the <code>DataFlavor</code> key for the mappings   * @param natives the <code>String</code> native values for the mappings   * @throws NullPointerException if flav or natives is <code>null</code>   *         or if natives contains <code>null</code> elements   *   * @see #setFlavorsForNative   * @since 1.4   */  public synchronized void setNativesForFlavor(DataFlavor flavor,                                               String[] natives)   {    if ((natives == null) || (flavor == null))      throw new NullPointerException();        flavorToNativeMap.remove(flavor);    for (int i = 0; i < natives.length; i++)       {        addUnencodedNativeForFlavor(flavor, natives[i]);      }  }    /**   * Discards the current mappings for the specified <code>String</code>   * native, and creates new mappings to the specified   * <code>DataFlavor</code>s. Unlike <code>getFlavorsForNative</code>, the   * mappings will only be established in one direction, and the natives need   * not be encoded. To establish two-way mappings, call   * <code>setNativesForFlavor</code> as well. The first   * <code>DataFlavor</code> in the array will represent the highest priority   * mapping. Subsequent <code>DataFlavor</code>s will represent mappings of   * decreasing priority.   * <p>   * If the array contains several elements that reference equal   * <code>DataFlavor</code>s, this method will establish new mappings   * for the first of those elements and ignore the rest of them.   * <p>   * It is recommended that client code not reset mappings established by the   * data transfer subsystem. This method should only be used for   * application-level mappings.   *   * @param nativeStr the <code>String</code> native key for the mappings   * @param flavors the <code>DataFlavor</code> values for the mappings   * @throws NullPointerException if nat or flavors is <code>null</code>   *         or if flavors contains <code>null</code> elements   *   * @see #setNativesForFlavor   * @since 1.4   */  public synchronized void setFlavorsForNative(String nativeStr,                                               DataFlavor[] flavors)   {    if ((nativeStr == null) || (flavors == null))      throw new NullPointerException();        nativeToFlavorMap.remove(nativeStr);    for (int i = 0; i < flavors.length; i++)       {        addFlavorForUnencodedNative(nativeStr, flavors[i]);      }  }} // class SystemFlavorMap

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?