This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch ghi11438-errorprone-fixes
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 43162bfce8aa279d59d0e39cdc6cf59c45790761
Author: Pearl Dsilva <[email protected]>
AuthorDate: Tue Jan 13 16:06:57 2026 -0500

    Error Prone integration - Added error prone to the build
---
 .../java/com/cloud/agent/mockvm/MockVmMgr.java     |  2 +-
 .../admin/backup/UpdateBackupOfferingCmd.java      |  2 +-
 .../facade/AbstractConfigItemFacade.java           |  2 +-
 .../com/cloud/network/HAProxyConfigurator.java     |  2 +-
 .../java/com/cloud/resource/RequestWrapper.java    |  2 +-
 .../directdownload/DirectDownloadCommand.java      |  1 -
 .../java/com/cloud/agent/manager/AgentAttache.java |  6 ++
 .../cloud/agent/manager/DirectAgentAttache.java    |  6 ++
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |  2 +-
 .../engine/orchestration/NetworkOrchestrator.java  |  2 +-
 .../com/cloud/offerings/NetworkOfferingVO.java     |  2 +-
 .../upgrade/SystemVmTemplateRegistration.java      | 59 ++++++++--------
 .../cloud/upgrade/dao/DatabaseAccessObject.java    |  2 +-
 .../com/cloud/upgrade/dao/Upgrade41500to41510.java | 79 ++++++++++------------
 .../vmsnapshot/ScaleIOVMSnapshotStrategy.java      |  2 +-
 .../storage/endpoint/DefaultEndPointSelector.java  |  8 +--
 .../framework/serializer/OnwireClassRegistry.java  |  2 +-
 .../cloudstack/ca/provider/RootCAProvider.java     |  2 +-
 .../main/java/com/cloud/ha/HypervInvestigator.java |  2 +-
 .../kvm/resource/LibvirtComputingResource.java     |  6 +-
 .../kvm/storage/KVMStorageProcessor.java           |  4 +-
 .../kvm/storage/MultipathSCSIAdapterBase.java      | 12 ++--
 .../java/com/cloud/hypervisor/XenServerGuru.java   |  5 +-
 .../driver/redfish/RedfishWrapper.java             |  2 +-
 .../datastore/util/NexentaStorAppliance.java       | 16 +++++
 .../driver/StorPoolPrimaryDataStoreDriver.java     |  2 +-
 .../storage/motion/StorPoolDataMotionStrategy.java |  2 +-
 .../cloudstack/ldap/ADLdapUserManagerImpl.java     |  1 +
 .../cloudstack/ldap/OpenLdapUserManagerImpl.java   |  7 +-
 pom.xml                                            | 17 ++++-
 .../java/com/cloud/api/doc/ApiXmlDocWriter.java    |  2 +-
 .../src/main/java/com/cloud/api/doc/Argument.java  | 12 ++--
 .../cloud/api/query/dao/TemplateJoinDaoImpl.java   |  3 +-
 .../configuration/ConfigurationManagerImpl.java    |  2 +-
 .../com/cloud/ha/HighAvailabilityManagerImpl.java  |  2 +-
 .../com/cloud/network/IpAddressManagerImpl.java    |  2 +-
 .../com/cloud/server/ManagementServerImpl.java     |  2 +-
 .../com/cloud/storage/VolumeApiServiceImpl.java    |  2 +-
 .../main/java/com/cloud/vm/UserVmManagerImpl.java  |  4 +-
 .../cloudstack/network/RoutedIpv4ManagerImpl.java  |  8 +--
 .../gslb/GlobalLoadBalancingRulesServiceImpl.java  |  2 +-
 .../rdpclient/ntlmssp/ServerNtlmsspChallenge.java  |  5 +-
 .../src/main/java/streamer/ByteBuffer.java         |  2 +-
 43 files changed, 165 insertions(+), 142 deletions(-)

