Bug 559469 - Remove Activator.getContext from
org.eclipse.equinox.p2.transport.ecf

Change-Id: I81c3ca73c86b9c749021c35814536dd678deb961
Signed-off-by: Lars Vogel <Lars.Vogel@vogella.com>
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java
index 9a34bae..d0e8b4e 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/Activator.java
@@ -24,9 +24,9 @@
 import org.osgi.util.tracker.ServiceTracker;
 
 /**
- * The activator class controls the plug-in life cycle.
- * This activator has helper methods to get file transfer service tracker, and
- * for making sure required ECF bundles are started.
+ * The activator class controls the plug-in life cycle. This activator has
+ * helper methods to get file transfer service tracker, and for making sure
+ * required ECF bundles are started.
  */
 @SuppressWarnings("restriction")
 public class Activator implements BundleActivator {
@@ -66,10 +66,6 @@
 
 	}
 
-	public static BundleContext getContext() {
-		return Activator.context;
-	}
-
 	/**
 	 * Get singleton instance.
 	 *
@@ -80,9 +76,11 @@
 	}
 
 	/**
-	 * Returns a {@link IRetrieveFileTransferFactory} using a {@link ServiceTracker} after having attempted
-	 * to start the bundle "org.eclipse.ecf.provider.filetransfer". If something is wrong with the configuration
-	 * this method returns null.
+	 * Returns a {@link IRetrieveFileTransferFactory} using a {@link ServiceTracker}
+	 * after having attempted to start the bundle
+	 * "org.eclipse.ecf.provider.filetransfer". If something is wrong with the
+	 * configuration this method returns null.
+	 *
 	 * @return a factory, or null, if configuration is incorrect
 	 */
 	public IRetrieveFileTransferFactory getRetrieveFileTransferFactory() {
@@ -128,14 +126,15 @@
 	}
 
 	/**
-	 * Gets the singleton ServiceTracker for the IRetrieveFileTransferFactory and starts the bundles
-	 * "org.eclipse.ecf" and
+	 * Gets the singleton ServiceTracker for the IRetrieveFileTransferFactory and
+	 * starts the bundles "org.eclipse.ecf" and
 	 * "org.eclipse.ecf.provider.filetransfer" on first call.
-	 * @return  ServiceTracker
+	 * 
+	 * @return ServiceTracker
 	 */
 	private synchronized ServiceTracker<IRetrieveFileTransferFactory, IRetrieveFileTransferFactory> getFileTransferServiceTracker() {
 		if (retrievalFactoryTracker == null) {
-			retrievalFactoryTracker = new ServiceTracker<>(Activator.getContext(), IRetrieveFileTransferFactory.class, null);
+			retrievalFactoryTracker = new ServiceTracker<>(Activator.context, IRetrieveFileTransferFactory.class, null);
 			retrievalFactoryTracker.open();
 			startBundle("org.eclipse.ecf"); //$NON-NLS-1$
 			startBundle("org.eclipse.ecf.provider.filetransfer"); //$NON-NLS-1$
@@ -145,14 +144,15 @@
 
 	private IFileTransferProtocolToFactoryMapper getProtocolToFactoryMapper() {
 		if (protocolToFactoryMapperTracker == null) {
-			protocolToFactoryMapperTracker = new ServiceTracker<>(context, IFileTransferProtocolToFactoryMapper.class, null);
+			protocolToFactoryMapperTracker = new ServiceTracker<>(context, IFileTransferProtocolToFactoryMapper.class,
+					null);
 			protocolToFactoryMapperTracker.open();
 		}
 		return protocolToFactoryMapperTracker.getService();
 	}
 
 	private boolean startBundle(String bundleId) {
-		PackageAdmin packageAdmin = ServiceHelper.getService(Activator.getContext(), PackageAdmin.class);
+		PackageAdmin packageAdmin = ServiceHelper.getService(Activator.context, PackageAdmin.class);
 		if (packageAdmin == null)
 			return false;
 
@@ -165,7 +165,7 @@
 						bundle.start(Bundle.START_TRANSIENT);
 						return true;
 					}
-				}catch (BundleException e) {
+				} catch (BundleException e) {
 					// failed, try next bundle
 				}
 			}
