Added optional priority to URI resolver.
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 1e34175..b4489ec 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
@@ -32,16 +32,18 @@
public List projectNatureIds;
protected String resourceType;
protected int stage = URIResolverExtensionRegistry.STAGE_POSTNORMALIZATION;
+ protected String priority = URIResolverExtensionRegistry.PRIORITY_MEDIUM;
protected ClassLoader classLoader;
protected boolean error;
- public URIResolverExtensionDescriptor(String className, ClassLoader classLoader, List projectNatureIds, String resourceType, int stage)
+ public URIResolverExtensionDescriptor(String className, ClassLoader classLoader, List projectNatureIds, String resourceType, int stage, String priority)
{
this.className = className;
this.classLoader = classLoader;
this.projectNatureIds = projectNatureIds;
this.resourceType = resourceType;
this.stage = stage;
+ this.priority = priority;
}
public URIResolverExtension getResolver()
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 1e5bfd5..2587c7b 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
@@ -19,7 +19,6 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.uriresolver.URIResolverExtension;
@@ -27,31 +26,44 @@
protected HashMap map = new HashMap();
public static final int STAGE_PRENORMALIZATION = 1;
public static final int STAGE_POSTNORMALIZATION = 2;
+ 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 = "";
public URIResolverExtensionRegistry() {
}
- public void put(String className, ClassLoader classLoader, List projectNatureIds, String resourceType, int stage) {
+ public void put(String className, ClassLoader classLoader, List projectNatureIds, String resourceType, int stage, String priority) {
if(projectNatureIds == null)
projectNatureIds = new ArrayList();
if(projectNatureIds.isEmpty())
{
projectNatureIds.add(NULL_PROJECT_NATURE_ID);
}
- URIResolverExtensionDescriptor info = new URIResolverExtensionDescriptor(className, classLoader, projectNatureIds, resourceType, stage);
+ URIResolverExtensionDescriptor info = new URIResolverExtensionDescriptor(className, classLoader, projectNatureIds, resourceType, stage, priority);
Iterator idsIter = projectNatureIds.iterator();
while(idsIter.hasNext())
{
String key = (String)idsIter.next();
- List list = (List)map.get(key);
- if (list == null)
- {
- list = new ArrayList();
- map.put(key, list);
- }
+ 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);
}
@@ -59,7 +71,8 @@
/**
- * Return a list of URIResolverExtensionDescriptor objects that apply to this project.
+ * Return a list of URIResolverExtensionDescriptor objects that apply to this project. The list
+ * is in the priority order high, medium, low.
*
*/
public List getExtensionDescriptors(IProject project)
@@ -73,7 +86,9 @@
project == null ||
project.hasNature(key))
{
- result.addAll((List)map.get(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)
@@ -103,10 +118,10 @@
return result;
}
- public URIResolverExtension get(String key) {
- URIResolverExtensionDescriptor info = (URIResolverExtensionDescriptor) map.get(key);
- return info != null ? info.getResolver() : null;
- }
+// public URIResolverExtension get(String key) {
+// URIResolverExtensionDescriptor info = (URIResolverExtensionDescriptor) map.get(key);
+// return info != null ? info.getResolver() : null;
+// }
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 4da8b1a..6b2950f 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
@@ -39,6 +39,7 @@
protected static final String VAL_STAGE_PRE = "prenormalization";
protected static final String VAL_STAGE_POST = "postnormalization";
protected static final String ATT_VALUE = "value";
+ protected static final String ATT_PRIORITY = "priority";
protected URIResolverExtensionRegistry registry;
@@ -75,6 +76,11 @@
//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;
@@ -95,7 +101,7 @@
{
stageint = URIResolverExtensionRegistry.STAGE_PRENORMALIZATION;
}
- registry.put(className, classLoader, projectNatureIds, resourceType, stageint);
+ registry.put(className, classLoader, projectNatureIds, resourceType, stageint, priority);
} catch (Exception e) {
}
}