diff --git a/tests/org.eclipse.wst.server.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.server.ui.tests/META-INF/MANIFEST.MF
index 8d14d16..f313288 100644
--- a/tests/org.eclipse.wst.server.ui.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.wst.server.ui.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.wst.server.ui.tests
 Bundle-SymbolicName: org.eclipse.wst.server.ui.tests;singleton:=true
-Bundle-Version: 1.1.400.qualifier
+Bundle-Version: 1.1.401.qualifier
 Bundle-ClassPath: tests.jar
 Bundle-Activator: org.eclipse.wst.server.ui.tests.TestsPlugin
 Bundle-Vendor: Eclipse.org
@@ -21,6 +21,7 @@
  org.eclipse.debug.ui,
  org.eclipse.wst.server.core,
  org.eclipse.wst.server.ui,
- org.eclipse.wst.server.discovery
+ org.eclipse.wst.server.discovery,
+ org.eclipse.equinox.p2.core
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/tests/org.eclipse.wst.server.ui.tests/pom.xml b/tests/org.eclipse.wst.server.ui.tests/pom.xml
index f03b627..1dd0b44 100644
--- a/tests/org.eclipse.wst.server.ui.tests/pom.xml
+++ b/tests/org.eclipse.wst.server.ui.tests/pom.xml
@@ -22,7 +22,7 @@
 
   <groupId>org.eclipse.webtools.servertools</groupId>
   <artifactId>org.eclipse.wst.server.ui.tests</artifactId>
-  <version>1.1.400-SNAPSHOT</version>
+  <version>1.1.401-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
 
   <properties>
diff --git a/tests/org.eclipse.wst.server.ui.tests/src/org/eclipse/wst/server/ui/tests/discovery/ServerDiscoveryTestCase.java b/tests/org.eclipse.wst.server.ui.tests/src/org/eclipse/wst/server/ui/tests/discovery/ServerDiscoveryTestCase.java
index ebb1d04..3af3c42 100644
--- a/tests/org.eclipse.wst.server.ui.tests/src/org/eclipse/wst/server/ui/tests/discovery/ServerDiscoveryTestCase.java
+++ b/tests/org.eclipse.wst.server.ui.tests/src/org/eclipse/wst/server/ui/tests/discovery/ServerDiscoveryTestCase.java
@@ -14,16 +14,16 @@
 import java.io.File;
 import java.util.List;
 
-import junit.framework.TestCase;
-
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.wst.server.discovery.internal.model.Extension;
 import org.eclipse.wst.server.discovery.internal.model.ExtensionUpdateSite;
+import org.eclipse.wst.server.discovery.internal.model.IServerExtension;
 import org.eclipse.wst.server.ui.tests.TestsPlugin;
 import org.eclipse.wst.server.ui.tests.internal.util.ZipUtil;
 
