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 ClassLoaders to + * SystemFlavorMaps. */ - 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; + } } /**