langtools/src/share/classes/javax/tools/ToolProvider.java
changeset 22163 3651128c74eb
parent 14545 2e7bab0639b8
child 22165 ec53c8946fc2
equal deleted inserted replaced
22162:3b3e23e67329 22163:3651128c74eb
   143         return instance;
   143         return instance;
   144     }
   144     }
   145 
   145 
   146     // Cache for tool classes.
   146     // Cache for tool classes.
   147     // Use weak references to avoid keeping classes around unnecessarily
   147     // Use weak references to avoid keeping classes around unnecessarily
   148     private Map<String, Reference<Class<?>>> toolClasses = new HashMap<String, Reference<Class<?>>>();
   148     private Map<String, Reference<Class<?>>> toolClasses = new HashMap<>();
   149 
   149 
   150     // Cache for tool classloader.
   150     // Cache for tool classloader.
   151     // Use a weak reference to avoid keeping it around unnecessarily
   151     // Use a weak reference to avoid keeping it around unnecessarily
   152     private Reference<ClassLoader> refToolClassLoader = null;
   152     private Reference<ClassLoader> refToolClassLoader = null;
   153 
   153 
   171             try {
   171             try {
   172                 c = findSystemToolClass(name);
   172                 c = findSystemToolClass(name);
   173             } catch (Throwable e) {
   173             } catch (Throwable e) {
   174                 return trace(WARNING, e);
   174                 return trace(WARNING, e);
   175             }
   175             }
   176             toolClasses.put(name, new WeakReference<Class<?>>(c));
   176             toolClasses.put(name, new WeakReference<>(c));
   177         }
   177         }
   178         return c.asSubclass(clazz);
   178         return c.asSubclass(clazz);
   179     }
   179     }
   180 
   180 
   181     private static final String[] defaultToolsLocation = { "lib", "tools.jar" };
   181     private static final String[] defaultToolsLocation = { "lib", "tools.jar" };
   205 
   205 
   206                 URL[] urls = { file.toURI().toURL() };
   206                 URL[] urls = { file.toURI().toURL() };
   207                 trace(FINE, urls[0].toString());
   207                 trace(FINE, urls[0].toString());
   208 
   208 
   209                 cl = URLClassLoader.newInstance(urls);
   209                 cl = URLClassLoader.newInstance(urls);
   210                 refToolClassLoader = new WeakReference<ClassLoader>(cl);
   210                 refToolClassLoader = new WeakReference<>(cl);
   211             }
   211             }
   212 
   212 
   213             return Class.forName(toolClassName, false, cl);
   213             return Class.forName(toolClassName, false, cl);
   214         }
   214         }
   215     }
   215     }