@Override @SuppressWarnings("unchecked") public <T> List<ExtensionWrapper<T>> find(Class<T> type) { log.debug("Finding extensions of extension point '{}'", type.getName()); Map<String, Set<String>> entries = getEntries(); List<ExtensionWrapper<T>> result = new ArrayList<>(); // add extensions found in classpath and plugins for (String pluginId : entries.keySet()) { // classpath's extensions <=> pluginId = null List<ExtensionWrapper<T>> pluginExtensions = find(type, pluginId); result.addAll(pluginExtensions); } if (entries.isEmpty()) { log.debug("No extensions found for extension point '{}'", type.getName()); } else { log.debug("Found {} extensions for extension point '{}'", result.size(), type.getName()); } // sort by "ordinal" property Collections.sort(result); return result; }
private Map<String, Set<String>> readStorages() { Map<String, Set<String>> result = new LinkedHashMap<>(); result.putAll(readClasspathStorages()); result.putAll(readPluginsStorages()); return result; }
private Map<String, Set<String>> getEntries() { if (entries == null) { entries = readStorages(); } return entries; }
Set<String> classNames = findClassNames(pluginId); if (classNames == null || classNames.isEmpty()) { return result; if (isCheckForExtensionDependencies()) { ExtensionInfo extensionInfo = getExtensionInfo(className, classLoader); if (extensionInfo == null) { log.error("No extension annotation was found for '{}'", className); ExtensionWrapper extensionWrapper = createExtensionWrapper(extensionClass); result.add(extensionWrapper); log.debug("Added extension '{}' with ordinal {}", className, extensionWrapper.getOrdinal()); log.trace("'{}' is not an extension for extension point '{}'", className, type.getName()); if (RuntimeMode.DEVELOPMENT.equals(pluginManager.getRuntimeMode())) { checkDifferentClassLoaders(type, extensionClass);
List<ExtensionWrapper> result = new ArrayList<>(); Set<String> classNames = findClassNames(pluginId); if (classNames.isEmpty()) { return result; Class<?> extensionClass = classLoader.loadClass(className); ExtensionWrapper extensionWrapper = createExtensionWrapper(extensionClass); result.add(extensionWrapper); log.debug("Added extension '{}' with ordinal {}", className, extensionWrapper.getOrdinal());
@Override public Set<String> findClassNames(String pluginId) { return getEntries().get(pluginId); }
Set<String> classNames = findClassNames(pluginId); if (classNames == null || classNames.isEmpty()) { return result; if (isCheckForExtensionDependencies()) { ExtensionInfo extensionInfo = getExtensionInfo(className, classLoader); if (extensionInfo == null) { log.error("No extension annotation was found for '{}'", className); ExtensionWrapper extensionWrapper = createExtensionWrapper(extensionClass); result.add(extensionWrapper); log.debug("Added extension '{}' with ordinal {}", className, extensionWrapper.getOrdinal()); log.trace("'{}' is not an extension for extension point '{}'", className, type.getName()); if (RuntimeMode.DEVELOPMENT.equals(pluginManager.getRuntimeMode())) { checkDifferentClassLoaders(type, extensionClass);
List<ExtensionWrapper> result = new ArrayList<>(); Set<String> classNames = findClassNames(pluginId); if (classNames.isEmpty()) { return result; Class<?> extensionClass = classLoader.loadClass(className); ExtensionWrapper extensionWrapper = createExtensionWrapper(extensionClass); result.add(extensionWrapper); log.debug("Added extension '{}' with ordinal {}", className, extensionWrapper.getOrdinal());
@Override public Set<String> findClassNames(String pluginId) { return getEntries().get(pluginId); }
private Map<String, Set<String>> readStorages() { Map<String, Set<String>> result = new LinkedHashMap<>(); result.putAll(readClasspathStorages()); result.putAll(readPluginsStorages()); return result; }
@Override @SuppressWarnings("unchecked") public <T> List<ExtensionWrapper<T>> find(Class<T> type) { log.debug("Finding extensions of extension point '{}'", type.getName()); Map<String, Set<String>> entries = getEntries(); List<ExtensionWrapper<T>> result = new ArrayList<>(); // add extensions found in classpath and plugins for (String pluginId : entries.keySet()) { // classpath's extensions <=> pluginId = null List<ExtensionWrapper<T>> pluginExtensions = find(type, pluginId); result.addAll(pluginExtensions); } if (entries.isEmpty()) { log.debug("No extensions found for extension point '{}'", type.getName()); } else { log.debug("Found {} extensions for extension point '{}'", result.size(), type.getName()); } // sort by "ordinal" property Collections.sort(result); return result; }
private Map<String, Set<String>> getEntries() { if (entries == null) { entries = readStorages(); } return entries; }