diff --git a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java
index 166e70d..6e6d6b9 100644
--- a/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java
+++ b/bundles/org.eclipse.equinox.p2.transport.ecf/src/org/eclipse/equinox/internal/p2/transport/ecf/FileReader.java
@@ -42,8 +42,8 @@
 public final class FileReader extends FileTransferJob implements IFileTransferListener {
 	/**
 	 * Class used to suppress warnings about a job being blocked by another job.
-	 * Since we are running a job that will always be blocked by another job that
-	 * is actually performing the transfer, these messages are unnecessary and ugly.
+	 * Since we are running a job that will always be blocked by another job that is
+	 * actually performing the transfer, these messages are unnecessary and ugly.
 	 */
 	static class SuppressBlockedMonitor extends ProgressMonitorWrapper {
 		public SuppressBlockedMonitor(IProgressMonitor monitor, int ticks) {
@@ -52,19 +52,19 @@
 
 		@Override
 		public void setBlocked(IStatus reason) {
-			//do nothing
+			// do nothing
 		}
 
 		@Override
 		public void clearBlocked() {
-			//do nothing
+			// do nothing
 		}
 	}
 
 	static Map<String, Map<String, String>> options;
 
 	static private String getProperty(String key, String defaultValue) {
-		String value = Activator.getContext().getProperty(key);
+		String value = FrameworkUtil.getBundle(FileReader.class).getBundleContext().getProperty(key);
 		if (value == null) {
 			value = defaultValue;
 		}
@@ -81,7 +81,8 @@
 		String language = getProperty("osgi.nl", "unknownLanguage");//$NON-NLS-1$//$NON-NLS-2$
 		String osVersion = getProperty("org.osgi.framework.os.version", "unknownOSVersion"); //$NON-NLS-1$ //$NON-NLS-2$
 		String p2Version = FrameworkUtil.getBundle(FileReader.class).getVersion().toString();
-		userAgent = "p2/" + p2Version + " (Java " + javaSpec + ' ' + javaVendor + "; " + osName + ' ' + osVersion + ' ' + osgiArch + "; " + language + ") "; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+		userAgent = "p2/" + p2Version + " (Java " + javaSpec + ' ' + javaVendor + "; " + osName + ' ' + osVersion + ' ' //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				+ osgiArch + "; " + language + ") "; //$NON-NLS-1$ //$NON-NLS-2$
 		String userAgentProvided = getProperty("p2.userAgent", null); //$NON-NLS-1$
 		if (userAgentProvided == null) {
 			String productId = getProperty("eclipse.product", "unknownProduct"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -118,8 +119,8 @@
 	private IFileTransferPausable pasuable = null;
 
 	/**
-	 * Create a new FileReader that will retry failed connection attempts and sleep some amount of time between each
-	 * attempt.
+	 * Create a new FileReader that will retry failed connection attempts and sleep
+	 * some amount of time between each attempt.
 	 */
 	public FileReader(IProvisioningAgent aAgent, IConnectContext aConnectContext) {
 		super(Messages.FileTransport_reader); // job label
@@ -138,8 +139,8 @@
 	}
 
 	/**
-	 * A job to handle cancelation when trying to establish a socket connection.
-	 * At this point we don't have a transfer job running yet, so we need a separate
+	 * A job to handle cancelation when trying to establish a socket connection. At
+	 * this point we don't have a transfer job running yet, so we need a separate
 	 * job to monitor for cancelation.
 	 */
 	protected class CancelHandler extends Job {
@@ -167,7 +168,7 @@
 
 		@Override
 		protected void canceling() {
-			//wake up from sleep in run method
+			// wake up from sleep in run method
 			Thread t = getThread();
 			if (t != null)
 				t.interrupt();
@@ -182,10 +183,12 @@
 			connectEvent = (IFileTransferConnectStartEvent) event;
 			connectEvent.connectUsingJob(((IFileTransferConnectStartEvent) event).prepareConnectJob(null));
 			cancelJob = new CancelHandler();
-			//schedule with a delay to avoid the overhead of an extra job on a fast connection
+			// schedule with a delay to avoid the overhead of an extra job on a fast
+			// connection
 			cancelJob.schedule(500);
 		} else if (event instanceof IIncomingFileTransferReceiveStartEvent) {
-			//we no longer need the cancel handler because we are about to fork the transfer job
+			// we no longer need the cancel handler because we are about to fork the
+			// transfer job
 			if (cancelJob != null)
 				cancelJob.cancel();
 			IIncomingFileTransfer source = ((IIncomingFileTransferEvent) event).getSource();
@@ -204,7 +207,8 @@
 				return;
 			}
 			long fileLength = source.getFileLength();
-			ProgressStatistics stats = new ProgressStatistics(agent, requestUri, source.getRemoteFileName(), fileLength);
+			ProgressStatistics stats = new ProgressStatistics(agent, requestUri, source.getRemoteFileName(),
+					fileLength);
 			setStatistics(stats);
 
 			if (theMonitor != null) {
@@ -252,7 +256,8 @@
 		} else if (event instanceof IIncomingFileTransferReceivePausedEvent) {
 			this.hasPaused = true;
 		} else if (event instanceof IIncomingFileTransferReceiveResumedEvent) {
-			//we no longer need the cancel handler because we are about to resume the transfer job
+			// we no longer need the cancel handler because we are about to resume the
+			// transfer job
 			if (cancelJob != null)
 				cancelJob.cancel();
 			try {
@@ -273,7 +278,8 @@
 		}
 	}
 
-	public InputStream read(URI url, final IProgressMonitor monitor) throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
+	public InputStream read(URI url, final IProgressMonitor monitor)
+			throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
 		final PipedInputStream input = new PipedInputStream();
 		PipedOutputStream output;
 		try {
@@ -375,7 +381,8 @@
 		if (monitor == null)
 			monitor = new NullProgressMonitor();
 		try {
-			sendRetrieveRequest(uri, anOutputStream, (startPos != -1 ? new DownloadRange(startPos) : null), false, monitor);
+			sendRetrieveRequest(uri, anOutputStream, (startPos != -1 ? new DownloadRange(startPos) : null), false,
+					monitor);
 			Job.getJobManager().join(this, new SuppressBlockedMonitor(monitor, 0));
 			waitPaused(uri, anOutputStream, startPos, monitor);
 			if (monitor.isCanceled() && connectEvent != null)
@@ -399,7 +406,9 @@
 		}
 	}
 
-	protected void waitPaused(URI uri, OutputStream anOutputStream, long startPos, IProgressMonitor monitor) throws AuthenticationFailedException, JREHttpClientRequiredException, FileNotFoundException, CoreException, OperationCanceledException, InterruptedException {
+	protected void waitPaused(URI uri, OutputStream anOutputStream, long startPos, IProgressMonitor monitor)
+			throws AuthenticationFailedException, JREHttpClientRequiredException, FileNotFoundException, CoreException,
+			OperationCanceledException, InterruptedException {
 		if (hasPaused) {
 			while (hasPaused) {
 				Thread.sleep(1000);
@@ -411,8 +420,10 @@
 		}
 	}
 
-	protected void sendRetrieveRequest(URI uri, OutputStream outputStream, DownloadRange range, boolean closeStreamOnFinish, //
-			IProgressMonitor monitor) throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
+	protected void sendRetrieveRequest(URI uri, OutputStream outputStream, DownloadRange range,
+			boolean closeStreamOnFinish, //
+			IProgressMonitor monitor)
+			throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
 
 		IRetrieveFileTransferFactory factory = Activator.getDefault().getRetrieveFileTransferFactory();
 		if (factory == null) {
@@ -438,7 +449,8 @@
 				throw new OperationCanceledException();
 
 			try {
-				IFileID fileID = FileIDFactory.getDefault().createFileID(adapter.getRetrieveNamespace(), uri.toString());
+				IFileID fileID = FileIDFactory.getDefault().createFileID(adapter.getRetrieveNamespace(),
+						uri.toString());
 				adapter.sendRetrieveRequest(fileID, range, this, options);
 			} catch (IncomingFileTransferException e) {
 				exception = e;
@@ -471,17 +483,20 @@
 	}
 
 	/**
-	 * Utility method to check exception condition and determine if retry should be done.
-	 * If there was an exception it is translated into one of the specified exceptions and thrown.
+	 * Utility method to check exception condition and determine if retry should be
+	 * done. If there was an exception it is translated into one of the specified
+	 * exceptions and thrown.
 	 * 
-	 * @param uri the URI being read - used for logging purposes
+	 * @param uri            the URI being read - used for logging purposes
 	 * @param attemptCounter - the current attempt number (start with 0)
-	 * @return true if the exception is an IOException and attemptCounter < connectionRetryCount, false otherwise
+	 * @return true if the exception is an IOException and attemptCounter <
+	 *         connectionRetryCount, false otherwise
 	 * @throws CoreException
 	 * @throws FileNotFoundException
 	 * @throws AuthenticationFailedException
 	 */
-	private boolean checkException(URI uri, int attemptCounter) throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
+	private boolean checkException(URI uri, int attemptCounter)
+			throws CoreException, FileNotFoundException, AuthenticationFailedException, JREHttpClientRequiredException {
 		// note that 'exception' could have been captured in a callback
 		if (exception != null) {
 			// check if HTTP client needs to be changed
@@ -509,7 +524,10 @@
 				//
 				exception = null;
 				try {
-					LogHelper.log(new Status(IStatus.WARNING, Activator.ID, NLS.bind(Messages.connection_to_0_failed_on_1_retry_attempt_2, new String[] {uri.toString(), t.getMessage(), String.valueOf(attemptCounter)}), t));
+					LogHelper.log(new Status(IStatus.WARNING, Activator.ID,
+							NLS.bind(Messages.connection_to_0_failed_on_1_retry_attempt_2,
+									new String[] { uri.toString(), t.getMessage(), String.valueOf(attemptCounter) }),
+							t));
 
 					Thread.sleep(connectionRetryDelay);
 					return false;
@@ -528,6 +546,7 @@
 
 	/**
 	 * Closes input and output streams
+	 * 
 	 * @param aStream
 	 */
 	public static void hardClose(Object aStream) {
@@ -578,8 +597,8 @@
 	}
 
 	/**
-	 * Sets a testing probe that can intercept events on the file reader for testing purposes.
-	 * This method should only ever be called from automated test suites.
+	 * Sets a testing probe that can intercept events on the file reader for testing
+	 * purposes. This method should only ever be called from automated test suites.
 	 */
 	public static void setTestProbe(IFileReaderProbe probe) {
 		testProbe = probe;
@@ -587,8 +606,8 @@
 
 	/**
 	 * Sets the progress statistics. This method is synchronized because the field
-	 * is accessed from both the transfer thread and the thread initiating the transfer
-	 * and we need to ensure field values are consistent across threads.
+	 * is accessed from both the transfer thread and the thread initiating the
+	 * transfer and we need to ensure field values are consistent across threads.
 	 * 
 	 * @param statistics the statistics to set, or <code>null</code>
 	 */
@@ -597,9 +616,9 @@
 	}
 
 	/**
-	 * Returns the progress statistics. This method is synchronized because the field
-	 * is accessed from both the transfer thread and the thread initiating the transfer
-	 * and we need to ensure field values are consistent across threads.
+	 * Returns the progress statistics. This method is synchronized because the
+	 * field is accessed from both the transfer thread and the thread initiating the
+	 * transfer and we need to ensure field values are consistent across threads.
 	 * 
 	 * @return the statistics, or <code>null</code>
 	 */
@@ -609,6 +628,7 @@
 
 	/**
 	 * An interface to allow automated tests to hook into file reader events
+	 * 
 	 * @see #setTestProbe
 	 */
 	public interface IFileReaderProbe {