[546100] Remove traces and uses of IPluginDescriptor

Change-Id: I7114137f9ecbca3cd7e9cb905d537e04847a69d1
Signed-off-by: Nitin Dahyabhai <nitind@us.ibm.com>
diff --git a/plugins/org.eclipse.jst.j2ee.jca.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.jca.ui/META-INF/MANIFEST.MF
index d194962..510447f 100644
--- a/plugins/org.eclipse.jst.j2ee.jca.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.jca.ui/META-INF/MANIFEST.MF
@@ -26,5 +26,5 @@
  org.eclipse.ui.navigator.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.web;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.jst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)"
-Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.jst.j2ee.jca/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.jca/META-INF/MANIFEST.MF
index dd7b691..98c4b07 100644
--- a/plugins/org.eclipse.jst.j2ee.jca/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.jca/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.j2ee.jca; singleton:=true
-Bundle-Version: 1.1.901.qualifier
+Bundle-Version: 1.1.1000.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.jca.internal.plugin.JcaPlugin
 Bundle-Vendor: %pluginVendor
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.j2ee.jca/jcaedit/org/eclipse/jst/j2ee/internal/jca/providers/JcaEditPlugin.java b/plugins/org.eclipse.jst.j2ee.jca/jcaedit/org/eclipse/jst/j2ee/internal/jca/providers/JcaEditPlugin.java
index 627272b..3adc7c9 100644
--- a/plugins/org.eclipse.jst.j2ee.jca/jcaedit/org/eclipse/jst/j2ee/internal/jca/providers/JcaEditPlugin.java
+++ b/plugins/org.eclipse.jst.j2ee.jca/jcaedit/org/eclipse/jst/j2ee/internal/jca/providers/JcaEditPlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2003, 2019 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
@@ -10,21 +10,17 @@
  *******************************************************************************/
 package org.eclipse.jst.j2ee.internal.jca.providers;
 
-
-
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.text.MessageFormat;
 
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPluginDescriptor;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.jst.j2ee.jca.JcaFactory;
 import org.eclipse.jst.j2ee.jca.JcaPackage;
 import org.eclipse.jst.j2ee.jca.internal.impl.JcaFactoryImpl;
 import org.eclipse.jst.j2ee.jca.internal.plugin.JcaPlugin;
-
+import org.osgi.framework.BundleContext;
 
 /**
  * This is the central singleton for the jca plugin.
@@ -43,8 +39,8 @@
 	/**
 	 * Create the instance.
 	 */
