You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by pe...@apache.org on 2023/01/11 17:12:35 UTC
[netbeans] branch master updated: Add Jakarta EE/Java EE support for Tomcat and TomEE (#4822)
This is an automated email from the ASF dual-hosted git repository.
pepness pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 69fbdedfba Add Jakarta EE/Java EE support for Tomcat and TomEE (#4822)
69fbdedfba is described below
commit 69fbdedfba7154249e1c74a92228eefa4411637e
Author: José Contreras <pe...@apache.org>
AuthorDate: Wed Jan 11 11:12:29 2023 -0600
Add Jakarta EE/Java EE support for Tomcat and TomEE (#4822)
- Add support for Tomcat 10 and 10.1
- Improve support for Tomcat versions from 5 to 10.1
- Add initial support for Tomcat 11
- Add support for TomEE versions from 1.5 to 9
- Improve support for TomEE types and correctly identify them.
- Improve logic for supported profiles and jvm platforms for Tomcat and TomEE
- Add new helper method versionRange and use it to define valid ranges of supported java versions. Kudos to Michael Bien.
- Improve logic for getJavadoc() method
- Improve Tomcat/TomEE version enum
- Improve support for Jakarta EE JaxRS
- Fix the default jvm platform that is pre-selected
- Move call of isTomEEJaxRS(), should be called only if isTomEE() is true
- Remove redundant call to loadTomEEInfo(), isTomEE() was calling it already
- Add missing validation for Tomcat 5.0
- tomcat-coyote.jar location is different for tomcat 5.0 and 5.5
- Add Tests for new TomEEtype logic
- Add Tests for new Tomcat version comparison
- Add Tests for new TomEE version comparison
- Use generics
- Use StandardCharsets
- Use try-with-resources
- Add @Override tags
- Bump javac.source to 1.8
- Add missing attributes to a dtd file
---
.../modules/tomcat5/AntDeploymentProviderImpl.java | 7 +-
.../netbeans/modules/tomcat5/TomcatFactory.java | 112 ++++++++++---
.../tomcat5/config/TomcatModuleConfiguration.java | 6 +-
.../tomcat5/customizer/CustomizerDataSupport.java | 57 +++++--
.../tomcat5/customizer/CustomizerGeneral.java | 1 -
.../modules/tomcat5/deploy/TomcatManager.java | 86 ++++++++--
.../tomcat5/j2ee/JaxRsStackSupportImpl.java | 5 +-
.../modules/tomcat5/j2ee/TomcatPlatformImpl.java | 184 +++++++++++++++++----
.../registration/AutomaticRegistration.java | 8 +
.../modules/tomcat5/resources/Bundle.properties | 2 +-
.../modules/tomcat5/resources/tomee_resources.dtd | 3 +
.../tomcat5/ui/wizard/InstallPanelVisual.java | 13 +-
.../netbeans/modules/tomcat5/util/LogSupport.java | 2 +-
.../netbeans/modules/tomcat5/util/LogViewer.java | 2 +-
.../modules/tomcat5/util/TomcatProperties.java | 32 +++-
.../netbeans/modules/tomcat5/util/TomcatUsers.java | 8 +-
.../modules/tomcat5/TomcatFactoryTest.java | 24 +++
.../modules/tomcat5/TomcatManagerTest.java | 27 +++
.../modules/tomcat5/util/TomcatUsersTest.java | 14 ++
19 files changed, 488 insertions(+), 105 deletions(-)
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/AntDeploymentProviderImpl.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/AntDeploymentProviderImpl.java
index 57c71c3f79..8ec3fa1ce4 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/AntDeploymentProviderImpl.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/AntDeploymentProviderImpl.java
@@ -39,7 +39,7 @@ public class AntDeploymentProviderImpl implements AntDeploymentProvider {
private final TomcatManager tm;
- private static final Logger LOGGER = Logger.getLogger("org.netbeans.modules.tomcat5"); // NOI18N
+ private static final Logger LOGGER = Logger.getLogger(AntDeploymentProviderImpl.class.getName()); // NOI18N
public AntDeploymentProviderImpl(DeploymentManager dm) {
tm = (TomcatManager)dm;
@@ -49,6 +49,11 @@ public class AntDeploymentProviderImpl implements AntDeploymentProvider {
public void writeDeploymentScript(OutputStream os, Object moduleType) throws IOException {
String name = null;
switch (tm.getTomcatVersion()) {
+ case TOMCAT_110:
+ case TOMCAT_101:
+ case TOMCAT_100:
+ case TOMCAT_90:
+ case TOMCAT_80:
case TOMCAT_70:
name = "resources/tomcat-ant-deploy70.xml";
break;
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/TomcatFactory.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/TomcatFactory.java
index d159961e6d..6aa05e729b 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/TomcatFactory.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/TomcatFactory.java
@@ -21,10 +21,7 @@ package org.netbeans.modules.tomcat5;
import org.netbeans.modules.tomcat5.deploy.TomcatManager;
import java.io.File;
-import java.io.FileFilter;
-import java.io.FilenameFilter;
import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
@@ -50,12 +47,13 @@ import org.netbeans.modules.tomcat5.deploy.TomcatManager.TomEEType;
import org.netbeans.modules.tomcat5.deploy.TomcatManager.TomEEVersion;
import org.netbeans.modules.tomcat5.deploy.TomcatManager.TomcatVersion;
import org.openide.util.NbBundle;
+import org.openide.util.Utilities;
/**
- * Factory capable to create DeploymentManager that can deploy to Tomcat 5 and 6.
+ * Factory capable to create DeploymentManager that can deploy to Tomcat and TomEE.
*
* Tomcat URI has following format:
- * <PRE><CODE>tomcat[55|60]:[home=<home_path>:[base=<base_path>:]]<manager_app_url></CODE></PRE>
+ * <PRE><CODE>tomcat[90|100]:[home=<home_path>:[base=<base_path>:]]<manager_app_url></CODE></PRE>
* for example
* <PRE><CODE>tomcat:http://localhost:8080/manager/</CODE></PRE>
* where paths values will be used as CATALINA_HOME and CATALINA_BASE properties and manager_app_url
@@ -70,6 +68,9 @@ public final class TomcatFactory implements DeploymentFactory {
public static final String SERVER_ID_70 = "Tomcat70"; // NOI18N
public static final String SERVER_ID_80 = "Tomcat80"; // NOI18N
public static final String SERVER_ID_90 = "Tomcat90"; // NOI18N
+ public static final String SERVER_ID_100 = "Tomcat100"; // NOI18N
+ public static final String SERVER_ID_101 = "Tomcat101"; // NOI18N
+ public static final String SERVER_ID_110 = "Tomcat110"; // NOI18N
public static final String TOMCAT_URI_PREFIX_50 = "tomcat:"; // NOI18N
public static final String TOMCAT_URI_PREFIX_55 = "tomcat55:"; // NOI18N
@@ -77,16 +78,25 @@ public final class TomcatFactory implements DeploymentFactory {
public static final String TOMCAT_URI_PREFIX_70 = "tomcat70:"; // NOI18N
public static final String TOMCAT_URI_PREFIX_80 = "tomcat80:"; // NOI18N
public static final String TOMCAT_URI_PREFIX_90 = "tomcat90:"; // NOI18N
+ public static final String TOMCAT_URI_PREFIX_100 = "tomcat100:"; // NOI18N
+ public static final String TOMCAT_URI_PREFIX_101 = "tomcat101:"; // NOI18N
+ public static final String TOMCAT_URI_PREFIX_110 = "tomcat110:"; // NOI18N
public static final String TOMCAT_URI_HOME_PREFIX = "home="; // NOI18N
public static final String TOMCAT_URI_BASE_PREFIX = ":base="; // NOI18N
- private static final Pattern TOMEE_JAR_PATTERN = Pattern.compile("tomee-common-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
-
- private static final Pattern TOMEE_JAXRS_JAR_PATTERN = Pattern.compile("tomee-jaxrs-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
-
- private static final Pattern TOMEE_GERONIMO_JAR_PATTERN = Pattern.compile("geronimo-connector-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
-
+ static final Pattern TOMEE_JAR_PATTERN = Pattern.compile("tomee-common-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
+
+ static final Pattern TOMEE_WEBPROFILE_JAR_PATTERN = Pattern.compile("openejb-api-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
+
+ static final Pattern TOMEE_JAXRS_JAR_PATTERN = Pattern.compile("jettison-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
+
+ static final Pattern TOMEE_MICROPROFILE_JAR_PATTERN = Pattern.compile("microprofile-config-api-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
+
+ static final Pattern TOMEE_PLUS_JAR_PATTERN = Pattern.compile("activemq-protobuf-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
+
+ static final Pattern TOMEE_PLUME_JAR_PATTERN = Pattern.compile("eclipselink-(\\d+(\\.\\d+)*).*\\.jar"); // NOI18N
+
private static final String GENERIC_DISCONNECTED_URI_PREFIX = "tomcat-any:"; // NOI18N
private static final String GENERIC_DISCONNECTED_URI =
GENERIC_DISCONNECTED_URI_PREFIX + "jakarta-tomcat-generic"; // NOI18N
@@ -96,19 +106,23 @@ public final class TomcatFactory implements DeploymentFactory {
private static final String DISCONNECTED_URI_70 = TOMCAT_URI_PREFIX_70 + "apache-tomcat-7.0.x"; // NOI18N
private static final String DISCONNECTED_URI_80 = TOMCAT_URI_PREFIX_80 + "apache-tomcat-8.0.x"; // NOI18N
private static final String DISCONNECTED_URI_90 = TOMCAT_URI_PREFIX_90 + "apache-tomcat-9.0.x"; // NOI18N
+ private static final String DISCONNECTED_URI_100 = TOMCAT_URI_PREFIX_100 + "apache-tomcat-10.0.x"; // NOI18N
+ private static final String DISCONNECTED_URI_101 = TOMCAT_URI_PREFIX_101 + "apache-tomcat-10.1.x"; // NOI18N
+ private static final String DISCONNECTED_URI_110 = TOMCAT_URI_PREFIX_110 + "apache-tomcat-11.0.x"; // NOI18N
private static final Set<String> DISCONNECTED_URIS = new HashSet<>();
static {
Collections.addAll(DISCONNECTED_URIS, DISCONNECTED_URI_50,
DISCONNECTED_URI_55, DISCONNECTED_URI_60, DISCONNECTED_URI_70,
- DISCONNECTED_URI_80, DISCONNECTED_URI_90, GENERIC_DISCONNECTED_URI);
+ DISCONNECTED_URI_80, DISCONNECTED_URI_90, DISCONNECTED_URI_100,
+ DISCONNECTED_URI_101, DISCONNECTED_URI_110, GENERIC_DISCONNECTED_URI);
}
private static TomcatFactory instance;
private static final WeakHashMap managerCache = new WeakHashMap();
- private static final Logger LOGGER = Logger.getLogger("org.netbeans.modules.tomcat5"); // NOI18N
+ private static final Logger LOGGER = Logger.getLogger(TomcatFactory.class.getName()); // NOI18N
private TomcatFactory() {
super();
@@ -193,24 +207,30 @@ public final class TomcatFactory implements DeploymentFactory {
|| str.startsWith(TOMCAT_URI_PREFIX_60)
|| str.startsWith(TOMCAT_URI_PREFIX_70)
|| str.startsWith(TOMCAT_URI_PREFIX_80)
- || str.startsWith(TOMCAT_URI_PREFIX_90));
+ || str.startsWith(TOMCAT_URI_PREFIX_90)
+ || str.startsWith(TOMCAT_URI_PREFIX_100)
+ || str.startsWith(TOMCAT_URI_PREFIX_101)
+ || str.startsWith(TOMCAT_URI_PREFIX_110));
}
/**
- * Retrieve the tomcat version e.g. '6.0.10'
+ * Retrieve the tomcat version e.g. '9.0.70'
*
* @throws IllegalStateException if the version information cannot be retrieved
*/
public static String getTomcatVersionString(File catalinaHome) throws IllegalStateException {
File catalinaJar = new File(catalinaHome, "lib/catalina.jar"); // NOI18N
+ File coyoteJar = new File(catalinaHome, "lib/tomcat-coyote.jar"); // NOI18N
if (!catalinaJar.exists()) {
+ // For Tomcat 5/5.5
catalinaJar = new File(catalinaHome, "server/lib/catalina.jar"); // NOI18N
+ coyoteJar = new File(catalinaHome, "server/lib/tomcat-coyote.jar"); // NOI18N
}
- File coyoteJar = new File(catalinaHome, "lib/tomcat-coyote.jar"); // NOI18N
try {
URLClassLoader loader = new URLClassLoader(new URL[] {
- catalinaJar.toURI().toURL(), coyoteJar.toURI().toURL() });
+ Utilities.toURI(catalinaJar).toURL(), Utilities.toURI(coyoteJar).toURL() });
+
Class serverInfo = loader.loadClass("org.apache.catalina.util.ServerInfo"); // NOI18N
try {
Method method = serverInfo.getMethod("getServerNumber", new Class[] {}); // NOI18N
@@ -242,7 +262,7 @@ public final class TomcatFactory implements DeploymentFactory {
LOGGER.log(Level.INFO, null, ex);
return getTomcatVersionFallback(catalinaHome);
}
- return getTomcatVersion(version, TomcatVersion.TOMCAT_50);
+ return getTomcatVersion(version, TomcatVersion.TOMCAT_80);
}
private static TomcatVersion getTomcatVersionFallback(File catalinaHome) throws IllegalStateException {
@@ -280,7 +300,9 @@ public final class TomcatFactory implements DeploymentFactory {
}
private static TomcatVersion getTomcatVersion(String version, TomcatVersion defaultVersion) throws IllegalStateException {
- if (version.startsWith("5.5.")) { // NOI18N
+ if (version.startsWith("5.0.")) { // NOI18N
+ return TomcatVersion.TOMCAT_50;
+ } else if (version.startsWith("5.5.")) { // NOI18N
return TomcatVersion.TOMCAT_55;
} else if (version.startsWith("6.")) { // NOI18N
return TomcatVersion.TOMCAT_60;
@@ -290,6 +312,12 @@ public final class TomcatFactory implements DeploymentFactory {
return TomcatVersion.TOMCAT_80;
} else if (version.startsWith("9.")) { // NOI18N
return TomcatVersion.TOMCAT_90;
+ } else if (version.startsWith("10.0")) { // NOI18N
+ return TomcatVersion.TOMCAT_100;
+ } else if (version.startsWith("10.1")) { // NOI18N
+ return TomcatVersion.TOMCAT_101;
+ } else if (version.startsWith("11.")) { // NOI18N
+ return TomcatVersion.TOMCAT_110;
}
int dotIndex = version.indexOf('.');
if (dotIndex > 0) {
@@ -307,7 +335,13 @@ public final class TomcatFactory implements DeploymentFactory {
}
private static TomcatVersion getTomcatVersion(String uri) throws IllegalStateException {
- if (uri.startsWith(TOMCAT_URI_PREFIX_90)) {
+ if (uri.startsWith(TOMCAT_URI_PREFIX_110)) {
+ return TomcatVersion.TOMCAT_110;
+ } else if (uri.startsWith(TOMCAT_URI_PREFIX_101)) {
+ return TomcatVersion.TOMCAT_101;
+ } else if (uri.startsWith(TOMCAT_URI_PREFIX_100)) {
+ return TomcatVersion.TOMCAT_100;
+ } else if (uri.startsWith(TOMCAT_URI_PREFIX_90)) {
return TomcatVersion.TOMCAT_90;
} else if (uri.startsWith(TOMCAT_URI_PREFIX_80)) {
return TomcatVersion.TOMCAT_80;
@@ -336,17 +370,29 @@ public final class TomcatFactory implements DeploymentFactory {
@NonNull
public static TomEEType getTomEEType(@NonNull File libFolder) {
File[] children = libFolder.listFiles();
- TomEEType type = TomEEType.TOMEE_WEB;
+ TomEEType type = TomEEType.TOMEE_OPENEJB;
if (children != null) {
for (File file : children) {
- if (TOMEE_JAXRS_JAR_PATTERN.matcher(file.getName()).matches()) {
- if (type.ordinal() < TomEEType.TOMEE_JAXRS.ordinal()) {
- type = TomEEType.TOMEE_JAXRS;
+ if (TOMEE_PLUME_JAR_PATTERN.matcher(file.getName()).matches()) {
+ if(type.ordinal() < TomEEType.TOMEE_PLUME.ordinal()) {
+ return TomEEType.TOMEE_PLUME;
}
- } else if (TOMEE_GERONIMO_JAR_PATTERN.matcher(file.getName()).matches()) {
- if (type.ordinal() < TomEEType.TOMEE_PLUS.ordinal()) {
+ } else if (TOMEE_PLUS_JAR_PATTERN.matcher(file.getName()).matches()) {
+ if(type.ordinal() < TomEEType.TOMEE_PLUS.ordinal()) {
type = TomEEType.TOMEE_PLUS;
}
+ } else if (TOMEE_MICROPROFILE_JAR_PATTERN.matcher(file.getName()).matches()) {
+ if(type.ordinal() < TomEEType.TOMEE_MICROPROFILE.ordinal()) {
+ type = TomEEType.TOMEE_MICROPROFILE;
+ }
+ } else if (TOMEE_JAXRS_JAR_PATTERN.matcher(file.getName()).matches()) {
+ if(type.ordinal() < TomEEType.TOMEE_JAXRS.ordinal()) {
+ type = TomEEType.TOMEE_JAXRS;
+ }
+ } else if (TOMEE_JAR_PATTERN.matcher(file.getName()).matches()) {
+ if(type.ordinal() < TomEEType.TOMEE_WEBPROFILE.ordinal()) {
+ type = TomEEType.TOMEE_WEBPROFILE;
+ }
}
}
}
@@ -411,6 +457,14 @@ public final class TomcatFactory implements DeploymentFactory {
return TomcatManager.TomEEVersion.TOMEE_16;
} else if (version.startsWith("1.7.")) { // NOI18N
return TomcatManager.TomEEVersion.TOMEE_17;
+ } else if (version.startsWith("7.")) { // NOI18N
+ return TomcatManager.TomEEVersion.TOMEE_70;
+ } else if (version.startsWith("7.1.")) { // NOI18N
+ return TomcatManager.TomEEVersion.TOMEE_71;
+ } else if (version.startsWith("8.")) { // NOI18N
+ return TomcatManager.TomEEVersion.TOMEE_80;
+ } else if (version.startsWith("9.")) { // NOI18N
+ return TomcatManager.TomEEVersion.TOMEE_90;
}
return defaultVersion;
}
@@ -420,6 +474,12 @@ public final class TomcatFactory implements DeploymentFactory {
return uri.substring(GENERIC_DISCONNECTED_URI_PREFIX.length());
}
switch (tomcatVersion) {
+ case TOMCAT_110:
+ return uri.substring(TomcatFactory.TOMCAT_URI_PREFIX_110.length());
+ case TOMCAT_101:
+ return uri.substring(TomcatFactory.TOMCAT_URI_PREFIX_101.length());
+ case TOMCAT_100:
+ return uri.substring(TomcatFactory.TOMCAT_URI_PREFIX_100.length());
case TOMCAT_90:
return uri.substring(TomcatFactory.TOMCAT_URI_PREFIX_90.length());
case TOMCAT_80:
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/config/TomcatModuleConfiguration.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/config/TomcatModuleConfiguration.java
index 275781fd41..1bd15ab2b1 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/config/TomcatModuleConfiguration.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/config/TomcatModuleConfiguration.java
@@ -91,7 +91,7 @@ public class TomcatModuleConfiguration implements ModuleConfiguration, ContextRo
private static final String ATTR_PATH = "path"; // NOI18N
- private static final Logger LOGGER = Logger.getLogger("org.netbeans.modules.tomcat5"); // NOI18N
+ private static final Logger LOGGER = Logger.getLogger(TomcatModuleConfiguration.class.getName()); // NOI18N
/** Creates a new instance of TomcatModuleConfiguration */
public TomcatModuleConfiguration(J2eeModule j2eeModule, TomcatVersion tomcatVersion, TomEEVersion tomeeVersion) {
@@ -224,7 +224,7 @@ public class TomcatModuleConfiguration implements ModuleConfiguration, ContextRo
Context context = getContext();
Set<Datasource> result = new HashSet<>();
int length = context.getResource().length;
- if (tomcatVersion != TomcatVersion.TOMCAT_50) {
+ if (tomcatVersion.isAtLeast(TomcatVersion.TOMCAT_55)) {
// Tomcat 5.5.x or Tomcat 6.0.x
for (int i = 0; i < length; i++) {
String type = context.getResourceType(i);
@@ -292,7 +292,7 @@ public class TomcatModuleConfiguration implements ModuleConfiguration, ContextRo
if (conflictingDS.size() > 0) {
throw new DatasourceAlreadyExistsException(conflictingDS);
}
- if (tomcatVersion != TomcatVersion.TOMCAT_50) {
+ if (tomcatVersion.isAtLeast(TomcatVersion.TOMCAT_55)) {
if (tomeeVersion != null) {
// we need to store it to resources.xml
TomeeResources resources = getResources(true);
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/customizer/CustomizerDataSupport.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/customizer/CustomizerDataSupport.java
index 2306c445fc..04036a323e 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/customizer/CustomizerDataSupport.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/customizer/CustomizerDataSupport.java
@@ -21,7 +21,9 @@ package org.netbeans.modules.tomcat5.customizer;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
-import java.util.Arrays;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.logging.Level;
import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.DefaultComboBoxModel;
@@ -39,6 +41,7 @@ import org.netbeans.api.java.platform.JavaPlatform;
import org.netbeans.api.java.platform.JavaPlatformManager;
import org.netbeans.api.java.platform.Specification;
import org.netbeans.modules.tomcat5.deploy.TomcatManager;
+import org.netbeans.modules.tomcat5.j2ee.TomcatPlatformImpl;
import org.netbeans.modules.tomcat5.util.TomcatProperties;
import org.openide.util.Exceptions;
@@ -372,32 +375,54 @@ public class CustomizerDataSupport {
public void loadJvmModel() {
JavaPlatformManager jpm = JavaPlatformManager.getDefault();
JavaPlatformAdapter curJvm = (JavaPlatformAdapter)jvmModel.getSelectedItem();
- String curPlatformName = null;
+ final String curPlatformName;
if (curJvm != null) {
curPlatformName = curJvm.getName();
} else {
curPlatformName = (String)tp.getJavaPlatform().getProperties().get(TomcatProperties.PLAT_PROP_ANT_NAME);
}
-
jvmModel.removeAllElements();
- // feed the combo with sorted platform list
+ // Supported jvm platforms for this version of Tomcat or TomEE
+ TomcatPlatformImpl tomcatPlatformImpl = new TomcatPlatformImpl(tm);
+ Set<String> tomcatPlatforms = tomcatPlatformImpl.getSupportedJavaPlatformVersions();
+
+ // jvm platforms registered in NetBeans
JavaPlatform[] j2sePlatforms = jpm.getPlatforms(null, new Specification("J2SE", null)); // NOI18N
- JavaPlatformAdapter[] platformAdapters = new JavaPlatformAdapter[j2sePlatforms.length];
- for (int i = 0; i < platformAdapters.length; i++) {
- platformAdapters[i] = new JavaPlatformAdapter(j2sePlatforms[i]);
- }
- Arrays.sort(platformAdapters);
- for (int i = 0; i < platformAdapters.length; i++) {
- JavaPlatformAdapter platformAdapter = platformAdapters[i];
- jvmModel.addElement(platformAdapter);
- // try to set selected item
+
+ Set<JavaPlatformAdapter> platformAdapters = new TreeSet<>();
+
+ // Only add the jvm platforms that are supported from the registered set
+ for (JavaPlatform jp : j2sePlatforms) {
+ if (tomcatPlatforms.contains(jp.getSpecification().getVersion().toString())) {
+ platformAdapters.add(new JavaPlatformAdapter(jp));
+ }
+ }
+
+ if (platformAdapters.isEmpty()) {
+ jvmModel.setSelectedItem(null);
+ return;
+ } else {
+ for (JavaPlatformAdapter platformAdapter : platformAdapters) {
+ jvmModel.addElement(platformAdapter);
+ }
+ }
+
+ // try to set selected item
+ for (JavaPlatformAdapter j2sePlatform : platformAdapters) {
if (curPlatformName != null) {
- if (curPlatformName.equals(platformAdapter.getName())) {
- jvmModel.setSelectedItem(platformAdapter);
+ if (curPlatformName.equals(j2sePlatform.getName())) {
+ jvmModel.setSelectedItem(j2sePlatform);
+ // if we do not change the flag the jvm will not change
+ jvmModelFlag = true;
+ break;
+ } else {
+ jvmModel.setSelectedItem(j2sePlatform);
+ jvmModelFlag = true;
}
- }
+ }
}
+
}
// model getters ----------------------------------------------------------
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/customizer/CustomizerGeneral.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/customizer/CustomizerGeneral.java
index 2df1518381..ef7b90852b 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/customizer/CustomizerGeneral.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/customizer/CustomizerGeneral.java
@@ -25,7 +25,6 @@ import javax.swing.JTextField;
import javax.swing.JSpinner;
import javax.accessibility.AccessibleContext;
import java.awt.Font;
-import org.netbeans.modules.tomcat5.deploy.TomcatManager.TomcatVersion;
/**
* Customizer general (connection) tab.
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/deploy/TomcatManager.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/deploy/TomcatManager.java
index adc97d6224..c1d7fa0ff6 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/deploy/TomcatManager.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/deploy/TomcatManager.java
@@ -71,11 +71,44 @@ import org.openide.util.NbBundle;
*/
public class TomcatManager implements DeploymentManager {
- public enum TomcatVersion {TOMCAT_50, TOMCAT_55, TOMCAT_60, TOMCAT_70, TOMCAT_80, TOMCAT_90};
+ public enum TomcatVersion {
+ TOMCAT_50(50), TOMCAT_55(55), TOMCAT_60(60), TOMCAT_70(70),
+ TOMCAT_80(80), TOMCAT_90(90), TOMCAT_100(100), TOMCAT_101(101),
+ TOMCAT_110(110);
+
+ TomcatVersion(int version) { this.version = version; }
+ private final int version;
+ public int version() { return version; }
+ /**
+ *
+ * @param tv TomcatVersion
+ * @return true if the version is equal or greater, false otherwise
+ */
+ public boolean isAtLeast(TomcatVersion tv) {
+ int comparisonResult = this.compareTo(tv);
+ return (comparisonResult >= 0);
+ }
+ }
- public enum TomEEVersion {TOMEE_15, TOMEE_16, TOMEE_17};
+ public enum TomEEVersion {
+ TOMEE_15(15), TOMEE_16(16), TOMEE_17(17), TOMEE_70(70),
+ TOMEE_71(71), TOMEE_80(80), TOMEE_90(90);
+
+ TomEEVersion(int version) { this.version = version; }
+ private final int version;
+ public int version() { return version; }
+ /**
+ *
+ * @param tv TomEEVersion
+ * @return true if the version is equal or greater, false otherwise
+ */
+ public boolean isAtLeast(TomEEVersion teev) {
+ int comparisonResult = this.compareTo(teev);
+ return (comparisonResult >= 0);
+ }
+ };
- public enum TomEEType {TOMEE_WEB, TOMEE_JAXRS, TOMEE_PLUS};
+ public enum TomEEType {TOMEE_OPENEJB, TOMEE_WEBPROFILE, TOMEE_JAXRS, TOMEE_MICROPROFILE, TOMEE_PLUS, TOMEE_PLUME};
public static final String KEY_UUID = "NB_EXEC_TOMCAT_START_PROCESS_UUID"; //NOI18N
@@ -227,6 +260,12 @@ public class TomcatManager implements DeploymentManager {
*/
public String getUri () {
switch (tomcatVersion) {
+ case TOMCAT_110:
+ return TomcatFactory.TOMCAT_URI_PREFIX_110 + uri;
+ case TOMCAT_101:
+ return TomcatFactory.TOMCAT_URI_PREFIX_101 + uri;
+ case TOMCAT_100:
+ return TomcatFactory.TOMCAT_URI_PREFIX_100 + uri;
case TOMCAT_90:
return TomcatFactory.TOMCAT_URI_PREFIX_90 + uri;
case TOMCAT_80:
@@ -247,7 +286,7 @@ public class TomcatManager implements DeploymentManager {
* @return URI without home and base specification
*/
public String getPlainUri () {
- if (isAboveTomcat70()) {
+ if (tomcatVersion.isAtLeast(TomcatVersion.TOMCAT_70)) {
return "http://" + tp.getHost() + ":" + getCurrentServerPort() + "/manager/text/"; //NOI18N
}
return "http://" + tp.getHost() + ":" + getCurrentServerPort() + "/manager/"; //NOI18N
@@ -401,11 +440,21 @@ public class TomcatManager implements DeploymentManager {
return false;
}
-
+
public boolean isAboveTomcat70() {
- return tomcatVersion == TomcatVersion.TOMCAT_70
- || tomcatVersion == TomcatVersion.TOMCAT_80
- || tomcatVersion == TomcatVersion.TOMCAT_90;
+ return tomcatVersion .isAtLeast(TomcatVersion.TOMCAT_70);
+ }
+
+ public boolean isTomcat110() {
+ return tomcatVersion == TomcatVersion.TOMCAT_110;
+ }
+
+ public boolean isTomcat101() {
+ return tomcatVersion == TomcatVersion.TOMCAT_101;
+ }
+
+ public boolean isTomcat100() {
+ return tomcatVersion == TomcatVersion.TOMCAT_100;
}
public boolean isTomcat90() {
@@ -438,14 +487,22 @@ public class TomcatManager implements DeploymentManager {
}
public synchronized boolean isTomEEJaxRS() {
- loadTomEEInfo();
- return TomEEType.TOMEE_JAXRS.equals(tomEEType) || TomEEType.TOMEE_PLUS.equals(tomEEType);
+ switch (tomEEType) {
+ case TOMEE_PLUME:
+ case TOMEE_PLUS:
+ case TOMEE_MICROPROFILE:
+ case TOMEE_WEBPROFILE:
+ case TOMEE_JAXRS:
+ return true;
+ default:
+ return false;
+ }
}
- /** Returns Tomcat lib folder: "lib" for Tomcat 6.0 and "common/lib" for Tomcat 5.x */
+ /** Returns Tomcat lib folder: "lib" for Tomcat 6.0 or greater and "common/lib" for Tomcat 5.x or less*/
public String libFolder() {
// Tomcat 5.x and 6.0 uses different lib folder
- return isTomcat50() || isTomcat55() ? "common/lib" : "lib"; // NOI18N
+ return tomcatVersion.isAtLeast(TomcatVersion.TOMCAT_60) ? "lib" : "common/lib"; // NOI18N
}
public TomcatVersion getTomcatVersion() {
@@ -456,6 +513,11 @@ public class TomcatManager implements DeploymentManager {
loadTomEEInfo();
return tomEEVersion;
}
+
+ public synchronized TomEEType getTomEEType() {
+ loadTomEEInfo();
+ return tomEEType;
+ }
public void loadTomEEInfo() {
boolean fireListener = false;
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/JaxRsStackSupportImpl.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/JaxRsStackSupportImpl.java
index ee83e971e9..6ef627618f 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/JaxRsStackSupportImpl.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/JaxRsStackSupportImpl.java
@@ -37,6 +37,7 @@ import org.openide.filesystems.URLMapper;
public class JaxRsStackSupportImpl implements JaxRsStackSupportImplementation {
private static final String JAX_RS_APPLICATION_CLASS = "javax.ws.rs.core.Application"; //NOI18N
+ private static final String JAX_RS_APPLICATION_CLASS_JAKARTAEE = "jakarta.ws.rs.core.Application"; //NOI18N
private final TomcatPlatformImpl j2eePlatform;
@@ -47,14 +48,14 @@ public class JaxRsStackSupportImpl implements JaxRsStackSupportImplementation {
@Override
public boolean addJsr311Api(Project project) {
// return true (behaves like added) when JAX-RS is on classpath
- return isBundled(JAX_RS_APPLICATION_CLASS);
+ return isBundled(JAX_RS_APPLICATION_CLASS) || isBundled(JAX_RS_APPLICATION_CLASS_JAKARTAEE);
}
@Override
public boolean extendsJerseyProjectClasspath(Project project) {
// declared as extended when JAX-RS is on classpath
// suppose that TomEE has its own implementation of JAX-RS
- return isBundled(JAX_RS_APPLICATION_CLASS);
+ return isBundled(JAX_RS_APPLICATION_CLASS) || isBundled(JAX_RS_APPLICATION_CLASS_JAKARTAEE);
}
@Override
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
index c4581f4c56..25a2d71f75 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
@@ -26,6 +26,8 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
import org.netbeans.api.j2ee.core.Profile;
import org.netbeans.api.java.platform.JavaPlatform;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
@@ -456,43 +458,148 @@ public class TomcatPlatformImpl extends J2eePlatformImpl2 {
@Override
public Set<Profile> getSupportedProfiles() {
- Set<Profile> profiles = new HashSet<>(5);
- //if (!manager.isTomEE()) {
- // TomEE is new and it actually does not support older specs (classloading separation etc).
- // we will see if that's a problem for anybody
- profiles.add(Profile.J2EE_13);
- profiles.add(Profile.J2EE_14);
- if (manager.isTomcat60() || manager.isAboveTomcat70()) {
- profiles.add(Profile.JAVA_EE_5);
+ Set<Profile> profiles = new HashSet<>(10);
+
+ if (manager.isTomEE()) {
+ // Only TomEE versions 8/9 of type Plus/PluME support full profile
+ if (manager.getTomEEType().ordinal() >= 3 ) {
+ switch (manager.getTomEEVersion()) {
+ case TOMEE_90:
+ profiles.add(Profile.JAKARTA_EE_9_1_FULL);
+ break;
+ case TOMEE_80:
+ profiles.add(Profile.JAKARTA_EE_8_FULL);
+ profiles.add(Profile.JAVA_EE_8_FULL);
+ profiles.add(Profile.JAVA_EE_7_FULL);
+ profiles.add(Profile.JAVA_EE_6_FULL);
+ break;
+ default:
+ break;
+ }
+ }
+ switch (manager.getTomEEVersion()) {
+ case TOMEE_90:
+ profiles.add(Profile.JAKARTA_EE_9_1_WEB);
+ break;
+ case TOMEE_80:
+ profiles.add(Profile.JAKARTA_EE_8_WEB);
+ profiles.add(Profile.JAVA_EE_8_WEB);
+ profiles.add(Profile.JAVA_EE_7_WEB);
+ profiles.add(Profile.JAVA_EE_6_WEB);
+ profiles.add(Profile.JAVA_EE_5);
+ break;
+ case TOMEE_71:
+ case TOMEE_70:
+ profiles.add(Profile.JAVA_EE_7_WEB);
+ profiles.add(Profile.JAVA_EE_6_WEB);
+ profiles.add(Profile.JAVA_EE_5);
+ break;
+ case TOMEE_17:
+ case TOMEE_16:
+ case TOMEE_15:
+ profiles.add(Profile.JAVA_EE_6_WEB);
+ profiles.add(Profile.JAVA_EE_5);
+ break;
+ default:
+ break;
+ }
+ } else {
+ switch (manager.getTomcatVersion()) {
+// case TOMCAT_110:
+// TODO: Add suport for Jakarta EE 10
+// profiles.add(Profile.JAKARTA_EE_10_WEB);
+// break;
+// case TOMCAT_101:
+// TODO: Add suport for Jakarta EE 10
+// profiles.add(Profile.JAKARTA_EE_10_WEB);
+// break;
+ case TOMCAT_100:
+ profiles.add(Profile.JAKARTA_EE_9_1_WEB);
+ profiles.add(Profile.JAKARTA_EE_9_WEB);
+ break;
+ case TOMCAT_90:
+ profiles.add(Profile.JAKARTA_EE_8_WEB);
+ profiles.add(Profile.JAVA_EE_8_WEB);
+ profiles.add(Profile.JAVA_EE_7_WEB);
+ profiles.add(Profile.JAVA_EE_6_WEB);
+ profiles.add(Profile.JAVA_EE_5);
+ case TOMCAT_80:
+ profiles.add(Profile.JAVA_EE_7_WEB);
+ profiles.add(Profile.JAVA_EE_6_WEB);
+ profiles.add(Profile.JAVA_EE_5);
+ break;
+ case TOMCAT_70:
+ profiles.add(Profile.JAVA_EE_6_WEB);
+ profiles.add(Profile.JAVA_EE_5);
+ break;
+ case TOMCAT_60:
+ profiles.add(Profile.JAVA_EE_5);
+ break;
+ case TOMCAT_55:
+ case TOMCAT_50:
+ profiles.add(Profile.J2EE_14);
+ break;
+ default:
+ break;
}
- //}
- if (manager.isAboveTomcat70()) {
- profiles.add(Profile.JAVA_EE_6_WEB);
- }
- if (manager.isTomcat80() || manager.isTomcat90()) {
- profiles.add(Profile.JAVA_EE_7_WEB);
}
return profiles;
}
@Override
public Set<String> getSupportedJavaPlatformVersions() {
- Set<String> versions = new HashSet<>(6);
+ Set<String> versions = new HashSet<>(16);
- if (!manager.isTomcat90()) {
- if (!manager.isTomcat80()) {
- if (!manager.isTomcat70()) {
- if (!manager.isTomcat60()) {
- versions.add("1.4"); // NOI18N
- versions.add("1.5"); // NOI18N
- }
- versions.add("1.5"); // NOI18N
- }
- versions.add("1.6"); // NOI18N
+ // TomEE has different supported Java versions
+ if (manager.isTomEE()) {
+ switch (manager.getTomEEVersion()) {
+ case TOMEE_90:
+ versions = versionRange(11, 21);
+ break;
+ case TOMEE_80:
+ versions = versionRange(8, 21);
+ break;
+ case TOMEE_71:
+ case TOMEE_70:
+ versions = versionRange(7, 8);
+ break;
+ case TOMEE_17:
+ case TOMEE_16:
+ case TOMEE_15:
+ versions = versionRange(6, 8);
+ break;
+ default:
+ break;
+ }
+ } else {
+ switch (manager.getTomcatVersion()) {
+ case TOMCAT_110:
+ versions = versionRange(11, 21);
+ break;
+ case TOMCAT_101:
+ versions = versionRange(11, 21);
+ break;
+ case TOMCAT_100:
+ case TOMCAT_90:
+ versions = versionRange(8, 21);
+ break;
+ case TOMCAT_80:
+ versions = versionRange(7, 21);
+ break;
+ case TOMCAT_70:
+ versions = versionRange(6, 21);
+ break;
+ case TOMCAT_60:
+ versions = versionRange(5, 8);
+ break;
+ case TOMCAT_55:
+ case TOMCAT_50:
+ versions = versionRange(4, 8);
+ break;
+ default:
+ break;
}
- versions.add("1.7"); // NOI18N
}
- versions.add("1.8"); // NOI18N
return versions;
}
@@ -510,9 +617,9 @@ public class TomcatPlatformImpl extends J2eePlatformImpl2 {
new EjbSupportImpl(manager), wsStack);
if (manager.isTomEE()) {
content.add(new JpaSupportImpl());
- }
- if (manager.isTomEEJaxRS()) {
- content.add(new JaxRsStackSupportImpl(this));
+ if (manager.isTomEEJaxRS()) {
+ content.add(new JaxRsStackSupportImpl(this));
+ }
}
Lookup baseLookup = Lookups.fixed(content.toArray());
@@ -527,4 +634,21 @@ public class TomcatPlatformImpl extends J2eePlatformImpl2 {
lib.setContent(J2eeLibraryTypeProvider.VOLUME_TYPE_JAVADOC, tp.getJavadocs());
lib.setContent(J2eeLibraryTypeProvider.VOLUME_TYPE_SRC, tp.getSources());
}
+
+ /**
+ * Create Set containing desired java versions. e.g.
+ * <pre>{@code
+ * Set<String> versions = versionRange(8, 11)
+ * }</pre>
+ * This Set will contain ["1.8", "9", "10", "11"]
+ * @param min minimum Java version {@code inclusive}
+ * @param max maximum Java version {@code inclusive}
+ * @return {@code Set<String>} of desired Java versions
+ */
+ private static Set<String> versionRange(int min, int max) {
+ return IntStream.range(min, max+1)
+ .mapToObj((int v) -> v > 8 ? Integer.toString(v) : "1." + v)
+ .collect(Collectors.toSet());
+ }
+
}
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/registration/AutomaticRegistration.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/registration/AutomaticRegistration.java
index ca74d33ef9..fbf6673469 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/registration/AutomaticRegistration.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/registration/AutomaticRegistration.java
@@ -143,6 +143,10 @@ public class AutomaticRegistration {
urlTmp = new StringBuilder(TomcatFactory.TOMCAT_URI_PREFIX_80);
} else if (version.startsWith("9.")) { // NOI18N
urlTmp = new StringBuilder(TomcatFactory.TOMCAT_URI_PREFIX_90);
+ } else if (version.startsWith("10.")) { // NOI18N
+ urlTmp = new StringBuilder(TomcatFactory.TOMCAT_URI_PREFIX_100);
+ } else if (version.startsWith("10.1")) { // NOI18N
+ urlTmp = new StringBuilder(TomcatFactory.TOMCAT_URI_PREFIX_101);
} else {
LOGGER.log(Level.INFO, "Cannot register the default Tomcat server. The version {0} is not supported.", version); // NOI18N
return 5;
@@ -192,6 +196,8 @@ public class AutomaticRegistration {
+ "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_70) // NOI18N
+ "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_80) // NOI18N
+ "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_90) // NOI18N
+ + "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_100) // NOI18N
+ + "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_101) // NOI18N
+ ")" + Pattern.quote(TomcatFactory.TOMCAT_URI_HOME_PREFIX) // NOI18N
+ Pattern.quote(catalinaHomeValue)
+ "(" + Pattern.quote(TomcatFactory.TOMCAT_URI_BASE_PREFIX) + ".+)?$"); // NOI18N
@@ -233,6 +239,8 @@ public class AutomaticRegistration {
+ "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_70) // NOI18N
+ "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_80) // NOI18N
+ "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_90) // NOI18N
+ + "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_100) // NOI18N
+ + "|" + Pattern.quote(TomcatFactory.TOMCAT_URI_PREFIX_101) // NOI18N
+ ")" + Pattern.quote(TomcatFactory.TOMCAT_URI_HOME_PREFIX) // NOI18N
+ "(.+)$"); // NOI18N
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/resources/Bundle.properties b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/resources/Bundle.properties
index 19a8c294ab..bf90d953c0 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/resources/Bundle.properties
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/resources/Bundle.properties
@@ -19,7 +19,7 @@
# Module manifest localization
OpenIDE-Module-Name=Tomcat (TomEE)
-OpenIDE-Module-Display-Category=Java Web and EE
+OpenIDE-Module-Display-Category=Java/Jakarta Web and EE
OpenIDE-Module-Short-Description=Tomcat or TomEE server integration
OpenIDE-Module-Long-Description=\
Plugin that allows developing and executing web applications with a Apache Tomcat or TomEE server.
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/resources/tomee_resources.dtd b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/resources/tomee_resources.dtd
index 1db3099b5c..94c4fa8e3c 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/resources/tomee_resources.dtd
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/resources/tomee_resources.dtd
@@ -28,6 +28,9 @@ We didn't find a DTD or xml schema.
<!ELEMENT Resource (#PCDATA) >
<!ATTLIST Resource id CDATA #REQUIRED>
<!ATTLIST Resource type CDATA #REQUIRED>
+<!ATTLIST Resource class-name CDATA #REQUIRED>
+<!ATTLIST Resource constructor CDATA #REQUIRED>
+<!ATTLIST Resource factory-name CDATA #REQUIRED>
<!ELEMENT Container (#PCDATA) >
<!ATTLIST Container id CDATA #REQUIRED>
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/ui/wizard/InstallPanelVisual.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/ui/wizard/InstallPanelVisual.java
index 11d94a1308..76d8fc71eb 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/ui/wizard/InstallPanelVisual.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/ui/wizard/InstallPanelVisual.java
@@ -354,6 +354,15 @@ class InstallPanelVisual extends javax.swing.JPanel {
public String getUrl() {
String url;
switch (getTomcatVersion()) {
+ case TOMCAT_110:
+ url = TomcatFactory.TOMCAT_URI_PREFIX_110;
+ break;
+ case TOMCAT_101:
+ url = TomcatFactory.TOMCAT_URI_PREFIX_101;
+ break;
+ case TOMCAT_100:
+ url = TomcatFactory.TOMCAT_URI_PREFIX_100;
+ break;
case TOMCAT_90:
url = TomcatFactory.TOMCAT_URI_PREFIX_90;
break;
@@ -574,9 +583,7 @@ class InstallPanelVisual extends javax.swing.JPanel {
infoMessage = true;
} else if (!TomcatUsers.hasManagerRole(getTomcatVersion(), tomcatUsersXml, jTextFieldUsername.getText())) {
errorMessage = NbBundle.getMessage(InstallPanelVisual.class, "MSG_UserHasNotManagerRole",
- TomcatVersion.TOMCAT_70.equals(getTomcatVersion())
- || TomcatVersion.TOMCAT_80.equals(getTomcatVersion())
- || TomcatVersion.TOMCAT_90.equals(getTomcatVersion())
+ getTomcatVersion().isAtLeast(TomcatVersion.TOMCAT_70)
? "manager-script"
: "manager");
infoMessage = true;
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/LogSupport.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/LogSupport.java
index afbd4723a2..ebfcb051ef 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/LogSupport.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/LogSupport.java
@@ -44,7 +44,7 @@ import org.openide.windows.*;
* @author Stepan Herold
*/
public class LogSupport {
- private Map/*<Link, Link>*/ links = Collections.synchronizedMap(new HashMap());
+ private Map<Link, Link> links = Collections.synchronizedMap(new HashMap());
private Annotation errAnnot;
/**
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/LogViewer.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/LogViewer.java
index 1bdb05d290..a427587476 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/LogViewer.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/LogViewer.java
@@ -76,7 +76,7 @@ public class LogViewer extends Thread {
/**
* List of listeners which are notified when the log viewer is stoped.
*/
- private List/*<LogViewerStopListener>*/ stopListeners = Collections.synchronizedList(new LinkedList());
+ private List<LogViewerStopListener> stopListeners = Collections.synchronizedList(new LinkedList());
private String displayName;
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatProperties.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatProperties.java
index e1adffb6b3..bac81694fa 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatProperties.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatProperties.java
@@ -261,6 +261,18 @@ public class TomcatProperties {
String prefix;
String serverID;
switch (tm.getTomcatVersion()) {
+ case TOMCAT_110:
+ prefix = "tomcat110"; // NIO18N
+ serverID = TomcatFactory.SERVER_ID_110;
+ break;
+ case TOMCAT_101:
+ prefix = "tomcat101"; // NIO18N
+ serverID = TomcatFactory.SERVER_ID_101;
+ break;
+ case TOMCAT_100:
+ prefix = "tomcat100"; // NIO18N
+ serverID = TomcatFactory.SERVER_ID_100;
+ break;
case TOMCAT_90:
prefix = "tomcat90"; // NIO18N
serverID = TomcatFactory.SERVER_ID_90;
@@ -663,7 +675,7 @@ public class TomcatProperties {
}
}
- if (tm.isTomcat60()) {
+ if (tm.getTomcatVersion().isAtLeast(TomcatVersion.TOMCAT_60)) {
try {
retValue.add(new File(homeDir, "bin/tomcat-juli.jar").toURI().toURL()); // NOI18N
} catch (MalformedURLException e) {
@@ -722,7 +734,23 @@ public class TomcatProperties {
addFileToList(list, jspApiDoc);
addFileToList(list, servletApiDoc);
} else {
- File j2eeDoc = InstalledFileLocator.getDefault().locate("docs/javaee-doc-api.jar", null, false); // NOI18N
+ String eeDocs;
+ switch (tm.getTomcatVersion()) {
+// TODO: Add support for Jakarta EE 10
+// case TOMCAT_110:
+// case TOMCAT_101:
+// eeDocs = "docs/jakartaee10-doc-api.jar";
+// break;
+ case TOMCAT_100:
+ eeDocs = "docs/jakartaee9-doc-api.jar";
+ break;
+ case TOMCAT_90:
+ eeDocs = "docs/jakartaee8-doc-api.jar";
+ break;
+ default:
+ eeDocs = "docs/javaee-doc-api.jar";
+ }
+ File j2eeDoc = InstalledFileLocator.getDefault().locate(eeDocs, null, false); // NOI18N
if (j2eeDoc != null) {
addFileToList(list, j2eeDoc);
}
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatUsers.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatUsers.java
index a11033e029..4e250596ad 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatUsers.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatUsers.java
@@ -79,9 +79,7 @@ public class TomcatUsers {
roles = ""; // NOI18N
}
StringBuilder newRoles = new StringBuilder(roles.trim());
- if (TomcatVersion.TOMCAT_70.equals(version)
- || TomcatVersion.TOMCAT_80.equals(version)
- || TomcatVersion.TOMCAT_90.equals(version)) {
+ if (version.isAtLeast(TomcatVersion.TOMCAT_70)) {
if (!hasRole(roles, "manager-script")) { // NOI18N
if (newRoles.length() > 0 && !newRoles.toString().endsWith(",")) { // NOI18N
newRoles.append(',');
@@ -139,9 +137,7 @@ public class TomcatUsers {
}
if (username.equals(name)) { // NOI18N
String roles = user.getAttribute("roles"); // NOI18N
- if (TomcatVersion.TOMCAT_70.equals(version)
- || TomcatVersion.TOMCAT_80.equals(version)
- || TomcatVersion.TOMCAT_90.equals(version)) {
+ if (version.isAtLeast(TomcatVersion.TOMCAT_70)) {
if (hasRole(roles, "manager-script")) { // NOI18N
return true;
}
diff --git a/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/TomcatFactoryTest.java b/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/TomcatFactoryTest.java
index e313421deb..3450d1ed17 100644
--- a/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/TomcatFactoryTest.java
+++ b/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/TomcatFactoryTest.java
@@ -19,6 +19,7 @@
package org.netbeans.modules.tomcat5;
import org.netbeans.junit.NbTestCase;
+import org.netbeans.modules.tomcat5.deploy.TomcatManager;
/**
*
@@ -33,4 +34,27 @@ public class TomcatFactoryTest extends NbTestCase {
public void testOldCreate50MethodForAutoupdateModule() {
assertNotNull(TomcatFactory.create50());
}
+
+ public void testTomEEtype() {
+
+ TomcatManager.TomEEType type = TomcatManager.TomEEType.TOMEE_WEBPROFILE;
+ String file = "activemq-protobuf-1.1.jar";
+
+ if (TomcatFactory.TOMEE_PLUME_JAR_PATTERN.matcher(file).matches()) {
+ type = TomcatManager.TomEEType.TOMEE_PLUME;
+ } else if (TomcatFactory.TOMEE_PLUS_JAR_PATTERN.matcher(file).matches()) {
+ type = TomcatManager.TomEEType.TOMEE_PLUS;
+ } else if (TomcatFactory.TOMEE_MICROPROFILE_JAR_PATTERN.matcher(file).matches()) {
+ type = TomcatManager.TomEEType.TOMEE_MICROPROFILE;
+ } else if (TomcatFactory.TOMEE_WEBPROFILE_JAR_PATTERN.matcher(file).matches()) {
+ type = TomcatManager.TomEEType.TOMEE_WEBPROFILE;
+ } else if (TomcatFactory.TOMEE_JAXRS_JAR_PATTERN.matcher(file).matches()) {
+ type = TomcatManager.TomEEType.TOMEE_JAXRS;
+ }
+
+ assertEquals(TomcatManager.TomEEType.TOMEE_PLUS, type);
+ assertNotSame(TomcatManager.TomEEType.TOMEE_MICROPROFILE, type);
+
+ }
+
}
diff --git a/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/TomcatManagerTest.java b/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/TomcatManagerTest.java
index eb3a0ebbeb..9736b20f69 100644
--- a/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/TomcatManagerTest.java
+++ b/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/TomcatManagerTest.java
@@ -75,4 +75,31 @@ public class TomcatManagerTest extends TestBase {
TestRunner.run(suite());
}
+ public void testIsHigherThanTomcat70() {
+ TomcatManager.TomcatVersion tomcatVersion = TomcatManager.TomcatVersion.TOMCAT_70;
+
+ assertFalse(tomcatVersion.isAtLeast(TomcatManager.TomcatVersion.TOMCAT_110));
+ assertFalse(tomcatVersion.isAtLeast(TomcatManager.TomcatVersion.TOMCAT_101));
+ assertFalse(tomcatVersion.isAtLeast(TomcatManager.TomcatVersion.TOMCAT_100));
+ assertFalse(tomcatVersion.isAtLeast(TomcatManager.TomcatVersion.TOMCAT_90));
+ assertFalse(tomcatVersion.isAtLeast(TomcatManager.TomcatVersion.TOMCAT_80));
+ assertTrue(tomcatVersion.isAtLeast(TomcatManager.TomcatVersion.TOMCAT_60));
+ assertTrue(tomcatVersion.isAtLeast(TomcatManager.TomcatVersion.TOMCAT_55));
+ assertTrue(tomcatVersion.isAtLeast(TomcatManager.TomcatVersion.TOMCAT_50));
+
+ }
+
+ public void testIsHigherThanTomee70() {
+ TomcatManager.TomEEVersion tomEEVersion = TomcatManager.TomEEVersion.TOMEE_70;
+
+ assertFalse(tomEEVersion.isAtLeast(TomcatManager.TomEEVersion.TOMEE_90));
+ assertFalse(tomEEVersion.isAtLeast(TomcatManager.TomEEVersion.TOMEE_80));
+ assertFalse(tomEEVersion.isAtLeast(TomcatManager.TomEEVersion.TOMEE_71));
+ assertTrue(tomEEVersion.isAtLeast(TomcatManager.TomEEVersion.TOMEE_70));
+ assertTrue(tomEEVersion.isAtLeast(TomcatManager.TomEEVersion.TOMEE_17));
+ assertTrue(tomEEVersion.isAtLeast(TomcatManager.TomEEVersion.TOMEE_16));
+ assertTrue(tomEEVersion.isAtLeast(TomcatManager.TomEEVersion.TOMEE_15));
+
+ }
+
}
diff --git a/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/util/TomcatUsersTest.java b/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/util/TomcatUsersTest.java
index 1a5191c103..51fb444d58 100644
--- a/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/util/TomcatUsersTest.java
+++ b/enterprise/tomcat5/test/unit/src/org/netbeans/modules/tomcat5/util/TomcatUsersTest.java
@@ -66,6 +66,11 @@ public class TomcatUsersTest extends NbTestCase {
assertFalse(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_70, file, "tomcat6"));
assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_70, file, "tomcat7"));
assertFalse(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_60, file, "tomcat7"));
+ assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_80, file, "tomcat7"));
+ assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_90, file, "tomcat7"));
+ assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_100, file, "tomcat7"));
+ assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_101, file, "tomcat7"));
+ assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_110, file, "tomcat7"));
}
public void testCreateUser() throws Exception {
@@ -84,6 +89,15 @@ public class TomcatUsersTest extends NbTestCase {
assertFalse(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_60, file, "nonexisting"));
TomcatUsers.createUser(file, "new", "tomcat", TomcatVersion.TOMCAT_60);
assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_60, file, "new"));
+
+ file = createTomcatUsersXml("tomcat-users3.xml", CONTENT3);
+ assertFalse(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_110, file, "ide"));
+ assertFalse(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_101, file, "ide"));
+ TomcatUsers.createUser(file, "tomcat6", "tomcat", TomcatVersion.TOMCAT_101);
+ assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_101, file, "tomcat7"));
+ assertFalse(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_60, file, "nonexisting"));
+ TomcatUsers.createUser(file, "new", "tomcat", TomcatVersion.TOMCAT_101);
+ assertTrue(TomcatUsers.hasManagerRole(TomcatVersion.TOMCAT_101, file, "new"));
}
public void testUserExists() throws Exception {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists