package com.aptana.ide.update; import java.net.URI; import org.eclipse.osgi.service.resolver.VersionRange; import org.eclipse.ui.IStartup; import org.osgi.framework.Version; import com.aptana.ide.core.IdeLog; import com.aptana.ide.core.PluginUtils; import com.aptana.ide.update.manager.IPluginManager; public class AddRepositoryStartup implements IStartup { private static final VersionRange versionRange = new VersionRange("[1.0.0,1.0.100)"); //$NON-NLS-1$ private static final String[] SITES = { "http://download.aptana.org/tools/studio/plugin/install/xul", //$NON-NLS-1$ "http://download.aptana.org/tools/studio/plugin/install/xul-eclipse" }; //$NON-NLS-1$ public void earlyStartup() { // Add the necessary update site. It is required to present when installing // Cloud plugin. try { String pluginVersionString = PluginUtils.getPluginVersion("org.eclipse.equinox.p2.core"); //$NON-NLS-1$ if (pluginVersionString == null) { return; } Version pluginVersion = new Version(pluginVersionString); if (versionRange.isIncluded(pluginVersion)) { IPluginManager pluginManager = Activator.getDefault().getPluginManager(); URI[] existingMetaRepos = pluginManager.getAllMetadataRepositories(); URI siteURL; for (String site : SITES) { siteURL = new URI(site); if (!contains(existingMetaRepos, siteURL)) { pluginManager.addUpdateSite(siteURL.toURL()); } } } } catch (Exception e) { IdeLog.logError(P2Activator.getDefault(), e.getMessage(), e); } } private static boolean contains(URI[] existingMetaRepos, URI updateSiteURL) { if (existingMetaRepos == null) return false; for (int i = 0; i < existingMetaRepos.length; i++) { if (existingMetaRepos[i].equals(updateSiteURL)) return true; } return false; } }