-	public JcaEditPlugin(IPluginDescriptor descriptor) {
-		super(descriptor);
+	public JcaEditPlugin() {
+		super();
 
 		// Remember the static instance.
 		//
@@ -69,8 +65,8 @@
 	 * Do initialization stuff here.
 	 */
 	@Override
-	public void startup() throws CoreException {
-		super.startup();
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
 		jcaPackage = JcaFactoryImpl.getPackage();
 	}
 
diff --git a/plugins/org.eclipse.jst.j2ee.jca/pom.xml b/plugins/org.eclipse.jst.j2ee.jca/pom.xml
index 05e3451..335202e 100644
--- a/plugins/org.eclipse.jst.j2ee.jca/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.jca/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.jca</artifactId>
-  <version>1.1.901-SNAPSHOT</version>
+  <version>1.1.1000-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.webservice/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.webservice/META-INF/MANIFEST.MF
index 756cb4f..f6fb551 100644
--- a/plugins/org.eclipse.jst.j2ee.webservice/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.webservice/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.j2ee.webservice; singleton:=true
-Bundle-Version: 1.1.600.qualifier
+Bundle-Version: 1.1.700.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.internal.webservice.plugin.WebServicePlugin
 Bundle-Vendor: %pluginVendor
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.j2ee.webservice/pom.xml b/plugins/org.eclipse.jst.j2ee.webservice/pom.xml
index 7958605..c1f774d 100644
--- a/plugins/org.eclipse.jst.j2ee.webservice/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.webservice/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.webservice</artifactId>
-  <version>1.1.600-SNAPSHOT</version>
+  <version>1.1.700-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.webservice/webservice/org/eclipse/jst/j2ee/internal/webservice/provider/Webservicej2eeEditPlugin.java b/plugins/org.eclipse.jst.j2ee.webservice/webservice/org/eclipse/jst/j2ee/internal/webservice/provider/Webservicej2eeEditPlugin.java
index d0e00f5..a6f6b36 100644
--- a/plugins/org.eclipse.jst.j2ee.webservice/webservice/org/eclipse/jst/j2ee/internal/webservice/provider/Webservicej2eeEditPlugin.java
+++ b/plugins/org.eclipse.jst.j2ee.webservice/webservice/org/eclipse/jst/j2ee/internal/webservice/provider/Webservicej2eeEditPlugin.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2019 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
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.jst.j2ee.internal.webservice.provider;
 
-import org.eclipse.core.runtime.IPluginDescriptor;
 import org.eclipse.emf.common.EMFPlugin;
 import org.eclipse.emf.common.util.ResourceLocator;
 
@@ -81,8 +80,8 @@
 		 *            the description of the plugin.
 		 * @generated
 		 */
-		public Implementation(IPluginDescriptor descriptor) {
-			super(descriptor);
+		public Implementation() {
+			super();
 
 			// Remember the static instance.
 			//
diff --git a/tests/org.eclipse.jst.j2ee.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.j2ee.core.tests/META-INF/MANIFEST.MF
index bbea8b3..5524db7 100644
--- a/tests/org.eclipse.jst.j2ee.core.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.j2ee.core.tests/META-INF/MANIFEST.MF
@@ -62,5 +62,5 @@
  org.eclipse.jst.jee.ui,
  org.eclipse.jst.jee.web,
  org.eclipse.jst.servlet.ui,
- org.eclipse.wtp.jee.capabilities
+ org.eclipse.wtp.jee.capabilities;resolution:=optional
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/core/tests/bvt/AutomatedBVT.java b/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/core/tests/bvt/AutomatedBVT.java
index 740689a..304969d 100644
--- a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/core/tests/bvt/AutomatedBVT.java
+++ b/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/core/tests/bvt/AutomatedBVT.java
@@ -6,16 +6,14 @@
  */
 package org.eclipse.jst.j2ee.core.tests.bvt;
 
-import java.net.URL;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jst.j2ee.archive.emftests.AllTests;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import junit.textui.TestRunner;
 
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jst.j2ee.archive.emftests.AllTests;
-
 
 /**
  * @author jsholl
@@ -29,9 +27,7 @@
     
     static {
         try {
-            IPluginDescriptor pluginDescriptor = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.jst.j2ee.core.tests");
-            URL url = pluginDescriptor.getInstallURL(); 
-        	AutomatedBVT.baseDirectory = Platform.asLocalURL(url).getFile() + "commonArchiveResources"+ java.io.File.separatorChar;
+        	AutomatedBVT.baseDirectory = FileLocator.toFileURL(Platform.getBundle("org.eclipse.jst.j2ee.core.tests").getEntry("")).getFile() + "commonArchiveResources" + java.io.File.separatorChar;
 		} catch (Exception e) { 
 			System.err.println("Using working directory since a workspace URL could not be located.");
 		} 
diff --git a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/core/tests/bvt/AutomatedBVTEclipse.java b/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/core/tests/bvt/AutomatedBVTEclipse.java
index 9fa118a..647eb2c 100644
--- a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/core/tests/bvt/AutomatedBVTEclipse.java
+++ b/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/core/tests/bvt/AutomatedBVTEclipse.java
@@ -7,9 +7,8 @@
 package org.eclipse.jst.j2ee.core.tests.bvt;
 
 import java.io.IOException;
-import java.net.URL;
 
-import org.eclipse.core.runtime.IPluginDescriptor;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Platform;
 
 /**
@@ -22,10 +21,8 @@
 	
 	public AutomatedBVTEclipse(){
 		super();
-		IPluginDescriptor pluginDescriptor = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.jst.j2ee.core.tests");
-        URL url = pluginDescriptor.getInstallURL();
         try {
-        	AutomatedBVT.baseDirectory = Platform.asLocalURL(url).getFile() + "commonArchiveResources"+ java.io.File.separatorChar;
+        	AutomatedBVT.baseDirectory = FileLocator.toFileURL(Platform.getBundle("org.eclipse.jst.j2ee.core.tests").getEntry("")).getFile() + "/commonArchiveResources"+ java.io.File.separatorChar;
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
diff --git a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/emfload/LoadJaxRPCMapOutsideWorkspace.java b/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/emfload/LoadJaxRPCMapOutsideWorkspace.java
index 9292f53..22a794f 100644
--- a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/emfload/LoadJaxRPCMapOutsideWorkspace.java
+++ b/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveTests/org/eclipse/jst/j2ee/emfload/LoadJaxRPCMapOutsideWorkspace.java
@@ -10,12 +10,9 @@
  *******************************************************************************/
 package org.eclipse.jst.j2ee.emfload;
 
-import java.net.URL;
 import java.util.Iterator;
 
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.IPluginDescriptor;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.URI;
@@ -29,6 +26,8 @@
 import org.eclipse.jst.j2ee.webservice.jaxrpcmap.JaxrpcmapResourceFactory;
 import org.eclipse.wst.common.internal.emf.resource.EMF2DOMRendererFactory;
 
+import junit.framework.TestCase;
+
 
 public class LoadJaxRPCMapOutsideWorkspace extends TestCase {
 	
@@ -42,10 +41,7 @@
 	 * @generated
 	 */
 	public void testLoadFile() throws Exception {
-		
-		IPluginDescriptor pluginDescriptor = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.jst.j2ee.core.tests");
-        URL url = pluginDescriptor.getInstallURL(); 
-        String baseDirectory = Platform.asLocalURL(url).getFile() + "testData" + java.io.File.separatorChar + "webservices" + java.io.File.separatorChar + "META-INF" + java.io.File.separatorChar;
+        String baseDirectory = FileLocator.toFileURL(Platform.getBundle("org.eclipse.jst.j2ee.core.tests").getEntry("")).getFile() + "testData" + java.io.File.separatorChar + "webservices" + java.io.File.separatorChar + "META-INF" + java.io.File.separatorChar;
 		
 	// Call J2EE Init();
 		
diff --git a/tests/org.eclipse.jst.j2ee.core.tests/mofj2eeTests/org/eclipse/jst/j2ee/core/api/test/AutomatedAPIBVT.java b/tests/org.eclipse.jst.j2ee.core.tests/mofj2eeTests/org/eclipse/jst/j2ee/core/api/test/AutomatedAPIBVT.java
index 6524afe..9fd04ce 100644
--- a/tests/org.eclipse.jst.j2ee.core.tests/mofj2eeTests/org/eclipse/jst/j2ee/core/api/test/AutomatedAPIBVT.java
+++ b/tests/org.eclipse.jst.j2ee.core.tests/mofj2eeTests/org/eclipse/jst/j2ee/core/api/test/AutomatedAPIBVT.java
@@ -6,15 +6,13 @@
  */
 package org.eclipse.jst.j2ee.core.api.test;
 
-import java.net.URL;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import junit.textui.TestRunner;
 
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-
 
 /**
  * @author jsholl
@@ -28,9 +26,7 @@
     
     static {
         try {
-            IPluginDescriptor pluginDescriptor = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.jst.j2ee.core.tests");
-            URL url = pluginDescriptor.getInstallURL(); 
-        	AutomatedAPIBVT.baseDirectory = Platform.asLocalURL(url).getFile() + "commonArchiveResources"+ java.io.File.separatorChar;
+        	AutomatedAPIBVT.baseDirectory = FileLocator.toFileURL(Platform.getBundle("org.eclipse.jst.j2ee.core.tests").getEntry("")).getFile() + "commonArchiveResources"+ java.io.File.separatorChar;
 		} catch (Exception e) { 
 			System.err.println("Using working directory since a workspace URL could not be located.");
 		} 
diff --git a/tests/org.eclipse.jst.j2ee.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.j2ee.tests/META-INF/MANIFEST.MF
index 81a5b5f..7ba4505 100644
--- a/tests/org.eclipse.jst.j2ee.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.j2ee.tests/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: J2EE Tests Plug-in
+Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jst.j2ee.tests; singleton:=true
-Bundle-Version: 1.1.700.qualifier
+Bundle-Version: 1.1.800.qualifier
 Bundle-ClassPath: j2ee-tests.jar
 Bundle-Activator: org.eclipse.wtp.j2ee.headless.tests.plugin.HeadlessTestsPlugin
 Bundle-Localization: plugin
@@ -70,4 +70,6 @@
  org.eclipse.wst.xml.core,
  org.eclipse.wst.sse.core
 Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: %Bundle-Vendor.0
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/tests/bvt/AutomatedBVT.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/tests/bvt/AutomatedBVT.java
index eaa08c6..6ceff6f 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/tests/bvt/AutomatedBVT.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/tests/bvt/AutomatedBVT.java
@@ -6,16 +6,14 @@
  */
 package org.eclipse.jst.j2ee.tests.bvt;
 
-import java.net.URL;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.wtp.j2ee.headless.tests.plugin.AllPluginTests;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import junit.textui.TestRunner;
 
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wtp.j2ee.headless.tests.plugin.AllPluginTests;
-
 
 /**
  * @author jsholl
@@ -29,9 +27,7 @@
     
     static {
         try {
-            IPluginDescriptor pluginDescriptor = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.jst.j2ee.tests");
-            URL url = pluginDescriptor.getInstallURL(); 
-        	AutomatedBVT.baseDirectory = Platform.asLocalURL(url).getFile() + "TestData"+ java.io.File.separatorChar;
+        	AutomatedBVT.baseDirectory = FileLocator.toFileURL(Platform.getBundle("org.eclipse.jst.j2ee.tests").getEntry("")).getFile() + "TestData"+ java.io.File.separatorChar;
 		} catch (Exception e) { 
 			System.err.println("Using working directory since a workspace URL could not be located.");
 		} 
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/tests/bvt/AutomatedBVTEclipse.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/tests/bvt/AutomatedBVTEclipse.java
index 2853633..8d26b6b 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/tests/bvt/AutomatedBVTEclipse.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/jst/j2ee/tests/bvt/AutomatedBVTEclipse.java
@@ -7,9 +7,8 @@
 package org.eclipse.jst.j2ee.tests.bvt;
 
 import java.io.IOException;
-import java.net.URL;
 
-import org.eclipse.core.runtime.IPluginDescriptor;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Platform;
 
 /**
@@ -19,10 +18,8 @@
 	
 	public AutomatedBVTEclipse(){
 		super();
-		IPluginDescriptor pluginDescriptor = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.jst.j2ee.tests");
-        URL url = pluginDescriptor.getInstallURL();
         try {
-        	AutomatedBVT.baseDirectory = Platform.asLocalURL(url).getFile() + "TestData"+ java.io.File.separatorChar;
+        	AutomatedBVT.baseDirectory = FileLocator.toFileURL(Platform.getBundle("org.eclipse.jst.j2ee.tests").getEntry("")).getFile() + "TestData"+ java.io.File.separatorChar;
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/plugin/AllTestsSuite.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/plugin/AllTestsSuite.java
index 2a2c2eb..2324cad 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/plugin/AllTestsSuite.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/plugin/AllTestsSuite.java
@@ -6,19 +6,17 @@
  */
 package org.eclipse.wtp.j2ee.headless.tests.plugin;
 
-import java.net.URL;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.eclipse.core.runtime.IPluginDescriptor;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jst.j2ee.archive.emftests.AllTests;
 import org.eclipse.jst.j2ee.tests.bvt.AutomatedBVT;
 import org.eclipse.wst.common.frameworks.artifactedit.tests.ArtifactEditAPITests;
 import org.eclipse.wst.common.frameworks.datamodel.tests.DataModelAPITests;
 
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
 
 /**
  * @author jsholl
@@ -32,9 +30,7 @@
     
     static {
         try {
-            IPluginDescriptor pluginDescriptor = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.jst.j2ee.tests");
-            URL url = pluginDescriptor.getInstallURL(); 
-        	AutomatedBVT.baseDirectory = Platform.asLocalURL(url).getFile() + "TestData"+ java.io.File.separatorChar;
+        	AutomatedBVT.baseDirectory = FileLocator.toFileURL(Platform.getBundle("org.eclipse.jst.j2ee.tests").getEntry("")).getFile() + "TestData"+ java.io.File.separatorChar;
 		} catch (Exception e) { 
 			System.err.println("Using working directory since a workspace URL could not be located.");
 		} 
diff --git a/tests/org.eclipse.jst.j2ee.tests/plugin.properties b/tests/org.eclipse.jst.j2ee.tests/plugin.properties
new file mode 100644
index 0000000..8b26667
--- /dev/null
+++ b/tests/org.eclipse.jst.j2ee.tests/plugin.properties
@@ -0,0 +1,3 @@
+#Properties file for org.eclipse.jst.j2ee.tests
+Bundle-Name = J2EE Tests Plug-in
+Bundle-Vendor.0 = Eclipse Web Tools Platform
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.j2ee.tests/pom.xml b/tests/org.eclipse.jst.j2ee.tests/pom.xml
index 7feba62..a4d0f94 100644
--- a/tests/org.eclipse.jst.j2ee.tests/pom.xml
+++ b/tests/org.eclipse.jst.j2ee.tests/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Copyright (c) 2012, 2013, 2018 Eclipse Foundation and others.
+  Copyright (c) 2012, 2019 Eclipse Foundation and others.
   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Distribution License v1.0
   which accompanies this distribution, and is available at
@@ -22,7 +22,7 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.tests</artifactId>
-  <version>1.1.700-SNAPSHOT</version>
+  <version>1.1.800-SNAPSHOT</version>
   <!-- temporarily disable runing these tests by switching to packaging = eclipse-plugin instead of eclipse-test-plugin -->
   <packaging>eclipse-plugin</packaging>
   <build>
diff --git a/tests/org.eclipse.jst.jee.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.jee.tests/META-INF/MANIFEST.MF
index 33c542b..9c3f259 100644
--- a/tests/org.eclipse.jst.jee.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.jee.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jst.jee.tests;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-ClassPath: jee-tests.jar
 Bundle-Activator: org.eclipse.wtp.jee.headless.tests.plugin.HeadlessTestsPlugin
 Bundle-Localization: plugin
@@ -18,3 +18,4 @@
  org.eclipse.core.runtime
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %Bundle-Vendor.0
diff --git a/tests/org.eclipse.jst.jee.tests/jee-tests/org/eclipse/jst/jee/tests/bvt/AutomatedBVT.java b/tests/org.eclipse.jst.jee.tests/jee-tests/org/eclipse/jst/jee/tests/bvt/AutomatedBVT.java
index 5102349..3150272 100644
--- a/tests/org.eclipse.jst.jee.tests/jee-tests/org/eclipse/jst/jee/tests/bvt/AutomatedBVT.java
+++ b/tests/org.eclipse.jst.jee.tests/jee-tests/org/eclipse/jst/jee/tests/bvt/AutomatedBVT.java
@@ -11,16 +11,14 @@
 
 package org.eclipse.jst.jee.tests.bvt;
 
-import java.net.URL;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.wtp.jee.headless.tests.plugin.AllPluginTests;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import junit.textui.TestRunner;
 
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wtp.jee.headless.tests.plugin.AllPluginTests;
-
 
 public class AutomatedBVT extends TestSuite {
 
@@ -28,9 +26,7 @@
     
     static {
         try {
-            IPluginDescriptor pluginDescriptor = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.jst.jee.tests");
-            URL url = pluginDescriptor.getInstallURL(); 
-        	AutomatedBVT.baseDirectory = Platform.asLocalURL(url).getFile() + "TestData"+ java.io.File.separatorChar;
+        	AutomatedBVT.baseDirectory = FileLocator.toFileURL(Platform.getBundle("org.eclipse.jst.jee.tests").getEntry("")).getFile() + "TestData"+ java.io.File.separatorChar;
 		} catch (Exception e) { 
 			System.err.println("Using working directory since a workspace URL could not be located.");
 		} 
diff --git a/tests/org.eclipse.jst.jee.tests/plugin.properties b/tests/org.eclipse.jst.jee.tests/plugin.properties
index 616ceb8..1d6f3ae 100644
--- a/tests/org.eclipse.jst.jee.tests/plugin.properties
+++ b/tests/org.eclipse.jst.jee.tests/plugin.properties
@@ -9,4 +9,5 @@
 # IBM Corporation - initial API and implementation
 ###############################################################################
 #Properties file for org.eclipse.jst.jee.tests
-Bundle-Name = JEE Tests Plug-in
\ No newline at end of file
+Bundle-Name = JEE Tests Plug-in
+Bundle-Vendor.0 = Eclipse Web Tools Platform
diff --git a/tests/org.eclipse.jst.jee.tests/pom.xml b/tests/org.eclipse.jst.jee.tests/pom.xml
index b2974c4..607921d 100644
--- a/tests/org.eclipse.jst.jee.tests/pom.xml
+++ b/tests/org.eclipse.jst.jee.tests/pom.xml
@@ -21,7 +21,7 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.jee.tests</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>1.0.100-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
   
   <!-- Do not sign inner jars, see bug 274743 - Some unit tests are sensitive to details of build -->
diff --git a/tests/org.eclipse.jst.validation.sample/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.validation.sample/META-INF/MANIFEST.MF
index 8c0525d..3c73636 100644
--- a/tests/org.eclipse.jst.validation.sample/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.validation.sample/META-INF/MANIFEST.MF
@@ -2,10 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.validation.sample; singleton:=true
-Bundle-Version: 1.1.1.qualifier
+Bundle-Version: 1.1.100.qualifier
 Bundle-ClassPath: runtime/propertiesValidator.jar
 Bundle-Activator: org.eclipse.jst.validation.sample.workbenchimpl.PropertiesValidatorPlugin
 Bundle-Localization: plugin
+Bundle-Vendor: %Bundle-Vendor.0
 Export-Package: org.eclipse.jst.validation.sample,
  org.eclipse.jst.validation.sample.filesystem,
  org.eclipse.jst.validation.sample.filesystemimpl,
@@ -14,7 +15,7 @@
 Require-Bundle: org.eclipse.core.resources,
  org.eclipse.jdt.core,
  org.eclipse.wst.validation,
- org.eclipse.help,
+ org.eclipse.help;resolution:=optional,
  org.eclipse.jem.util,
  org.eclipse.wst.common.frameworks,
  org.eclipse.core.runtime
diff --git a/tests/org.eclipse.jst.validation.sample/plugin.properties b/tests/org.eclipse.jst.validation.sample/plugin.properties
index ae36f62..6a2bf28 100644
--- a/tests/org.eclipse.jst.validation.sample/plugin.properties
+++ b/tests/org.eclipse.jst.validation.sample/plugin.properties
@@ -1,2 +1,3 @@
 #Properties file for org.eclipse.jst.validation.sample
-Bundle-Name.0 = Properties Validator
\ No newline at end of file
+Bundle-Name.0 = Properties Validator
+Bundle-Vendor.0 = Eclipse Web Tools Platform
diff --git a/tests/org.eclipse.jst.validation.sample/pom.xml b/tests/org.eclipse.jst.validation.sample/pom.xml
index fdd9a46..d630468 100644
--- a/tests/org.eclipse.jst.validation.sample/pom.xml
+++ b/tests/org.eclipse.jst.validation.sample/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.validation.sample</artifactId>
-  <version>1.1.1-SNAPSHOT</version>
+  <version>1.1.100-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/tests/org.eclipse.jst.validation.sample/propertiesValWB/org/eclipse/jst/validation/sample/workbenchimpl/PluginPropertyFile.java b/tests/org.eclipse.jst.validation.sample/propertiesValWB/org/eclipse/jst/validation/sample/workbenchimpl/PluginPropertyFile.java
index a403f19..51e2519 100644
--- a/tests/org.eclipse.jst.validation.sample/propertiesValWB/org/eclipse/jst/validation/sample/workbenchimpl/PluginPropertyFile.java
+++ b/tests/org.eclipse.jst.validation.sample/propertiesValWB/org/eclipse/jst/validation/sample/workbenchimpl/PluginPropertyFile.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2019 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
@@ -11,24 +11,22 @@
 
 package org.eclipse.jst.validation.sample.workbenchimpl;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.LineNumberReader;
-import java.net.URL;
-import java.net.URLClassLoader;
 import java.util.Locale;
 import java.util.logging.Level;
 
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.IPluginRegistry;
+import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jst.validation.sample.parser.APropertyFile;
 import org.eclipse.jst.validation.sample.parser.MessageMetaData;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.osgi.framework.Bundle;
 
 /**
  * A PluginPropertyFile represents a resource bundle that is exported by a plugin.
@@ -51,15 +49,8 @@
 		
 		ClassLoader cl = null;
 		InputStream inS = null;
-		Plugin plugin = getPlugin(pluginId);			
-		if(bundleName.equals("plugin")) { //$NON-NLS-1$
-			// Try loading it from the Plugin parent (a "plugin.properties")
-			cl = getPluginPropertiesClassLoader(plugin);
-		}
-		else {
-			cl = plugin.getDescriptor().getPluginClassLoader();
-		}
-		inS = getInputStream(cl, bundleName);
+		Bundle bundle = Platform.getBundle(pluginId);
+		inS = getInputStream(bundle, bundleName);
 		
 		InputStreamReader inR = new InputStreamReader(inS);
 		LineNumberReader lineR = new LineNumberReader(inR);
@@ -90,7 +81,7 @@
 		_classLoader = cl; // store the ClassLoader which was used to load the bundle
 	}
 	
-	private InputStream getInputStream(ClassLoader cl, String bundleName) {
+	private InputStream getInputStream(Bundle bundle, String bundleName) {
 		Locale l = Locale.getDefault();
 		String language = l.getLanguage();
 		String country = l.getCountry();
@@ -113,7 +104,7 @@
 		
 		InputStream inS = null;
 		if(lang_country_variant != null) {
-			inS = getResourceAsStream(cl, bundleName, lang_country_variant);
+			inS = getResourceAsStream(bundle, bundleName, lang_country_variant);
 			if(inS != null) {
 				_langVariant = lang_country_variant;
 				return inS;
@@ -121,7 +112,7 @@
 		}
 		
 		if(lang_country != null) {
-			inS = getResourceAsStream(cl, bundleName, lang_country);
+			inS = getResourceAsStream(bundle, bundleName, lang_country);
 			if(inS != null) {
 				_langVariant = lang_country;
 				return inS;
@@ -129,7 +120,7 @@
 		}
 		
 		if(lang != null) {
-			inS = getResourceAsStream(cl, bundleName, lang);
+			inS = getResourceAsStream(bundle, bundleName, lang);
 			if(inS != null) {
 				_langVariant = lang;
 				return inS;
@@ -138,7 +129,7 @@
 		
 		if(Locale.getDefault().equals(Locale.US)) {
 			// Running the TVT plugin in en_US mode, so return the default .properties file.
-			inS = getResourceAsStream(cl, bundleName, ""); //$NON-NLS-1$
+			inS = getResourceAsStream(bundle, bundleName, ""); //$NON-NLS-1$
 			if(inS != null) {
 				_langVariant = ""; //$NON-NLS-1$
 				return inS;
@@ -148,50 +139,17 @@
 		return null;
 	}
 	
-	private final static InputStream getResourceAsStream(final ClassLoader cl, final String bundleName, final String language) {
+	private final static InputStream getResourceAsStream(final Bundle bundle, final String bundleName, final String language) {
 		String resName = bundleName.replace('.', '/') + language + ".properties"; //$NON-NLS-1$
-		return cl.getResourceAsStream(resName);
-	}
-	
-	private static ClassLoader getPluginPropertiesClassLoader(Plugin p) {
-		// Copied from PluginDescriptor.java's getResourceBundle method.
-		URL[] cp = ((URLClassLoader)p.getDescriptor().getPluginClassLoader()).getURLs();
-		URL[] newcp = new URL[cp.length+1];
-		for (int i=0; i<cp.length; i++) newcp[i+1] = cp[i];
 		try {
-			newcp[0] = Platform.resolve(p.getBundle().getEntry("/")); //$NON-NLS-1$ // always try to resolve URLs used in loaders
-		} catch(IOException e) {
-			newcp[0] = p.getBundle().getEntry("/"); //$NON-NLS-1$
+			return bundle.getEntry(resName).openStream();
 		}
-		ClassLoader resourceLoader = new URLClassLoader(newcp, null);
-		return resourceLoader;
+		catch(IOException e) {
+			Platform.getLog(bundle).log(new Status(IStatus.ERROR, bundle.getSymbolicName(), IStatus.ERROR, "Nothing found at " + resName + " in " + bundle.getSymbolicName(), e));
+			return new ByteArrayInputStream(new byte[0]);
+		}
 	}
 	
-	private static Plugin getPlugin(String pluginId) {
-		if (pluginId == null) {
-			return null;
-		}
-
-		IPluginRegistry registry = Platform.getPluginRegistry();
-		IPluginDescriptor pluginDesc = registry.getPluginDescriptor(pluginId);
-		if(pluginDesc == null) {
-			return null;
-		}
-		
-		try {
-			return pluginDesc.getPlugin();
-		}
-		catch(CoreException exc) {
-			Logger logger = PropertiesValidatorPlugin.getPlugin().getMsgLogger();;
-			if(logger.isLoggingLevel(Level.SEVERE)) {
-				logger.write(Level.SEVERE, exc);
-			}
-			return null;
-		}
-		
-	}
-
-	
 	/*
 	 * @see APropertyFile#report(String)
 	 */
diff --git a/tests/org.eclipse.jst.validation.test/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.validation.test/META-INF/MANIFEST.MF
index fd0bc57..4baedd6 100644
--- a/tests/org.eclipse.jst.validation.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.validation.test/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.validation.test;singleton:=true
-Bundle-Version: 1.1.100.qualifier
+Bundle-Version: 1.1.200.qualifier
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.jst.validation.test.BVTValidationPlugin
 Require-Bundle: org.eclipse.core.runtime,
diff --git a/tests/org.eclipse.jst.validation.test/plugin.properties b/tests/org.eclipse.jst.validation.test/plugin.properties
index d647a6f..de56eeb 100644
--- a/tests/org.eclipse.jst.validation.test/plugin.properties
+++ b/tests/org.eclipse.jst.validation.test/plugin.properties
@@ -1,3 +1,2 @@
 Bundle-Name.0 = Testcases for Validation Framework
 Bundle-Vendor.0 = Eclipse Web Tools Platform
-
diff --git a/tests/org.eclipse.jst.validation.test/pom.xml b/tests/org.eclipse.jst.validation.test/pom.xml
index 8cd15b4..4eca4d3 100644
--- a/tests/org.eclipse.jst.validation.test/pom.xml
+++ b/tests/org.eclipse.jst.validation.test/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.validation.test</artifactId>
-  <version>1.1.100-SNAPSHOT</version>
+  <version>1.1.200-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
 </project>
diff --git a/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/registry/TestcaseMetaData.java b/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/registry/TestcaseMetaData.java
index b4f2c56..a9cba38 100644
--- a/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/registry/TestcaseMetaData.java
+++ b/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/registry/TestcaseMetaData.java
@@ -1,7 +1,7 @@
 package org.eclipse.jst.validation.test.internal.registry;
 
 import java.io.File;
-import java.net.URL;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -11,8 +11,7 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.IPluginRegistry;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jst.validation.test.BVTValidationPlugin;
@@ -128,27 +127,24 @@
 		// If the directory where the testcase input isn't specified, 
 		// assume that the input is in a subdirectory, named "testInput",
 		// of the testcase's plugin.
-		IPluginRegistry registry = Platform.getPluginRegistry();
-		IPluginDescriptor descriptor = registry.getPluginDescriptor(getDeclaringPluginId());
-		if(descriptor != null) {
-			// Because Platform.asLocalURL throws an IOException if the URL resolves
-			// to a directory, find the plugin.xml file and then strip off the file name 
-			// to find the testInput directory.
-			try {
-				String pluginXmlPath = Platform.asLocalURL(new URL(descriptor.getInstallURL(), "plugin.xml")).getPath(); //$NON-NLS-1$
-				File pluginXml = new File(pluginXmlPath);
-				if(pluginXml.exists()) {
-					File inputDir = new File(pluginXml.getParent(), "testInput"); //$NON-NLS-1$
-					if (inputDir.exists() && inputDir.isDirectory()) {
-						return inputDir.getPath();
-					}
+
+		// Because Platform.asLocalURL throws an IOException if the URL resolves
+		// to a directory, find the plugin.xml file and then strip off the file name 
+		// to find the testInput directory.
+		try {
+			String pluginXmlPath = FileLocator.toFileURL(Platform.getBundle(_vmd.getPluginId()).getEntry("/plugin.xml")).getFile(); //$NON-NLS-1$
+			File pluginXml = new File(pluginXmlPath);
+			if (pluginXml.exists()) {
+				File inputDir = new File(pluginXml.getParent(), "testInput"); //$NON-NLS-1$
+				if (inputDir.exists() && inputDir.isDirectory()) {
+					return inputDir.getPath();
 				}
 			}
-			catch(java.io.IOException exc) {
-			    Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger();
-				if(logger.getLevel() == Level.SEVERE) {
-					logger.write(Level.SEVERE, exc);
-				}
+		}
+		catch (IOException e) {
+		    Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger();
+			if(logger.getLevel() == Level.SEVERE) {
+				logger.write(Level.SEVERE, e);
 			}
 		}
 		
diff --git a/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/registry/TestcaseUtility.java b/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/registry/TestcaseUtility.java
index 32d58e3..f471458 100644
--- a/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/registry/TestcaseUtility.java
+++ b/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/internal/registry/TestcaseUtility.java
@@ -3,13 +3,11 @@
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.net.URL;
 import java.util.logging.Level;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.IPluginRegistry;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jst.validation.test.BVTValidationPlugin;
@@ -36,27 +34,24 @@
 		// If the directory where the testcase input isn't specified, 
 		// assume that the input is in a subdirectory, named "testInput",
 		// of the testcase's plugin.
-		IPluginRegistry registry = Platform.getPluginRegistry();
-		IPluginDescriptor descriptor = registry.getPluginDescriptor(tmd.getDeclaringPluginId());
-		if(descriptor != null) {
-			// Because Platform.asLocalURL throws an IOException if the URL resolves
-			// to a directory, find the plugin.xml file and then strip off the file name 
-			// to find the testInput directory.
-			try {
-				String pluginXmlPath = Platform.asLocalURL(new URL(descriptor.getInstallURL(), "plugin.xml")).getPath(); //$NON-NLS-1$
-				File pluginXml = new File(pluginXmlPath);
-				if(pluginXml.exists()) {
-					File inputDir = new File(pluginXml.getParent(), "testInput"); //$NON-NLS-1$
-					if (inputDir.exists() && inputDir.isDirectory()) {
-						return inputDir.getPath();
-					}
+
+		// Because Platform.asLocalURL throws an IOException if the URL resolves
+		// to a directory, find the plugin.xml file and then strip off the file name 
+		// to find the testInput directory.
+		try {
+			String pluginXmlPath = FileLocator.toFileURL(Platform.getBundle(tmd.getDeclaringPluginId()).getEntry("/plugin.xml")).getFile(); //$NON-NLS-1$
+			File pluginXml = new File(pluginXmlPath);
+			if (pluginXml.exists()) {
+				File inputDir = new File(pluginXml.getParent(), "testInput"); //$NON-NLS-1$
+				if (inputDir.exists() && inputDir.isDirectory()) {
+					return inputDir.getPath();
 				}
 			}
-			catch(java.io.IOException exc) {
-				Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger();
-				if(logger.isLoggingLevel(Level.SEVERE)) {
-					logger.write(Level.SEVERE, exc);
-				}
+		}
+		catch (IOException e) {
+		    Logger logger = BVTValidationPlugin.getPlugin().getMsgLogger();
+			if(logger.getLevel() == Level.SEVERE) {
+				logger.write(Level.SEVERE, e);
 			}
 		}
 		
diff --git a/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/setup/CheckForUntestedPropertiesOperation.java b/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/setup/CheckForUntestedPropertiesOperation.java
index 99c7239..76def5a 100644
--- a/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/setup/CheckForUntestedPropertiesOperation.java
+++ b/tests/org.eclipse.jst.validation.test/test/org/eclipse/jst/validation/test/setup/CheckForUntestedPropertiesOperation.java
@@ -8,10 +8,7 @@
 
 import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.IPluginRegistry;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.jst.validation.sample.parser.PropertyLine;
 import org.eclipse.jst.validation.sample.workbenchimpl.PluginPropertyFile;
 import org.eclipse.jst.validation.test.BVTValidationPlugin;
@@ -42,25 +39,6 @@
 	public ValidatorMetaData getValidatorMetaData() {
 		return _vmd;
 	}
-	private String getPluginId(ValidatorMetaData vmd) {
-		try {
-			// TODO Remove this hack once a getter has been added to ValidatorMetaData for its pluginId.
-			if (vmd != null) {
-				ClassLoader cl = vmd.getValidator().getClass().getClassLoader();
-				IPluginRegistry registry = Platform.getPluginRegistry();
-				IPluginDescriptor[] descriptors = registry.getPluginDescriptors();
-				for (int i = 0; i < descriptors.length; i++) {
-					IPluginDescriptor desc = descriptors[i];
-					if (desc.getPluginClassLoader().equals(cl)) {
-						return desc.getUniqueIdentifier();
-					}
-				}
-			}
-		} catch (InstantiationException exc) {
-			BVTValidationPlugin.getPlugin().handleException(exc);
-		}
-		return null;
-	}
 	void setValidatorMetaData(ValidatorMetaData vmd) {
 		_vmd = vmd;
 	}
@@ -85,7 +63,7 @@
 		String propFileName = getResourceBundleName();
 		ValidatorMetaData vmd = getValidatorMetaData();
 		monitor.subTask("Attempting to load file: " + propFileName); //$NON-NLS-1$
-		String pluginId = getPluginId(vmd);
+		String pluginId = vmd.getPluginId();
 		if (pluginId == null) {
 			String msg = "Cannot load plugin id for validator " + vmd.getValidatorDisplayName();//$NON-NLS-1$	
 			monitor.subTask(msg);