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.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(P2Eclipse35Activator.getDefault(), e.getMessage(), e); } } private static boolean contains(URI[] existingMetaRepos, URI updateSiteURI) { if (existingMetaRepos == null) { return false; } for (int i = 0; i < existingMetaRepos.length; ++i) { if (existingMetaRepos[i].equals(updateSiteURI)) { return true; } } return false; } }