diff --git a/agent/src/main/java/com/cloud/agent/mockvm/MockVmMgr.java 
b/agent/src/main/java/com/cloud/agent/mockvm/MockVmMgr.java
index 54fdde3d3d2..d97207c9f30 100644
--- a/agent/src/main/java/com/cloud/agent/mockvm/MockVmMgr.java
+++ b/agent/src/main/java/com/cloud/agent/mockvm/MockVmMgr.java
@@ -249,7 +249,7 @@ public class MockVmMgr implements VmMgr {
     public MockVm createVmFromSpec(VirtualMachineTO vmSpec) {
         String vmName = vmSpec.getName();
         long ramSize = vmSpec.getMinRam();
-        int utilizationPercent = randSeed.nextInt() % 100;
+        int utilizationPercent = randSeed.nextInt(100);
         MockVm vm = null;
 
         synchronized (this) {
diff --git 
a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/UpdateBackupOfferingCmd.java
 
b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/UpdateBackupOfferingCmd.java
index 9de06715ee7..9657722a208 100644
--- 
a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/UpdateBackupOfferingCmd.java
+++ 
b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/UpdateBackupOfferingCmd.java
@@ -83,7 +83,7 @@ public class UpdateBackupOfferingCmd extends BaseCmd {
     public void execute() {
         try {
             if (StringUtils.isAllEmpty(getName(), getDescription()) && 
getAllowUserDrivenBackups() == null) {
-                throw new InvalidParameterValueException(String.format("Can't 
update Backup Offering [id: %s] because there are no parameters to be updated, 
at least one of the",
+                throw new InvalidParameterValueException(String.format("Can't 
update Backup Offering [id: %s] because there are no parameters to be updated, 
at least one of the " +
                         "following should be informed: name, description or 
allowUserDrivenBackups.", id));
             }
 
diff --git 
a/core/src/main/java/com/cloud/agent/resource/virtualnetwork/facade/AbstractConfigItemFacade.java
 
b/core/src/main/java/com/cloud/agent/resource/virtualnetwork/facade/AbstractConfigItemFacade.java
index 83dfa2a62ca..64034e444ea 100644
--- 
a/core/src/main/java/com/cloud/agent/resource/virtualnetwork/facade/AbstractConfigItemFacade.java
+++ 
b/core/src/main/java/com/cloud/agent/resource/virtualnetwork/facade/AbstractConfigItemFacade.java
@@ -106,7 +106,7 @@ public abstract class AbstractConfigItemFacade {
 
     public static AbstractConfigItemFacade getInstance(final Class<? extends 
NetworkElementCommand> key) {
         if (!flyweight.containsKey(key)) {
-            throw new CloudRuntimeException("Unable to process the 
configuration for " + key.getClass().getName());
+            throw new CloudRuntimeException("Unable to process the 
configuration for " + key.getName());
         }
 
         final AbstractConfigItemFacade instance = flyweight.get(key);
diff --git a/core/src/main/java/com/cloud/network/HAProxyConfigurator.java 
b/core/src/main/java/com/cloud/network/HAProxyConfigurator.java
index e4b0a7ffff4..6e00e7cdc96 100644
--- a/core/src/main/java/com/cloud/network/HAProxyConfigurator.java
+++ b/core/src/main/java/com/cloud/network/HAProxyConfigurator.java
@@ -514,7 +514,7 @@ public class HAProxyConfigurator implements 
LoadBalancerConfigurator {
             }
             dstSubRule.add(sb.toString());
             if (stickinessSubRule != null) {
-                sb.append(" cookie ").append(dest.getDestIp().replace(".", 
"_")).append('-').append(dest.getDestPort()).toString();
+                sb.append(" cookie ").append(dest.getDestIp().replace(".", 
"_")).append('-').append(dest.getDestPort());
                 dstWithCookieSubRule.add(sb.toString());
             }
             destsAvailable = true;
diff --git a/core/src/main/java/com/cloud/resource/RequestWrapper.java 
b/core/src/main/java/com/cloud/resource/RequestWrapper.java
index 54d8b289c8d..3c375195239 100644
--- a/core/src/main/java/com/cloud/resource/RequestWrapper.java
+++ b/core/src/main/java/com/cloud/resource/RequestWrapper.java
@@ -86,7 +86,7 @@ public abstract class RequestWrapper {
 
                 keepCommandClass = commandClass2;
             } catch (final ClassCastException e) {
-                throw new CommandNotSupported("No key found for '" + 
keepCommandClass.getClass() + "' in the Map!");
+                throw new CommandNotSupported("No key found for '" + 
keepCommandClass + "' in the Map!");
             } catch (final NullPointerException e) {
                 // Will now traverse all the resource hierarchy. Returning null
                 // is not a problem.
diff --git 
a/core/src/main/java/org/apache/cloudstack/agent/directdownload/DirectDownloadCommand.java
 
b/core/src/main/java/org/apache/cloudstack/agent/directdownload/DirectDownloadCommand.java
index b6748dca434..c3ee2599393 100644
--- 
a/core/src/main/java/org/apache/cloudstack/agent/directdownload/DirectDownloadCommand.java
+++ 
b/core/src/main/java/org/apache/cloudstack/agent/directdownload/DirectDownloadCommand.java
@@ -52,7 +52,6 @@ public abstract class DirectDownloadCommand extends 
StorageSubSystemCommand {
              final Integer soTimeout, final Integer connectionRequestTimeout, 
final boolean followRedirects) {
         this.url = url;
         this.templateId = templateId;
-        this.destData = destData;
         this.destPool = destPool;
         this.checksum = checksum;
         this.headers = headers;
diff --git 
a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentAttache.java 
b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentAttache.java
index 30a58d405c9..5ae451a9945 100644
--- 
a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentAttache.java
+++ 
b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentAttache.java
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -497,6 +498,11 @@ public abstract class AgentAttache {
      */
     protected abstract boolean isClosed();
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(logger, _id, _uuid, _name, _waitForList, 
_requests, _currentSequence, _status, _maintenance, _nextSequence, _agentMgr);
+    }
+
     protected class Alarm extends ManagedContextRunnable {
         long _seq;
 
diff --git 
a/engine/orchestration/src/main/java/com/cloud/agent/manager/DirectAgentAttache.java
 
b/engine/orchestration/src/main/java/com/cloud/agent/manager/DirectAgentAttache.java
index 07d5bf80393..af958f48366 100644
--- 
a/engine/orchestration/src/main/java/com/cloud/agent/manager/DirectAgentAttache.java
+++ 
b/engine/orchestration/src/main/java/com/cloud/agent/manager/DirectAgentAttache.java
@@ -19,6 +19,7 @@ package com.cloud.agent.manager;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -148,6 +149,11 @@ public class DirectAgentAttache extends AgentAttache {
         }
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(super.hashCode(), _HostPingRetryCount, 
_HostPingRetryTimer, _resource, _futures, _seq, tasks, _outstandingTaskCount, 
_outstandingCronTaskCount);
+    }
+
     protected class PingTask extends ManagedContextRunnable {
         @Override
         protected synchronized void runInContext() {
diff --git 
a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
 
b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
index c0976fe137e..77eb695ed58 100755
--- 
a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
+++ 
b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -1730,7 +1730,7 @@ public class VirtualMachineManagerImpl extends 
ManagerBase implements VirtualMac
         } catch (final OperationTimedoutException e) {
             throw new AgentUnavailableException(String.format("Unable to stop 
vm [%s] because the operation to stop timed out", vmUuid), e.getAgentId(), e);
         } catch (final ConcurrentOperationException e) {
-            throw new CloudRuntimeException(String.format("Unable to stop vm 
because of a concurrent operation", vmUuid), e);
+            throw new CloudRuntimeException(String.format("Unable to stop vm: 
%s because of a concurrent operation", vmUuid), e);
         }
 
     }
diff --git 
a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
 
b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index d19a4f1d4a0..5aad4892b0f 100644
--- 
a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
+++ 
b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
@@ -1737,7 +1737,7 @@ public class NetworkOrchestrator extends ManagerBase 
implements NetworkOrchestra
         final List<FirewallRuleVO> firewallEgressRulesToApply = 
_firewallDao.listByNetworkPurposeTrafficType(networkId, Purpose.Firewall, 
FirewallRule.TrafficType.Egress);
         final NetworkOfferingVO offering = 
_networkOfferingDao.findById(network.getNetworkOfferingId());
         final DataCenter zone = _dcDao.findById(network.getDataCenterId());
-        if (_networkModel.areServicesSupportedInNetwork(network.getId(), 
Service.Firewall) && 
_networkModel.areServicesSupportedInNetwork(network.getId(), Service.Firewall)
+        if (_networkModel.areServicesSupportedInNetwork(network.getId(), 
Service.Firewall)
                 && (network.getGuestType() == Network.GuestType.Isolated || 
network.getGuestType() == Network.GuestType.Shared && zone.getNetworkType() == 
NetworkType.Advanced)) {
             // add default egress rule to accept the traffic
             _firewallMgr.applyDefaultEgressFirewallRule(network.getId(), 
offering.isEgressDefaultPolicy(), true);
diff --git 
a/engine/schema/src/main/java/com/cloud/offerings/NetworkOfferingVO.java 
b/engine/schema/src/main/java/com/cloud/offerings/NetworkOfferingVO.java
index 5cad366945f..db267635ce6 100644
--- a/engine/schema/src/main/java/com/cloud/offerings/NetworkOfferingVO.java
+++ b/engine/schema/src/main/java/com/cloud/offerings/NetworkOfferingVO.java
@@ -460,7 +460,7 @@ public class NetworkOfferingVO implements NetworkOffering {
             true,
             Availability.Optional,
             null,
-            Network.GuestType.Isolated,
+            guestType,
             true,
             false,
             false,
diff --git 
a/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
 
b/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
index a6aecf477f7..cabe16bfdc5 100644
--- 
a/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
+++ 
b/engine/schema/src/main/java/com/cloud/upgrade/SystemVmTemplateRegistration.java
@@ -324,38 +324,33 @@ public class SystemVmTemplateRegistration {
 
     public static final Map<String, MetadataTemplateDetails> NewTemplateMap = 
new HashMap<>();
 
-    public static final Map<Hypervisor.HypervisorType, String> 
RouterTemplateConfigurationNames = new HashMap<>() {
-        {
-            put(Hypervisor.HypervisorType.KVM, "router.template.kvm");
-            put(Hypervisor.HypervisorType.VMware, "router.template.vmware");
-            put(Hypervisor.HypervisorType.XenServer, 
"router.template.xenserver");
-            put(Hypervisor.HypervisorType.Hyperv, "router.template.hyperv");
-            put(Hypervisor.HypervisorType.LXC, "router.template.lxc");
-            put(Hypervisor.HypervisorType.Ovm3, "router.template.ovm3");
-        }
-    };
-
-    public static Map<Hypervisor.HypervisorType, Integer> hypervisorGuestOsMap 
= new HashMap<>() {
-        {
-            put(Hypervisor.HypervisorType.KVM, LINUX_12_ID);
-            put(Hypervisor.HypervisorType.XenServer, OTHER_LINUX_ID);
-            put(Hypervisor.HypervisorType.VMware, OTHER_LINUX_ID);
-            put(Hypervisor.HypervisorType.Hyperv, LINUX_12_ID);
-            put(Hypervisor.HypervisorType.LXC, LINUX_12_ID);
-            put(Hypervisor.HypervisorType.Ovm3, LINUX_12_ID);
-        }
-    };
-
-    public static final Map<Hypervisor.HypervisorType, ImageFormat> 
hypervisorImageFormat = new HashMap<Hypervisor.HypervisorType, ImageFormat>() {
-        {
-            put(Hypervisor.HypervisorType.KVM, ImageFormat.QCOW2);
-            put(Hypervisor.HypervisorType.XenServer, ImageFormat.VHD);
-            put(Hypervisor.HypervisorType.VMware, ImageFormat.OVA);
-            put(Hypervisor.HypervisorType.Hyperv, ImageFormat.VHD);
-            put(Hypervisor.HypervisorType.LXC, ImageFormat.QCOW2);
-            put(Hypervisor.HypervisorType.Ovm3, ImageFormat.RAW);
-        }
-    };
+    public static final Map<Hypervisor.HypervisorType, String> 
RouterTemplateConfigurationNames = Map.of(
+            Hypervisor.HypervisorType.KVM, "router.template.kvm",
+            Hypervisor.HypervisorType.VMware, "router.template.vmware",
+            Hypervisor.HypervisorType.XenServer, "router.template.xenserver",
+            Hypervisor.HypervisorType.Hyperv, "router.template.hyperv",
+            Hypervisor.HypervisorType.LXC, "router.template.lxc",
+            Hypervisor.HypervisorType.Ovm3, "router.template.ovm3"
+    );
+
+    public static Map<Hypervisor.HypervisorType, Integer> hypervisorGuestOsMap 
= new HashMap<>();
+    static {
+        hypervisorGuestOsMap.put(Hypervisor.HypervisorType.KVM, LINUX_12_ID);
+        hypervisorGuestOsMap.put(Hypervisor.HypervisorType.XenServer, 
OTHER_LINUX_ID);
+        hypervisorGuestOsMap.put(Hypervisor.HypervisorType.VMware, 
OTHER_LINUX_ID);
+        hypervisorGuestOsMap.put(Hypervisor.HypervisorType.Hyperv, 
LINUX_12_ID);
+        hypervisorGuestOsMap.put(Hypervisor.HypervisorType.LXC, LINUX_12_ID);
+        hypervisorGuestOsMap.put(Hypervisor.HypervisorType.Ovm3, LINUX_12_ID);
+    }
+
+    public static final Map<Hypervisor.HypervisorType, ImageFormat> 
hypervisorImageFormat = Map.of(
+            Hypervisor.HypervisorType.KVM, ImageFormat.QCOW2,
+            Hypervisor.HypervisorType.XenServer, ImageFormat.VHD,
+            Hypervisor.HypervisorType.VMware, ImageFormat.OVA,
+            Hypervisor.HypervisorType.Hyperv, ImageFormat.VHD,
+            Hypervisor.HypervisorType.LXC, ImageFormat.QCOW2,
+            Hypervisor.HypervisorType.Ovm3, ImageFormat.RAW
+    );
 
     public boolean validateIfSeeded(TemplateDataStoreVO templDataStoreVO, 
String url, String path, String nfsVersion) {
         String filePath = null;
diff --git 
a/engine/schema/src/main/java/com/cloud/upgrade/dao/DatabaseAccessObject.java 
b/engine/schema/src/main/java/com/cloud/upgrade/dao/DatabaseAccessObject.java
index 0b973d195de..04fefe8b279 100644
--- 
a/engine/schema/src/main/java/com/cloud/upgrade/dao/DatabaseAccessObject.java
+++ 
b/engine/schema/src/main/java/com/cloud/upgrade/dao/DatabaseAccessObject.java
@@ -98,7 +98,7 @@ public class DatabaseAccessObject {
                 return true;
             }
         } catch (SQLException e) {
-            logger.debug(String.format("Index %s doesn't exist, ignoring 
exception:", indexName, e.getMessage()));
+            logger.debug(String.format("Index %s doesn't exist, ignoring 
exception:", indexName), e.getMessage());
         }
         return false;
     }
diff --git 
a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41500to41510.java 
b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41500to41510.java
index c7295414326..18d419d29f9 100644
--- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41500to41510.java
+++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41500to41510.java
@@ -22,7 +22,6 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -98,49 +97,41 @@ public class Upgrade41500to41510 extends 
DbUpgradeAbstractImpl implements DbUpgr
             throw new CloudRuntimeException("updateSystemVmTemplates:Exception 
while getting hypervisor types from clusters", e);
         }
 
-        final Map<Hypervisor.HypervisorType, String> NewTemplateNameList = new 
HashMap<Hypervisor.HypervisorType, String>() {
-            {
-                put(KVM, "systemvm-kvm-4.15.1");
-                put(VMware, "systemvm-vmware-4.15.1");
-                put(XenServer, "systemvm-xenserver-4.15.1");
-                put(Hyperv, "systemvm-hyperv-4.15.1");
-                put(LXC, "systemvm-lxc-4.15.1");
-                put(Ovm3, "systemvm-ovm3-4.15.1");
-            }
-        };
-
-        final Map<Hypervisor.HypervisorType, String> 
routerTemplateConfigurationNames = new HashMap<Hypervisor.HypervisorType, 
String>() {
-            {
-                put(KVM, "router.template.kvm");
-                put(VMware, "router.template.vmware");
-                put(XenServer, "router.template.xenserver");
-                put(Hyperv, "router.template.hyperv");
-                put(LXC, "router.template.lxc");
-                put(Ovm3, "router.template.ovm3");
-            }
-        };
-
-        final Map<Hypervisor.HypervisorType, String> newTemplateUrl = new 
HashMap<Hypervisor.HypervisorType, String>() {
-            {
-                put(KVM, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-kvm.qcow2.bz2";);
-                put(VMware, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-vmware.ova";);
-                put(XenServer, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-xen.vhd.bz2";);
-                put(Hyperv, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-hyperv.vhd.zip";);
-                put(LXC, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-kvm.qcow2.bz2";);
-                put(Ovm3, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-ovm.raw.bz2";);
-            }
-        };
-
-        final Map<Hypervisor.HypervisorType, String> newTemplateChecksum = new 
HashMap<Hypervisor.HypervisorType, String>() {
-            {
-                put(KVM, "0e9f9a7d0957c3e0a2088e41b2da2cec");
-                put(XenServer, "86373992740b1eca8aff8b08ebf3aea5");
-                put(VMware, "4006982765846d373eb3719b2fe4d720");
-                put(Hyperv, "0b9514e4b6cba1f636fea2125f0f7a5f");
-                put(LXC, "0e9f9a7d0957c3e0a2088e41b2da2cec");
-                put(Ovm3, "ae3977e696b3e6c81bdcbb792d514d29");
-            }
-        };
+        final Map<Hypervisor.HypervisorType, String> NewTemplateNameList = 
Map.of(
+            KVM, "systemvm-kvm-4.15.1",
+            VMware, "systemvm-vmware-4.15.1",
+            XenServer, "systemvm-xenserver-4.15.1",
+            Hyperv, "systemvm-hyperv-4.15.1",
+            LXC, "systemvm-lxc-4.15.1",
+            Ovm3, "systemvm-ovm3-4.15.1"
+        );
+
+        final Map<Hypervisor.HypervisorType, String> 
routerTemplateConfigurationNames = Map.of(
+            KVM, "router.template.kvm",
+            VMware, "router.template.vmware",
+            XenServer, "router.template.xenserver",
+            Hyperv, "router.template.hyperv",
+            LXC, "router.template.lxc",
+            Ovm3, "router.template.ovm3"
+        );
+
+        final Map<Hypervisor.HypervisorType, String> newTemplateUrl = Map.of(
+            KVM, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-kvm.qcow2.bz2";,
+            VMware, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-vmware.ova";,
+            XenServer, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-xen.vhd.bz2";,
+            Hyperv, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-hyperv.vhd.zip";,
+            LXC, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-kvm.qcow2.bz2";,
+            Ovm3, 
"https://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.1-ovm.raw.bz2";
+        );
+
+        final Map<Hypervisor.HypervisorType, String> newTemplateChecksum = 
Map.of(
+            KVM, "0e9f9a7d0957c3e0a2088e41b2da2cec",
+            XenServer, "86373992740b1eca8aff8b08ebf3aea5",
+            VMware, "4006982765846d373eb3719b2fe4d720",
+            Hyperv, "0b9514e4b6cba1f636fea2125f0f7a5f",
+            LXC, "0e9f9a7d0957c3e0a2088e41b2da2cec",
+            Ovm3, "ae3977e696b3e6c81bdcbb792d514d29"
+        );
 
         for (final Map.Entry<Hypervisor.HypervisorType, String> 
hypervisorAndTemplateName : NewTemplateNameList.entrySet()) {
             logger.debug("Updating " + hypervisorAndTemplateName.getKey() + " 
System Vms");
diff --git 
a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java
 
b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java
index 667d7ce1d86..98f9161da90 100644
--- 
a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java
+++ 
b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/ScaleIOVMSnapshotStrategy.java
@@ -139,7 +139,7 @@ public class ScaleIOVMSnapshotStrategy extends ManagerBase 
implements VMSnapshot
         for (VolumeObjectTO volumeTO : volumeTOs) {
             Long poolId = volumeTO.getPoolId();
             Storage.StoragePoolType poolType = 
vmSnapshotHelper.getStoragePoolType(poolId);
-            if (poolType != Storage.StoragePoolType.PowerFlex || 
volumeTO.getFormat() != ImageFormat.RAW || poolId != rootPoolId) {
+            if (poolType != Storage.StoragePoolType.PowerFlex || 
volumeTO.getFormat() != ImageFormat.RAW || !poolId.equals(rootPoolId)) {
                 return StrategyPriority.CANT_HANDLE;
             }
         }
diff --git 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java
 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java
index 7e9f65f43b3..40e0410da88 100644
--- 
a/engine/storage/src/main/java/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java
+++ 
b/engine/storage/src/main/java/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java
@@ -25,7 +25,6 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 
 import javax.inject.Inject;
@@ -198,12 +197,7 @@ public class DefaultEndPointSelector implements 
EndPointSelector {
                 Pair<List<DedicatedResourceVO>, Integer> hostIds = 
dedicatedResourceDao.searchDedicatedHosts(null, null, account.getId(), null, 
null);
                 List<DedicatedResourceVO> accountDedicatedHosts = 
hostIds.first();
                 for (DedicatedResourceVO accountDedicatedResource: 
accountDedicatedHosts){
-                    Iterator<Long> dedicatedHostsIterator = 
dedicatedHosts.iterator();
-                    while (dedicatedHostsIterator.hasNext()) {
-                        if (dedicatedHostsIterator.next() == 
accountDedicatedResource.getHostId()) {
-                            dedicatedHostsIterator.remove();
-                        }
-                    }
+                    dedicatedHosts.removeIf(hostId -> 
hostId.equals(accountDedicatedResource.getHostId()));
                 }
             }
         }
diff --git 
a/framework/ipc/src/main/java/org/apache/cloudstack/framework/serializer/OnwireClassRegistry.java
 
b/framework/ipc/src/main/java/org/apache/cloudstack/framework/serializer/OnwireClassRegistry.java
index 3cc643956e9..93f5e0f9b5c 100644
--- 
a/framework/ipc/src/main/java/org/apache/cloudstack/framework/serializer/OnwireClassRegistry.java
+++ 
b/framework/ipc/src/main/java/org/apache/cloudstack/framework/serializer/OnwireClassRegistry.java
@@ -55,7 +55,7 @@ public class OnwireClassRegistry {
     }
 
     public OnwireClassRegistry(List<String> packages) {
-        packages.addAll(packages);
+        this.packages.addAll(packages);
     }
 
     public List<String> getPackages() {
diff --git 
a/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
 
b/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
index 25c45ed2a10..395b637d4d4 100644
--- 
a/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
+++ 
b/plugins/ca/root-ca/src/main/java/org/apache/cloudstack/ca/provider/RootCAProvider.java
@@ -440,7 +440,7 @@ public final class RootCAProvider extends AdapterBase 
implements CAProvider, Con
     @Override
     public boolean start() {
         managementCertificateCustomSAN = 
CAManager.CertManagementCustomSubjectAlternativeName.value();
-        return loadRootCAKeyPair() && loadRootCAKeyPair() && 
loadManagementKeyStore();
+        return loadRootCAKeyPair() && loadManagementKeyStore();
     }
 
     @Override
diff --git 
a/plugins/hypervisors/hyperv/src/main/java/com/cloud/ha/HypervInvestigator.java 
b/plugins/hypervisors/hyperv/src/main/java/com/cloud/ha/HypervInvestigator.java
index 3d79b9efdd1..2666ca0c1f5 100644
--- 
a/plugins/hypervisors/hyperv/src/main/java/com/cloud/ha/HypervInvestigator.java
+++ 
b/plugins/hypervisors/hyperv/src/main/java/com/cloud/ha/HypervInvestigator.java
@@ -45,7 +45,7 @@ public class HypervInvestigator extends AdapterBase 
implements Investigator {
         if (status == null) {
             throw new UnknownVM();
         }
-        return status == Status.Up ? true : null;
+        return status == Status.Up;
     }
 
     @Override
diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index b66a838a3a5..1bbebfe3ee5 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -3882,12 +3882,12 @@ public class LibvirtComputingResource extends 
ServerResourceBase implements Serv
         LOGGER.info(String.format("Host uses control group [%s].", output));
 
         if (!CGROUP_V2.equals(output)) {
-            LOGGER.info(String.format("Setting host CPU max capacity to 0, as 
it uses cgroup v1.", getHostCpuMaxCapacity()));
+            LOGGER.info("Setting host CPU max capacity: {} to 0, as it uses 
cgroup v1.", getHostCpuMaxCapacity());
             setHostCpuMaxCapacity(0);
             return;
         }
 
-        LOGGER.info(String.format("Calculating the max shares of the host."));
+        LOGGER.info("Calculating the max shares of the host.");
         setHostCpuMaxCapacity(cpuCores * cpuSpeed.intValue());
         LOGGER.info(String.format("The max shares of the host is [%d].", 
getHostCpuMaxCapacity()));
     }
@@ -5302,7 +5302,7 @@ public class LibvirtComputingResource extends 
ServerResourceBase implements Serv
         }
         for (String snapshotName: snapshotNames) {
             if (LOGGER.isDebugEnabled()) {
-                LOGGER.debug(String.format("Cleaning snapshot [%s] of VM [%s] 
metadata.", snapshotNames, dm.getName()));
+                LOGGER.debug("Cleaning snapshot {} of VM {} metadata.", 
Arrays.toString(snapshotNames), dm.getName());
             }
             DomainSnapshot snapshot = dm.snapshotLookupByName(snapshotName);
             snapshot.delete(flags); // clean metadata of vm snapshot
diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
index 33bd41ee6ba..267dfb67cf3 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
@@ -794,7 +794,7 @@ public class KVMStorageProcessor implements 
StorageProcessor {
                 if (path == null) {
                     path = srcData.getPath();
                     if (path == null) {
-                        new CloudRuntimeException("The 'path' or 'iqn' field 
must be specified.");
+                       throw new CloudRuntimeException("The 'path' or 'iqn' 
field must be specified.");
                     }
                 }
             }
@@ -2261,7 +2261,7 @@ public class KVMStorageProcessor implements 
StorageProcessor {
             if (path == null) {
                 path = details != null ? details.get(DiskTO.IQN) : null;
                 if (path == null) {
-                    new CloudRuntimeException("The 'path' or 'iqn' field must 
be specified.");
+                   throw new CloudRuntimeException("The 'path' or 'iqn' field 
must be specified.");
                 }
             }
         }
diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java
index 7ba29ffc26e..a64390407db 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/MultipathSCSIAdapterBase.java
@@ -228,21 +228,21 @@ public abstract class MultipathSCSIAdapterBase implements 
StorageAdaptor {
 
     @Override
     public boolean disconnectPhysicalDisk(String volumePath, KVMStoragePool 
pool) {
-        if (LOGGER.isDebugEnabled()) 
LOGGER.debug(String.format("disconnectPhysicalDisk(volumePath,pool) called with 
args (%s, %s) START", volumePath, pool.getUuid()));
+        if (LOGGER.isDebugEnabled()) 
LOGGER.debug("disconnectPhysicalDisk(volumePath,pool) called with args ({}, {}) 
START", volumePath, pool.getUuid());
         AddressInfo address = this.parseAndValidatePath(volumePath);
         if (address.getAddress() == null) {
-            if (LOGGER.isDebugEnabled()) 
LOGGER.debug(String.format("disconnectPhysicalDisk(volumePath,pool) returning 
FALSE, volume path has no address field", volumePath, pool.getUuid()));
+            if (LOGGER.isDebugEnabled()) 
LOGGER.debug("disconnectPhysicalDisk(volumePath,pool) called with args ({}, {}) 
returning FALSE, volume path has no address field", volumePath, pool.getUuid());
             return false;
         }
         ScriptResult result = runScript(disconnectScript, 60000L, 
address.getAddress().toLowerCase());
 
         if (result.getExitCode() != 0) {
-            LOGGER.warn(String.format("Disconnect failed for path [%s] with 
return code [%s]", address.getAddress().toLowerCase(), result.getExitCode()));
+            LOGGER.warn("Disconnect failed for path {} with return code {}", 
address.getAddress().toLowerCase(), result.getExitCode());
         }
 
         if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("multipath flush output: " + result.getResult());
-            
LOGGER.debug(String.format("disconnectPhysicalDisk(volumePath,pool) called with 
args (%s, %s) COMPLETE [rc=%s]", volumePath, pool.getUuid(), 
result.getResult()));
+            LOGGER.debug("multipath flush output: {}", result.getResult());
+            LOGGER.debug("disconnectPhysicalDisk(volumePath,pool) called with 
args ({}, {}) COMPLETE [rc={}]", volumePath, pool.getUuid(), 
result.getResult());
         }
 
         return (result.getExitCode() == 0);
@@ -250,7 +250,7 @@ public abstract class MultipathSCSIAdapterBase implements 
StorageAdaptor {
 
     @Override
     public boolean disconnectPhysicalDisk(Map<String, String> 
volumeToDisconnect) {
-        LOGGER.debug(String.format("disconnectPhysicalDisk(volumeToDisconnect) 
called with arg bag [not implemented]:") + " " + volumeToDisconnect);
+        LOGGER.debug("disconnectPhysicalDisk(volumeToDisconnect) called with 
arg bag [not implemented]: {}", volumeToDisconnect);
         return false;
     }
 
diff --git 
a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java
 
b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java
index 6f1b600dc66..5e04e38a587 100644
--- 
a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java
+++ 
b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java
@@ -181,10 +181,9 @@ public class XenServerGuru extends HypervisorGuruBase 
implements HypervisorGuru,
             logger.debug("We are returning the default host to execute 
commands because the target hypervisor of the source data is not XenServer.");
             return defaultHostToExecuteCommands;
         }
-        // only now can we decide, now we now we're only deciding for ourselves
         if (cmd instanceof StorageSubSystemCommand) {
             if (logger.isTraceEnabled()) {
-                logger.trace(String.format("XenServer StrorageSubSystemCommand 
re always executed in sequence (command of type %s to host %l).", 
cmd.getClass(), hostId));
+                logger.trace(String.format("XenServer StrorageSubSystemCommand 
is always executed in sequence (command of type %s to host %s).", 
cmd.getClass(), hostId));
             }
             StorageSubSystemCommand c = (StorageSubSystemCommand)cmd;
             c.setExecuteInSequence(true);
@@ -223,7 +222,7 @@ public class XenServerGuru extends HypervisorGuruBase 
implements HypervisorGuru,
             return defaultHostToExecuteCommands;
         }
         logger.debug(String.format("We are changing the hostId to executed 
command from %d to %d.", hostId, hostCandidateToExecutedCommand.getId()));
-        return new Pair<Boolean, Long>(Boolean.TRUE, new 
Long(hostCandidateToExecutedCommand.getId()));
+        return new Pair<>(Boolean.TRUE, 
hostCandidateToExecutedCommand.getId());
     }
 
     @Override
diff --git 
a/plugins/outofbandmanagement-drivers/redfish/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/redfish/RedfishWrapper.java
 
b/plugins/outofbandmanagement-drivers/redfish/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/redfish/RedfishWrapper.java
index 09cee3b21ae..73a7ec6e263 100644
--- 
a/plugins/outofbandmanagement-drivers/redfish/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/redfish/RedfishWrapper.java
+++ 
b/plugins/outofbandmanagement-drivers/redfish/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/redfish/RedfishWrapper.java
@@ -39,7 +39,7 @@ public class RedfishWrapper {
         case SOFT:
             return RedfishClient.RedfishResetCmd.GracefulShutdown;
         case STATUS:
-            throw new IllegalStateException(String.format("%s is not a valid 
Redfish Reset command [%s]", operation));
+            throw new IllegalStateException(String.format("%s is not a valid 
Redfish Reset command", operation));
         default:
             throw new IllegalStateException(String.format("Redfish does not 
support operation [%s]", operation));
         }
diff --git 
a/plugins/storage/volume/nexenta/src/main/java/org/apache/cloudstack/storage/datastore/util/NexentaStorAppliance.java
 
b/plugins/storage/volume/nexenta/src/main/java/org/apache/cloudstack/storage/datastore/util/NexentaStorAppliance.java
index 8c22908c64d..65dc50a9efe 100644
--- 
a/plugins/storage/volume/nexenta/src/main/java/org/apache/cloudstack/storage/datastore/util/NexentaStorAppliance.java
+++ 
b/plugins/storage/volume/nexenta/src/main/java/org/apache/cloudstack/storage/datastore/util/NexentaStorAppliance.java
@@ -20,6 +20,7 @@ package org.apache.cloudstack.storage.datastore.util;
 
 import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.Objects;
 
 import 
org.apache.cloudstack.storage.datastore.util.NexentaNmsClient.NmsResponse;
 import org.apache.logging.log4j.Logger;
@@ -132,6 +133,11 @@ public class NexentaStorAppliance {
         public boolean equals(Object other) {
             return other instanceof CreateIscsiTargetRequestParams && 
targetName.equals(((CreateIscsiTargetRequestParams) other).targetName);
         }
+
+        @Override
+        public int hashCode() {
+            return Objects.hashCode(targetName);
+        }
     }
 
     /**
@@ -248,6 +254,11 @@ public class NexentaStorAppliance {
         public boolean equals(Object other) {
             return other instanceof LuParams;
         }
+
+        @Override
+        public int hashCode() {
+            return 1;
+        }
     }
 
     /**
@@ -309,6 +320,11 @@ public class NexentaStorAppliance {
             }
             return false;
         }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(targetGroup, lun, zvol, hostGroup, 
entryNumber);
+        }
     }
 
     @SuppressWarnings("unused")
diff --git 
a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java
 
b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java
index 6ca67cb5923..ba9a4d97600 100644
--- 
a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java
+++ 
b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java
@@ -399,7 +399,7 @@ public class StorPoolPrimaryDataStoreDriver implements 
PrimaryDataStoreDriver {
     private String resizeVolume(DataObject data, String path, VolumeObject 
vol) {
         String err = null;
         ResizeVolumePayload payload = (ResizeVolumePayload)vol.getpayload();
-        boolean needResize = vol.getSize() != payload.newSize;
+        boolean needResize = !vol.getSize().equals(payload.newSize);
 
         final String name = StorPoolStorageAdaptor.getVolumeNameFromPath(path, 
true);
         final long oldSize = vol.getSize();
diff --git 
a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/motion/StorPoolDataMotionStrategy.java
 
b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/motion/StorPoolDataMotionStrategy.java
index 5a4802ab264..7f7f4a074dd 100644
--- 
a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/motion/StorPoolDataMotionStrategy.java
+++ 
b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/motion/StorPoolDataMotionStrategy.java
@@ -221,7 +221,7 @@ public class StorPoolDataMotionStrategy implements 
DataMotionStrategy {
                     if (answer != null && answer.getResult()) {
                         SpApiResponse resSnapshot = 
StorPoolUtil.volumeSnapshot(volumeName, template.getUuid(), null, "template", 
null, conn);
                         if (resSnapshot.getError() != null) {
-                            logger.debug(String.format("Could not snapshot 
volume with ID={}", snapshot.getId()));
+                            logger.debug("Could not snapshot volume with 
ID={}", snapshot.getId());
                             StorPoolUtil.spLog("VolumeSnapshot failed with 
error=%s", resSnapshot.getError().getDescr());
                             err = resSnapshot.getError().getDescr();
                         } else {
diff --git 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/ADLdapUserManagerImpl.java
 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/ADLdapUserManagerImpl.java
index e96606dca2f..d2b23b33639 100644
--- 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/ADLdapUserManagerImpl.java
+++ 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/ADLdapUserManagerImpl.java
@@ -34,6 +34,7 @@ public class ADLdapUserManagerImpl extends 
OpenLdapUserManagerImpl implements Ld
     private static final String MICROSOFT_AD_MEMBERS_FILTER = "memberOf";
 
     @Override
+    @SuppressWarnings("BanJNDI")
     public List<LdapUser> getUsersInGroup(String groupName, LdapContext 
context, Long domainId) throws NamingException {
         if (StringUtils.isBlank(groupName)) {
             throw new IllegalArgumentException("ldap group name cannot be 
blank");
diff --git 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
index d0b6bc4bd34..98d3be2f10c 100644
--- 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
+++ 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
@@ -135,8 +135,7 @@ public class OpenLdapUserManagerImpl implements 
LdapUserManager {
         final StringBuilder memberOfFilter = new StringBuilder();
         if (null != group) {
             if(logger.isDebugEnabled()) {
-                logger.debug("adding search filter for '" + group +
-                "', using '" + memberOfAttribute + "'");
+                logger.debug("adding search filter for '{}', using '{}'", 
group, memberOfAttribute);
             }
             memberOfFilter.append("(" + memberOfAttribute + "=");
             memberOfFilter.append(group);
@@ -235,6 +234,7 @@ public class OpenLdapUserManagerImpl implements 
LdapUserManager {
     }
 
     @Override
+    @SuppressWarnings("BanJNDI")
     public List<LdapUser> getUsersInGroup(String groupName, LdapContext 
context, Long domainId) throws NamingException {
         String attributeName = 
_ldapConfiguration.getGroupUniqueMemberAttribute(domainId);
         final SearchControls controls = new SearchControls();
@@ -264,6 +264,7 @@ public class OpenLdapUserManagerImpl implements 
LdapUserManager {
         return users;
     }
 
+    @SuppressWarnings("BanJNDI")
     private LdapUser getUserForDn(String userdn, LdapContext context, Long 
domainId) throws NamingException {
         final SearchControls controls = new SearchControls();
         controls.setSearchScope(_ldapConfiguration.getScope());
@@ -286,6 +287,7 @@ public class OpenLdapUserManagerImpl implements 
LdapUserManager {
         return false;
     }
 
+    @SuppressWarnings("BanJNDI")
     public LdapUser searchUser(final String basedn, final String searchString, 
final LdapContext context, Long domainId) throws NamingException, IOException {
         final SearchControls searchControls = new SearchControls();
 
@@ -310,6 +312,7 @@ public class OpenLdapUserManagerImpl implements 
LdapUserManager {
     }
 
     @Override
+    @SuppressWarnings("BanJNDI")
     public List<LdapUser> searchUsers(final String username, final LdapContext 
context, Long domainId) throws NamingException, IOException {
 
         final SearchControls searchControls = new SearchControls();
diff --git a/pom.xml b/pom.xml
index 6985108302d..10db9136518 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,6 +80,7 @@
         <cs.surefire-plugin.version>2.22.2</cs.surefire-plugin.version>
         <cs.clover-maven-plugin.version>4.4.1</cs.clover-maven-plugin.version>
         <cs.exec-maven-plugin.version>3.2.0</cs.exec-maven-plugin.version>
+        <cs.errorprone.version>2.24.1</cs.errorprone.version>
 
         <!-- Logging versions -->
         <cs.log4j.version>2.19.0</cs.log4j.version>
@@ -1094,15 +1095,25 @@
                     <configuration>
                         <source>${cs.jdk.version}</source>
                         <target>${cs.jdk.version}</target>
-                        <fork>true</fork>
-                        <meminitial>128m</meminitial>
-                        <maxmem>512m</maxmem>
+                        <encoding>UTF-8</encoding>
                         <compilerArgs>
                             <arg>-XDignore.symbol.file=true</arg>
                             
<arg>--add-opens=java.base/java.lang=ALL-UNNAMED</arg>
                             
<arg>--add-exports=java.base/sun.security.x509=ALL-UNNAMED</arg>
                             
<arg>--add-exports=java.base/sun.security.provider=ALL-UNNAMED</arg>
+                            <arg>-XDcompilePolicy=simple</arg>
+                            <arg>-Xplugin:ErrorProne</arg>
                         </compilerArgs>
+                        <annotationProcessorPaths>
+                            <path>
+                                <groupId>com.google.errorprone</groupId>
+                                <artifactId>error_prone_core</artifactId>
+                                <version>${cs.errorprone.version}</version>
+                            </path>
+                        </annotationProcessorPaths>
+                        <fork>true</fork>
+                        <meminitial>128m</meminitial>
+                        <maxmem>512m</maxmem>
                     </configuration>
                 </plugin>
                 <plugin>
diff --git a/server/src/main/java/com/cloud/api/doc/ApiXmlDocWriter.java 
b/server/src/main/java/com/cloud/api/doc/ApiXmlDocWriter.java
index 5de5cd03fe1..b1bb316471b 100644
--- a/server/src/main/java/com/cloud/api/doc/ApiXmlDocWriter.java
+++ b/server/src/main/java/com/cloud/api/doc/ApiXmlDocWriter.java
@@ -411,7 +411,7 @@ public class ApiXmlDocWriter {
         xs.alias("alert", Alert.class);
         try(ObjectOutputStream out = xs.createObjectOutputStream(new 
FileWriter(dirName + "/alert_types.xml"), "alerts");) {
             for (Field f : AlertManager.class.getFields()) {
-                if (f.getClass().isAssignableFrom(Number.class)) {
+                if (Number.class.isAssignableFrom(f.getType())) {
                     String name = f.getName().substring(11);
                     Alert alert = new Alert(name, f.getInt(null));
                     out.writeObject(alert);
diff --git a/server/src/main/java/com/cloud/api/doc/Argument.java 
b/server/src/main/java/com/cloud/api/doc/Argument.java
index 141f7e6fa54..bfab730002a 100644
--- a/server/src/main/java/com/cloud/api/doc/Argument.java
+++ b/server/src/main/java/com/cloud/api/doc/Argument.java
@@ -19,7 +19,7 @@ package com.cloud.api.doc;
 import java.io.Serializable;
 import java.util.List;
 
-public class Argument implements Comparable<Object>, Serializable {
+public class Argument implements Comparable<Argument>, Serializable {
     private static final long serialVersionUID = 2L;
     private String name;
     private String description;
@@ -101,11 +101,11 @@ public class Argument implements Comparable<Object>, 
Serializable {
     }
 
     @Override
-    public int compareTo(Object anotherAgrument) throws ClassCastException {
-        if (!(anotherAgrument instanceof Argument))
-            throw new ClassCastException("An Argument object expected.");
-        Argument argument = (Argument)anotherAgrument;
-        return this.getName().compareToIgnoreCase(argument.getName());
+    public int compareTo(Argument anotherArgument) {
+        if (anotherArgument == null) {
+            throw new NullPointerException("Cannot compare to null Argument");
+        }
+        return this.getName().compareToIgnoreCase(anotherArgument.getName());
     }
 
     public boolean hasArguments() {
diff --git 
a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java 
b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
index 05c024e8f9b..e7da4a2163b 100644
--- a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
@@ -39,6 +39,7 @@ import com.cloud.storage.VnfTemplateNicVO;
 import com.cloud.storage.dao.VnfTemplateDetailsDao;
 import com.cloud.storage.dao.VnfTemplateNicDao;
 import com.cloud.user.dao.UserDataDao;
+import com.google.common.primitives.Ints;
 import org.apache.cloudstack.annotation.AnnotationService;
 import org.apache.cloudstack.annotation.dao.AnnotationDao;
 import org.apache.cloudstack.api.ApiConstants;
@@ -340,7 +341,7 @@ public class TemplateJoinDaoImpl extends 
GenericDaoBaseWithTagInformation<Templa
                     ChildTemplateResponse childTempl = new 
ChildTemplateResponse();
                     childTempl.setId(tmpl.getUuid());
                     childTempl.setName(tmpl.getName());
-                    childTempl.setSize(Math.round(tmpl.getSize() / (1024 * 
1024 * 1024)));
+                    childTempl.setSize(Ints.saturatedCast(tmpl.getSize() / 
(1024 * 1024 * 1024)));
                     childTemplatesSet.add(childTempl);
                 }
             }
diff --git 
a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java 
b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
index 62b3c23d27e..e662d154f65 100644
--- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -5391,7 +5391,7 @@ public class ConfigurationManagerImpl extends ManagerBase 
implements Configurati
         }
 
         final Boolean isRangeForSystemVM = checkIfVlanRangeIsForSystemVM(id);
-        if (forSystemVms != null && isRangeForSystemVM != forSystemVms) {
+        if (forSystemVms != null && !isRangeForSystemVM.equals(forSystemVms)) {
             if (VlanType.DirectAttached.equals(vlanRange.getVlanType())) {
                 throw new InvalidParameterValueException("forSystemVms is not 
available for this IP range with vlan type: " + VlanType.DirectAttached);
             }
diff --git a/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java 
b/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
index b0f3e6d8d69..daf1e0faa03 100644
--- a/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
+++ b/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
@@ -1041,7 +1041,7 @@ public class HighAvailabilityManagerImpl extends 
ManagerBase implements Configur
         try {
             if (vm != null && !VmHaEnabled.valueIn(vm.getDataCenterId())) {
                 if (logger.isDebugEnabled()) {
-                    logger.debug(String.format("VM high availability manager 
is disabled, rescheduling the HA work %s, for the VM %s (id) to retry later in 
case VM high availability manager is enabled on retry attempt", work, 
vm.getName(), vm.getId()));
+                    logger.debug("VM high availability manager is disabled, 
rescheduling the HA work {}, for the VM {} (id: {}) to retry later in case VM 
high availability manager is enabled on retry attempt", work, vm.getName(), 
vm.getId());
                 }
                 long nextTime = getRescheduleTime(wt);
                 rescheduleWork(work, nextTime);
diff --git a/server/src/main/java/com/cloud/network/IpAddressManagerImpl.java 
b/server/src/main/java/com/cloud/network/IpAddressManagerImpl.java
index fe555af9d50..3d99fb573c9 100644
--- a/server/src/main/java/com/cloud/network/IpAddressManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/IpAddressManagerImpl.java
@@ -1311,7 +1311,7 @@ public class IpAddressManagerImpl extends ManagerBase 
implements IpAddressManage
         try {
             _privateIPAddressDao.releasePodIpAddress(id);
         } catch (Exception e) {
-            new CloudRuntimeException(e.getMessage());
+            throw new CloudRuntimeException(e.getMessage());
         }
     }
 
diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java 
b/server/src/main/java/com/cloud/server/ManagementServerImpl.java
index caf94a1cc85..347b9b26ac4 100644
--- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java
@@ -1443,7 +1443,7 @@ public class ManagementServerImpl extends ManagerBase 
implements ManagementServe
 
     protected boolean zoneWideVolumeRequiresStorageMotion(PrimaryDataStore 
volumeDataStore,
                final Host sourceHost, final Host destinationHost) {
-        if (volumeDataStore.isManaged() && sourceHost.getClusterId() != 
destinationHost.getClusterId()) {
+        if (volumeDataStore.isManaged() && 
!sourceHost.getClusterId().equals(destinationHost.getClusterId())) {
             PrimaryDataStoreDriver driver = 
(PrimaryDataStoreDriver)volumeDataStore.getDriver();
             // Depends on the storage driver. For some storages simply
             // changing volume access to host should work: grant access on 
destination
diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java 
b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
index 4f8b55d16fb..4780a896480 100644
--- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
@@ -3689,7 +3689,7 @@ public class VolumeApiServiceImpl extends ManagerBase 
implements VolumeApiServic
         } else {
             result = 
CollectionUtils.isSubCollection(Arrays.asList(newDiskOfferingTagsAsStringArray),
 storageTagsList);
         }
-        logger.debug(String.format("Destination storage pool [{}] accepts tags 
[{}]? {}", destPool.getUuid(), diskOfferingTags, result));
+        logger.debug("Destination storage pool [{}] accepts tags [{}]? {}", 
destPool.getUuid(), diskOfferingTags, result);
         return result;
     }
 
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index b00358caaa9..0e407d8b628 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -2140,7 +2140,7 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
     }
 
     protected void validateDiskOfferingChecks(ServiceOfferingVO 
currentServiceOffering, ServiceOfferingVO newServiceOffering) {
-        if (currentServiceOffering.getDiskOfferingStrictness() != 
newServiceOffering.getDiskOfferingStrictness()) {
+        if 
(!currentServiceOffering.getDiskOfferingStrictness().equals(newServiceOffering.getDiskOfferingStrictness()))
 {
             throw new InvalidParameterValueException("Unable to Scale VM, 
since disk offering strictness flag is not same for new service offering and 
old service offering");
         }
 
@@ -2391,7 +2391,7 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
 
         _executor = Executors.newScheduledThreadPool(wrks, new 
NamedThreadFactory("UserVm-Scavenger"));
 
-        String vmIpWorkers = configs.get(VmIpFetchTaskWorkers.value());
+        String vmIpWorkers = configs.get(VmIpFetchTaskWorkers.key());
         int vmipwrks = NumbersUtil.parseInt(vmIpWorkers, 10);
 
         _vmIpFetchExecutor =   Executors.newScheduledThreadPool(vmipwrks, new 
NamedThreadFactory("UserVm-ipfetch"));
diff --git 
a/server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java 
b/server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java
index 5174a5d7688..54693492dd7 100644
--- 
a/server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java
+++ 
b/server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java
@@ -390,7 +390,7 @@ public class RoutedIpv4ManagerImpl extends 
ComponentLifecycleBase implements Rou
 
         DataCenterIpv4GuestSubnetVO subnetVO = 
dataCenterIpv4GuestSubnetDao.findById(id);
         if (subnetVO == null) {
-            throw new InvalidParameterValueException(String.format("Cannot 
find subnet with id: ", id));
+            throw new InvalidParameterValueException(String.format("Cannot 
find subnet with id: %s", id));
         }
         Long accountId = null;
         if (accountName != null || (projectId != null && projectId != -1L)) {
@@ -430,7 +430,7 @@ public class RoutedIpv4ManagerImpl extends 
ComponentLifecycleBase implements Rou
         final Long id = cmd.getId();
         DataCenterIpv4GuestSubnetVO subnetVO = 
dataCenterIpv4GuestSubnetDao.findById(id);
         if (subnetVO == null) {
-            throw new InvalidParameterValueException(String.format("Cannot 
find subnet with id: ", id));
+            throw new InvalidParameterValueException(String.format("Cannot 
find subnet with id: %s", id));
         }
 
         // update domain_id and account_id to null via 
dataCenterIpv4GuestSubnetDao, to release the dedication
@@ -1278,7 +1278,7 @@ public class RoutedIpv4ManagerImpl extends 
ComponentLifecycleBase implements Rou
 
         BgpPeerVO bgpPeerVO = bgpPeerDao.findById(id);
         if (bgpPeerVO == null) {
-            throw new InvalidParameterValueException(String.format("Cannot 
find BGP peer with id: ", id));
+            throw new InvalidParameterValueException(String.format("Cannot 
find BGP peer with id: %s", id));
         }
         Long accountId = null;
         if (accountName != null || (projectId != null && projectId != -1L)) {
@@ -1326,7 +1326,7 @@ public class RoutedIpv4ManagerImpl extends 
ComponentLifecycleBase implements Rou
         final Long id = releaseDedicatedBgpPeerCmd.getId();
         BgpPeerVO bgpPeerVO = bgpPeerDao.findById(id);
         if (bgpPeerVO == null) {
-            throw new InvalidParameterValueException(String.format("Cannot 
find BGP peer with id: ", id));
+            throw new InvalidParameterValueException(String.format("Cannot 
find BGP peer with id: %s", id));
         }
 
         // update domain_id and account_id to null via bgpPeerDao, to release 
the dedication
diff --git 
a/server/src/main/java/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java
 
b/server/src/main/java/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java
index a448c612ece..05a5215ee2b 100644
--- 
a/server/src/main/java/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java
+++ 
b/server/src/main/java/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java
@@ -673,7 +673,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements 
GlobalLoadBalancingR
             // set site as 'local' for the site in that zone
             for (Pair<Long, Long> innerLoopZoneId : gslbSiteIds) {
                 SiteLoadBalancerConfig siteLb = 
zoneSiteLoadbalancerMap.get(innerLoopZoneId.first());
-                siteLb.setLocal(zoneId.first() == innerLoopZoneId.first());
+                
siteLb.setLocal(zoneId.first().equals(innerLoopZoneId.first()));
                 slbs.add(siteLb);
             }
 
diff --git 
a/services/console-proxy/rdpconsole/src/main/java/rdpclient/ntlmssp/ServerNtlmsspChallenge.java
 
b/services/console-proxy/rdpconsole/src/main/java/rdpclient/ntlmssp/ServerNtlmsspChallenge.java
index d8cfb4c9594..dbc952be491 100644
--- 
a/services/console-proxy/rdpconsole/src/main/java/rdpclient/ntlmssp/ServerNtlmsspChallenge.java
+++ 
b/services/console-proxy/rdpconsole/src/main/java/rdpclient/ntlmssp/ServerNtlmsspChallenge.java
@@ -287,8 +287,9 @@ public class ServerNtlmsspChallenge extends OneTimeSwitch 
implements NtlmConstan
         if (state.serverChallenge == null)
             throw new RuntimeException("Challenge was not extracted from 
server NTLMSSP Challenge packet.");
         if (!Arrays.equals(challenge, state.serverChallenge))
-            throw new RuntimeException("Challenge was extracted from server 
NTLMSSP Challenge packet is not equal to expected. Actual value: "
-                    + state.serverChallenge + ", expected value: " + challenge 
+ ".");
+            throw new RuntimeException(String.format("Challenge was extracted 
from server NTLMSSP Challenge packet is not" +
+                            " equal to expected. Actual value: %s, expected 
value: %s.",
+                    Arrays.toString(state.serverChallenge), 
Arrays.toString(challenge)));
 
     }
 
diff --git 
a/services/console-proxy/rdpconsole/src/main/java/streamer/ByteBuffer.java 
b/services/console-proxy/rdpconsole/src/main/java/streamer/ByteBuffer.java
index b3cde4bbe59..7d88b6ed970 100644
--- a/services/console-proxy/rdpconsole/src/main/java/streamer/ByteBuffer.java
+++ b/services/console-proxy/rdpconsole/src/main/java/streamer/ByteBuffer.java
@@ -215,7 +215,7 @@ public class ByteBuffer {
 
     public void extend(int newLength) {
         if (data.length < newLength)
-            Arrays.copyOf(data, newLength);
+            data = Arrays.copyOf(data, newLength);
     }
 
     public void ref() {

Reply via email to