[110229] Fixed NoClassDefFoundError for URIResolverPlugin class in  headless mode.
Removed dependency on runtime compatibility.
Added comments.
Various code cleanup.
Converted plugin to single jar.
diff --git a/plugins/org.eclipse.wst.common.uriresolver/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.uriresolver/META-INF/MANIFEST.MF
index 24a0f4a..8953045 100644
--- a/plugins/org.eclipse.wst.common.uriresolver/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.uriresolver/META-INF/MANIFEST.MF
@@ -3,15 +3,12 @@
 Bundle-Name: org.eclipse.wst.common.uriresolver
 Bundle-SymbolicName: org.eclipse.wst.common.uriresolver; singleton:=true
 Bundle-Version: 0.7.0
-Bundle-ClassPath: uriresolver.jar
-Bundle-Activator: org.eclipse.core.internal.compatibility.PluginActivator
+Bundle-Activator: org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.common.uriresolver.internal,
  org.eclipse.wst.common.uriresolver.internal.provisional,
   org.eclipse.wst.common.uriresolver.internal.util
-Require-Bundle: org.eclipse.core.runtime.compatibility,
- org.eclipse.core.runtime,
+Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.core.resources
 Eclipse-AutoStart: true
-Plugin-Class: org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin
diff --git a/plugins/org.eclipse.wst.common.uriresolver/build.properties b/plugins/org.eclipse.wst.common.uriresolver/build.properties
index 6b304ad..b68dc43 100644
--- a/plugins/org.eclipse.wst.common.uriresolver/build.properties
+++ b/plugins/org.eclipse.wst.common.uriresolver/build.properties
@@ -1,7 +1,7 @@
+source.. = src/
+output.. = bin/
+src.includes = build.properties
 bin.includes = plugin.xml,\
                uriresolver.jar,\
                META-INF/,\
                about.html
