diff --git a/.java-version b/.java-version
index 2dbc24b32d3c..03b6389f32ad 100644
--- a/.java-version
+++ b/.java-version
@@ -1 +1 @@
-11.0
+17.0
diff --git a/api/pom.xml b/api/pom.xml
index c80c35593451..1e60ff165e7f 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -41,10 +41,6 @@
commons-math3
${cs.commons-math3.version}
-
- javax.servlet
- javax.servlet-api
-
org.apache.cloudstack
cloud-framework-db
diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiServerService.java b/api/src/main/java/org/apache/cloudstack/api/ApiServerService.java
index cb75939d6bc5..f44471da77b3 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ApiServerService.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ApiServerService.java
@@ -19,7 +19,7 @@
import java.net.InetAddress;
import java.util.Map;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import com.cloud.domain.Domain;
import com.cloud.exception.CloudAuthenticationException;
diff --git a/api/src/main/java/org/apache/cloudstack/api/auth/APIAuthenticator.java b/api/src/main/java/org/apache/cloudstack/api/auth/APIAuthenticator.java
index 7e33b1347db3..5d9442137df9 100644
--- a/api/src/main/java/org/apache/cloudstack/api/auth/APIAuthenticator.java
+++ b/api/src/main/java/org/apache/cloudstack/api/auth/APIAuthenticator.java
@@ -18,9 +18,9 @@
import org.apache.cloudstack.api.ServerApiException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;
import java.net.InetAddress;
diff --git a/client/pom.xml b/client/pom.xml
index d8fa433d5be3..e95e29080215 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -28,10 +28,6 @@
4.23.0.0-SNAPSHOT
-
- javax.servlet
- javax.servlet-api
-
org.eclipse.jetty
jetty-server
diff --git a/framework/spring/module/pom.xml b/framework/spring/module/pom.xml
index f44cffa30b10..cf4750480b61 100644
--- a/framework/spring/module/pom.xml
+++ b/framework/spring/module/pom.xml
@@ -41,11 +41,5 @@
org.springframework
spring-web
-
- javax.servlet
- javax.servlet-api
- provided
- true
-
diff --git a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java
index 3b6133b91b4a..e7e0a8e46a81 100644
--- a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java
+++ b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/CloudStackContextLoaderListener.java
@@ -20,8 +20,8 @@
import java.io.IOException;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextEvent;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
diff --git a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/ModuleBasedFilter.java b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/ModuleBasedFilter.java
index b3648ab76e55..f457e6b3f64b 100644
--- a/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/ModuleBasedFilter.java
+++ b/framework/spring/module/src/main/java/org/apache/cloudstack/spring/module/web/ModuleBasedFilter.java
@@ -18,9 +18,9 @@
*/
package org.apache.cloudstack.spring.module.web;
-import javax.servlet.Filter;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.ApplicationContext;
diff --git a/plugins/backup/networker/src/test/java/org/apache/backup/networker/NetworkerClientTest.java b/plugins/backup/networker/src/test/java/org/apache/backup/networker/NetworkerClientTest.java
index f8cff7ba1960..41eb1e9a55a9 100644
--- a/plugins/backup/networker/src/test/java/org/apache/backup/networker/NetworkerClientTest.java
+++ b/plugins/backup/networker/src/test/java/org/apache/backup/networker/NetworkerClientTest.java
@@ -53,7 +53,6 @@ public class NetworkerClientTest {
private final String adminUsername = "administrator";
private final String adminPassword = "password";
private final int port = 9400;
- private final String url = "http://localhost:" + port + "/nwrestapi/v3";
private NetworkerClient client;
@Rule
public WireMockRule wireMockRule = new WireMockRule(port);
@@ -63,6 +62,7 @@ public void setUp() throws Exception {
wireMockRule.stubFor(get(urlMatching(".*")).withBasicAuth(adminUsername, adminPassword)
.willReturn(aResponse()
.withStatus(200)));
+ String url = "http://localhost:" + port + "/nwrestapi/v3";
client = new NetworkerClient(url, adminUsername, adminPassword, false, 60);
ReflectionTestUtils.setField(client, "backupManager", Mockito.mock(BackupManager.class));
}
@@ -532,11 +532,11 @@ public void testregisterBackupForVMwithSsid() {
backupedVM.setBackupOfferingId(0L);
backupedVM.setDataCenterId(1);
SimpleDateFormat formatterDateTime = new SimpleDateFormat("yyy-MM-dd'T'HH:mm:ss");
- Long startTS=1657591323L;
+ long startTS=1657591323L;
Instant instant = Instant.ofEpochSecond(startTS);
Date backupDate = Date.from(instant);
String saveTime = formatterDateTime.format(Date.from(instant));
- BackupVO vmBackup = client.registerBackupForVm(backupedVM,backupDate,startTS.toString());
+ BackupVO vmBackup = client.registerBackupForVm(backupedVM,backupDate,String.valueOf(startTS));
verify(getRequestedFor(urlEqualTo("/nwrestapi/v3/global/backups/?q=name:"+backupedVM.getName()+"+and+saveTime:'"+saveTime+"'")));
Assert.assertEquals("658580844", vmBackup.getSize().toString());
Assert.assertEquals("d371d629-00000006-84ccd61b-62ccd61b-007d1500-5a80015d",vmBackup.getExternalId());
@@ -625,7 +625,7 @@ public void testregisterBackupForVMwithOutSsid() {
backupedVM.setDataCenterId(1);
SimpleDateFormat formatterDate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat formatterTime = new SimpleDateFormat("HH:mm:ss");
- Long startTS=1657591323L;
+ long startTS=1657591323L;
Instant instant = Instant.ofEpochSecond(startTS);
Date backupDate = Date.from(instant);
String startDate = formatterDate.format(backupDate);
diff --git a/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/ListOAuthProvidersCmd.java b/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/ListOAuthProvidersCmd.java
index abdbf65dbb42..1d117cfaaaf1 100644
--- a/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/ListOAuthProvidersCmd.java
+++ b/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/ListOAuthProvidersCmd.java
@@ -40,9 +40,9 @@
import org.apache.cloudstack.oauth2.vo.OauthProviderVO;
import org.apache.commons.lang.ArrayUtils;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
@APICommand(name = "listOauthProvider", description = "List OAuth providers registered", responseObject = OauthProviderResponse.class, entityType = {},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
diff --git a/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/OauthLoginAPIAuthenticatorCmd.java b/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/OauthLoginAPIAuthenticatorCmd.java
index f9a1d10d3526..6bbbddf27f56 100644
--- a/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/OauthLoginAPIAuthenticatorCmd.java
+++ b/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/OauthLoginAPIAuthenticatorCmd.java
@@ -39,9 +39,9 @@
import org.jetbrains.annotations.Nullable;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;
import java.net.InetAddress;
diff --git a/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/VerifyOAuthCodeAndGetUserCmd.java b/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/VerifyOAuthCodeAndGetUserCmd.java
index bd49f87d6273..59570032c304 100644
--- a/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/VerifyOAuthCodeAndGetUserCmd.java
+++ b/plugins/user-authenticators/oauth2/src/main/java/org/apache/cloudstack/oauth2/api/command/VerifyOAuthCodeAndGetUserCmd.java
@@ -37,9 +37,9 @@
import org.apache.cloudstack.oauth2.api.response.OauthProviderResponse;
import org.apache.commons.lang.ArrayUtils;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
@APICommand(name = "verifyOAuthCodeAndGetUser", description = "Verify the OAuth Code and fetch the corresponding user from provider", responseObject = OauthProviderResponse.class, entityType = {},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
diff --git a/plugins/user-authenticators/oauth2/src/test/java/org/apache/cloudstack/oauth2/api/command/VerifyOAuthCodeAndGetUserCmdTest.java b/plugins/user-authenticators/oauth2/src/test/java/org/apache/cloudstack/oauth2/api/command/VerifyOAuthCodeAndGetUserCmdTest.java
index 59245a4027aa..6d0b89dedd71 100644
--- a/plugins/user-authenticators/oauth2/src/test/java/org/apache/cloudstack/oauth2/api/command/VerifyOAuthCodeAndGetUserCmdTest.java
+++ b/plugins/user-authenticators/oauth2/src/test/java/org/apache/cloudstack/oauth2/api/command/VerifyOAuthCodeAndGetUserCmdTest.java
@@ -28,9 +28,9 @@
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.auth.PluggableAPIAuthenticator;
diff --git a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/GetServiceProviderMetaDataCmd.java b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/GetServiceProviderMetaDataCmd.java
index 50b075b44489..7d043fb0bb51 100644
--- a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/GetServiceProviderMetaDataCmd.java
+++ b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/GetServiceProviderMetaDataCmd.java
@@ -24,9 +24,9 @@
import java.util.Map;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
diff --git a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/ListAndSwitchSAMLAccountCmd.java b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/ListAndSwitchSAMLAccountCmd.java
index 5263ade6b37a..1d5827d7b808 100644
--- a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/ListAndSwitchSAMLAccountCmd.java
+++ b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/ListAndSwitchSAMLAccountCmd.java
@@ -23,9 +23,9 @@
import java.util.Map;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandResourceType;
diff --git a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/ListIdpsCmd.java b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/ListIdpsCmd.java
index 09e5f1b6557e..79d647a20b58 100644
--- a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/ListIdpsCmd.java
+++ b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/ListIdpsCmd.java
@@ -32,9 +32,9 @@
import org.apache.cloudstack.saml.SAMLProviderMetadata;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
diff --git a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java
index bfd47922142f..3e299ab9e7f8 100644
--- a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java
+++ b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java
@@ -22,9 +22,9 @@
import java.util.Map;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.FactoryConfigurationError;
diff --git a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LogoutAPIAuthenticatorCmd.java b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LogoutAPIAuthenticatorCmd.java
index ca46bef4b5a3..72e20057873f 100644
--- a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LogoutAPIAuthenticatorCmd.java
+++ b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/api/command/SAML2LogoutAPIAuthenticatorCmd.java
@@ -41,9 +41,9 @@
import org.xml.sax.SAXException;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.FactoryConfigurationError;
import java.io.IOException;
diff --git a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/saml/SAMLUtils.java b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/saml/SAMLUtils.java
index 1a9d677d43a5..0042a6c91c28 100644
--- a/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/saml/SAMLUtils.java
+++ b/plugins/user-authenticators/saml2/src/main/java/org/apache/cloudstack/saml/SAMLUtils.java
@@ -50,8 +50,8 @@
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
diff --git a/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/GetServiceProviderMetaDataCmdTest.java b/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/GetServiceProviderMetaDataCmdTest.java
index 2cddb126b1b7..a94678e6bdb5 100644
--- a/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/GetServiceProviderMetaDataCmdTest.java
+++ b/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/GetServiceProviderMetaDataCmdTest.java
@@ -24,9 +24,9 @@
import java.security.KeyPair;
import java.security.cert.X509Certificate;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.cloudstack.api.ApiServerService;
import org.apache.cloudstack.api.auth.APIAuthenticationType;
diff --git a/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/ListAndSwitchSAMLAccountCmdTest.java b/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/ListAndSwitchSAMLAccountCmdTest.java
index afc2f82b2060..aec2a859999a 100644
--- a/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/ListAndSwitchSAMLAccountCmdTest.java
+++ b/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/ListAndSwitchSAMLAccountCmdTest.java
@@ -27,10 +27,10 @@
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
diff --git a/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmdTest.java b/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmdTest.java
index 426ec4e073f4..ca07c680ce0e 100644
--- a/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmdTest.java
+++ b/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmdTest.java
@@ -30,9 +30,9 @@
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.cloudstack.api.ApiServerService;
import org.apache.cloudstack.api.BaseCmd;
diff --git a/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/SAML2LogoutAPIAuthenticatorCmdTest.java b/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/SAML2LogoutAPIAuthenticatorCmdTest.java
index 2060d0baf311..fcc65036312d 100644
--- a/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/SAML2LogoutAPIAuthenticatorCmdTest.java
+++ b/plugins/user-authenticators/saml2/src/test/java/org/apache/cloudstack/api/command/SAML2LogoutAPIAuthenticatorCmdTest.java
@@ -23,9 +23,9 @@
import java.net.InetAddress;
import java.security.cert.X509Certificate;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.cloudstack.api.ApiServerService;
import org.apache.cloudstack.api.auth.APIAuthenticationType;
diff --git a/pom.xml b/pom.xml
index 315a2e3e4bd7..ed528f95a753 100644
--- a/pom.xml
+++ b/pom.xml
@@ -185,7 +185,7 @@
8.1.0
3.1.3
1.4.20
- 5.3.26
+ 7.0.2
0.5.4
3.1.7
@@ -436,11 +436,6 @@
mail
${cs.mail.version}
-
- javax.servlet
- javax.servlet-api
- ${cs.servlet.version}
-
joda-time
joda-time
diff --git a/server/pom.xml b/server/pom.xml
index 2b35a0f42ac8..e13b3babd038 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -55,11 +55,6 @@
cloud-framework-security
${project.version}
-
- javax.servlet
- javax.servlet-api
- provided
-
org.apache.httpcomponents
httpcore
diff --git a/server/src/main/java/com/cloud/api/ApiServer.java b/server/src/main/java/com/cloud/api/ApiServer.java
index 5a3c8c2c7179..5425154a1e35 100644
--- a/server/src/main/java/com/cloud/api/ApiServer.java
+++ b/server/src/main/java/com/cloud/api/ApiServer.java
@@ -55,8 +55,8 @@
import javax.crypto.spec.SecretKeySpec;
import javax.inject.Inject;
import javax.naming.ConfigurationException;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import com.cloud.cluster.ManagementServerHostVO;
import com.cloud.cluster.dao.ManagementServerHostDao;
diff --git a/server/src/main/java/com/cloud/api/ApiServlet.java b/server/src/main/java/com/cloud/api/ApiServlet.java
index 21d093758127..aa400aa47bfc 100644
--- a/server/src/main/java/com/cloud/api/ApiServlet.java
+++ b/server/src/main/java/com/cloud/api/ApiServlet.java
@@ -29,13 +29,13 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
diff --git a/server/src/main/java/com/cloud/api/ApiSessionListener.java b/server/src/main/java/com/cloud/api/ApiSessionListener.java
index a82c043ee3b2..1e64df745769 100644
--- a/server/src/main/java/com/cloud/api/ApiSessionListener.java
+++ b/server/src/main/java/com/cloud/api/ApiSessionListener.java
@@ -16,10 +16,10 @@
// under the License.
package com.cloud.api;
-import javax.servlet.annotation.WebListener;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionListener;
+import jakarta.servlet.annotation.WebListener;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionListener;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
diff --git a/server/src/main/java/com/cloud/api/auth/DefaultForgotPasswordAPIAuthenticatorCmd.java b/server/src/main/java/com/cloud/api/auth/DefaultForgotPasswordAPIAuthenticatorCmd.java
index 1e90b43c5e8b..29100d64f83a 100644
--- a/server/src/main/java/com/cloud/api/auth/DefaultForgotPasswordAPIAuthenticatorCmd.java
+++ b/server/src/main/java/com/cloud/api/auth/DefaultForgotPasswordAPIAuthenticatorCmd.java
@@ -37,9 +37,9 @@
import org.jetbrains.annotations.Nullable;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.net.InetAddress;
import java.util.List;
import java.util.Map;
diff --git a/server/src/main/java/com/cloud/api/auth/DefaultLoginAPIAuthenticatorCmd.java b/server/src/main/java/com/cloud/api/auth/DefaultLoginAPIAuthenticatorCmd.java
index c9b03a85f4c7..76e6211c4313 100644
--- a/server/src/main/java/com/cloud/api/auth/DefaultLoginAPIAuthenticatorCmd.java
+++ b/server/src/main/java/com/cloud/api/auth/DefaultLoginAPIAuthenticatorCmd.java
@@ -37,9 +37,9 @@
import org.jetbrains.annotations.Nullable;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;
import java.net.InetAddress;
diff --git a/server/src/main/java/com/cloud/api/auth/DefaultLogoutAPIAuthenticatorCmd.java b/server/src/main/java/com/cloud/api/auth/DefaultLogoutAPIAuthenticatorCmd.java
index 6248f8f2f0ff..957f97ba7070 100644
--- a/server/src/main/java/com/cloud/api/auth/DefaultLogoutAPIAuthenticatorCmd.java
+++ b/server/src/main/java/com/cloud/api/auth/DefaultLogoutAPIAuthenticatorCmd.java
@@ -27,9 +27,9 @@
import org.apache.cloudstack.api.auth.PluggableAPIAuthenticator;
import org.apache.cloudstack.api.response.LogoutCmdResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;
import java.net.InetAddress;
diff --git a/server/src/main/java/com/cloud/api/auth/DefaultResetPasswordAPIAuthenticatorCmd.java b/server/src/main/java/com/cloud/api/auth/DefaultResetPasswordAPIAuthenticatorCmd.java
index 077efdee0879..92b9e8c61539 100644
--- a/server/src/main/java/com/cloud/api/auth/DefaultResetPasswordAPIAuthenticatorCmd.java
+++ b/server/src/main/java/com/cloud/api/auth/DefaultResetPasswordAPIAuthenticatorCmd.java
@@ -39,9 +39,9 @@
import org.jetbrains.annotations.Nullable;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.net.InetAddress;
import java.util.List;
import java.util.Map;
diff --git a/server/src/main/java/com/cloud/api/auth/ValidateUserTwoFactorAuthenticationCodeCmd.java b/server/src/main/java/com/cloud/api/auth/ValidateUserTwoFactorAuthenticationCodeCmd.java
index c5914e948db4..0cf322756180 100644
--- a/server/src/main/java/com/cloud/api/auth/ValidateUserTwoFactorAuthenticationCodeCmd.java
+++ b/server/src/main/java/com/cloud/api/auth/ValidateUserTwoFactorAuthenticationCodeCmd.java
@@ -40,9 +40,9 @@
import org.apache.commons.lang3.StringUtils;
import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.net.InetAddress;
import java.util.List;
import java.util.Map;
diff --git a/server/src/main/java/com/cloud/servlet/CloudStartupServlet.java b/server/src/main/java/com/cloud/servlet/CloudStartupServlet.java
index 03933a8ad0e2..bba651590e11 100644
--- a/server/src/main/java/com/cloud/servlet/CloudStartupServlet.java
+++ b/server/src/main/java/com/cloud/servlet/CloudStartupServlet.java
@@ -19,9 +19,9 @@
import java.util.Timer;
import java.util.TimerTask;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
diff --git a/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java b/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java
index 265a975af245..28ba146004ba 100644
--- a/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java
+++ b/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java
@@ -28,12 +28,12 @@
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.inject.Inject;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.cloudstack.framework.security.keys.KeysManager;
import org.apache.commons.codec.binary.Base64;
diff --git a/server/src/test/java/com/cloud/api/ApiServletTest.java b/server/src/test/java/com/cloud/api/ApiServletTest.java
index 4d4f0a12098c..2363f1654b5d 100644
--- a/server/src/test/java/com/cloud/api/ApiServletTest.java
+++ b/server/src/test/java/com/cloud/api/ApiServletTest.java
@@ -42,9 +42,9 @@
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
diff --git a/server/src/test/java/com/cloud/deploy/DeploymentPlanningManagerImplTest.java b/server/src/test/java/com/cloud/deploy/DeploymentPlanningManagerImplTest.java
index 5b03260d2d66..28773c60c370 100644
--- a/server/src/test/java/com/cloud/deploy/DeploymentPlanningManagerImplTest.java
+++ b/server/src/test/java/com/cloud/deploy/DeploymentPlanningManagerImplTest.java
@@ -123,7 +123,6 @@
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
-import javax.inject.Inject;
import javax.naming.ConfigurationException;
import java.io.IOException;
import java.lang.reflect.Field;
@@ -149,64 +148,67 @@ public class DeploymentPlanningManagerImplTest {
@InjectMocks
DeploymentPlanningManagerImpl _dpm;
- @Inject
+ @Mock
+ AgentManager _agentMgr;
+
+ @Mock
PlannerHostReservationDao _plannerHostReserveDao;
- @Inject
+ @Mock
VirtualMachineProfileImpl vmProfile;
- @Inject
+ @Mock
private AccountDao accountDao;
- @Inject
+ @Mock
private VMInstanceDao vmInstanceDao;
- @Inject
+ @Mock
AffinityGroupVMMapDao _affinityGroupVMMapDao;
- @Inject
+ @Mock
ExcludeList avoids;
- @Inject
+ @Mock
DataCenterVO dc;
- @Inject
+ @Mock
DataCenterDao _dcDao;
@Mock
FirstFitPlanner _planner;
- @Inject
+ @Mock
ClusterDao _clusterDao;
- @Inject
+ @Mock
DedicatedResourceDao _dedicatedDao;
- @Inject
+ @Mock
VMInstanceDetailsDao vmDetailsDao;
- @Inject
+ @Mock
VMTemplateDao templateDao;
- @Inject
+ @Mock
HostPodDao hostPodDao;
- @Inject
+ @Mock
VolumeDao volDao;
- @Inject
+ @Mock
HostDao hostDao;
- @Inject
+ @Mock
CapacityManager capacityMgr;
- @Inject
+ @Mock
ServiceOfferingDetailsDao serviceOfferingDetailsDao;
- @Inject
+ @Mock
ClusterDetailsDao clusterDetailsDao;
- @Inject
+ @Mock
PrimaryDataStoreDao primaryDataStoreDao;
@Mock
@@ -218,13 +220,13 @@ public class DeploymentPlanningManagerImplTest {
@Mock
AccountManager _accountMgr;
- @Inject
+ @Mock
DiskOfferingDao _diskOfferingDao;
@Mock
DataStoreManager _dataStoreManager;
- @Inject
+ @Mock
HostPodDao _podDao;
private static final long dataCenterId = 1L;
diff --git a/server/src/test/java/com/cloud/network/vpc/NetworkACLManagerTest.java b/server/src/test/java/com/cloud/network/vpc/NetworkACLManagerTest.java
index 651d7cb6aef3..89a8701d41b5 100644
--- a/server/src/test/java/com/cloud/network/vpc/NetworkACLManagerTest.java
+++ b/server/src/test/java/com/cloud/network/vpc/NetworkACLManagerTest.java
@@ -44,8 +44,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.ArgumentMatchers;
-import org.mockito.Mockito;
+import org.mockito.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@@ -74,38 +73,42 @@
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
public class NetworkACLManagerTest extends TestCase {
- @Inject
+
+ @Spy
+ @InjectMocks
NetworkACLManagerImpl _aclMgr;
- @Inject
+ @Mock
AccountManager _accountMgr;
- @Inject
+ @Mock
VpcManager _vpcMgr;
- @Inject
+ @Mock
NetworkACLDao _networkACLDao;
- @Inject
+ @Mock
NetworkACLItemDao _networkACLItemDao;
- @Inject
+ @Mock
NetworkDao _networkDao;
- @Inject
+ @Mock
NetworkOfferingDao networkOfferingDao;
- @Inject
+ @Mock
NetworkModel _networkModel;
- @Inject
+ @Mock
List _networkAclElements;
- @Inject
+ @Mock
VpcService _vpcSvc;
- @Inject
+ @Mock
VpcGatewayDao _vpcGatewayDao;
- @Inject
+ @Mock
private ResourceTagDao resourceTagDao;
private NetworkACLVO acl;
private NetworkACLItemVO aclItem;
+ private AutoCloseable closeable;
@Override
@Before
public void setUp() {
+ closeable = MockitoAnnotations.openMocks(this);
ComponentContext.initComponentsLifeCycle();
final Account account = new AccountVO("testaccount", 1, "testdomain", Account.Type.NORMAL, UUID.randomUUID().toString());
final UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString(), User.Source.UNKNOWN);
@@ -117,8 +120,9 @@ public void setUp() {
@Override
@After
- public void tearDown() {
+ public void tearDown() throws Exception {
CallContext.unregister();
+ closeable.close();
}
@Test
@@ -156,7 +160,7 @@ public void testApplyNetworkACLsButNotOnGateway() throws Exception {
@SuppressWarnings("unchecked")
public void driveTestApplyNetworkACL(final boolean result, final boolean applyNetworkACLs, final boolean applyACLToPrivateGw) throws Exception {
// In order to test ONLY our scope method, we mock the others
- final NetworkACLManager aclManager = Mockito.spy(_aclMgr);
+ final NetworkACLManager aclManager = _aclMgr;
// Prepare
// Reset mocked objects to reuse
diff --git a/server/src/test/java/com/cloud/template/TemplateManagerImplTest.java b/server/src/test/java/com/cloud/template/TemplateManagerImplTest.java
index 819694a226b3..613939ec6277 100755
--- a/server/src/test/java/com/cloud/template/TemplateManagerImplTest.java
+++ b/server/src/test/java/com/cloud/template/TemplateManagerImplTest.java
@@ -69,6 +69,7 @@
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.VMInstanceDao;
+
import org.apache.cloudstack.api.command.user.template.CreateTemplateCmd;
import org.apache.cloudstack.api.command.user.template.DeleteTemplateCmd;
import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd;
@@ -104,12 +105,18 @@
import org.apache.cloudstack.storage.heuristics.HeuristicRuleHelper;
import org.apache.cloudstack.storage.template.VnfTemplateManager;
import org.apache.cloudstack.test.utils.SpringUtils;
+
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.springframework.context.annotation.Bean;
@@ -150,25 +157,26 @@
@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
public class TemplateManagerImplTest {
- @Inject
- TemplateManagerImpl templateManager = new TemplateManagerImpl();
+ @Spy
+ @InjectMocks
+ TemplateManagerImpl templateManager;
- @Inject
+ @Mock
DataStoreManager dataStoreManager;
- @Inject
+ @Mock
VMTemplateDao vmTemplateDao;
- @Inject
+ @Mock
VMTemplatePoolDao vmTemplatePoolDao;
- @Inject
+ @Mock
TemplateDataStoreDao templateDataStoreDao;
@Inject
StoragePoolHostDao storagePoolHostDao;
- @Inject
+ @Mock
PrimaryDataStoreDao primaryDataStoreDao;
@Inject
@@ -180,37 +188,37 @@ public class TemplateManagerImplTest {
@Inject
GuestOSDao guestOSDao;
- @Inject
- VMTemplateDao tmpltDao;
-
- @Inject
- SnapshotDao snapshotDao;
-
@Inject
VMTemplateDetailsDao tmpltDetailsDao;
@Inject
StorageStrategyFactory storageStrategyFactory;
- @Inject
+ @Mock
VMInstanceDao _vmInstanceDao;
- @Inject
+ @Mock
private VMTemplateDao _tmpltDao;
@Inject
HypervisorGuruManager _hvGuruMgr;
- @Inject
+ @Mock
AccountManager _accountMgr;
+
@Inject
VnfTemplateManager vnfTemplateManager;
@Inject
SnapshotJoinDao snapshotJoinDao;
- @Inject
+ @Mock
+ SnapshotDao _snapshotDao;
+
+ @Mock
HeuristicRuleHelper heuristicRuleHelperMock;
+ AutoCloseable mockHolder;
+
public class CustomThreadPoolExecutor extends ThreadPoolExecutor {
AtomicInteger ai = new AtomicInteger(0);
public CustomThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,
@@ -238,6 +246,7 @@ public int getCount() {
@Before
public void setUp() {
+ mockHolder = MockitoAnnotations.openMocks(this);
ComponentContext.initComponentsLifeCycle();
AccountVO account = new AccountVO("admin", 1L, "networkDomain", Account.Type.NORMAL, "uuid");
UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString(), User.Source.UNKNOWN);
@@ -245,8 +254,9 @@ public void setUp() {
}
@After
- public void tearDown() {
+ public void tearDown() throws Exception{
CallContext.unregister();
+ mockHolder.close();
}
@Test(expected = InvalidParameterValueException.class)
@@ -305,13 +315,13 @@ public void testForceDeleteTemplate() {
@Test
public void testPrepareTemplateIsSeeded() {
VMTemplateVO mockTemplate = mock(VMTemplateVO.class);
- when(mockTemplate.getId()).thenReturn(202l);
+ when(mockTemplate.getId()).thenReturn(202L);
StoragePoolVO mockPool = mock(StoragePoolVO.class);
- when(mockPool.getId()).thenReturn(2l);
+ when(mockPool.getId()).thenReturn(2L);
PrimaryDataStore mockPrimaryDataStore = mock(PrimaryDataStore.class);
- when(mockPrimaryDataStore.getId()).thenReturn(2l);
+ when(mockPrimaryDataStore.getId()).thenReturn(2L);
VMTemplateStoragePoolVO mockTemplateStore = mock(VMTemplateStoragePoolVO.class);
when(mockTemplateStore.getDownloadState()).thenReturn(VMTemplateStorageResourceAssoc.Status.DOWNLOADED);
@@ -319,6 +329,7 @@ public void testPrepareTemplateIsSeeded() {
when(dataStoreManager.getPrimaryDataStore(anyLong())).thenReturn(mockPrimaryDataStore);
when(vmTemplateDao.findById(anyLong(), anyBoolean())).thenReturn(mockTemplate);
when(vmTemplatePoolDao.findByPoolTemplate(anyLong(), anyLong(), nullable(String.class))).thenReturn(mockTemplateStore);
+ when(_tmpltDao.findById(202L)).thenReturn(mockTemplate);
doNothing().when(mockTemplateStore).setMarkedForGC(anyBoolean());
@@ -329,7 +340,7 @@ public void testPrepareTemplateIsSeeded() {
@Test
public void testPrepareTemplateNotDownloaded() {
VMTemplateVO mockTemplate = mock(VMTemplateVO.class);
- when(mockTemplate.getId()).thenReturn(202l);
+ when(mockTemplate.getId()).thenReturn(202L);
StoragePoolVO mockPool = mock(StoragePoolVO.class);
when(mockPool.getId()).thenReturn(2l);
@@ -342,6 +353,7 @@ public void testPrepareTemplateNotDownloaded() {
when(vmTemplateDao.findById(anyLong(), anyBoolean())).thenReturn(mockTemplate);
when(vmTemplatePoolDao.findByPoolTemplate(anyLong(), anyLong(), nullable(String.class))).thenReturn(null);
when(templateDataStoreDao.findByTemplateZoneDownloadStatus(202l, 1l, VMTemplateStorageResourceAssoc.Status.DOWNLOADED)).thenReturn(null);
+ when(_tmpltDao.findById(202L)).thenReturn(mockTemplate);
VMTemplateStoragePoolVO returnObject = templateManager.prepareTemplateForCreate(mockTemplate, (StoragePool) mockPrimaryDataStore);
assertTrue("Test template is not ready", returnObject == null);
@@ -394,6 +406,7 @@ public void testTemplateScheduledForDownloadInOnePool() {
when(vmTemplateDao.findById(anyLong(), anyBoolean())).thenReturn(mockTemplate);
when(vmTemplatePoolDao.findByPoolTemplate(anyLong(), anyLong(), nullable(String.class))).thenReturn(mockTemplateStore);
when(primaryDataStoreDao.findById(anyLong())).thenReturn(mockPool);
+ when(_tmpltDao.findById(202L)).thenReturn(mockTemplate);
doNothing().when(mockTemplateStore).setMarkedForGC(anyBoolean());
@@ -423,6 +436,7 @@ public void testTemplateScheduledForDownloadInDisabledPool() {
when(vmTemplateDao.findById(anyLong(), anyBoolean())).thenReturn(mockTemplate);
when(vmTemplatePoolDao.findByPoolTemplate(anyLong(), anyLong(), nullable(String.class))).thenReturn(mockTemplateStore);
when(primaryDataStoreDao.findById(anyLong())).thenReturn(mockPool);
+ when(_tmpltDao.findById(202L)).thenReturn(mockTemplate);
doNothing().when(mockTemplateStore).setMarkedForGC(anyBoolean());
@@ -468,6 +482,7 @@ public void testTemplateScheduledForDownloadInMultiplePool() {
when(primaryDataStoreDao.findById(3l)).thenReturn(mockPool2);
when(primaryDataStoreDao.findById(4l)).thenReturn(mockPool3);
when(primaryDataStoreDao.listByStatus(StoragePoolStatus.Up)).thenReturn(pools);
+ when(_tmpltDao.findById(202L)).thenReturn(mockTemplate);
doNothing().when(mockTemplateStore).setMarkedForGC(anyBoolean());
@@ -501,7 +516,7 @@ public void testCreatePrivateTemplateRecordForRegionStore() throws ResourceAlloc
Account mockTemplateOwner = mock(Account.class);
SnapshotVO mockSnapshot = mock(SnapshotVO.class);
- when(snapshotDao.findById(anyLong())).thenReturn(mockSnapshot);
+ when(_snapshotDao.findById(anyLong())).thenReturn(mockSnapshot);
when(mockSnapshot.getVolumeId()).thenReturn(1L);
when(mockSnapshot.getState()).thenReturn(Snapshot.State.BackedUp);
@@ -513,14 +528,14 @@ public void testCreatePrivateTemplateRecordForRegionStore() throws ResourceAlloc
GuestOSVO mockGuestOS = mock(GuestOSVO.class);
when(guestOSDao.findById(anyLong())).thenReturn(mockGuestOS);
- when(tmpltDao.getNextInSequence(eq(Long.class), eq("id"))).thenReturn(1L);
+ when(_tmpltDao.getNextInSequence(eq(Long.class), eq("id"))).thenReturn(1L);
List mockRegionStores = new ArrayList<>();
ImageStoreVO mockRegionStore = mock(ImageStoreVO.class);
mockRegionStores.add(mockRegionStore);
when(imgStoreDao.findRegionImageStores()).thenReturn(mockRegionStores);
- when(tmpltDao.persist(any(VMTemplateVO.class))).thenAnswer(new Answer() {
+ when(_tmpltDao.persist(any(VMTemplateVO.class))).thenAnswer(new Answer() {
@Override
public VMTemplateVO answer(InvocationOnMock invocationOnMock) throws Throwable {
Object[] args = invocationOnMock.getArguments();
diff --git a/server/src/test/java/com/cloud/vm/FirstFitPlannerTest.java b/server/src/test/java/com/cloud/vm/FirstFitPlannerTest.java
index 5b877cc66169..67956abb789e 100644
--- a/server/src/test/java/com/cloud/vm/FirstFitPlannerTest.java
+++ b/server/src/test/java/com/cloud/vm/FirstFitPlannerTest.java
@@ -33,6 +33,7 @@
import com.cloud.capacity.CapacityVO;
import com.cloud.dc.ClusterDetailsVO;
+
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
import org.apache.cloudstack.framework.config.ConfigDepot;
@@ -44,12 +45,15 @@
import org.apache.cloudstack.framework.config.impl.ConfigDepotImpl;
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
import org.apache.cloudstack.test.utils.SpringUtils;
+
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Mockito;
+
+import org.mockito.*;
+
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
@@ -105,43 +109,44 @@
@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
public class FirstFitPlannerTest {
- @Inject
- FirstFitPlanner planner = new FirstFitPlanner();
- @Inject
+ @Spy
+ @InjectMocks
+ FirstFitPlanner planner;
+ @Mock
DataCenterDao dcDao;
- @Inject
+ @Mock
ClusterDao clusterDao;
- @Inject
+ @Mock
UserVmDao vmDao;
- @Inject
+ @Mock
HostDetailsDao hostDetailsDao;
- @Inject
+ @Mock
VMInstanceDetailsDao vmDetailsDao;
- @Inject
+ @Mock
ConfigurationDao configDao;
- @Inject
+ @Mock
ConfigurationGroupDao configGroupDao;
- @Inject
+ @Mock
ConfigurationSubGroupDao configSubGroupDao;
- @Inject
+ @Mock
CapacityDao capacityDao;
- @Inject
+ @Mock
AccountManager accountMgr;
- @Inject
+ @Mock
ServiceOfferingDao serviceOfferingDao;
- @Inject
+ @Mock
ServiceOfferingDetailsDao serviceOfferingDetailsDao;
- @Inject
+ @Mock
HostGpuGroupsDao hostGpuGroupsDao;
- @Inject
+ @Mock
HostTagsDao hostTagsDao;
- @Inject
+ @Mock
ConfigDepotImpl configDepot;
- @Inject
+ @Mock
ScopedConfigStorage scopedStorage;
- @Inject
+ @Mock
HostDao hostDao;
- @Inject
+ @Mock
private ClusterDetailsDao clusterDetailsDao;
private static final double TOLERANCE = 0.0001;
private static long domainId = 1L;
@@ -152,16 +157,18 @@ public class FirstFitPlannerTest {
int cpuSpeedInOffering = 500;
int ramInOffering = 512;
AccountVO acct = new AccountVO(accountId);
+ private AutoCloseable mockHolder;
@Before
public void setUp() {
+ mockHolder = MockitoAnnotations.openMocks(this);
+ ComponentContext.initComponentsLifeCycle();
ConfigKey.init(configDepot);
when(configDepot.global()).thenReturn(configDao);
when(configDao.getValue(Mockito.anyString())).thenReturn(null);
when(configDao.getValue(Config.ImplicitHostTags.key())).thenReturn("GPU");
- ComponentContext.initComponentsLifeCycle();
acct.setType(Account.Type.ADMIN);
acct.setAccountName("user1");
acct.setDomainId(domainId);
@@ -169,9 +176,10 @@ public void setUp() {
}
@After
- public void tearDown() {
+ public void tearDown() throws Exception{
ConfigKey.init(null);
CallContext.unregister();
+ mockHolder.close();
}
@Test
@@ -182,7 +190,7 @@ public void checkClusterReorderingBasedOnImplicitHostTags() throws InsufficientS
initializeForTest(vmProfile, plan, avoids);
List clusterList = planner.orderClusters(vmProfile, plan, avoids);
- List reorderedClusterList = new ArrayList();
+ List reorderedClusterList = new ArrayList<>();
reorderedClusterList.add(4L);
reorderedClusterList.add(3L);
reorderedClusterList.add(1L);
diff --git a/server/src/test/java/org/apache/cloudstack/affinity/AffinityGroupServiceImplTest.java b/server/src/test/java/org/apache/cloudstack/affinity/AffinityGroupServiceImplTest.java
index 5657bd1f5068..6f404467ebfa 100644
--- a/server/src/test/java/org/apache/cloudstack/affinity/AffinityGroupServiceImplTest.java
+++ b/server/src/test/java/org/apache/cloudstack/affinity/AffinityGroupServiceImplTest.java
@@ -48,14 +48,21 @@
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.framework.messagebus.MessageBus;
import org.apache.cloudstack.test.utils.SpringUtils;
+
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+
import org.mockito.ArgumentMatchers;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
@@ -68,7 +75,6 @@
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
-import javax.inject.Inject;
import javax.naming.ConfigurationException;
import java.io.IOException;
import java.util.ArrayList;
@@ -88,48 +94,56 @@
@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
public class AffinityGroupServiceImplTest {
- @Inject
+ @Spy
+ @InjectMocks
AffinityGroupServiceImpl _affinityService;
- @Inject
+ @Mock
AccountManager _acctMgr;
- @Inject
+ @Mock
AffinityGroupProcessor _processor;
- @Inject
+ @Mock
AffinityGroupDao _groupDao;
- @Inject
+ @Mock
UserVmDao _vmDao;
- @Inject
+ @Mock
AffinityGroupVMMapDao _affinityGroupVMMapDao;
- @Inject
+ @Mock
+ AffinityGroupDomainMapDao _affinityGroupDomainMapDao;
+
+ @Mock
AffinityGroupDao _affinityGroupDao;
- @Inject
+ @Mock
ActionEventUtils _eventUtils;
- @Inject
+ @Mock
AccountDao _accountDao;
- @Inject
+ @Mock
ProjectDao _projectDao;
- @Inject
+ @Mock
EventDao _eventDao;
- @Inject
+ @Mock
DedicatedResourceDao _dedicatedDao;
+ @Mock
+ MessageBus _messageBus;
+
private static final long DOMAIN_ID = 5L;
private static final long PROJECT_ID = 10L;
private static final String ACCOUNT_NAME = "user";
private static final String AFFINITY_GROUP_NAME = "group1";
private AccountVO acct;
+ private AutoCloseable mockHolder;
@BeforeClass
public static void setUpClass() throws ConfigurationException {
@@ -137,6 +151,7 @@ public static void setUpClass() throws ConfigurationException {
@Before
public void setUp() {
+ mockHolder = MockitoAnnotations.openMocks(this);
ComponentContext.initComponentsLifeCycle();
acct = new AccountVO(200L);
acct.setType(Account.Type.NORMAL);
@@ -165,8 +180,9 @@ public void setUp() {
}
@After
- public void tearDown() {
+ public void tearDown() throws Exception {
CallContext.unregister();
+ mockHolder.close();
}
@Test
diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
index a148b988e40d..bb00d51a7c43 100644
--- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
+++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
@@ -19,9 +19,9 @@
import java.io.IOException;
import java.util.Map;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/utils/pom.xml b/utils/pom.xml
index fe0f696e52c7..0d7b1cfa7363 100755
--- a/utils/pom.xml
+++ b/utils/pom.xml
@@ -112,11 +112,6 @@
javax.annotation-api
${cs.javax.annotation.version}
-
- javax.servlet
- javax.servlet-api
- provided
-
com.cronutils
cron-utils
@@ -229,6 +224,15 @@
org.apache.commons
commons-collections4
+
+ org.apache.tomcat.embed
+ tomcat-embed-core
+ test
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-core
+
diff --git a/utils/src/main/java/com/cloud/utils/HttpUtils.java b/utils/src/main/java/com/cloud/utils/HttpUtils.java
index 9f998efe0994..3ca70790f7e2 100644
--- a/utils/src/main/java/com/cloud/utils/HttpUtils.java
+++ b/utils/src/main/java/com/cloud/utils/HttpUtils.java
@@ -22,9 +22,9 @@
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import java.io.FileOutputStream;
import java.io.IOException;
diff --git a/utils/src/main/java/com/cloud/utils/component/ComponentInstantiationPostProcessor.java b/utils/src/main/java/com/cloud/utils/component/ComponentInstantiationPostProcessor.java
index 3ec7d93098e7..22eeac17fcf3 100644
--- a/utils/src/main/java/com/cloud/utils/component/ComponentInstantiationPostProcessor.java
+++ b/utils/src/main/java/com/cloud/utils/component/ComponentInstantiationPostProcessor.java
@@ -19,7 +19,6 @@
package com.cloud.utils.component;
-import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -34,7 +33,6 @@
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.BeansException;
-import org.springframework.beans.PropertyValues;
import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor;
import com.cloud.utils.Pair;
@@ -102,11 +100,6 @@ public boolean postProcessAfterInstantiation(Object bean, String beanName) throw
return true;
}
- @Override
- public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException {
- return pvs;
- }
-
protected class InterceptorDispatcher implements MethodInterceptor {
@Override
public Object intercept(Object target, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
diff --git a/utils/src/test/java/com/cloud/utils/HttpUtilsTest.java b/utils/src/test/java/com/cloud/utils/HttpUtilsTest.java
index 3dea0d05d029..357255f9caff 100644
--- a/utils/src/test/java/com/cloud/utils/HttpUtilsTest.java
+++ b/utils/src/test/java/com/cloud/utils/HttpUtilsTest.java
@@ -44,8 +44,8 @@
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.Logger;
import org.junit.BeforeClass;
@@ -104,7 +104,6 @@ public void validateSessionKeyTest() {
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
// param null, cookies not null test (JSESSIONID is null)
- params = null;
cookies = new Cookie[]{new Cookie(sessionKeyString, sessionKeyValue)};
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, "randomString", HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
assertTrue(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
@@ -123,7 +122,7 @@ public void validateSessionKeyTest() {
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
// param not null, cookies null test
- params = new HashMap();
+ params = new HashMap<>();
params.put(sessionKeyString, new String[]{"randomString"});
cookies = null;
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
@@ -131,7 +130,7 @@ public void validateSessionKeyTest() {
assertTrue(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
// both param and cookies not null test (JSESSIONID is null)
- params = new HashMap();
+ params = new HashMap<>();
cookies = new Cookie[2];
cookies[0] = new Cookie(sessionKeyString, sessionKeyValue);
params.put(sessionKeyString, new String[]{"incorrectValue"});
@@ -140,7 +139,7 @@ public void validateSessionKeyTest() {
assertTrue(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
// both param and cookies not null test (JSESSIONID is not null but mismatches)
- params = new HashMap();
+ params = new HashMap<>();
cookies = new Cookie[2];
cookies[0] = new Cookie(sessionKeyString, sessionKeyValue);
cookies[1] = new Cookie("JSESSIONID", "node0xxxxxxxxxxxxx.node0");
@@ -150,7 +149,7 @@ public void validateSessionKeyTest() {
assertFalse(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
// both param and cookies not null test (JSESSIONID is not null amd matches)
- params = new HashMap();
+ params = new HashMap<>();
cookies = new Cookie[2];
cookies[0] = new Cookie(sessionKeyString, sessionKeyValue);
cookies[1] = new Cookie("JSESSIONID", sessionId + ".node0");
@@ -160,7 +159,7 @@ public void validateSessionKeyTest() {
assertTrue(HttpUtils.validateSessionKey(session, params, cookies, sessionKeyString, HttpUtils.ApiSessionKeyCheckOption.CookieOrParameter));
// param not null, cookies null test (JSESSIONID is not null amd matches)
- params = new HashMap();
+ params = new HashMap<>();
cookies = new Cookie[1];
cookies[0] = new Cookie("JSESSIONID", sessionId + ".node0");
params.put(sessionKeyString, new String[]{"incorrectValue"});