[579905] Prefer facet version for determining javax/jakarta package names

Change-Id: Ia97ff4e2ba0f34499565025898f38c3248baf901
diff --git a/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
index a520673..d16c20f 100644
--- a/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Web Plug-in
 Bundle-SymbolicName: org.eclipse.jst.j2ee.web; singleton:=true
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.100.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.internal.web.plugin.WebPlugin
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
@@ -41,6 +41,7 @@
  org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.wst.common.modulecore;bundle-version="[1.2.101,2.0.0)",
  org.eclipse.jem.util;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.jem;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.jst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
  com.ibm.icu;bundle-version="3.8.1",
diff --git a/plugins/org.eclipse.jst.j2ee.web/pom.xml b/plugins/org.eclipse.jst.j2ee.web/pom.xml
index 4a3a09e..718a789 100644
--- a/plugins/org.eclipse.jst.j2ee.web/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.web/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.web</artifactId>
-  <version>1.2.0-SNAPSHOT</version>
+  <version>1.2.100-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewServletClassDataModelProvider.java b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewServletClassDataModelProvider.java
index b5dd573..3a5153b 100644
--- a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewServletClassDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewServletClassDataModelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2021 IBM Corporation and others.
+ * Copyright (c) 2003, 2022 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
@@ -477,15 +477,26 @@
 	 */
 	private List getServletInterfaces() {
 		if (interfaceList == null) {
-			interfaceList = new ArrayList();
-			// Add minimum required list of servlet interfaces to be implemented
-			for (int i = 0; i < SERVLET_INTERFACES.length; i++) {
-				interfaceList.add(SERVLET_INTERFACES[i]);
+			interfaceList = new ArrayList<String>();
+			if (projectUsesJakartaPackages()) {
+				// Add minimum required list of servlet interfaces to be implemented
+				interfaceList.add(IServletConstants.QUALIFIED_JAKARTA_SERVLET);
+				// Remove the javax.servlet.Servlet interface from the list if the
+				// superclass already implements it
+				if (ServletSupertypesValidator.isServletSuperclass(model)) {
+					interfaceList.remove(IServletConstants.QUALIFIED_JAKARTA_SERVLET);
+				}
 			}
-			// Remove the javax.servlet.Servlet interface from the list if the
-			// superclass already implements it
-			if (ServletSupertypesValidator.isServletSuperclass(model)) {
-				interfaceList.remove(QUALIFIED_SERVLET);
+			else {
+				// Add minimum required list of servlet interfaces to be implemented
+				for (int i = 0; i < SERVLET_INTERFACES.length; i++) {
+					interfaceList.add(SERVLET_INTERFACES[i]);
+				}
+				// Remove the javax.servlet.Servlet interface from the list if the
+				// superclass already implements it
+				if (ServletSupertypesValidator.isServletSuperclass(model)) {
+					interfaceList.remove(QUALIFIED_SERVLET);
+				}
 			}
 		}
 		// Return interface list
@@ -524,8 +535,9 @@
 			if (servlets != null && !servlets.isEmpty()) {
 				for (int i = 0; i < servlets.size(); i++) {
 					String name = ((org.eclipse.jst.j2ee.webapplication.Servlet) servlets.get(i)).getServletName();
-					if (prop.equals(name))
+					if (prop.equals(name)) {
 						exists = true;
+					}
 				}
 			}
 			// If the servlet name already exists, throw an error
@@ -542,8 +554,9 @@
 			if (servlets != null && !servlets.isEmpty()) {
 				for (int i = 0; i < servlets.size(); i++) {
 					String name = ((org.eclipse.jst.javaee.web.Servlet) servlets.get(i)).getServletName();
-					if (prop.equals(name))
+					if (prop.equals(name)) {
 						exists = true;
+					}
 				}
 			}
 			// If the servlet name already exists, throw an error
diff --git a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewWebClassDataModelProvider.java b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewWebClassDataModelProvider.java
index 2b493b1..da95647 100644
--- a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewWebClassDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewWebClassDataModelProvider.java
@@ -208,11 +208,26 @@
 	 * packages rather than the older <code>javax.*</code> packages.
 	 */
 	protected boolean projectUsesJakartaPackages() {
+		try {
+			String facetVersion = getJavaEEVersion();
+			if (facetVersion != null && facetVersion.length() > 0) {
+				float f = Float.parseFloat(facetVersion);
+				return f >= 5;
+			}
+		}
+		catch (NullPointerException e) {
+			// not a faceted project, then
+		}
+		catch (NumberFormatException e) {
+			// this should never happen
+			WTPCommonPlugin.logError(e);
+		}
+
 		String projectName = getStringProperty(PROJECT_NAME);
 		if (projectName != null && projectName.length() > 0) {
 			IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
 			if (project != null && project.isAccessible()) {
-				// long term, the default when otherwise indeterminate should be Jakarta
+				// the default when otherwise indeterminate should be Jakarta
 				try {
 					IJavaProject javaProject = JavaCore.create(project);
 					if (javaProject != null && javaProject.exists()) {
@@ -225,7 +240,7 @@
 					WTPCommonPlugin.logError(e);
 				}
 				try {
-					// check to see if it is Jakarta Servlet 5 or newer
+					// check to see if it is Jakarta Servlet 5 or newer, TODO: should return false on lower versions
 					if (FacetedProjectFramework.hasProjectFacet(project, WebFacetUtils.WEB_FACET.getId(), WebFacetUtils.WEB_50.getVersionString())) {
 						return true;
 					}
@@ -235,7 +250,7 @@
 				}
 			}
 		}
-		return true;
+		return false;
 	}
 	
 	@SuppressWarnings("restriction")