[266761] React to AcceptLicenses wizard moving to provisional
diff --git a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/ExtensionUtility.java b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/ExtensionUtility.java
index de225d3..a361d8f 100644
--- a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/ExtensionUtility.java
+++ b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/ExtensionUtility.java
@@ -20,7 +20,6 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
 import org.eclipse.equinox.internal.provisional.p2.core.Version;
 import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
 import org.eclipse.equinox.internal.provisional.p2.engine.IProfileRegistry;
@@ -31,6 +30,8 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.server.discovery.internal.model.Extension;
 import org.eclipse.wst.server.discovery.internal.model.ExtensionUpdateSite;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 
 public class ExtensionUtility {
 	private static ExtensionUpdateSite[] getExtensionUpdateSites(URL url) throws CoreException {
@@ -150,7 +151,7 @@
 	private static List<Extension> getExistingFeatures(IProgressMonitor monitor) throws CoreException {
 		monitor.beginTask(Messages.discoverLocalConfiguration, 100);
 		
-		IProfileRegistry profileRegistry = (IProfileRegistry) ServiceHelper.getService(Activator.getDefault().getBundle().getBundleContext(), IProfileRegistry.class.getName());
+		IProfileRegistry profileRegistry = (IProfileRegistry) getService(Activator.getDefault().getBundle().getBundleContext(), IProfileRegistry.class.getName());
 		IProfile profile = profileRegistry.getProfile(IProfileRegistry.SELF);
 		
 		Query query = new InstallableUnitQuery(null);
@@ -198,7 +199,7 @@
 				monitor.subTask(NLS.bind(Messages.discoverSearching, items[i].getUrl()));
 				final int ii = i;
 				final IProgressMonitor monitor2 = monitor;
-				threads[i] = new Thread("Extension Checker for" + items[i].getUrl()) {
+				threads[i] = new Thread("Extension Checker for " + items[i].getUrl()) {
 					public void run() {
 						try {
 							List<Extension> list2 = items[ii].getExtensions(ProgressUtil.getSubMonitorFor(monitor2, x));
@@ -233,4 +234,24 @@
 		monitor.done();
 		return ef;
 	}
+
+	/**
+	 * Returns the service described by the given arguments.  Note that this is a helper class
+	 * that <b>immediately</b> ungets the service reference.  This results in a window where the
+	 * system thinks the service is not in use but indeed the caller is about to use the returned 
+	 * service object.  
+	 * @param context
+	 * @param name
+	 * @return The requested service
+	 */
+	public static Object getService(BundleContext context, String name) {
+		if (context == null)
+			return null;
+		ServiceReference reference = context.getServiceReference(name);
+		if (reference == null)
+			return null;
+		Object result = context.getService(reference);
+		context.ungetService(reference);
+		return result;
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/model/Extension.java b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/model/Extension.java
index b21a865..0e944f0 100644
--- a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/model/Extension.java
+++ b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/model/Extension.java
@@ -12,7 +12,6 @@
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
 import org.eclipse.equinox.internal.provisional.p2.core.Version;
 import org.eclipse.equinox.internal.provisional.p2.director.IPlanner;
 import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
@@ -27,6 +26,7 @@
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.server.discovery.internal.Activator;
+import org.eclipse.wst.server.discovery.internal.ExtensionUtility;
 import org.osgi.framework.BundleContext;
 
 public class Extension {
@@ -80,10 +80,10 @@
 		if (!plan.getStatus().isOK())
 			return plan.getStatus();
 		
-		IProfileRegistry profileRegistry = (IProfileRegistry) ServiceHelper.getService(bundleContext, IProfileRegistry.class.getName());
+		IProfileRegistry profileRegistry = (IProfileRegistry) ExtensionUtility.getService(bundleContext, IProfileRegistry.class.getName());
 		IProfile profile = profileRegistry.getProfile(IProfileRegistry.SELF);
 		
-		IEngine engine = (IEngine) ServiceHelper.getService(bundleContext, IEngine.SERVICE_NAME);
+		IEngine engine = (IEngine) ExtensionUtility.getService(bundleContext, IEngine.SERVICE_NAME);
 		return engine.perform(profile, new DefaultPhaseSet(), plan.getOperands(), provContext, monitor);
 	}
 
@@ -96,9 +96,9 @@
 			return plan;
 		
 		BundleContext bundleContext = Activator.getDefault().getBundle().getBundleContext();
-		IPlanner planner = (IPlanner) ServiceHelper.getService(bundleContext, IPlanner.class.getName());
+		IPlanner planner = (IPlanner) ExtensionUtility.getService(bundleContext, IPlanner.class.getName());
 		
-		IProfileRegistry profileRegistry = (IProfileRegistry) ServiceHelper.getService(bundleContext, IProfileRegistry.class.getName());
+		IProfileRegistry profileRegistry = (IProfileRegistry) ExtensionUtility.getService(bundleContext, IProfileRegistry.class.getName());
 		IProfile profile = profileRegistry.getProfile(IProfileRegistry.SELF);
 		ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
 		pcr.addInstallableUnits(new IInstallableUnit[] { iu } );
diff --git a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/wizard/ExtensionComposite.java b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/wizard/ExtensionComposite.java
index e315aaa..2dca1b1 100644
--- a/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/wizard/ExtensionComposite.java
+++ b/plugins/org.eclipse.wst.server.discovery/src/org/eclipse/wst/server/discovery/internal/wizard/ExtensionComposite.java
@@ -253,8 +253,11 @@
 				
 				int yOffset = TEXT_MARGIN;
 				gc.setFont(font);
-				gc.drawText(name, event.x + iw, event.y + yOffset, true);
-				Point size = event.gc.textExtent(name);
+				Point size = new Point(0, 0);
+				if (name != null) {
+					gc.drawText(name, event.x + iw, event.y + yOffset, true);
+					size = event.gc.textExtent(name);
+				}
 				gc.setFont(null);
 				
 				yOffset += size.y + TEXT_MARGIN;