[317321] DeploymentDescriptorPropertyCache can enter an infinite loop
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
index af9797a..d64107a 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
@@ -59,7 +59,7 @@
 import org.xml.sax.SAXParseException;
 
 /**
- * A cache fo property group information stored in web.xml files. Information
+ * A cache for property group information stored in web.xml files. Information
  * is not persisted.
  */
 public final class DeploymentDescriptorPropertyCache {
@@ -255,7 +255,9 @@
 						if (_debugResolutionCache) {
 							System.out.println("Removing DeploymentDescriptorPropertyCache resolution cache for project " + name); //$NON-NLS-1$ 
 						}
-						getInstance().resolvedMap.remove(name);
+						synchronized (LOCK) {
+							getInstance().resolvedMap.remove(name);
+						}
 					}
 					return true;
 				}
@@ -627,6 +629,8 @@
 
 	Map resolvedMap = new HashMap();
 
+	final static Object LOCK = new Object();
+
 	private DeploymentDescriptorPropertyCache() {
 		super();
 	}
@@ -908,15 +912,16 @@
 		 */
 		IPath resolved = null;
 		Map mapForProject = null;
-		mapForProject = (Map) resolvedMap.get(fullPath.segment(0));
-		if (mapForProject != null) {
-			resolved = (IPath) mapForProject.get(fullPath);
+		synchronized (LOCK) {
+			mapForProject = (Map) resolvedMap.get(fullPath.segment(0));
+			if (mapForProject != null) {
+				resolved = (IPath) mapForProject.get(fullPath);
+			}
+			else {
+				mapForProject = new HashMap();
+				resolvedMap.put(fullPath.segment(0), mapForProject);
+			}
 		}
-		else {
-			mapForProject = new HashMap();
-			resolvedMap.put(fullPath.segment(0), mapForProject);
-		}
-
 		if (resolved != null) {
 			if (_debugResolutionCache) {
 				System.out.println("DeploymentDescriptorPropertyCache resolution cache hit for " + fullPath); //$NON-NLS-1$