Bug 565340 - Use ServiceCaller for org.eclipse.pde.ui

Replace uses of ServiceReference.get/unget with ServiceCaller, and
specific cases of looking up the TargetPlatformService with
TargetPlatformService.getDefault()

Change-Id: I4206f515014f0294082462259d0a39098cb9a4f9
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectService.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectService.java
index 45caa14..faca684 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectService.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectService.java
@@ -16,23 +16,19 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.ServiceCaller;
 import org.eclipse.osgi.service.resolver.VersionRange;
-import org.osgi.framework.BundleContext;
 import org.osgi.framework.Version;
 
 /**
  * Service used to create and configure bundle project descriptions.
  * <p>
- * An instance of this service can be obtained from a {@link BundleContext} as
+ * An instance of this service can be obtained from a {@link ServiceCaller} as
  * follows
  * </p>
  *
  * <pre>
- * BundleContext context = ...
- * ServiceReference&lt;IBundleContextService&gt; ref = context.getServiceReference(IBundleContextService.class);
- * IBundleContextService service = context.getService(ref);
- * ...
- * context.ungetService(ref);
+ * ServiceCaller.callOnce(getClass(), IBundleContextService.class, (service) -> ...);
  * </pre>
  *
  * @since 3.6
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java
index 651316a..1bacd6d 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java
@@ -101,7 +101,7 @@
 		fTarget = target;
 		if (target == null) {
 			fNone = true;
-			ITargetPlatformService service = PDECore.getDefault().acquireService(ITargetPlatformService.class);
+			ITargetPlatformService service = TargetPlatformService.getDefault();
 			fTarget = service.newTarget();
 		}
 	}
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
index 2236fb0..4e80e7a 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
@@ -229,7 +229,7 @@
 	public static List<String> cleanOrphanedTargetDefinitionProfiles() throws CoreException {
 		List<String> list = new ArrayList<>();
 		IProfileRegistry registry = getProfileRegistry();
-		ITargetPlatformService tps = PDECore.getDefault().acquireService(ITargetPlatformService.class);
+		ITargetPlatformService tps = TargetPlatformService.getDefault();
 		if (registry != null && tps != null) {
 			IProfile[] profiles = registry.getProfiles();
 			for (IProfile profile : profiles) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/MainPreferencePage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/MainPreferencePage.java
index 17d6aa6..144632d 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/MainPreferencePage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/MainPreferencePage.java
@@ -31,6 +31,7 @@
 import org.eclipse.jface.window.Window;
 import org.eclipse.pde.core.target.ITargetPlatformService;
 import org.eclipse.pde.internal.core.*;
+import org.eclipse.pde.internal.core.target.TargetPlatformService;
 import org.eclipse.pde.internal.launching.ILaunchingPreferenceConstants;
 import org.eclipse.pde.internal.launching.PDELaunchingPlugin;
 import org.eclipse.pde.internal.ui.*;
@@ -318,10 +319,8 @@
 			store.setValue(IPreferenceConstants.ADD_TO_JAVA_SEARCH, synchJavaSearch);
 			try {
 				if (synchJavaSearch) {
-					ITargetPlatformService service = PDECore.getDefault().acquireService(ITargetPlatformService.class);
-					if (service != null) {
-						AddToJavaSearchJob.synchWithTarget(service.getWorkspaceTargetDefinition());
-					}
+					ITargetPlatformService service = TargetPlatformService.getDefault();
+					AddToJavaSearchJob.synchWithTarget(service.getWorkspaceTargetDefinition());
 				} else {
 					AddToJavaSearchJob.clearAll();
 				}
diff --git a/ui/org.eclipse.pde.ui/src_samples/org/eclipse/pde/internal/ui/samples/ShowSampleAction.java b/ui/org.eclipse.pde.ui/src_samples/org/eclipse/pde/internal/ui/samples/ShowSampleAction.java
index 1cabd8f..0bb6a36 100644
--- a/ui/org.eclipse.pde.ui/src_samples/org/eclipse/pde/internal/ui/samples/ShowSampleAction.java
+++ b/ui/org.eclipse.pde.ui/src_samples/org/eclipse/pde/internal/ui/samples/ShowSampleAction.java
@@ -43,6 +43,7 @@
 import org.eclipse.ui.intro.IIntroSite;
 import org.eclipse.ui.intro.config.*;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.ServiceReference;
 
 public class ShowSampleAction extends Action implements IIntroAction {
@@ -240,7 +241,7 @@
 	 * Apply the profile changes to the currently running configuration.
 	 */
 	void applyConfiguration() throws CoreException {
-		BundleContext context = PDEPlugin.getDefault().getBundle().getBundleContext();
+		BundleContext context = FrameworkUtil.getBundle(getClass()).getBundleContext();
 		ServiceReference<Configurator> reference = context.getServiceReference(Configurator.class);
 		Configurator configurator = context.getService(reference);
 		try {