private void setDefaultPolicy() { // Assumption: If the configuration that we initialize with // has a MANAGED_ONLY policy, then all sites should have default policy // of MANAGED_ONLY. ISiteEntry[] sentries = getConfiguredSites(); if (sentries != null && sentries.length > 0) { int policyType = sentries[0].getSitePolicy().getType(); if (policyType == ISitePolicy.MANAGED_ONLY) { defaultPolicy = policyType; } } }
private static void createConfigurationEntries(IPlatformConfiguration config, ArrayList<LocalSite> sites) throws MalformedURLException { for (int i = 0; i < sites.size(); i++) { LocalSite localSite = sites.get(i); String[] plugins = localSite.getRelativePluginList(); int policy = IPlatformConfiguration.ISitePolicy.USER_INCLUDE; IPlatformConfiguration.ISitePolicy sitePolicy = config.createSitePolicy(policy, plugins); IPlatformConfiguration.ISiteEntry siteEntry = config.createSiteEntry(localSite.getURL(), sitePolicy); config.configureSite(siteEntry); } config.isTransient(true); }
@Override public synchronized void unconfigureFeatureEntry(IFeatureEntry entry) { if (entry == null) return; String key = entry.getFeatureIdentifier(); if (key == null) return; config.unconfigureFeatureEntry(entry); }
/** * * @param config * @param features true for features false for plugins * @return URLs for features or plugins on the site */ private static URL[] getExtensionPluginURLs(IPlatformConfiguration config, boolean features) { ArrayList<URL> extensionPlugins = new ArrayList<>(); IPlatformConfiguration.ISiteEntry[] sites = config.getConfiguredSites(); for (int i = 0; i < sites.length; i++) { URL url = sites[i].getURL(); if ("file".equalsIgnoreCase(url.getProtocol())) { //$NON-NLS-1$ String[] entries; if (features) entries = sites[i].getFeatures(); else entries = sites[i].getPlugins(); for (int j = 0; j < entries.length; j++) { try { extensionPlugins.add(new File(url.getFile(), entries[j]).toURL()); } catch (MalformedURLException e) { } } } } return extensionPlugins.toArray(new URL[extensionPlugins.size()]); }
public static URL[] getPluginPaths(String platformHome) { if (new Path(platformHome).equals(new Path(TargetPlatform.getDefaultLocation())) && !isDevLaunchMode()) return ConfiguratorUtils.getCurrentPlatformConfiguration().getPluginPath(); File file = new File(platformHome, "configuration/org.eclipse.update/platform.xml"); //$NON-NLS-1$ if (file.exists()) { try { String value = new Path(platformHome).toFile().toURL().toExternalForm(); System.setProperty(URL_PROPERTY, value); try { IPlatformConfiguration config = ConfiguratorUtils.getPlatformConfiguration(file.toURL()); return getConfiguredSitesPaths(platformHome, config, false); } finally { System.setProperty(URL_PROPERTY, EMPTY_STRING); } } catch (MalformedURLException e) { } catch (IOException e) { } } return scanLocations(getSites(platformHome, false)); }
public IPluginModelBase findPluginInHost(String id) { if (registryPlugins == null) { URL[] pluginPaths = ConfiguratorUtils.getCurrentPlatformConfiguration().getPluginPath(); PDEState state = new PDEState(pluginPaths, false, new NullProgressMonitor()); registryPlugins = state.getTargetModels(); } for (int i = 0; i < registryPlugins.length; i++) { if (registryPlugins[i].getPluginBase().getId().equals(id)) return registryPlugins[i]; } return null; }
@Override public synchronized void unconfigureSite(ISiteEntry entry) { if (entry == null) return; URL url = entry.getURL(); if (url == null) return; String key = url.toExternalForm(); if (entry instanceof SiteEntry) config.removeSiteEntry(key); }
public Set<String> getPluginPaths() { HashSet<String> paths = new HashSet<>(); ISiteEntry[] sites = getConfiguredSites(); for (int i = 0; i < sites.length; i++) { String[] plugins = sites[i].getPlugins(); for (int j = 0; j < plugins.length; j++) { paths.add(plugins[j]); } } return paths; }
private long computePluginsChangeStamp() { if (pluginsChangeStampIsValid) return pluginsChangeStamp; long result = 0; ISiteEntry[] sites = config.getSites(); for (int i = 0; i < sites.length; i++) { result = Math.max(result, sites[i].getPluginsChangeStamp()); } pluginsChangeStamp = result; pluginsChangeStampIsValid = true; return pluginsChangeStamp; }
private long computeFeaturesChangeStamp() { if (featuresChangeStampIsValid) return featuresChangeStamp; long result = 0; ISiteEntry[] sites = config.getSites(); for (int i = 0; i < sites.length; i++) { result = Math.max(result, sites[i].getFeaturesChangeStamp()); } featuresChangeStamp = result; featuresChangeStampIsValid = true; return featuresChangeStamp; }
@Override public synchronized void refresh() { // Reset computed values. Will be lazily refreshed // on next access ISiteEntry[] sites = getConfiguredSites(); for (int i = 0; i < sites.length; i++) { if (sites[i].isUpdateable()) { // reset site entry ((SiteEntry) sites[i]).refresh(); } } }
/** * Returns the current platform configuration. This method replaces the one we used * to call on BootLoader. * * @return platform configuration used in current instance of platform * @since 3.0 */ public static IPlatformConfiguration getCurrentPlatformConfiguration() { // acquire factory service first BundleContext context = ConfigurationActivator.getBundleContext(); ServiceReference<IPlatformConfigurationFactory> configFactorySR = context.getServiceReference(IPlatformConfigurationFactory.class); if (configFactorySR == null) throw new IllegalStateException(); IPlatformConfigurationFactory configFactory = context.getService(configFactorySR); if (configFactory == null) throw new IllegalStateException(); // get the configuration using the factory IPlatformConfiguration currentConfig = configFactory.getCurrentPlatformConfiguration(); context.ungetService(configFactorySR); return currentConfig; }
/** * Returns a platform configuration object, optionally initialized with previously saved * configuration information. We will use this method instead of the old one in BootLoader. * * @param url location of previously save configuration information. If <code>null</code> * is specified, an empty configuration object is returned * @return platform configuration used in current instance of platform */ public static IPlatformConfiguration getPlatformConfiguration(URL url) throws IOException { // acquire factory service first BundleContext context = ConfigurationActivator.getBundleContext(); ServiceReference<IPlatformConfigurationFactory> configFactorySR = context.getServiceReference(IPlatformConfigurationFactory.class); if (configFactorySR == null) throw new IllegalStateException(); IPlatformConfigurationFactory configFactory = context.getService(configFactorySR); if (configFactory == null) throw new IllegalStateException(); // get the configuration using the factory IPlatformConfiguration config = configFactory.getPlatformConfiguration(url); context.ungetService(configFactorySR); return config; }
@Override public String getPrimaryFeatureIdentifier() { // Return the product if defined in system properties String primaryFeatureId = ConfigurationActivator.getBundleContext().getProperty(ECLIPSE_PRODUCT); if (primaryFeatureId != null) { // check if feature exists IFeatureEntry feature = findConfiguredFeatureEntry(primaryFeatureId); if (feature != null && feature.canBePrimary()) return primaryFeatureId; } return null; }
public String getApplicationIdentifier() { // Return the app if defined in system properties String application = ConfigurationActivator.getBundleContext().getProperty(ECLIPSE_APPLICATION); if (application != null) return application; // Otherwise, try to get it from the primary feature (aka product) String feature = getPrimaryFeatureIdentifier(); // lookup application for feature (specified or defaulted) if (feature != null) { IFeatureEntry fe = findConfiguredFeatureEntry(feature); if (fe != null) { if (fe.getFeatureApplication() != null) return fe.getFeatureApplication(); } } // return hardcoded default if we failed return DEFAULT_FEATURE_APPLICATION; }
/** * * @param config * @param features true for features false for plugins * @return URLs for features or plugins on the site */ private static URL[] getExtensionPluginURLs(IPlatformConfiguration config, boolean features) { ArrayList extensionPlugins = new ArrayList(); IPlatformConfiguration.ISiteEntry[] sites = config.getConfiguredSites(); for (int i = 0; i < sites.length; i++) { URL url = sites[i].getURL(); if ("file".equalsIgnoreCase(url.getProtocol())) { //$NON-NLS-1$ String[] entries; if(features) entries = sites[i].getFeatures(); else entries = sites[i].getPlugins(); for (int j = 0; j < entries.length; j++) { try { extensionPlugins.add(new File(url.getFile(), entries[j]).toURL()); } catch (MalformedURLException e) { } } } } return (URL[]) extensionPlugins.toArray(new URL[extensionPlugins.size()]); }
private static void createConfigurationEntries( IPlatformConfiguration config, ArrayList sites) throws CoreException, MalformedURLException { for (int i = 0; i < sites.size(); i++) { LocalSite localSite = (LocalSite) sites.get(i); String[] plugins = localSite.getRelativePluginList(); int policy = IPlatformConfiguration.ISitePolicy.USER_INCLUDE; IPlatformConfiguration.ISitePolicy sitePolicy = config.createSitePolicy(policy, plugins); IPlatformConfiguration.ISiteEntry siteEntry = config.createSiteEntry(localSite.getURL(), sitePolicy); config.configureSite(siteEntry); } config.isTransient(true); }
public IPluginModelBase findPluginInHost(String id) { if (registryPlugins == null) { URL[] pluginPaths = ConfiguratorUtils.getCurrentPlatformConfiguration().getPluginPath(); PDEState state = new PDEState(pluginPaths, false, false, new NullProgressMonitor()); registryPlugins = state.getTargetModels(); } for (int i = 0; i < registryPlugins.length; i++) { if (registryPlugins[i].getPluginBase().getId().equals(id)) return registryPlugins[i]; } return null; }
@Override public synchronized void configureSite(ISiteEntry entry, boolean replace) { if (entry == null) return; URL url = entry.getURL(); if (url == null) return; String key = url.toExternalForm(); if (config.getSiteEntry(key) != null && !replace) return; if (entry instanceof SiteEntry) config.addSiteEntry(key, (SiteEntry) entry); }
public boolean unconfigureFeatureEntry(IFeatureEntry feature) { FeatureEntry existingFeature = getFeatureEntry(feature.getFeatureIdentifier()); if (existingFeature != null) featureEntries.remove(existingFeature.getFeatureIdentifier()); return existingFeature != null; }