[nobug] cleanups in DeploymentDescriptorPropertyCache
diff --git a/web/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF b/web/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
index a1ea487..6245382 100644
--- a/web/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
+++ b/web/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.jsp.core;singleton:=true
-Bundle-Version: 1.4.100.qualifier
+Bundle-Version: 1.4.200.qualifier
 Bundle-Activator: org.eclipse.jst.jsp.core.internal.JSPCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/web/bundles/org.eclipse.jst.jsp.core/pom.xml b/web/bundles/org.eclipse.jst.jsp.core/pom.xml
index 0779833..d400ae6 100644
--- a/web/bundles/org.eclipse.jst.jsp.core/pom.xml
+++ b/web/bundles/org.eclipse.jst.jsp.core/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.sourceediting</groupId>
   <artifactId>org.eclipse.jst.jsp.core</artifactId>
-  <version>1.4.100-SNAPSHOT</version>
+  <version>1.4.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java b/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
index ba8d459..63d6b96 100644
--- a/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
+++ b/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
@@ -40,6 +40,7 @@
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.jdt.core.IField;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
@@ -71,12 +72,14 @@
  */
 public final class DeploymentDescriptorPropertyCache {
 	private static final PropertyGroup[] NO_PROPERTY_GROUPS = new PropertyGroup[0];
+	private static final String JAKARTA_SERVLET = "jakarta.servlet";
+	private static final String JAVAX_SERVLET = "javax.servlet";
 
 	static class DeploymentDescriptor {
 		PropertyGroup[] groups;
 		long modificationStamp;
 		StringMatcher[] urlPatterns;
-		Float version = new Float(DEFAULT_WEBAPP_VERSION);
+		Float version = Float.valueOf(DEFAULT_WEBAPP_VERSION);
 	}
 
 	/**
@@ -322,7 +325,7 @@
 
 		public void error(SAXParseException exception) throws SAXException {
 			if (fDoLogExceptions)
-				Logger.log(Logger.WARNING, "SAXParseException with " + fPath + " (error) while reading descriptor: " + exception.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				Logger.log(Logger.WARNING, "SAXParseException with " + fPath + " (error) while reading descriptor: " + exception.getMessage()); //$NON-NLS-1$// $NON-NLS-2$ //$NON-NLS-3$
 		}
 
 		public void fatalError(SAXParseException exception) throws SAXException {
@@ -718,19 +721,19 @@
 					String schemaLocations = webapp.getAttribute(SCHEMA_LOCATION);
 					if (schemaLocations != null && schemaLocations.length() > 0) {
 						if (schemaLocations.contains("/web-app_5_0.xsd")) {
-							version[0] = new Float(5);
+							version[0] = Float.valueOf(5);
 						}
 						/**
 						 * Technically there's a 4.0.3, but treat it the same
 						 */
-						else if (schemaLocations.contains("/web-app_4_0.xsd")) {
-							version[0] = new Float(4);
+						else if (schemaLocations.contains("/web-app_4_0.xsd")) { //$NON-NLS-1$
+							version[0] = Float.valueOf(4);
 						}
-						else if (schemaLocations.contains("/web-app_3_1.xsd")) {
-							version[0] = new Float(3.1);
+						else if (schemaLocations.contains("/web-app_3_1.xsd")) { //$NON-NLS-1$
+							version[0] = Float.valueOf(3.1f);
 						}
-						else if (schemaLocations.contains("/web-app_3_0.xsd")) {
-							version[0] = new Float(3);
+						else if (schemaLocations.contains("/web-app_3_0.xsd")) { //$NON-NLS-1$
+							version[0] = Float.valueOf(3);
 						}
 					}
 				}
@@ -740,21 +743,21 @@
 					if (doctype != null) {
 						String systemId = doctype.getSystemId();
 						String publicId = doctype.getPublicId();
-						if ((systemId != null && systemId.endsWith("web-app_2_3.dtd")) || (publicId != null && publicId.indexOf("Web Application 2.3") > 0)) { //$NON-NLS-1$ //$NON-NLS-2$
-							version[0] = new Float(2.3);
+						if ((systemId != null && systemId.endsWith("web-app_2_3.dtd")) || (publicId != null && publicId.indexOf("Web Application 2.3") > 0)) { //$NON-NLS-1$//$NON-NLS-2$
+							version[0] = Float.valueOf(2.3f);
 						}
-						else if ((systemId != null && systemId.endsWith("web-app_2_2.dtd")) || (publicId != null && publicId.indexOf("Web Application 2.2") > 0)) { //$NON-NLS-1$ //$NON-NLS-2$
-							version[0] = new Float(2.2);
+						else if ((systemId != null && systemId.endsWith("web-app_2_2.dtd")) || (publicId != null && publicId.indexOf("Web Application 2.2") > 0)) { //$NON-NLS-1$//$NON-NLS-2$
+							version[0] = Float.valueOf(2.2f);
 						}
-						else if ((systemId != null && systemId.endsWith("web-app_2_1.dtd")) || (publicId != null && publicId.indexOf("Web Application 2.1") > 0)) { //$NON-NLS-1$ //$NON-NLS-2$
-							version[0] = new Float(2.1);
+						else if ((systemId != null && systemId.endsWith("web-app_2_1.dtd")) || (publicId != null && publicId.indexOf("Web Application 2.1") > 0)) { //$NON-NLS-1$//$NON-NLS-2$
+							version[0] = Float.valueOf(2.1f);
 						}
 					}
 				}
 			}
 		}
 		if (version[0] == null) {
-			version[0] = new Float(DEFAULT_WEBAPP_VERSION);
+			version[0] = Float.valueOf(DEFAULT_WEBAPP_VERSION);
 		}
 
 		NodeList propertyGroupElements = document.getElementsByTagName(JSP_PROPERTY_GROUP);
@@ -826,32 +829,42 @@
 			return null;
 		}
 		try {
-			if (javaProject.findType("jakarta.servlet.GenericFilter") != null) {
-				return new ServletAPIDescriptor("jakarta.servlet", 5);
+			if (javaProject.findType("jakarta.servlet.GenericFilter") != null) { //$NON-NLS-1$
+				return new ServletAPIDescriptor(JAKARTA_SERVLET, 5);
 			}
-			if (javaProject.findType("javax.servlet.GenericFilter") != null) {
-				return new ServletAPIDescriptor("javax.servlet", 4);
+			if (javaProject.findType("javax.servlet.GenericFilter") != null) { //$NON-NLS-1$
+				return new ServletAPIDescriptor(JAVAX_SERVLET, 4);
 			}
-			if (javaProject.findType("javax.servlet.ReadListener") != null) {
-				return new ServletAPIDescriptor("javax.servlet", 3.1f);
+			if (javaProject.findType("javax.servlet.ReadListener") != null) { //$NON-NLS-1$
+				return new ServletAPIDescriptor(JAVAX_SERVLET, 3.1f);
 			}
-			if (javaProject.findType("javax.servlet.SessionCookieConfig") != null) {
-				return new ServletAPIDescriptor("javax.servlet", 3);
+			if (javaProject.findType("javax.servlet.SessionCookieConfig") != null) { //$NON-NLS-1$
+				return new ServletAPIDescriptor(JAVAX_SERVLET, 3);
 			}
-			IType servletRequestType = javaProject.findType("javax.servlet.http.HttpServletRequest");
+			IType servletRequestType = javaProject.findType("javax.servlet.http.HttpServletRequest"); //$NON-NLS-1$
 			if (servletRequestType != null) {
 				IMethod[] methods = servletRequestType.getMethods();
 				for (int i = 0; i < methods.length; i++) {
 					if ("getContextPath".equals(methods[i].getElementName())) {
-						return new ServletAPIDescriptor("javax.servlet", 2.5f);
+						return new ServletAPIDescriptor(JAVAX_SERVLET, 2.5f);
 					}
 				}
 			}
-			if (javaProject.findType("javax.servlet.ServletRequestAttributeEvent") != null) {
-				return new ServletAPIDescriptor("javax.servlet", 2.4f);
+			if (javaProject.findType("javax.servlet.ServletRequestAttributeEvent") != null) { //$NON-NLS-1$
+				return new ServletAPIDescriptor(JAVAX_SERVLET, 2.4f);
 			}
-			if (javaProject.findType("javax.servlet.Filter") != null) {
-				return new ServletAPIDescriptor("javax.servlet", 2.3f);
+			if (javaProject.findType("javax.servlet.Filter") != null) { //$NON-NLS-1$
+				return new ServletAPIDescriptor(JAVAX_SERVLET, 2.3f);
+			}
+			if (javaProject.findType("javax.servlet.http.HttpServletResponse") != null) { //$NON-NLS-1$
+				if (servletRequestType != null) {
+					IField[] fields = servletRequestType.getFields();
+					for (int i = 0; i < fields.length; i++) {
+						if ("SC_REQUESTED_RANGE_NOT_SATISFIABLE".equals(fields[i].getElementName())) { //$NON-NLS-1$
+							return new ServletAPIDescriptor(JAVAX_SERVLET, 2.2f);
+						}
+					}
+				}
 			}
 		}
 		catch (JavaModelException e) {
@@ -1093,12 +1106,12 @@
 		}
 		if (resolved != null) {
 			if (_debugResolutionCache) {
-				System.out.println("DeploymentDescriptorPropertyCache resolution cache hit for " + fullPath); //$NON-NLS-1$ 
+				System.out.println("DeploymentDescriptorPropertyCache resolution cache hit for " + fullPath); //$NON-NLS-1$
 			}
 		}
 		else {
 			if (_debugResolutionCache) {
-				System.out.println("DeploymentDescriptorPropertyCache resolution cache miss for " + fullPath); //$NON-NLS-1$ 
+				System.out.println("DeploymentDescriptorPropertyCache resolution cache miss for " + fullPath); //$NON-NLS-1$
 			}
 			resolved = FacetModuleCoreSupport.resolve(fullPath, SLASH_WEB_INF_WEB_XML);
 			mapForProject.put(fullPath, resolved);