| /******************************************************************************* |
| * Copyright (c) 2000, 2010 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| * Laurent Fourrier (laurent@fourrier.nom.fr) - HTTP Proxy code and NetAccess Plugin |
| *******************************************************************************/ |
| package org.eclipse.update.core; |
| |
| import java.net.URL; |
| |
| import org.eclipse.core.net.proxy.IProxyData; |
| import org.eclipse.core.net.proxy.IProxyService; |
| import org.eclipse.core.runtime.*; |
| import org.eclipse.update.configuration.ILocalSite; |
| import org.eclipse.update.internal.core.InternalSiteManager; |
| import org.eclipse.update.internal.core.UpdateCore; |
| |
| /** |
| * Site Manager. |
| * A helper class used for creating site instance. |
| * Site manager is a singleton class. It cannot be instantiated; |
| * all functionality is provided by static methods. |
| * |
| * <p> |
| * <b>Note:</b> This class/interface is part of an interim API that is still under development and expected to |
| * change significantly before reaching stability. It is being made available at this early stage to solicit feedback |
| * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken |
| * (repeatedly) as the API evolves. |
| * </p> |
| * @see org.eclipse.update.core.ISite |
| * @see org.eclipse.update.configuration.ILocalSite |
| * @see org.eclipse.update.configuration.IConfiguredSite |
| * @since 2.0 |
| * @deprecated The org.eclipse.update component has been replaced by Equinox p2. |
| * This API will be deleted in a future release. See bug 311590 for details. |
| */ |
| public class SiteManager { |
| |
| private static String os; |
| private static String ws; |
| private static String arch; |
| private static String nl; |
| |
| private SiteManager() { |
| } |
| |
| /** |
| * Returns a site object for the site specified by the argument URL. |
| * Typically, the URL references a site manifest file on an update |
| * site. An update site acts as a source of features for installation |
| * actions. |
| * |
| * @param siteURL site URL |
| * @return site object for the url |
| * @exception CoreException |
| * @deprecated use getSite(URL,IPogressMonitor) instead |
| * @since 2.0 |
| */ |
| public static ISite getSite(URL siteURL) throws CoreException { |
| return InternalSiteManager.getSite(siteURL, true,null); |
| } |
| |
| /** |
| * Returns a site object for the site specified by the argument URL. |
| * Typically, the URL references a site manifest file on an update |
| * site. An update site acts as a source of features for installation |
| * actions. |
| * |
| * @param siteURL site URL |
| * @param monitor the progress monitor |
| * @return site object for the url or <samp>null</samp> in case a |
| * user canceled the connection in the progress monitor. |
| * @exception CoreException |
| * @since 2.1 |
| */ |
| public static ISite getSite(URL siteURL, IProgressMonitor monitor) throws CoreException { |
| return InternalSiteManager.getSite(siteURL, true, monitor); |
| } |
| |
| /** |
| * Returns a site object for the site specified by the argument URL. |
| * Typically, the URL references a site manifest file on an update |
| * site. An update site acts as a source of features for installation |
| * actions. |
| * |
| * @param siteURL site URL |
| * @param usesCache <code>false</code> if the cache should be refreshed, and the site entirely reparsed, <code>false</code> otherwise. |
| * @return site object for the url |
| * @exception CoreException |
| * @deprecated use getSite(URL,boolean,IPogressMonitor) instead |
| * @since 2.0 |
| */ |
| public static ISite getSite(URL siteURL, boolean usesCache) throws CoreException { |
| return InternalSiteManager.getSite(siteURL, usesCache,null); |
| } |
| |
| /** |
| * Returns a site object for the site specified by the argument URL. |
| * Typically, the URL references a site manifest file on an update |
| * site. An update site acts as a source of features for installation |
| * actions. |
| * |
| * @param siteURL site URL |
| * @param usesCache <code>false</code> if the cache should be refreshed, and the site entirely reparsed, <code>false</code> otherwise. |
| * @param monitor the progress monitor |
| * @return site object for the url or <samp>null</samp> in case a |
| * user canceled the connection in the progress monitor. |
| * @exception CoreException |
| * @since 2.1 |
| */ |
| public static ISite getSite(URL siteURL, boolean usesCache, IProgressMonitor monitor) throws CoreException { |
| return InternalSiteManager.getSite(siteURL, usesCache, monitor); |
| } |
| |
| |
| /** |
| * Returns the "local site". A local site is a logical collection |
| * of configuration information plus one or more file system |
| * installation directories, represented as intividual sites. |
| * These are potential targets for installation actions. |
| * |
| * @return the local site |
| * @exception CoreException |
| * @since 2.0 |
| */ |
| public static ILocalSite getLocalSite() throws CoreException { |
| return InternalSiteManager.getLocalSite(); |
| } |
| |
| /** |
| * Trigger handling of newly discovered features. This method |
| * can be called by the executing application whenever it |
| * is invoked with the -newUpdates command line argument. |
| * |
| * @throws CoreException if an error occurs. |
| * @since 2.0 |
| * @deprecated Do not use this method |
| */ |
| public static void handleNewChanges() throws CoreException { |
| } |
| /** |
| * Returns system architecture specification. A comma-separated list of arch |
| * designators defined by the platform. |
| * |
| * This information is used as a hint by the installation and update |
| * support. |
| * |
| * @return system architecture specification |
| * @since 2.1 |
| */ |
| public static String getOSArch() { |
| if (arch == null) |
| arch = Platform.getOSArch(); |
| return arch; |
| } |
| |
| /** |
| * Returns operating system specification. A comma-separated list of os |
| * designators defined by the platform. |
| * |
| * This information is used as a hint by the installation and update |
| * support. |
| * |
| * @return the operating system specification. |
| * @since 2.1 |
| */ |
| public static String getOS() { |
| if (os == null) |
| os = Platform.getOS(); |
| return os; |
| } |
| |
| /** |
| * Returns system architecture specification. A comma-separated list of arch |
| * designators defined by the platform. |
| * |
| * This information is used as a hint by the installation and update |
| * support. |
| * @return system architecture specification. |
| * @since 2.1 |
| */ |
| public static String getWS() { |
| if (ws == null) |
| ws = Platform.getWS(); |
| return ws; |
| } |
| |
| /** |
| * Sets the arch. |
| * @param arch The arch to set |
| */ |
| public static void setOSArch(String arch) { |
| SiteManager.arch = arch; |
| } |
| |
| /** |
| * Sets the os. |
| * @param os The os to set |
| */ |
| public static void setOS(String os) { |
| SiteManager.os = os; |
| } |
| |
| /** |
| * Sets the ws. |
| * @param ws The ws to set |
| */ |
| public static void setWS(String ws) { |
| SiteManager.ws = ws; |
| } |
| |
| /** |
| * Sets the nl. |
| * @param nl The nl to set |
| */ |
| public static void setNL(String nl) { |
| SiteManager.nl = nl; |
| } |
| |
| /** |
| * Returns an estimate of bytes per second transfer rate for this URL |
| * @param site the URL of the site |
| * @return long a bytes per second estimate rate |
| * @since 2.1 |
| */ |
| public static long getEstimatedTransferRate(URL site) { |
| if (site == null) |
| return 0; |
| return InternalSiteManager.getEstimatedTransferRate(site.getHost()); |
| } |
| |
| /** |
| * Returns current locale |
| * |
| * @return the string name of the current locale or <code>null</code> |
| * @since 2.1 |
| */ |
| public static String getNL() { |
| if (nl == null) |
| nl = Platform.getNL(); |
| return nl; |
| } |
| |
| /** |
| * Returns the HTTP Proxy Server or <code>null</code> if none. |
| * @return the HTTP proxy Server |
| * @deprecated clients should access the {@link IProxyService} directly |
| */ |
| public static String getHttpProxyServer() { |
| IProxyService service = UpdateCore.getPlugin().getProxyService(); |
| if (service != null && service.isProxiesEnabled()) { |
| IProxyData data = service.getProxyData(IProxyData.HTTP_PROXY_TYPE); |
| if (data != null) |
| return data.getHost(); |
| |
| } |
| return null; |
| } |
| /** |
| * Returns the HTTP Proxy Port or <code>null</code> if none |
| * @return the HTTP proxy Port |
| * @deprecated clients should access the {@link IProxyService} directly |
| */ |
| public static String getHttpProxyPort() { |
| IProxyService service = UpdateCore.getPlugin().getProxyService(); |
| if (service != null && service.isProxiesEnabled()) { |
| IProxyData data = service.getProxyData(IProxyData.HTTP_PROXY_TYPE); |
| if (data != null) { |
| if (data.getPort() == -1) |
| return "80"; |
| return String.valueOf(data.getPort()); |
| } |
| |
| } |
| return null; |
| } |
| |
| /** |
| * Returns <code>true</code> if the connection should use the |
| * http proxy server, <code>false</code> otherwise |
| * @return is the http proxy server enable |
| * @deprecated clients should access the {@link IProxyService} directly |
| */ |
| public static boolean isHttpProxyEnable() { |
| IProxyService service = UpdateCore.getPlugin().getProxyService(); |
| if (service != null && service.isProxiesEnabled()) { |
| IProxyData data = service.getProxyData(IProxyData.HTTP_PROXY_TYPE); |
| return (data != null && data.getHost() != null); |
| } |
| return false; |
| } |
| /** |
| * Sets the HTTP Proxy information |
| * Sets the HTTP proxy server for the HTTP proxy server |
| * Sets the HTTP proxy port for the HTTP proxy server |
| * If the proxy name is <code>null</code> or the proxy port is |
| * <code>null</code> the connection will not use HTTP proxy server. |
| * |
| * @param enable <code>true</code> if the connection should use an http |
| * proxy server, <code>false </code> otherwise. |
| * @param httpProxyServer the HTTP proxy server name or IP address |
| * @param httpProxyPort the HTTP proxy port |
| * |
| * @deprecated clients should use the {@link IProxyService} directly |
| */ |
| public static void setHttpProxyInfo(boolean enable, String httpProxyServer, String httpProxyPort) { |
| IProxyService service = UpdateCore.getPlugin().getProxyService(); |
| if (service == null) |
| return; |
| // Make sure that the proxy service is enabled if needed but don't disable the |
| // service if the http proxy is being disabled |
| if (enable && !service.isProxiesEnabled()) |
| service.setProxiesEnabled(enable); |
| |
| if (service.isProxiesEnabled()) { |
| IProxyData data = service.getProxyData(IProxyData.HTTP_PROXY_TYPE); |
| if (data != null) { |
| data.setHost(httpProxyServer); |
| if (httpProxyPort == null || httpProxyPort.equals("80")) { |
| data.setPort(-1); |
| } else { |
| try { |
| int port = Integer.parseInt(httpProxyPort); |
| data.setPort(port); |
| } catch (NumberFormatException e) { |
| UpdateCore.log(e); |
| } |
| } |
| try { |
| service.setProxyData(new IProxyData[] { data }); |
| } catch (CoreException e) { |
| UpdateCore.log(e); |
| } |
| } |
| } |
| } |
| } |