/** * Get a list of all currently installed extensions. This doesn't include core extensions, only custom extensions * installed by the administrators. * * @return a list of read-only handlers corresponding to the installed extensions, an empty list if nothing is * installed */ public Collection<InstalledExtension> getInstalledExtensions() { return safe(this.installedExtensionRepository.getInstalledExtensions()); }
/** * Return all the extensions available for the provide namespace. This also include root extension since namespaces * inherit from root. * <p> * This doesn't include core extensions, only extension installed through the API. * * @param namespace the target namespace for which to retrieve the list of installed extensions * @return a list of read-only handlers corresponding to the installed extensions, an empty list if nothing is * installed in the target namespace */ public Collection<InstalledExtension> getInstalledExtensions(String namespace) { return safe(this.installedExtensionRepository.getInstalledExtensions(namespace)); }
@Override public void initialize(String namespaceToInitialize, String type) { Map<String, Set<InstalledExtension>> initializedExtensions = new HashMap<>(); // Load extensions from local repository Collection<InstalledExtension> installedExtensions; if (namespaceToInitialize != null) { installedExtensions = this.installedExtensionRepository.getInstalledExtensions(namespaceToInitialize); } else { installedExtensions = this.installedExtensionRepository.getInstalledExtensions(); } for (InstalledExtension installedExtension : installedExtensions) { if (type == null || type.equals(installedExtension.getType())) { try { initializeExtension(installedExtension, namespaceToInitialize, initializedExtensions); } catch (Throwable t) { this.logger.error("Failed to initialize local extension [{}]", installedExtension.getId(), t); } } } }
@Override public Collection<InstalledExtension> getInstalledExtensions(String namespace) { return safe(getWrapped().getInstalledExtensions(namespace)); }
@Override public Collection<InstalledExtension> getInstalledExtensions() { return safe(getWrapped().getInstalledExtensions()); }
protected Collection<InstalledExtension> getInstalledExtensions() { Collection<ExtensionId> requestExtensions = getRequest().getExtensions(); Collection<InstalledExtension> installedExtensions; if (requestExtensions != null && !requestExtensions.isEmpty()) { installedExtensions = new ArrayList<>(requestExtensions.size()); for (ExtensionId requestExtension : requestExtensions) { InstalledExtension installedExtension = this.installedExtensionRepository.getInstalledExtension(requestExtension); installedExtensions.add(installedExtension); } } else { installedExtensions = this.installedExtensionRepository.getInstalledExtensions(); } return installedExtensions; }
@Override public Map<String, Object> provideData() { Collection<InstalledExtension> installedExtensions = this.extensionRepository.getInstalledExtensions(); JSONObject[] extensions = new JSONObject[installedExtensions.size()]; Iterator<InstalledExtension> it = installedExtensions.iterator(); int i = 0; while (it.hasNext()) { InstalledExtension extension = it.next(); Map<String, Object> extensionMap = new HashMap<>(); extensionMap.put(PROPERTY_ID, extension.getId().getId()); extensionMap.put(PROPERTY_VERSION, extension.getId().getVersion().toString()); extensionMap.put(PROPERTY_FEATURES, extension.getFeatures().toArray()); extensions[i] = new JSONObject(extensionMap); i++; } return Collections.singletonMap(PROPERTY_EXTENSIONS, (Object) extensions); } }
protected Collection<InstalledExtension> getInstalledExtensions(String namespace) { Collection<ExtensionId> requestExtensions = getRequest().getExtensions(); Collection<InstalledExtension> installedExtensions; if (requestExtensions != null && !requestExtensions.isEmpty()) { installedExtensions = new ArrayList<>(requestExtensions.size()); for (ExtensionId requestExtension : requestExtensions) { InstalledExtension installedExtension = this.installedExtensionRepository.getInstalledExtension(requestExtension); if (installedExtension.isInstalled(namespace)) { installedExtensions.add(installedExtension); } } } else { installedExtensions = this.installedExtensionRepository.getInstalledExtensions(namespace); } return installedExtensions; }
private void getInstalledExtensions(String feature, Set<InstalledExtension> installedExtensions) { for (InstalledExtension installedExtension : this.installedExtensionRepository.getInstalledExtensions()) { // Check id if (installedExtension.getId().getId().equals(feature)) { installedExtensions.add(installedExtension); continue; } // Check features for (ExtensionId installedFeature : installedExtension.getExtensionFeatures()) if (installedFeature.getId().equals(feature)) { installedExtensions.add(installedExtension); break; } } } }
private void unloadJARsFromNamespace(String namespace, Map<String, Set<InstalledExtension>> unloadedExtensions) { Map<String, Set<InstalledExtension>> unloadedExtensionsMap = unloadedExtensions; if (unloadedExtensionsMap == null) { unloadedExtensionsMap = new HashMap<>(); } // Load extensions from local repository Collection<InstalledExtension> installedExtensions; if (namespace != null) { installedExtensions = this.installedExtensionRepository.getInstalledExtensions(namespace); } else { installedExtensions = this.installedExtensionRepository.getInstalledExtensions(); } for (InstalledExtension installedExtension : installedExtensions) { if (JarExtensionHandler.isSupported(installedExtension.getType())) { if (namespace == null || !installedExtension.isInstalled(null)) { try { unloadJAR(installedExtension, namespace, unloadedExtensionsMap); } catch (Exception e) { this.logger.error("Failed to unload installed extension [{}]", installedExtension, e); } } } } }
@Override public void initialize() throws InitializationException { // Load installed extensions for (InstalledExtension extension : this.installedRepository.getInstalledExtensions()) { if (extension.getType().equals(EXTENSION_TYPE)) { if (extension.isInstalled(null)) { extensionAdded(extension, null); } else { for (String namespace : extension.getNamespaces()) { extensionAdded(extension, namespace); } } } } }