+import junit.framework.TestCase;
+
 public class ServerDiscoveryTestCase extends TestCase {
 	
 	/*
@@ -43,24 +43,16 @@
 	protected static final String serverAdapterSiteName = "serverAdapterSites.xml"; //$NON-NLS-1$
 	
 	// A helper method for retrieving the extensions
-	protected List<Extension> getExtensions(File filePath){
+	protected List<IServerExtension> getExtensions(File filePath){
 		try {
 			String finalPath = filePath.toString();
 			String os = System.getProperty("os.name"); //$NON-NLS-1$
 			
-			// Building the URI for Windows does not work using the File.toURI().toURL().
-			// Windows needs to be handled with a special case by appending the "file:///"
-			if (os != null && os.toUpperCase().indexOf("WINDOWS") >= 0){ //$NON-NLS-1$
-				finalPath = finalPath.replaceAll("\\\\", "/");  //$NON-NLS-1$ //$NON-NLS-2$
-				finalPath = "file:///" + finalPath; //$NON-NLS-1$
-			}
-			else {
-				finalPath = filePath.toURI().toURL().toString();
-			}
+			finalPath = filePath.toURI().toURL().toString();
 			
 			ExtensionUpdateSite extensionUpdateSite = new ExtensionUpdateSite(finalPath, null, null);
 
-			List<Extension> foundExtension = extensionUpdateSite.getExtensions(new NullProgressMonitor());
+			List<IServerExtension> foundExtension = extensionUpdateSite.getExtensions(new NullProgressMonitor());
 			return foundExtension;
 		}
 		catch (Exception e){
@@ -75,12 +67,12 @@
 		File file = new File(metadataPath + File.separator + updateSiteServerAdapterWithSiteXML);
 		assertTrue("Update site does not exist",file.exists()); //$NON-NLS-1$
 		
-		List<Extension> extensionList = getExtensions(file);
+		List<IServerExtension> extensionList = getExtensions(file);
 		
 		assertNotNull("Extension list cannot be null",extensionList); //$NON-NLS-1$
 		
 		assertTrue("Failed to find the expected server adapater",!extensionList.isEmpty()); //$NON-NLS-1$
-		Extension e = extensionList.get(0);
+		IServerExtension e = extensionList.get(0);
 		assertNotNull("Extension found should not be null", e); //$NON-NLS-1$
 		assertTrue("Failed to find expected server adapter's name. Found : " + e.getName(), ("ServerAdapterWithSiteXMLFeature".equals(e.getName()))); //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -90,10 +82,10 @@
 		File file = new File(metadataPath + File.separator + updateSiteServerAdapterWithServerAdapterProperty);
 		assertTrue("Update site does not exist",file.exists()); //$NON-NLS-1$
 		
-		List<Extension> extensionList = getExtensions(file);		
+		List<IServerExtension> extensionList = getExtensions(file);		
 		assertNotNull("Extension list cannot be null",extensionList); //$NON-NLS-1$		
 		assertTrue("Failed to find the expected server adapater",!extensionList.isEmpty()); //$NON-NLS-1$
-		Extension e = extensionList.get(0);
+		IServerExtension e = extensionList.get(0);
 		assertNotNull("Extension found should not be null", e); //$NON-NLS-1$
 		assertTrue("Failed to find expected server adapter's name. Found : " + e.getName(), ("ServerAdapterWithServerAdapterProperty".equals(e.getName()))); //$NON-NLS-1$ //$NON-NLS-2$	
 	}	
@@ -103,10 +95,10 @@
 		File file = new File(metadataPath + File.separator + updateSiteServerAdapterWithP2GeneratedFromCategoryXMLFeature);
 		assertTrue("Update site does not exist",file.exists()); //$NON-NLS-1$
 		
-		List<Extension> extensionList = getExtensions(file);		
+		List<IServerExtension> extensionList = getExtensions(file);		
 		assertNotNull("Extension list cannot be null",extensionList); //$NON-NLS-1$		
 		assertTrue("Failed to find the expected server adapater",!extensionList.isEmpty()); //$NON-NLS-1$
-		Extension e = extensionList.get(0);
+		IServerExtension e = extensionList.get(0);
 		assertNotNull("Extension found should not be null", e); //$NON-NLS-1$
 		assertTrue("Failed to find expected server adapter's name. Found : " + e.getName() , ("ServerAdapterWithP2GeneratedFromCategoryXMLFeature".equals(e.getName()))); //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -117,7 +109,7 @@
 		File file = new File(metadataPath + File.separator + updateSiteInvalid);
 		assertTrue("Update site does not exist",file.exists()); //$NON-NLS-1$
 		
-		List<Extension> extensionList = getExtensions(file);		
+		List<IServerExtension> extensionList = getExtensions(file);		
 		assertNotNull("Extension list cannot be null",extensionList); //$NON-NLS-1$		
 		assertTrue("No extension should be found since update site is invalid",extensionList.isEmpty()); //$NON-NLS-1$		
 	}