-jars.compile.order = uriresolver.jar
-source.uriresolver.jar = src/
-output.uriresolver.jar = bin/
diff --git a/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionDescriptor.java b/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionDescriptor.java
index 2394f5e..1a60240 100644
--- a/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionDescriptor.java
+++ b/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionDescriptor.java
@@ -1,51 +1,74 @@
-/*
-* Copyright (c) 2002 IBM Corporation and others.
-* All rights reserved.   This program and the accompanying materials
-* are made available under the terms of the Common Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/cpl-v10.html
-* 
-* Contributors:
-*   IBM - Initial API and implementation
-*   Jens Lukowski/Innoopract - initial renaming/restructuring
-* 
-*/
+/**
+ * Copyright (c) 2002 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *   IBM - Initial API and implementation
+ *   Jens Lukowski/Innoopract - initial renaming/restructuring
+ * 
+ */
 package org.eclipse.wst.common.uriresolver.internal;
 
 import java.util.List;
 
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverExtension;
-
+import org.osgi.framework.Bundle;
 
 /**
- * @author csalter
- * 
- * To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Generation - Code and Comments
+ * A URI resolver extension descriptor contains all the information about
+ * an extension URI resolver. The information contained allows for the
+ * extension resolver to be instantiated and called at the correct times.
  */
 public class URIResolverExtensionDescriptor
 {
 	protected URIResolverExtension resolver;
-	//protected String projectNature;
+
 	protected String fileType;
+
 	protected String className;
+
 	public List projectNatureIds;
+
 	protected String resourceType;
+
 	protected int stage = URIResolverExtensionRegistry.STAGE_POSTNORMALIZATION;
-  protected String priority = URIResolverExtensionRegistry.PRIORITY_MEDIUM;
-	protected ClassLoader classLoader;
+
+	protected String priority = URIResolverExtensionRegistry.PRIORITY_MEDIUM;
+
+	protected String pluginId;
+
 	protected boolean error;
 
-	public URIResolverExtensionDescriptor(String className, ClassLoader classLoader, List projectNatureIds, String resourceType, int stage, String priority)
+	/**
+	 * Constructor.
+	 * 
+	 * @param className The extension URI resolver class name.
+	 * @param pluginId The ID of the plugin that contains the extension URI resolver class.
+	 * @param projectNatureIds The project nature IDs for which the resolver should run.
+	 * @param resourceType The type of resource for which the resolver should run.
+	 * @param stage The stage of the resolver. Either prenormalization or postnormalization.
+	 * @param priority The resolver's priority. high, medium, or low.
+	 */
+	public URIResolverExtensionDescriptor(String className, String pluginId,
+			List projectNatureIds, String resourceType, int stage, String priority)
 	{
 		this.className = className;
-		this.classLoader = classLoader;
+		this.pluginId = pluginId;
 		this.projectNatureIds = projectNatureIds;
 		this.resourceType = resourceType;
 		this.stage = stage;
-    this.priority = priority;
+		this.priority = priority;
 	}
 
+	/**
+	 * Get the extension URI resolver.
+	 * 
+	 * @return The extension URI resolver.
+	 */
 	public URIResolverExtension getResolver()
 	{
 
@@ -53,10 +76,12 @@
 		{
 			try
 			{
-				Class theClass = classLoader != null ? classLoader.loadClass(className) : Class.forName(className);
+				// Class theClass = classLoader != null ?
+				// classLoader.loadClass(className) : Class.forName(className);
+				Bundle bundle = Platform.getBundle(pluginId);
+				Class theClass = bundle.loadClass(className);
 				resolver = (URIResolverExtension) theClass.newInstance();
-			}
-			catch (Exception e)
+			} catch (Exception e)
 			{
 				error = true;
 				e.printStackTrace();
@@ -65,16 +90,33 @@
 		return resolver;
 	}
 
+	/**
+	 * Determines if the resolver should run in the current scenario given
+	 * the project nature ID, resource type, and stage.
+	 * 
+	 * @param projectNatureId The project nature ID to check against.
+	 * @param resourceType The resource type to check against.
+	 * @param stage The stage to check against.
+	 * @return True if the resolver should run, false otherwise.
+	 */
 	public boolean matches(String projectNatureId, String resourceType, int stage)
 	{
-	  if(projectNatureIds.contains(projectNatureId))
-	  {
-		return matches(this.resourceType, resourceType) && this.stage == stage;
-	  }
-	  return false;
+		if (projectNatureIds.contains(projectNatureId))
+		{
+			return matches(this.resourceType, resourceType) && this.stage == stage;
+		}
+		return false;
 	}
 
-	public boolean matches(String a, String b)
+	/**
+	 * Determines if string a matches string b.
+	 * TODO: Why is this required instead of just using String.equals?
+	 * 
+	 * @param a String for comparison.
+	 * @param b String for comparison.
+	 * @return True if the strings match, false otherwise.
+	 */
+	private boolean matches(String a, String b)
 	{
 		return (a != null) ? a.equals(b) : a == b;
 	}
diff --git a/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionRegistry.java b/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionRegistry.java
index 926229e..d89c444 100644
--- a/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionRegistry.java
+++ b/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionRegistry.java
@@ -1,15 +1,15 @@
 /*
-* Copyright (c) 2002 IBM Corporation and others.
-* All rights reserved.   This program and the accompanying materials
-* are made available under the terms of the Common Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/cpl-v10.html
-* 
-* Contributors:
-*   IBM - Initial API and implementation
-*   Jens Lukowski/Innoopract - initial renaming/restructuring
-* 
-*/
+ * Copyright (c) 2002 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *   IBM - Initial API and implementation
+ *   Jens Lukowski/Innoopract - initial renaming/restructuring
+ * 
+ */
 package org.eclipse.wst.common.uriresolver.internal;
 
 import java.util.ArrayList;
@@ -20,139 +20,144 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 
-
-
-public class URIResolverExtensionRegistry {
+/**
+ * The URI resolver extension registry contains information about
+ * all of the extension URI resolvers.
+ */
+public class URIResolverExtensionRegistry
+{
 	protected HashMap map = new HashMap();
-	public static final int STAGE_PRENORMALIZATION = 1;
-	public static final int STAGE_POSTNORMALIZATION = 2;	
-    public static final int STAGE_PHYSICAL = 3;    
-  public static final String PRIORITY_LOW = "low";
-  public static final String PRIORITY_MEDIUM = "medium";
-  public static final String PRIORITY_HIGH = "high";
-	protected final static String NULL_PROJECT_NATURE_ID = "";
-  
-  protected static URIResolverExtensionRegistry instance;
-	
-	private URIResolverExtensionRegistry() {
-	}
-  
-  public synchronized static URIResolverExtensionRegistry getIntance()
-  {
-    if (instance == null)
-    {
-      instance = new URIResolverExtensionRegistry(); 
-      new URIResolverExtensionRegistryReader(instance).readRegistry();  
-    } 
-    return instance;
-  }
-  
 
-	public void put(String className, ClassLoader classLoader, List projectNatureIds, String resourceType, int stage, String priority) {
-		if(projectNatureIds == null)
-		  projectNatureIds = new ArrayList();
-		if(projectNatureIds.isEmpty())
+	public static final int STAGE_PRENORMALIZATION = 1;
+
+	public static final int STAGE_POSTNORMALIZATION = 2;
+
+	public static final int STAGE_PHYSICAL = 3;
+
+	public static final String PRIORITY_LOW = "low";
+
+	public static final String PRIORITY_MEDIUM = "medium";
+
+	public static final String PRIORITY_HIGH = "high";
+
+	protected final static String NULL_PROJECT_NATURE_ID = "";
+
+	protected static URIResolverExtensionRegistry instance;
+
+	private URIResolverExtensionRegistry()
+	{
+	}
+
+	/**
+	 * Get the one and only instance of the registry.
+	 * 
+	 * @return The one and only instance of the registry.
+	 */
+	public synchronized static URIResolverExtensionRegistry getIntance()
+	{
+		if (instance == null)
 		{
-		  projectNatureIds.add(NULL_PROJECT_NATURE_ID);
+			instance = new URIResolverExtensionRegistry();
+			new URIResolverExtensionRegistryReader(instance).readRegistry();
 		}
-		URIResolverExtensionDescriptor info = new URIResolverExtensionDescriptor(className, classLoader, projectNatureIds, resourceType, stage, priority);
-		
-		Iterator idsIter = projectNatureIds.iterator();
-		while(idsIter.hasNext())
+		return instance;
+	}
+
+	/**
+	 * Add an extension resolver to the registry.
+	 * 
+	 * @param className The name of the extension URI resolver class.
+	 * @param pluginId The ID of the plugin that contains the extension URI resolver class.
+	 * @param projectNatureIds A list of project natures IDs for which the resolver should run.
+	 * @param resourceType The type of resoure for which an extension resource should run.
+	 * @param stage The stage to run. Either prenormalization or postnormalization.
+	 * @param priority The priority of the resolver. Valid values are high, medium, and low.
+	 */
+	public void put(String className, String pluginId, List projectNatureIds,
+			String resourceType, int stage, String priority)
+	{
+		if (projectNatureIds == null)
+			projectNatureIds = new ArrayList();
+		if (projectNatureIds.isEmpty())
 		{
-		  String key = (String)idsIter.next();
-		  
-      HashMap priorityMap = (HashMap)map.get(key);
-      if(priorityMap == null)
-      {
-        priorityMap = new HashMap();
-        map.put(key, priorityMap);
-        priorityMap.put(PRIORITY_HIGH, new ArrayList());
-        priorityMap.put(PRIORITY_MEDIUM, new ArrayList());
-        priorityMap.put(PRIORITY_LOW, new ArrayList());
-      }
-      List list = (List)priorityMap.get(priority);
-		  //List list = (List)map.get(key);   
-//		  if (list == null)
-//		  {			
-//			list = new ArrayList();
-//			priorityMap.put(priority, list);
-//		  }
-		
-		  list.add(info);	
+			projectNatureIds.add(NULL_PROJECT_NATURE_ID);
+		}
+		URIResolverExtensionDescriptor info = new URIResolverExtensionDescriptor(
+				className, pluginId, projectNatureIds, resourceType, stage, priority);
+
+		Iterator idsIter = projectNatureIds.iterator();
+		while (idsIter.hasNext())
+		{
+			String key = (String) idsIter.next();
+
+			HashMap priorityMap = (HashMap) map.get(key);
+			if (priorityMap == null)
+			{
+				priorityMap = new HashMap();
+				map.put(key, priorityMap);
+				priorityMap.put(PRIORITY_HIGH, new ArrayList());
+				priorityMap.put(PRIORITY_MEDIUM, new ArrayList());
+				priorityMap.put(PRIORITY_LOW, new ArrayList());
+			}
+			List list = (List) priorityMap.get(priority);
+			list.add(info);
 		}
 	}
-	
-	
+
 	/**
-	 * Return a list of URIResolverExtensionDescriptor objects that apply to this project. The list
-   * is in the priority order high, medium, low.
+	 * Return a list of URIResolverExtensionDescriptor objects that apply to this
+	 * project. The list is in the priority order high, medium, low.
 	 * 
+	 * @param project The project for which you are requesting resolvers.
+	 * @return A list of URIResolverExtensionDescriptor objects.
 	 */
 	public List getExtensionDescriptors(IProject project)
 	{
 		List result = new ArrayList();
-		for (Iterator i = map.keySet().iterator(); i.hasNext(); )
+		for (Iterator i = map.keySet().iterator(); i.hasNext();)
 		{
-			String key = (String)i.next();
-			try{		
-				if (key == NULL_PROJECT_NATURE_ID ||
-				    project == null ||
-					project.hasNature(key))
-				{				
-					result.addAll((List)((HashMap)map.get(key)).get(PRIORITY_HIGH)); 
-          result.addAll((List)((HashMap)map.get(key)).get(PRIORITY_MEDIUM)); 
-          result.addAll((List)((HashMap)map.get(key)).get(PRIORITY_LOW)); 
-				}	
+			String key = (String) i.next();
+			try
+			{
+				if (key == NULL_PROJECT_NATURE_ID || project == null
+						|| project.hasNature(key))
+				{
+					result.addAll((List) ((HashMap) map.get(key)).get(PRIORITY_HIGH));
+					result.addAll((List) ((HashMap) map.get(key)).get(PRIORITY_MEDIUM));
+					result.addAll((List) ((HashMap) map.get(key)).get(PRIORITY_LOW));
+				}
+			} catch (CoreException e)
+			{
 			}
-			catch (CoreException e)
-			{}
 		}
 		return result;
 	}
-	
+
 	/**
 	 * Return a list of URIResolver objects that match the stage.
+	 * TODO: This seems like an odd method to house here. It may need to be moved
+	 *       or removed if the stage attribute dissapears.
 	 * 
-	 */	
+	 * @param resolverInfoList A list of resolvers to prune.
+	 * @param stage The stage requested.
+	 * @return A list of URIResolver objects that match the stage.
+	 */
 	public List getMatchingURIResolvers(List resolverInfoList, int stage)
 	{
-		List result = new ArrayList();			
-		for (Iterator i = resolverInfoList.iterator(); i.hasNext(); ){
-			URIResolverExtensionDescriptor info = (URIResolverExtensionDescriptor)i.next();		
+		List result = new ArrayList();
+		for (Iterator i = resolverInfoList.iterator(); i.hasNext();)
+		{
+			URIResolverExtensionDescriptor info = (URIResolverExtensionDescriptor) i
+					.next();
 			if (info.stage == stage)
-			{    
+			{
 				Object resolver = info.getResolver();
 				if (resolver != null)
-				{ 									
+				{
 					result.add(resolver);
-				}					
+				}
 			}
 		}
 		return result;
-	}	
-
-//	public URIResolverExtension get(String key) {
-//		URIResolverExtensionDescriptor info = (URIResolverExtensionDescriptor) map.get(key);
-//		return info != null ? info.getResolver() : null;
-//	}
-
-
-	
-	/*
-	protected URIResolverExtensionDescriptor getMatchingURIResolverExtensionDescriptor(List list, String projectNatureId, String resourceType, int stage)
-	{
-		URIResolverExtensionDescriptor result = null;
-		for (Iterator i = list.iterator(); i.hasNext(); )
-		{
-			URIResolverExtensionDescriptor info = (URIResolverExtensionDescriptor)i.next();
-			if (info.matches(projectNatureId, resourceType, stage))
-			{
-				result = info;
-				break;
-			}
-		}
-		return result;
-	}*/	
+	}
 }
-
diff --git a/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionRegistryReader.java b/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionRegistryReader.java
index 35b3847..2557dc0 100644
--- a/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionRegistryReader.java
+++ b/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/URIResolverExtensionRegistryReader.java
@@ -1,15 +1,15 @@
-/*
-* Copyright (c) 2002 IBM Corporation and others.
-* All rights reserved.   This program and the accompanying materials
-* are made available under the terms of the Common Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/cpl-v10.html
-* 
-* Contributors:
-*   IBM - Initial API and implementation
-*   Jens Lukowski/Innoopract - initial renaming/restructuring
-* 
-*/
+/**
+ * Copyright (c) 2002 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *   IBM - Initial API and implementation
+ *   Jens Lukowski/Innoopract - initial renaming/restructuring
+ * 
+ */
 package org.eclipse.wst.common.uriresolver.internal;
 
 import java.util.ArrayList;
@@ -22,92 +22,116 @@
 import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin;
 
 /**
- * @author csalter
- *
-*/
-public class URIResolverExtensionRegistryReader {
+ * This class reads the URI resolver extension point and registers extension
+ * resolvers with the URI resolver registry.
+ */
+public class URIResolverExtensionRegistryReader
+{
 
-		protected static final String EXTENSION_POINT_ID = "resolverExtensions";
-		protected static final String TAG_NAME = "resolverExtension";
-		protected static final String ATT_ID = "id";
-	    protected static final String ELEM_PROJECT_NATURE_ID = "projectNature";
-	    protected static final String ATT_RESOURCE_TYPE = "resourceType";		    		
-		protected static final String ATT_CLASS = "class";
-	    protected static final String ATT_STAGE = "stage";		
-	    protected static final String VAL_STAGE_PRE = "prenormalization";
-	    protected static final String VAL_STAGE_POST = "postnormalization";
-        protected static final String VAL_STAGE_PHYSICAL = "physical";
-	    protected static final String ATT_VALUE = "value";
-       protected static final String ATT_PRIORITY = "priority";
-	   
+	protected static final String EXTENSION_POINT_ID = "resolverExtensions";
 
-		protected URIResolverExtensionRegistry registry;
+	protected static final String TAG_NAME = "resolverExtension";
 
-		public URIResolverExtensionRegistryReader(URIResolverExtensionRegistry registry) {
-			this.registry = registry;
-		}
+	protected static final String ATT_ID = "id";
 
-		/**
-		 * read from plugin registry and parse it.
-		 */
-		public void readRegistry() {
-			IExtensionRegistry pluginRegistry = Platform.getExtensionRegistry();
-		    IExtensionPoint point = pluginRegistry.getExtensionPoint(URIResolverPlugin.getInstance().getBundle().getSymbolicName(), EXTENSION_POINT_ID);
-			if (point != null) {
-				IConfigurationElement[] elements = point.getConfigurationElements();
-				for (int i = 0; i < elements.length; i++) {
-					readElement(elements[i]);
-				}
+	protected static final String ELEM_PROJECT_NATURE_ID = "projectNature";
+
+	protected static final String ATT_RESOURCE_TYPE = "resourceType";
+
+	protected static final String ATT_CLASS = "class";
+
+	protected static final String ATT_STAGE = "stage";
+
+	protected static final String VAL_STAGE_PRE = "prenormalization";
+
+	protected static final String VAL_STAGE_POST = "postnormalization";
+
+	protected static final String VAL_STAGE_PHYSICAL = "physical";
+
+	protected static final String ATT_VALUE = "value";
+
+	protected static final String ATT_PRIORITY = "priority";
+
+	protected URIResolverExtensionRegistry registry;
+
+	public URIResolverExtensionRegistryReader(URIResolverExtensionRegistry registry)
+	{
+		this.registry = registry;
+	}
+
+	/**
+	 * read from plugin registry and parse it.
+	 */
+	public void readRegistry()
+	{
+		IExtensionRegistry pluginRegistry = Platform.getExtensionRegistry();
+		IExtensionPoint point = pluginRegistry.getExtensionPoint(URIResolverPlugin
+				.getInstance().getBundle().getSymbolicName(), EXTENSION_POINT_ID);
+		if (point != null)
+		{
+			IConfigurationElement[] elements = point.getConfigurationElements();
+			for (int i = 0; i < elements.length; i++)
+			{
+				readElement(elements[i]);
 			}
 		}
+	}
 
-		/**
-		 * readElement() - parse and deal with an extension like:
-		 *
-		 * <extension point="org.eclipse.wst.contentmodel.util_implementation">
-		 *    <util_implementation class = org.eclipse.wst.baseutil.CMUtilImplementationImpl  />
-		 * </extension>
-		 */
-		protected void readElement(IConfigurationElement element) {
-			if (element.getName().equals(TAG_NAME)) {
-				//String id = element.getAttribute(ATT_ID);
-				String className = element.getAttribute(ATT_CLASS);
-				//String projectNatureId = element.getAttribute(ATT_PROJECT_NATURE_ID);
-				String resourceType = element.getAttribute(ATT_RESOURCE_TYPE);
-				String stage = element.getAttribute(ATT_STAGE);	
-        String priority = element.getAttribute(ATT_PRIORITY); 
-        if(priority == null || priority.equals(""))
-        {
-          priority = URIResolverExtensionRegistry.PRIORITY_MEDIUM;
-        }
-				List projectNatureIds = new ArrayList();
-				IConfigurationElement[] ids = element.getChildren(ELEM_PROJECT_NATURE_ID);
-				int numids = ids.length;
-				for(int i = 0; i < numids; i++)
+	/**
+	 * readElement() - parse and deal with an extension like:
+	 * 
+	 * <extension point="org.eclipse.wst.contentmodel.util_implementation">
+	 * <util_implementation class =
+	 * org.eclipse.wst.baseutil.CMUtilImplementationImpl /> </extension>
+	 */
+	protected void readElement(IConfigurationElement element)
+	{
+		if (element.getName().equals(TAG_NAME))
+		{
+			// String id = element.getAttribute(ATT_ID);
+			String className = element.getAttribute(ATT_CLASS);
+			// String projectNatureId = element.getAttribute(ATT_PROJECT_NATURE_ID);
+			String resourceType = element.getAttribute(ATT_RESOURCE_TYPE);
+			String stage = element.getAttribute(ATT_STAGE);
+			String priority = element.getAttribute(ATT_PRIORITY);
+			if (priority == null || priority.equals(""))
+			{
+				priority = URIResolverExtensionRegistry.PRIORITY_MEDIUM;
+			}
+			List projectNatureIds = new ArrayList();
+			IConfigurationElement[] ids = element.getChildren(ELEM_PROJECT_NATURE_ID);
+			int numids = ids.length;
+			for (int i = 0; i < numids; i++)
+			{
+				String tempid = ids[i].getAttribute(ATT_VALUE);
+
+				if (tempid != null)
 				{
-				  String tempid = ids[i].getAttribute(ATT_VALUE);
-				  
-				  if(tempid != null)
-				  {
-				    projectNatureIds.add(tempid);
-				  }
+					projectNatureIds.add(tempid);
 				}
-				if (className != null) {
-					try {
-						ClassLoader classLoader = element.getDeclaringExtension().getDeclaringPluginDescriptor().getPlugin().getClass().getClassLoader();
-						int stageint = URIResolverExtensionRegistry.STAGE_POSTNORMALIZATION;
-						if(stage.equalsIgnoreCase(VAL_STAGE_PRE))
-						{
-						  stageint = URIResolverExtensionRegistry.STAGE_PRENORMALIZATION;
-						}
-                        else if (stage.equalsIgnoreCase(VAL_STAGE_PHYSICAL))
-                        {
-                          stageint = URIResolverExtensionRegistry.STAGE_PHYSICAL;  
-                        }  
-						registry.put(className, classLoader, projectNatureIds, resourceType, stageint, priority);
-					} catch (Exception e) {
+			}
+			if (className != null)
+			{
+				try
+				{
+					String pluginId = element.getDeclaringExtension().getNamespace();
+
+					int stageint = URIResolverExtensionRegistry.STAGE_POSTNORMALIZATION;
+					if (stage.equalsIgnoreCase(VAL_STAGE_PRE))
+					{
+						stageint = URIResolverExtensionRegistry.STAGE_PRENORMALIZATION;
+					} else if (stage.equalsIgnoreCase(VAL_STAGE_PHYSICAL))
+					{
+						stageint = URIResolverExtensionRegistry.STAGE_PHYSICAL;
 					}
+					registry.put(className, pluginId, projectNatureIds, resourceType,
+							stageint, priority);
+				} catch (Exception e)
+				{
+					// TODO: Log exception as this will cause an extension resolver
+					//       from loading.
 				}
 			}
 		}
 	}
+}
diff --git a/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/provisional/URIResolverPlugin.java b/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/provisional/URIResolverPlugin.java
index 5b650c4..7c01b80 100644
--- a/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/provisional/URIResolverPlugin.java
+++ b/plugins/org.eclipse.wst.common.uriresolver/src/org/eclipse/wst/common/uriresolver/internal/provisional/URIResolverPlugin.java
@@ -13,7 +13,7 @@
 package org.eclipse.wst.common.uriresolver.internal.provisional;
 
 import java.util.Map;
-import org.eclipse.core.runtime.IPluginDescriptor;
+
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.wst.common.uriresolver.internal.ExtensibleURIResolver;
 import org.eclipse.wst.common.uriresolver.internal.URIResolverExtensionRegistry;
@@ -28,8 +28,8 @@
 		return instance;
 	}
 	
-	public URIResolverPlugin(IPluginDescriptor descriptor) {
-		super(descriptor);
+	public URIResolverPlugin() {
+		super();
 		instance = this;
 	}