Hi,

I seem to have checked in an old version of DataFlavor which didn't compile
at all. Here is the diff to the new version. Sorry.

Mark
Index: java/awt/datatransfer/DataFlavor.java
===================================================================
RCS file: /cvs/classpath/java/awt/datatransfer/DataFlavor.java,v
retrieving revision 1.4
diff -u -u -r1.4 DataFlavor.java
--- java/awt/datatransfer/DataFlavor.java       2001/01/12 13:48:32     1.4
+++ java/awt/datatransfer/DataFlavor.java       2001/01/14 22:49:53
@@ -20,10 +20,12 @@
 
 package java.awt.datatransfer;
 
+import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
 import java.io.ObjectOutput;
 import java.io.ObjectInput;
-import java.io.IOException;
 import java.io.Reader;
 import java.io.StringReader;
 import java.io.UnsupportedEncodingException;
@@ -91,22 +93,21 @@
 
 static
 {
-  plainTextFlavor = new DataFlavor();
-  plainTextFlavor.representationClass = java.io.InputStream.class;
-  plainTextFlavor.mimeType = "text/plain; charset=unicode";
-  plainTextFlavor.humanPresentableName = "plain unicode text";
-
-  stringFlavor = new DataFlavor();
-  stringFlavor.representationClass = java.lang.String.class;
-  stringFlavor.mimeType = javaSerializedObjectMIMEType
-                          + "; class=java.lang.String";
-  stringFlavor.humanPresentableName = "Java Unicode String";
-
-  javaFileListFlavor = new DataFlavor();
-  javaFileListFlavor.representationClass = java.util.List.class;
-  javaFileListFlavor.mimeType = javaSerializedObjectMIMEType
-                                + "; class=java.util.list";
+  plainTextFlavor
+      = new DataFlavor(java.io.InputStream.class,
+                      "text/plain; charset=unicode",
+                      "plain unicode text");
+
+  stringFlavor
+      = new DataFlavor(java.lang.String.class,
+                      "Java Unicode String");
+
+  javaFileListFlavor
+      = new DataFlavor(java.util.List.class,
+                      "Java File List");
+
   // javaFileListFlavor.mimeType = "application/x-java-file-list";
+}
 
 /*************************************************************************/
 
@@ -192,6 +193,27 @@
 public
 DataFlavor()
 {
+    mimeType = null;
+    representationClass = null;
+    humanPresentableName = null;
+}
+
+/*************************************************************************/
+
+/**
+  * Private constructor.
+  */
+private
+DataFlavor(Class representationClass,
+          String mimeType,
+          String humanPresentableName)
+{
+    this.representationClass = representationClass;
+    this.mimeType = mimeType;
+    if (humanPresentableName != null)
+       this.humanPresentableName = humanPresentableName;
+    else
+       this.humanPresentableName = mimeType;
 }
 
 /*************************************************************************/
@@ -209,13 +231,11 @@
 public
 DataFlavor(Class representationClass, String humanPresentableName)
 {
-  this.representationClass = representationClass;
-  this.humanPresentableName = humanPresentableName;
-  mimeType = "application/x-java-serialized-object"
-             + "; class="
-             + representationClass.getName();
-  if (this.humanPresentableName == null)
-    this.humanPresentableName = mimeType;
+    this(representationClass,
+       "application/x-java-serialized-object"
+       + "; class="
+       + representationClass.getName(),
+       humanPresentableName);
 }
 
 /*************************************************************************/
@@ -241,26 +261,29 @@
 DataFlavor(String mimeType, String humanPresentableName, 
            ClassLoader classLoader) throws ClassNotFoundException
 {
-  this.mimeType = mimeType;
-  if (humanPresentableName != null)
-    this.humanPresentableName = humanPresentableName;
-  else
-    this.humanPresentableName = mimeType;
+  this(getRepresentationClassFromMime(mimeType, classLoader),
+       mimeType, humanPresentableName);
+}
 
-  String classname = getParameter("class");
-  if (className == null)
-    representationClass = java.io.InputStream.class;
-  else
+private static Class
+getRepresentationClassFromMime(String mimeString, ClassLoader classLoader)
+{
+  String classname = getParameter("class", mimeString);
+  if (classname != null)
     {
       try
         {
-          representationClass = tryToLoadClass(classname, classLoader);
+          return tryToLoadClass(classname, classLoader);
         }
       catch(Exception e)
         {
           throw new IllegalArgumentException("classname: " + e.getMessage());
         }
     }
+  else
+    {
+      return java.io.InputStream.class;
+    }
 }
 
 /*************************************************************************/
