41 |
import java.util.HashMap; |
import java.util.HashMap; |
42 |
import java.util.List; |
import java.util.List; |
43 |
import java.util.Map; |
import java.util.Map; |
44 |
|
import java.util.WeakHashMap; |
45 |
|
|
46 |
/** |
/** |
47 |
* This class maps between native platform type names and DataFlavors. |
* This class maps between native platform type names and DataFlavors. |
55 |
public final class SystemFlavorMap implements FlavorMap, FlavorTable |
public final class SystemFlavorMap implements FlavorMap, FlavorTable |
56 |
{ |
{ |
57 |
/** |
/** |
58 |
* The default (instance) flavor map. |
* The map which maps the thread's <code>ClassLoaders</code> to |
59 |
|
* <code>SystemFlavorMaps</code>. |
60 |
*/ |
*/ |
61 |
private static FlavorMap defaultFlavorMap; |
private static final Map systemFlavorMaps = new WeakHashMap(); |
62 |
|
|
63 |
/** |
/** |
64 |
* Private constructor. |
* Private constructor. |
100 |
} |
} |
101 |
|
|
102 |
/** |
/** |
103 |
* Returns the default (instance) (System)FlavorMap. |
* Returns the (System)FlavorMap for the current thread's |
104 |
|
* ClassLoader. |
105 |
*/ |
*/ |
106 |
public static FlavorMap getDefaultFlavorMap () |
public static FlavorMap getDefaultFlavorMap () |
107 |
{ |
{ |
108 |
if (defaultFlavorMap == null) |
ClassLoader classLoader = Thread.currentThread() |
109 |
defaultFlavorMap = new SystemFlavorMap (); |
.getContextClassLoader(); |
110 |
|
|
111 |
return defaultFlavorMap; |
//if ContextClassLoader not set, use system default |
112 |
|
if(classLoader == null) |
113 |
|
{ |
114 |
|
classLoader = ClassLoader.getSystemClassLoader(); |
115 |
|
} |
116 |
|
|
117 |
|
synchronized(systemFlavorMaps) |
118 |
|
{ |
119 |
|
FlavorMap map = (FlavorMap) |
120 |
|
systemFlavorMaps.get(classLoader); |
121 |
|
if(map == null) |
122 |
|
{ |
123 |
|
map = new SystemFlavorMap(); |
124 |
|
systemFlavorMaps.put(classLoader, map); |
125 |
|
} |
126 |
|
return map; |
127 |
|
} |
128 |
} |
} |
129 |
|
|
130 |
/** |
/** |