I started to replace the dummy implementation of
java.awt.datatransfer.SystemFlavorMap. I hope that I'm able to add the
last 4 missing methods in java.awt.datatransfer soon.

2005-11-26  Jan Roehrich  <[EMAIL PROTECTED]>

        * java/awt/datatransfer/SystemFlavorMap.java
        (defaultFlavorMap): removed.
        (systemFlavorMaps): added static field.
        (getDefaultFlavorMap): reimplemented using systemFlavorMaps.


Index: SystemFlavorMap.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/awt/datatransfer/SystemFlavorMap.java,v
retrieving revision 1.6
diff -u -r1.6 SystemFlavorMap.java
--- SystemFlavorMap.java	2 Jul 2005 20:32:26 -0000	1.6
+++ SystemFlavorMap.java	25 Nov 2005 22:06:23 -0000
@@ -41,6 +41,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.WeakHashMap;
 
 /**
   * This class maps between native platform type names and DataFlavors.
@@ -54,9 +55,10 @@
 public final class SystemFlavorMap implements FlavorMap, FlavorTable
 {
   /**
-   * The default (instance) flavor map.
+   * The map which maps the thread's <code>ClassLoaders</code> to 
+   * <code>SystemFlavorMaps</code>.
    */
-  private static FlavorMap defaultFlavorMap;
+  private static final Map systemFlavorMaps = new WeakHashMap();
 
   /**
    * Private constructor.
@@ -98,14 +100,31 @@
   }
 
   /**
-   * Returns the default (instance) (System)FlavorMap.
+   * Returns the (System)FlavorMap for the current thread's
+   * ClassLoader.
    */
   public static FlavorMap getDefaultFlavorMap ()
   {
-    if (defaultFlavorMap == null)
-      defaultFlavorMap = new SystemFlavorMap ();
-
-    return defaultFlavorMap;
+    ClassLoader classLoader = Thread.currentThread()
+        .getContextClassLoader();
+    
+    //if ContextClassLoader not set, use system default 
+    if(classLoader == null)
+      {
+        classLoader = ClassLoader.getSystemClassLoader();
+      }
+    
+    synchronized(systemFlavorMaps)
+      {
+        FlavorMap map = (FlavorMap) 
+            systemFlavorMaps.get(classLoader);
+        if(map == null) 
+          {
+            map = new SystemFlavorMap();
+            systemFlavorMaps.put(classLoader, map);
+          }
+        return map;
+      }
   }
 
   /**

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

_______________________________________________
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to