@@ -394,20 +417,22 @@
 
 /**
   * Returns the value of the named MIME type parameter, or <code>null</code>
-  * if the parameter does not exist.
+  * if the parameter does not exist. Given the parameter name and the mime
+  * string.
   *
-  * @param paramName The name of the paramter.
+  * @param paramName The name of the parameter.
+  * @param mimeString The mime string from where the name should be found.
   *
-  * @return The value of the parameter.
+  * @return The value of the parameter or null.
   */
-public String
-getParameter(String paramName)
+private static String
+getParameter(String paramName, String mimeString)
 {
-  int idx = mimeType.indexOf(paramName + "=");
+  int idx = mimeString.indexOf(paramName + "=");
   if (idx == -1)
     return(null);
 
-  String value = mimeType.substring(idx + paramName.length() + 2);
+  String value = mimeString.substring(idx + paramName.length() + 2);
 
   idx = value.indexOf(" ");
   if (idx == -1)
@@ -417,6 +442,21 @@
 }
 
 /*************************************************************************/
+/**
+  * Returns the value of the named MIME type parameter, or <code>null</code>
+  * if the parameter does not exist.
+  *
+  * @param paramName The name of the paramter.
+  *
+  * @return The value of the parameter.
+  */
+public String
+getParameter(String paramName)
+{
+  return getParameter(paramName, mimeType);
+}
+
+/*************************************************************************/
 
 /**
   * Sets the human presentable name to the specified value.
@@ -800,6 +840,8 @@
 
 /**
   * XXX - Currently returns <code>java.io.InputStream</code>.
+  *
+  * @since 1.3
   */
 public static final Class
 getDefaultRepresentationClass()
@@ -814,7 +856,7 @@
 public static final String
 getDefaultRepresentationClassAsString()
 {
-  return(getDefaultRepresentationClass.getName());
+  return(getDefaultRepresentationClass().getName());
 }
 
 /*************************************************************************/
@@ -836,9 +878,17 @@
     {
       DataFlavor df = availableFlavors[i];
       Class c = df.representationClass;
-      if ((c instanceof Reader) || (c instanceof String))
-        return df;
-      if ((c instanceof InputStream) && ("text".equals(df.getPrimaryType()))
+
+      // A Reader or String is good.
+      if ((Reader.class.isAssignableFrom(c))
+         || (String.class.isAssignableFrom(c)))
+       {
+         return df;
+       }
+
+      // A InputStream is good if the mime primary type is "text"
+      if ((InputStream.class.isAssignableFrom(c))
+         && ("text".equals(df.getPrimaryType())))
         {
           String encoding = availableFlavors[i].getParameter("charset");
           if (encoding == null)
@@ -848,9 +898,9 @@
             {
               // Try to construct a dummy reader with the found encoding
               r = new InputStreamReader
-                    (new ByteArrayInputStream(new byte[0]), encoding));
+                    (new ByteArrayInputStream(new byte[0]), encoding);
             }
-          catch(UnsupportedEncodingException) { /* ignore */ }
+          catch(UnsupportedEncodingException uee) { /* ignore */ }
           if (r != null)
             return df;
         }
@@ -888,26 +938,26 @@
                                                    IOException,
                                                    UnsupportedEncodingException
 {
-    if (!transferable.isDataFlavorSupported(this)
-        throw UnsupportedFlavorException(this);
+    if (!transferable.isDataFlavorSupported(this))
+        throw new UnsupportedFlavorException(this);
 
-    if (representationClass instanceof Reader)
+    if (Reader.class.isAssignableFrom(representationClass))
         return((Reader)transferable.getTransferData(this));
 
-    if (representationClass instanceof String)
-        return(StringReader((String)transferable.getTransferData(this)));
+    if (String.class.isAssignableFrom(representationClass))
+        return(new StringReader((String)transferable.getTransferData(this)));
 
-    if ((representationClass instanceof InputStream)
-        && "text".equals(getPrimaryType())
+    if (InputStream.class.isAssignableFrom(representationClass)
+        && "text".equals(getPrimaryType()))
       {
         InputStream in = (InputStream)transferable.getTransferData(this);
         String encoding = getParameter("charset");
         if (encoding == null)
             encoding = "us-ascii";
-        return(InputStreamReader(in, encoding));
+        return(new InputStreamReader(in, encoding));
       }
 
-    throw UnsupportedFlavorException(this);
+    throw new UnsupportedFlavorException(this);
 }
 
 } // class DataFlavor

Reply via email to