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

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new 80a9573a9c Sonar: Replace if-else chains with switch expressions for 
better readability (#7007)
80a9573a9c is described below

commit 80a9573a9c0565db61f8d015e676e0f336713b02
Author: Lance <[email protected]>
AuthorDate: Fri Apr 17 20:39:39 2026 +0800

    Sonar: Replace if-else chains with switch expressions for better 
readability (#7007)
    
    * Refactor: Replace if-else chains with switch expressions for better 
readability
    
    Signed-off-by: lance <[email protected]>
    
    * Refactor: Replace if-else chains with switch expressions for better 
readability
    
    Signed-off-by: lance <[email protected]>
    
    ---------
    
    Signed-off-by: lance <[email protected]>
---
 core/src/main/java/org/apache/hop/core/Const.java  |   2 +-
 .../org/apache/hop/core/row/ValueDataUtil.java     |  37 ++++---
 .../test/java/org/apache/hop/core/CounterTest.java |   6 +-
 .../java/org/apache/hop/core/CountersTest.java     |   2 +-
 .../org/apache/hop/core/row/RowDataUtilTest.java   |  10 +-
 .../multi/MultiMetadataProviderTest.java           |  12 +--
 .../multi/MultiMetadataSerializerTest.java         |   8 +-
 .../hop/core/auth/kerberos/KerberosUtil.java       |  14 ++-
 .../java/org/apache/hop/core/gui/BasePainter.java  |  19 ++--
 .../caching/BaseCachingExecutionInfoLocation.java  |   7 +-
 .../java/org/apache/hop/history/AuditState.java    |  12 +--
 .../java/org/apache/hop/www/AddExportServlet.java  |   2 +-
 .../apache/hop/www/DeleteExecutionInfoServlet.java |   2 +-
 .../hop/www/RegisterExecutionInfoServlet.java      |   2 +-
 .../hop/www/StartExecutionPipelineServlet.java     |   2 +-
 .../org/apache/hop/www/StartPipelineServlet.java   |   2 +-
 .../org/apache/hop/www/StartWorkflowServlet.java   |   2 +-
 .../hop/core/auth/kerberos/KerberosUtilTests.java  | 108 +++++++++++++++++++
 .../pipeline/transform/DynamicWaitTimesTest.java   |   4 +-
 .../actions/dostounix/ActionDosToUnix.java         |  14 +--
 .../hop/databases/as400/AS400DatabaseMeta.java     |  43 ++++----
 .../hop/databases/cache/CacheDatabaseMeta.java     |  44 ++++----
 .../clickhouse/ClickhouseDatabaseMeta.java         |  42 +++-----
 .../hop/databases/cratedb/CrateDBDatabaseMeta.java |  10 +-
 .../apache/hop/databases/db2/DB2DatabaseMeta.java  |  44 ++++----
 .../hop/databases/derby/DerbyDatabaseMeta.java     |  48 ++++-----
 .../hop/databases/doris/DorisDatabaseMeta.java     |  45 ++++----
 .../hop/databases/duckdb/DuckDBDatabaseMeta.java   |  47 ++++----
 .../hop/databases/exasol4/Exasol4DatabaseMeta.java |  34 +++---
 .../databases/firebird/FirebirdDatabaseMeta.java   |  38 +++----
 .../hop/databases/generic/GenericDatabaseMeta.java |  46 ++++----
 .../googlebigquery/GoogleBigQueryDatabaseMeta.java |  23 ++--
 .../apache/hop/databases/h2/H2DatabaseMeta.java    |  45 ++++----
 .../hop/databases/hive/HiveDatabaseMeta.java       |  53 ++++-----
 .../hypersonic/HypersonicDatabaseMeta.java         |  45 ++++----
 .../databases/informix/InformixDatabaseMeta.java   |  48 ++++-----
 .../hop/databases/ingres/IngresDatabaseMeta.java   |  52 ++++-----
 .../apache/hop/vfs/s3/metadata/S3MetaEditor.java   |  71 +++++++------
 .../salesforce/SalesforceConnectionEditor.java     |  18 ++--
 .../pipeline/transforms/coalesce/CoalesceMeta.java |  48 ++++-----
 .../transforms/denormaliser/Denormaliser.java      |  30 +++---
 .../FastSimpleGenericEdifactDirectXMLParser.java   |   2 +-
 .../mongo/wrapper/field/MongoArrayExpansion.java   |  15 ++-
 .../apache/hop/mongo/wrapper/field/MongoField.java |  50 ++++-----
 .../field/MongodbInputDiscoverFieldsImpl.java      | 118 ++++++++++-----------
 .../transforms/repeatfields/RepeatFields.java      |  12 +--
 .../vertica/bulkloader/VerticaBulkLoader.java      |  49 ++++-----
 .../transforms/webservices/WebService.java         |  55 +++++-----
 .../transforms/webservices/wsdl/WsdlUtils.java     |  25 +++--
 .../apache/hop/ui/core/dialog/EnterTextDialog.java |  10 +-
 .../ui/hopgui/terminal/HopGuiTerminalPanel.java    |   2 +-
 .../hop/ui/hopgui/terminal/JediTerminalWidget.java |  69 ++++++------
 52 files changed, 763 insertions(+), 785 deletions(-)

diff --git a/core/src/main/java/org/apache/hop/core/Const.java 
b/core/src/main/java/org/apache/hop/core/Const.java
index 32c2ba8e38..77c7fe9c22 100644
--- a/core/src/main/java/org/apache/hop/core/Const.java
+++ b/core/src/main/java/org/apache/hop/core/Const.java
@@ -50,10 +50,10 @@ import java.util.TimeZone;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.commons.lang3.text.StrBuilder;
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.util.EnvUtil;
diff --git a/core/src/main/java/org/apache/hop/core/row/ValueDataUtil.java 
b/core/src/main/java/org/apache/hop/core/row/ValueDataUtil.java
index d1f04f9f56..ea504bc42d 100644
--- a/core/src/main/java/org/apache/hop/core/row/ValueDataUtil.java
+++ b/core/src/main/java/org/apache/hop/core/row/ValueDataUtil.java
@@ -1643,7 +1643,7 @@ public class ValueDataUtil {
    * always in the range 0-65535.
    *
    * @return A hex-to-char decoded String
-   * @throws HopValueException
+   * @throws HopValueException ex
    */
   public static String hexToCharDecode(IValueMeta meta, Object data) throws 
HopValueException {
     if (meta.isNull(data)) {
@@ -1679,21 +1679,26 @@ public class ValueDataUtil {
         throw new HopValueException("invalid hex digit '" + c + "'.");
       }
 
-      if (charNr == 4) {
-        nextChar = (nibble << 12);
-        charNr--;
-      } else if (charNr == 3) {
-        nextChar += (nibble << 8);
-        charNr--;
-      } else if (charNr == 2) {
-        nextChar += (nibble << 4);
-        charNr--;
-      } else {
-        // charNr == 1
-        nextChar += nibble;
-        chArray[j] = (char) nextChar;
-        charNr = 4;
-        j++;
+      switch (charNr) {
+        case 4 -> {
+          nextChar = (nibble << 12);
+          charNr--;
+        }
+        case 3 -> {
+          nextChar += (nibble << 8);
+          charNr--;
+        }
+        case 2 -> {
+          nextChar += (nibble << 4);
+          charNr--;
+        }
+        default -> {
+          // charNr == 1
+          nextChar += nibble;
+          chArray[j] = (char) nextChar;
+          charNr = 4;
+          j++;
+        }
       }
     }
 
diff --git a/core/src/test/java/org/apache/hop/core/CounterTest.java 
b/core/src/test/java/org/apache/hop/core/CounterTest.java
index 909d9fc0e1..c95ac8471d 100644
--- a/core/src/test/java/org/apache/hop/core/CounterTest.java
+++ b/core/src/test/java/org/apache/hop/core/CounterTest.java
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.Test;
 class CounterTest {
   /** Constructor test 1. */
   @Test
-  public void testConstructor1() {
+  void testConstructor1() {
     Counter cnt1 = new Counter();
     assertEquals(1L, cnt1.getCounter());
     assertEquals(1L, cnt1.getIncrement());
@@ -59,7 +59,7 @@ class CounterTest {
 
   /** Test the setting of stuff. */
   @Test
-  public void testSets() {
+  void testSets() {
     Counter cnt1 = new Counter();
     cnt1.setCounter(5L);
     assertEquals(5L, cnt1.getCounter());
@@ -76,7 +76,7 @@ class CounterTest {
 
   /** Test next(). */
   @Test
-  public void testNext() {
+  void testNext() {
     Counter cnt1 = new Counter();
     cnt1.setCounter(2L);
     assertEquals(2L, cnt1.getAndNext());
diff --git a/core/src/test/java/org/apache/hop/core/CountersTest.java 
b/core/src/test/java/org/apache/hop/core/CountersTest.java
index 6c171df14b..6891c49506 100644
--- a/core/src/test/java/org/apache/hop/core/CountersTest.java
+++ b/core/src/test/java/org/apache/hop/core/CountersTest.java
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.Test;
 class CountersTest {
   /** Test about all. Class is not too big. */
   @Test
-  public void testGeneralFunctionality() {
+  void testGeneralFunctionality() {
     Counters cntrs = Counters.getInstance();
     assertNull(cntrs.getCounter("counter1"));
     cntrs.setCounter("counter1", new Counter());
diff --git a/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java 
b/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java
index 14b78230cd..b5599df6cf 100644
--- a/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java
+++ b/core/src/test/java/org/apache/hop/core/row/RowDataUtilTest.java
@@ -42,7 +42,7 @@ class RowDataUtilTest {
   }
 
   @Test
-  public void testResizeArray() {
+  void testResizeArray() {
     Object[] arr1 = new Object[] {"test", Boolean.TRUE, 100L, 101L, new 
String("test1")};
     Object[] nullArr =
         new Object[] {
@@ -72,7 +72,7 @@ class RowDataUtilTest {
   }
 
   @Test
-  public void testRemoveItem() {
+  void testRemoveItem() {
     Object[] arr = new Object[] {1L, 2L, 3L, 4L, 5L};
 
     // Remove the first item
@@ -106,7 +106,7 @@ class RowDataUtilTest {
   }
 
   @Test
-  public void testAddRowData() {
+  void testAddRowData() {
     Object[] arr = new Object[] {1L, 2L, 3L};
 
     // Do all different combinations of adding rows to
@@ -129,7 +129,7 @@ class RowDataUtilTest {
   }
 
   @Test
-  public void testAddValueData() {
+  void testAddValueData() {
     Object[] arr1 = new Object[] {1L};
     Object[] arr2 = new Object[] {1L, 2L};
 
@@ -143,7 +143,7 @@ class RowDataUtilTest {
   }
 
   @Test
-  public void testRemoveItems() {
+  void testRemoveItems() {
     Object[] arr1 = new Object[] {1L, 2L, 3L, 4L, 5L};
     Object[] comp1 = new Object[] {2L, 4L};
 
diff --git 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java
 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java
index 9c8cf4af54..a681158c58 100644
--- 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java
+++ 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataProviderTest.java
@@ -34,7 +34,7 @@ import org.junit.jupiter.api.Test;
 class MultiMetadataProviderTest extends MetadataTestBase {
 
   @Test
-  public void testGetDescription() {
+  void testGetDescription() {
     String description = multiMetadataProvider.getDescription();
     assertNotNull(description);
     assertEquals(
@@ -42,7 +42,7 @@ class MultiMetadataProviderTest extends MetadataTestBase {
   }
 
   @Test
-  public void testGetMetadataClasses() {
+  void testGetMetadataClasses() {
     List<Class<IHopMetadata>> list = 
multiMetadataProvider.getMetadataClasses();
     assertEquals(2, list.size());
     assertTrue(list.contains(MetadataType1.class));
@@ -50,13 +50,13 @@ class MultiMetadataProviderTest extends MetadataTestBase {
   }
 
   @Test
-  public void testGetMetadataClassForKey() throws HopException {
+  void testGetMetadataClassForKey() throws HopException {
     assertEquals(MetadataType1.class, 
multiMetadataProvider.getMetadataClassForKey("type-1"));
     assertEquals(MetadataType2.class, 
multiMetadataProvider.getMetadataClassForKey("type-2"));
   }
 
   @Test
-  public void testFindProvider() {
+  void testFindProvider() {
     IHopMetadataProvider look1 = 
multiMetadataProvider.findProvider("Provider1");
     assertNotNull(look1);
     assertEquals(provider1, look1);
@@ -69,13 +69,13 @@ class MultiMetadataProviderTest extends MetadataTestBase {
   }
 
   @Test
-  public void testGetProviders() {
+  void testGetProviders() {
     List<IHopMetadataProvider> list = multiMetadataProvider.getProviders();
     assertEquals(3, list.size());
   }
 
   @Test
-  public void testSetProviders() {
+  void testSetProviders() {
     List<IHopMetadataProvider> list = multiMetadataProvider.getProviders();
     MemoryMetadataProvider provider4 =
         new MemoryMetadataProvider(
diff --git 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java
 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java
index c8bf0e2ad8..15f9c17820 100644
--- 
a/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java
+++ 
b/core/src/test/java/org/apache/hop/metadata/serializer/multi/MultiMetadataSerializerTest.java
@@ -60,7 +60,7 @@ class MultiMetadataSerializerTest extends MetadataTestBase {
   }
 
   @Test
-  public void testLoad() throws HopException {
+  void testLoad() throws HopException {
     IHopMetadataSerializer<MetadataType1> s1 =
         multiMetadataProvider.getSerializer(MetadataType1.class);
     IHopMetadataSerializer<MetadataType2> s2 =
@@ -90,7 +90,7 @@ class MultiMetadataSerializerTest extends MetadataTestBase {
   }
 
   @Test
-  public void testSave() throws HopException {
+  void testSave() throws HopException {
 
     MetadataType1 m6 = new MetadataType1("t1o6", "d6", "v6");
     multiMetadataProvider.getSerializer(MetadataType1.class).save(m6);
@@ -122,7 +122,7 @@ class MultiMetadataSerializerTest extends MetadataTestBase {
   }
 
   @Test
-  public void testListObjectNames() throws HopException {
+  void testListObjectNames() throws HopException {
     IHopMetadataSerializer<MetadataType1> s1 =
         multiMetadataProvider.getSerializer(MetadataType1.class);
     IHopMetadataSerializer<MetadataType2> s2 =
@@ -139,7 +139,7 @@ class MultiMetadataSerializerTest extends MetadataTestBase {
   }
 
   @Test
-  public void testExists() throws HopException {
+  void testExists() throws HopException {
     IHopMetadataSerializer<MetadataType1> s1 =
         multiMetadataProvider.getSerializer(MetadataType1.class);
     IHopMetadataSerializer<MetadataType2> s2 =
diff --git 
a/engine/src/main/java/org/apache/hop/core/auth/kerberos/KerberosUtil.java 
b/engine/src/main/java/org/apache/hop/core/auth/kerberos/KerberosUtil.java
index 96a4c7a05b..204e5c1f75 100644
--- a/engine/src/main/java/org/apache/hop/core/auth/kerberos/KerberosUtil.java
+++ b/engine/src/main/java/org/apache/hop/core/auth/kerberos/KerberosUtil.java
@@ -62,7 +62,7 @@ public class KerberosUtil {
   public static final String PENTAHO_JAAS_DEBUG = "PENTAHO_JAAS_DEBUG";
 
   /** Base properties to be inherited by all other LOGIN_CONFIG* configuration 
maps. */
-  public static final Map<String, String> LOGIN_CONFIG_BASE = 
createLoginConfigBaseMap();
+  protected static final Map<String, String> LOGIN_CONFIG_BASE = 
createLoginConfigBaseMap();
 
   /** Login Configuration options for KERBEROS_USER mode. */
   private static final Map<String, String> LOGIN_CONFIG_OPTS_KERBEROS_USER =
@@ -99,7 +99,7 @@ public class KerberosUtil {
   }
 
   /** Login Configuration options for KERBEROS_KEYTAB mode. */
-  public static final Map<String, String> LOGIN_CONFIG_OPTS_KERBEROS_KEYTAB =
+  protected static final Map<String, String> LOGIN_CONFIG_OPTS_KERBEROS_KEYTAB 
=
       createLoginConfigOptsKerberosKeytabMap();
 
   private static Map<String, String> createLoginConfigOptsKerberosKeytabMap() {
@@ -145,12 +145,10 @@ public class KerberosUtil {
         new Subject(),
         callbacks -> {
           for (Callback callback : callbacks) {
-            if (callback instanceof NameCallback nameCallback) {
-              nameCallback.setName(principal);
-            } else if (callback instanceof PasswordCallback passwordCallback) {
-              passwordCallback.setPassword(password.toCharArray());
-            } else {
-              throw new UnsupportedCallbackException(callback);
+            switch (callback) {
+              case NameCallback nc -> nc.setName(principal);
+              case PasswordCallback pc -> 
pc.setPassword(password.toCharArray());
+              default -> throw new UnsupportedCallbackException(callback);
             }
           }
         },
diff --git a/engine/src/main/java/org/apache/hop/core/gui/BasePainter.java 
b/engine/src/main/java/org/apache/hop/core/gui/BasePainter.java
index b7c88214c4..13abdf3dd1 100644
--- a/engine/src/main/java/org/apache/hop/core/gui/BasePainter.java
+++ b/engine/src/main/java/org/apache/hop/core/gui/BasePainter.java
@@ -38,7 +38,7 @@ import org.apache.hop.pipeline.transform.stream.StreamIcon;
 
 @Getter
 @Setter
-public abstract class BasePainter<Hop extends BaseHopMeta<?>, Part extends 
IBaseMeta> {
+public abstract class BasePainter<H extends BaseHopMeta<?>, P extends 
IBaseMeta> {
 
   private static final Class<?> PKG = BasePainter.class;
 
@@ -72,7 +72,7 @@ public abstract class BasePainter<Hop extends BaseHopMeta<?>, 
Part extends IBase
 
   private int noteFontHeight;
 
-  protected Hop candidate;
+  protected H candidate;
 
   protected Point maximum;
   protected boolean showingNavigationView;
@@ -445,7 +445,7 @@ public abstract class BasePainter<Hop extends 
BaseHopMeta<?>, Part extends IBase
     return 19 + (lineWidth - 1) * 5; // arrowhead length
   }
 
-  protected int[] getLine(Part fs, Part ts) {
+  protected int[] getLine(P fs, P ts) {
     if (fs == null || ts == null) {
       return null;
     }
@@ -462,7 +462,7 @@ public abstract class BasePainter<Hop extends 
BaseHopMeta<?>, Part extends IBase
     return new int[] {x1, y1, x2, y2};
   }
 
-  protected void drawArrow(EImage arrow, int[] line, Hop hop, Object 
startObject, Object endObject)
+  protected void drawArrow(EImage arrow, int[] line, H hop, Object 
startObject, Object endObject)
       throws HopException {
     Point screenFrom = real2screen(line[0], line[1]);
     Point screenTo = real2screen(line[2], line[3]);
@@ -490,7 +490,7 @@ public abstract class BasePainter<Hop extends 
BaseHopMeta<?>, Part extends IBase
       double theta,
       int size,
       double factor,
-      Hop jobHop,
+      H jobHop,
       Object startObject,
       Object endObject)
       throws HopException;
@@ -536,9 +536,8 @@ public abstract class BasePainter<Hop extends 
BaseHopMeta<?>, Part extends IBase
     // 3) Fixed width; height follows content aspect ratio (capped) so the 
minimap fits the graph.
     //
     int viewportHeight =
-        Math.min(
-            VIEWPORT_HEIGHT_MAX,
-            Math.max(20, (int) Math.round(VIEWPORT_WIDTH * graphRangeY / 
graphRangeX)));
+        Math.clamp(
+            (int) Math.round(VIEWPORT_WIDTH * graphRangeY / graphRangeX), 20, 
VIEWPORT_HEIGHT_MAX);
     double scale = Math.min(VIEWPORT_WIDTH / graphRangeX, viewportHeight / 
graphRangeY);
     double contentWidth = graphRangeX * scale;
     double contentHeight = graphRangeY * scale;
@@ -566,8 +565,8 @@ public abstract class BasePainter<Hop extends 
BaseHopMeta<?>, Part extends IBase
     double viewHeight = visibleHeightGraph * scale;
 
     // Clamp overlay to the drawn content area (avoid drawing outside the 
light blue)
-    viewX = Math.max(contentLeft, Math.min(contentLeft + contentWidth - 1, 
viewX));
-    viewY = Math.max(contentTop, Math.min(contentTop + contentHeight - 1, 
viewY));
+    viewX = Math.clamp(viewX, contentLeft, contentLeft + contentWidth - 1);
+    viewY = Math.clamp(viewY, contentTop, contentTop + contentHeight - 1);
     viewWidth = Math.min(viewWidth, contentLeft + contentWidth - viewX);
     viewHeight = Math.min(viewHeight, contentTop + contentHeight - viewY);
     viewWidth = Math.max(0, viewWidth);
diff --git 
a/engine/src/main/java/org/apache/hop/execution/caching/BaseCachingExecutionInfoLocation.java
 
b/engine/src/main/java/org/apache/hop/execution/caching/BaseCachingExecutionInfoLocation.java
index 3895f00f1a..03edced4ec 100644
--- 
a/engine/src/main/java/org/apache/hop/execution/caching/BaseCachingExecutionInfoLocation.java
+++ 
b/engine/src/main/java/org/apache/hop/execution/caching/BaseCachingExecutionInfoLocation.java
@@ -234,8 +234,7 @@ public abstract class BaseCachingExecutionInfoLocation 
implements IExecutionInfo
     // Reverse sort the IDs by date
     //
     List<DatedId> datedIds = new ArrayList<>(ids);
-    datedIds.sort(Comparator.comparing(DatedId::getDate));
-    Collections.reverse(datedIds); // Newest first
+    datedIds.sort(Comparator.comparing(DatedId::getDate).reversed());
 
     // Take only the first from the list
     //
@@ -277,8 +276,8 @@ public abstract class BaseCachingExecutionInfoLocation 
implements IExecutionInfo
     // Reverse sort the IDs by date
     //
     List<DatedId> datedIds = new ArrayList<>(dateIds);
-    datedIds.sort(Comparator.comparing(DatedId::getDate));
-    Collections.reverse(datedIds); // Newest first
+    // Newest first
+    datedIds.sort(Comparator.comparing(DatedId::getDate).reversed());
 
     // Take only the first from the list
     //
diff --git a/engine/src/main/java/org/apache/hop/history/AuditState.java 
b/engine/src/main/java/org/apache/hop/history/AuditState.java
index 5dec386ac7..1ad0e7fba7 100644
--- a/engine/src/main/java/org/apache/hop/history/AuditState.java
+++ b/engine/src/main/java/org/apache/hop/history/AuditState.java
@@ -61,24 +61,24 @@ public class AuditState {
 
   public boolean extractBoolean(String key, boolean defaultValue) {
     Object only = getStateMap().get(key);
-    if (only instanceof Boolean) {
-      return (Boolean) only;
+    if (only instanceof Boolean b) {
+      return b;
     }
     return defaultValue;
   }
 
   public String extractString(String key, String defaultValue) {
     Object object = getStateMap().get(key);
-    if (object instanceof String) {
-      return (String) object;
+    if (object instanceof String s) {
+      return s;
     }
     return defaultValue;
   }
 
   public int extractInteger(String key, int defaultValue) {
     Object object = getStateMap().get(key);
-    if (object instanceof Integer) {
-      return (Integer) object;
+    if (object instanceof Integer i) {
+      return i;
     }
     return defaultValue;
   }
diff --git a/engine/src/main/java/org/apache/hop/www/AddExportServlet.java 
b/engine/src/main/java/org/apache/hop/www/AddExportServlet.java
index b03e242c06..f1fb64a4a7 100644
--- a/engine/src/main/java/org/apache/hop/www/AddExportServlet.java
+++ b/engine/src/main/java/org/apache/hop/www/AddExportServlet.java
@@ -26,7 +26,7 @@ import java.io.OutputStream;
 import java.io.PrintWriter;
 import java.io.Serial;
 import java.util.UUID;
-import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.commons.vfs2.FileObject;
 import org.apache.hop.core.annotations.HopServerServlet;
 import org.apache.hop.core.logging.LoggingObjectType;
diff --git 
a/engine/src/main/java/org/apache/hop/www/DeleteExecutionInfoServlet.java 
b/engine/src/main/java/org/apache/hop/www/DeleteExecutionInfoServlet.java
index 914fa1930b..6f5c884f0c 100644
--- a/engine/src/main/java/org/apache/hop/www/DeleteExecutionInfoServlet.java
+++ b/engine/src/main/java/org/apache/hop/www/DeleteExecutionInfoServlet.java
@@ -24,8 +24,8 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Serial;
-import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.annotations.HopServerServlet;
 import org.apache.hop.core.exception.HopException;
diff --git 
a/engine/src/main/java/org/apache/hop/www/RegisterExecutionInfoServlet.java 
b/engine/src/main/java/org/apache/hop/www/RegisterExecutionInfoServlet.java
index c534e2aae4..4b8860648c 100644
--- a/engine/src/main/java/org/apache/hop/www/RegisterExecutionInfoServlet.java
+++ b/engine/src/main/java/org/apache/hop/www/RegisterExecutionInfoServlet.java
@@ -24,8 +24,8 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Serial;
-import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.annotations.HopServerServlet;
 import org.apache.hop.core.exception.HopException;
diff --git 
a/engine/src/main/java/org/apache/hop/www/StartExecutionPipelineServlet.java 
b/engine/src/main/java/org/apache/hop/www/StartExecutionPipelineServlet.java
index 2973bb5cad..96120bf68b 100644
--- a/engine/src/main/java/org/apache/hop/www/StartExecutionPipelineServlet.java
+++ b/engine/src/main/java/org/apache/hop/www/StartExecutionPipelineServlet.java
@@ -26,7 +26,7 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Serial;
 import java.net.URLEncoder;
-import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.annotations.HopServerServlet;
 import org.apache.hop.core.exception.HopException;
diff --git a/engine/src/main/java/org/apache/hop/www/StartPipelineServlet.java 
b/engine/src/main/java/org/apache/hop/www/StartPipelineServlet.java
index a418691684..d308d67074 100644
--- a/engine/src/main/java/org/apache/hop/www/StartPipelineServlet.java
+++ b/engine/src/main/java/org/apache/hop/www/StartPipelineServlet.java
@@ -27,8 +27,8 @@ import java.io.PrintWriter;
 import java.io.Serial;
 import java.net.URLEncoder;
 import java.util.UUID;
-import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.annotations.HopServerServlet;
 import org.apache.hop.core.exception.HopException;
diff --git a/engine/src/main/java/org/apache/hop/www/StartWorkflowServlet.java 
b/engine/src/main/java/org/apache/hop/www/StartWorkflowServlet.java
index 3b752f5f32..814b8cfbb3 100644
--- a/engine/src/main/java/org/apache/hop/www/StartWorkflowServlet.java
+++ b/engine/src/main/java/org/apache/hop/www/StartWorkflowServlet.java
@@ -27,7 +27,7 @@ import java.io.PrintWriter;
 import java.io.Serial;
 import java.net.URLEncoder;
 import java.util.UUID;
-import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.annotations.HopServerServlet;
 import org.apache.hop.core.logging.HopLogStore;
diff --git 
a/engine/src/test/java/org/apache/hop/core/auth/kerberos/KerberosUtilTests.java 
b/engine/src/test/java/org/apache/hop/core/auth/kerberos/KerberosUtilTests.java
new file mode 100644
index 0000000000..2ee40b0bfa
--- /dev/null
+++ 
b/engine/src/test/java/org/apache/hop/core/auth/kerberos/KerberosUtilTests.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hop.core.auth.kerberos;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.TextOutputCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.security.auth.login.LoginContext;
+import org.junit.jupiter.api.Test;
+
+/** Unit test for {@link KerberosUtil} */
+class KerberosUtilTests {
+  private final KerberosUtil kerberos = new KerberosUtil();
+
+  @Test
+  void testGetLoginContextFromKeytab() throws Exception {
+    String principal = "[email protected]";
+    String keytab = "/tmp/test.keytab";
+
+    LoginContext context = kerberos.getLoginContextFromKeytab(principal, 
keytab);
+    assertNotNull(context);
+  }
+
+  @Test
+  void testGetLoginContextFromUsernamePassword_callback() throws Exception {
+    String principal = "[email protected]";
+    String password = "123456";
+
+    LoginContext context = 
kerberos.getLoginContextFromUsernamePassword(principal, password);
+    assertNotNull(context);
+
+    // JAAS callback
+    CallbackHandler handler =
+        callbacks -> {
+          for (Callback callback : callbacks) {
+            switch (callback) {
+              case NameCallback nc ->
+                  assertEquals(
+                      principal, nc.getDefaultName() == null ? principal : 
nc.getDefaultName());
+              case PasswordCallback pc -> {
+                pc.setPassword(password.toCharArray());
+                assertArrayEquals(password.toCharArray(), pc.getPassword());
+              }
+              default -> fail("Unexpected callback: " + callback.getClass());
+            }
+          }
+        };
+
+    handler.handle(
+        new Callback[] {new NameCallback("username"), new 
PasswordCallback("password", false)});
+  }
+
+  @Test
+  void testGetLoginContextFromKerberosCache() throws Exception {
+    String principal = "[email protected]";
+
+    LoginContext context = 
kerberos.getLoginContextFromKerberosCache(principal);
+    assertNotNull(context);
+  }
+
+  @Test
+  void testUnsupportedCallback() {
+    String principal = "[email protected]";
+    String password = "123456";
+
+    assertThrows(
+        UnsupportedCallbackException.class,
+        () -> {
+          CallbackHandler handler =
+              callbacks -> {
+                for (Callback callback : callbacks) {
+                  switch (callback) {
+                    case NameCallback nc -> nc.setName(principal);
+                    case PasswordCallback pc -> 
pc.setPassword(password.toCharArray());
+                    default -> throw new 
UnsupportedCallbackException(callback);
+                  }
+                }
+              };
+
+          handler.handle(
+              new Callback[] {new 
TextOutputCallback(TextOutputCallback.INFORMATION, "test")});
+        });
+  }
+}
diff --git 
a/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java
 
b/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java
index 15fb608b91..7d0cd36cef 100644
--- 
a/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java
+++ 
b/engine/src/test/java/org/apache/hop/pipeline/transform/DynamicWaitTimesTest.java
@@ -36,7 +36,7 @@ class DynamicWaitTimesTest {
   AtomicInteger activeStreamIndex = new AtomicInteger();
 
   @Test
-  public void testSingleStreamStatus() {
+  void testSingleStreamStatus() {
     IRowSet rowSet = new BlockingRowSet(3);
     status = DynamicWaitTimes.build(Collections.singletonList(rowSet), () -> 
0, 20);
     assertEquals(1, status.get());
@@ -49,7 +49,7 @@ class DynamicWaitTimesTest {
   }
 
   @Test
-  public void testMultiStreamStatus() {
+  void testMultiStreamStatus() {
     List<IRowSet> rowSetList =
         new ArrayList<>(
             Arrays.asList(new BlockingRowSet(1), new BlockingRowSet(2), new 
BlockingRowSet(7)));
diff --git 
a/plugins/actions/dostounix/src/main/java/org/apache/hop/workflow/actions/dostounix/ActionDosToUnix.java
 
b/plugins/actions/dostounix/src/main/java/org/apache/hop/workflow/actions/dostounix/ActionDosToUnix.java
index d108861641..4990261213 100644
--- 
a/plugins/actions/dostounix/src/main/java/org/apache/hop/workflow/actions/dostounix/ActionDosToUnix.java
+++ 
b/plugins/actions/dostounix/src/main/java/org/apache/hop/workflow/actions/dostounix/ActionDosToUnix.java
@@ -746,13 +746,13 @@ public class ActionDosToUnix extends ActionBase {
         int b = input[index++];
         switch (state) {
           case 0:
-            if (b == CR) {
-              state = 1;
-            } else if (b == LF) {
-              os.write(CR);
-              os.write(LF);
-            } else {
-              os.write(b);
+            switch (b) {
+              case CR -> state = 1;
+              case LF -> {
+                os.write(CR);
+                os.write(LF);
+              }
+              default -> os.write(b);
             }
             break;
           case 1:
diff --git 
a/plugins/databases/as400/src/main/java/org/apache/hop/databases/as400/AS400DatabaseMeta.java
 
b/plugins/databases/as400/src/main/java/org/apache/hop/databases/as400/AS400DatabaseMeta.java
index ad6ab926a4..bd2b7d2c8a 100644
--- 
a/plugins/databases/as400/src/main/java/org/apache/hop/databases/as400/AS400DatabaseMeta.java
+++ 
b/plugins/databases/as400/src/main/java/org/apache/hop/databases/as400/AS400DatabaseMeta.java
@@ -132,29 +132,30 @@ public class AS400DatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
         retval += "CHAR(1)";
         break;
       case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, 
IValueMeta.TYPE_BIGNUMBER:
-        if (type == IValueMeta.TYPE_INTEGER) {
-          // Integer values...
-          if (length < 10) {
-            retval += "INT";
-          } else {
-            retval += "DECIMAL(" + length + ")";
-          }
-        } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-          // Fixed point value...
-          if (length
-              < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-            // mantissa 2^53 of IEEE 754 binary64 "double".
-            length = 16;
+        switch (type) {
+          case IValueMeta.TYPE_INTEGER -> {
+            // Integer values...
+            if (length < 10) {
+              retval += "INT";
+            } else {
+              retval += "DECIMAL(" + length + ")";
+            }
           }
-          if (precision
-              < 1) { // user configured no value for precision. Use 16 digits, 
which is comparable
-            // to IEEE 754 binary64 "double".
-            precision = 16;
+          case IValueMeta.TYPE_BIGNUMBER -> {
+            // user configured no value for length. Use 16 digits, which is 
comparable to mantissa
+            // 2^53 of IEEE 754 binary64 "double".
+            if (length < 1) {
+              length = 16;
+            }
+            // user configured no value for precision. Use 16 digits, which is 
comparable to IEEE
+            // 754 binary64 "double".
+            if (precision < 1) {
+              precision = 16;
+            }
+            retval += "DECIMAL(" + length + "," + precision + ")";
           }
-          retval += "DECIMAL(" + length + "," + precision + ")";
-        } else {
-          // Floating point value with double precision...
-          retval += "DOUBLE";
+            // Floating point value with double precision...
+          default -> retval += "DOUBLE";
         }
         break;
       case IValueMeta.TYPE_STRING:
diff --git 
a/plugins/databases/cache/src/main/java/org/apache/hop/databases/cache/CacheDatabaseMeta.java
 
b/plugins/databases/cache/src/main/java/org/apache/hop/databases/cache/CacheDatabaseMeta.java
index d08a0cc714..341547ab90 100644
--- 
a/plugins/databases/cache/src/main/java/org/apache/hop/databases/cache/CacheDatabaseMeta.java
+++ 
b/plugins/databases/cache/src/main/java/org/apache/hop/databases/cache/CacheDatabaseMeta.java
@@ -157,37 +157,35 @@ public class CacheDatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
         retval += "CHAR(1)";
         break;
       case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, 
IValueMeta.TYPE_BIGNUMBER:
-        if (fieldname.equalsIgnoreCase(tk)) { // Technical & primary key : see 
at bottom
+        // Technical & primary key : see at bottom
+        if (fieldname.equalsIgnoreCase(tk)) {
           retval += "DECIMAL";
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length > 9) {
-              retval += "DECIMAL(" + length + ")";
-            } else {
-              retval += "INT";
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              // Integer values...
+              if (length > 9) {
+                retval += "DECIMAL(" + length + ")";
+              } else {
+                retval += "INT";
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              // user configured no value for length. Use 16 digits, which is 
comparable to
               // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
+              int len = (length < 1) ? 16 : length;
+              // user configured no value for precision. Use 16 digits, which 
is comparable to IEEE
+              // 754 binary64 "double".
+              int p = (precision < 1) ? 16 : precision;
+              retval += "DECIMAL(" + len + "," + p + ")";
             }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE";
+              // Floating point value with double precision...
+            default -> retval += "DOUBLE";
           }
         }
         break;
-      case IValueMeta
-          .TYPE_STRING: // CLOBs are just VARCHAR in the Cache database: can 
be very large!
+        // CLOBs are just VARCHAR in the Cache database: can be very large!
+      case IValueMeta.TYPE_STRING:
         retval += "VARCHAR";
         if (length > 0) {
           retval += "(" + length + ")";
diff --git 
a/plugins/databases/clickhouse/src/main/java/org/apache/hop/databases/clickhouse/ClickhouseDatabaseMeta.java
 
b/plugins/databases/clickhouse/src/main/java/org/apache/hop/databases/clickhouse/ClickhouseDatabaseMeta.java
index d6c4e781c1..482f179724 100644
--- 
a/plugins/databases/clickhouse/src/main/java/org/apache/hop/databases/clickhouse/ClickhouseDatabaseMeta.java
+++ 
b/plugins/databases/clickhouse/src/main/java/org/apache/hop/databases/clickhouse/ClickhouseDatabaseMeta.java
@@ -42,8 +42,9 @@ import org.apache.hop.core.util.Utils;
 public class ClickhouseDatabaseMeta extends BaseDatabaseMeta implements 
IDatabase {
 
   public static final String CONST_ALTER_TABLE = "ALTER TABLE ";
+  private static final String UUID_N_NIL_PRI_KEY = "UUID NOT NULL PRIMARY KEY";
 
-  // TODO: Manage all attributes in plugin when HOP-67 is fixed
+  // Manage all attributes in plugin when HOP-67 is fixed
   @Override
   public int[] getAccessTypeList() {
     return new int[] {DatabaseMeta.TYPE_ACCESS_NATIVE};
@@ -178,31 +179,22 @@ public class ClickhouseDatabaseMeta extends 
BaseDatabaseMeta implements IDatabas
         retval += "UINT8";
         break;
       case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, 
IValueMeta.TYPE_BIGNUMBER:
-        if (type == IValueMeta.TYPE_INTEGER) {
-          // Integer values...
-          if (length > 18) {
-            retval += "INT128";
-          } else if (length > 9) {
-            retval += "INT64";
-          } else {
-            retval += "INT32";
+        switch (type) {
+          case IValueMeta.TYPE_INTEGER -> {
+            if (length > 18) {
+              retval += "INT128";
+            } else if (length > 9) {
+              retval += "INT64";
+            } else {
+              retval += "INT32";
+            }
           }
-        } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-          // Fixed point value...
-          if (length < 1) {
-            // user configured no value for length. Use 16 digits, which is 
comparable to
-            // mantissa 2^53 of IEEE 754 binary64 "double".
-            length = 16;
+          case IValueMeta.TYPE_BIGNUMBER -> {
+            int len = (length < 1) ? 16 : length;
+            int p = (precision < 1) ? 16 : precision;
+            retval += "DECIMAL(" + len + "," + p + ")";
           }
-          if (precision < 1) {
-            // user configured no value for precision. Use 16 digits, which is 
comparable
-            // to IEEE 754 binary64 "double".
-            precision = 16;
-          }
-          retval += "DECIMAL(" + length + "," + precision + ")";
-        } else {
-          // Floating point value with double precision...
-          retval += "FLOAT64";
+          default -> retval += "FLOAT64";
         }
         break;
       case IValueMeta.TYPE_STRING:
@@ -219,7 +211,7 @@ public class ClickhouseDatabaseMeta extends 
BaseDatabaseMeta implements IDatabas
   }
 
   private String ddlForPrimaryKey() {
-    return "UUID NOT NULL PRIMARY KEY";
+    return UUID_N_NIL_PRI_KEY;
   }
 
   @Override
diff --git 
a/plugins/databases/cratedb/src/main/java/org/apache/hop/databases/cratedb/CrateDBDatabaseMeta.java
 
b/plugins/databases/cratedb/src/main/java/org/apache/hop/databases/cratedb/CrateDBDatabaseMeta.java
index 80f2be459c..3ecdf449c5 100644
--- 
a/plugins/databases/cratedb/src/main/java/org/apache/hop/databases/cratedb/CrateDBDatabaseMeta.java
+++ 
b/plugins/databases/cratedb/src/main/java/org/apache/hop/databases/cratedb/CrateDBDatabaseMeta.java
@@ -219,9 +219,8 @@ public class CrateDBDatabaseMeta extends 
PostgreSqlDatabaseMeta {
           retval += fieldname + " ";
         }
         if (fieldname.equalsIgnoreCase(tk)
-            || // Technical key
-            fieldname.equalsIgnoreCase(pk) // Primary key
-        ) {
+            || // Technical key, Primary key
+            fieldname.equalsIgnoreCase(pk)) {
           retval += "BIGSERIAL";
         } else {
           if (type == IValueMeta.TYPE_INTEGER) {
@@ -233,11 +232,6 @@ public class CrateDBDatabaseMeta extends 
PostgreSqlDatabaseMeta {
             } else {
               retval += "SMALLINT";
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            // CrateDB doesn't support NUMERIC type for columns (only in 
expressions...)
-            // as a work-around we use a double, which can be cast to NUMERIC 
via SQL by the user
-            retval += "DOUBLE PRECISION";
           } else {
             // Floating point value with double precision...
             retval += "DOUBLE PRECISION";
diff --git 
a/plugins/databases/db2/src/main/java/org/apache/hop/databases/db2/DB2DatabaseMeta.java
 
b/plugins/databases/db2/src/main/java/org/apache/hop/databases/db2/DB2DatabaseMeta.java
index 6e3fac3cff..6d25423bfb 100644
--- 
a/plugins/databases/db2/src/main/java/org/apache/hop/databases/db2/DB2DatabaseMeta.java
+++ 
b/plugins/databases/db2/src/main/java/org/apache/hop/databases/db2/DB2DatabaseMeta.java
@@ -164,37 +164,29 @@ public class DB2DatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
         retval += "CHARACTER(1)";
         break;
       case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, 
IValueMeta.TYPE_BIGNUMBER:
-        if (fieldname.equalsIgnoreCase(tk) && useAutoinc) { // Technical key: 
auto increment field!
+        // Technical key: auto increment field!
+        if (fieldname.equalsIgnoreCase(tk) && useAutoinc) {
           retval +=
               "BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 0, 
INCREMENT BY 1, NOCACHE)";
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length > 18) {
-              retval += "DECIMAL(" + length + ")";
-            } else if (length > 9) {
-              retval += "BIGINT";
-            } else if (length > 4) {
-              retval += "INTEGER";
-            } else {
-              retval += "SMALLINT";
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length > 18) {
+                retval += "DECIMAL(" + length + ")";
+              } else if (length > 9) {
+                retval += "BIGINT";
+              } else if (length > 4) {
+                retval += "INTEGER";
+              } else {
+                retval += "SMALLINT";
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int len = (length < 1) ? 16 : length;
+              int p = (precision < 1) ? 16 : precision;
+              retval += "DECIMAL(" + len + "," + p + ")";
             }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE";
+            default -> retval += "DOUBLE";
           }
         }
         break;
diff --git 
a/plugins/databases/derby/src/main/java/org/apache/hop/databases/derby/DerbyDatabaseMeta.java
 
b/plugins/databases/derby/src/main/java/org/apache/hop/databases/derby/DerbyDatabaseMeta.java
index 00215ca76f..cee958b76a 100644
--- 
a/plugins/databases/derby/src/main/java/org/apache/hop/databases/derby/DerbyDatabaseMeta.java
+++ 
b/plugins/databases/derby/src/main/java/org/apache/hop/databases/derby/DerbyDatabaseMeta.java
@@ -172,35 +172,26 @@ public class DerbyDatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
             retval += "BIGINT NOT NULL PRIMARY KEY";
           }
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 3) {
-              retval += "TINYINT";
-            } else if (length < 5) {
-              retval += "SMALLINT";
-            } else if (length < 10) {
-              retval += "INT";
-            } else if (length < 20) {
-              retval += "BIGINT";
-            } else {
-              retval += "DECIMAL(" + length + ")";
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length < 3) {
+                retval += "TINYINT";
+              } else if (length < 5) {
+                retval += "SMALLINT";
+              } else if (length < 10) {
+                retval += "INT";
+              } else if (length < 20) {
+                retval += "BIGINT";
+              } else {
+                retval += "DECIMAL(" + length + ")";
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int len = (length < 1) ? 16 : length;
+              int p = (precision < 1) ? 16 : precision;
+              retval += "DECIMAL(" + len + "," + p + ")";
             }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE";
+            default -> retval += "DOUBLE";
           }
         }
         break;
@@ -212,7 +203,8 @@ public class DerbyDatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
           if (length > 0) {
             retval += "(" + length;
           } else {
-            retval += "("; // Maybe use some default DB String length?
+            // Maybe use some default DB String length?
+            retval += "(";
           }
           retval += ")";
         }
diff --git 
a/plugins/databases/doris/src/main/java/org/apache/hop/databases/doris/DorisDatabaseMeta.java
 
b/plugins/databases/doris/src/main/java/org/apache/hop/databases/doris/DorisDatabaseMeta.java
index 5972998e1f..70697650fc 100644
--- 
a/plugins/databases/doris/src/main/java/org/apache/hop/databases/doris/DorisDatabaseMeta.java
+++ 
b/plugins/databases/doris/src/main/java/org/apache/hop/databases/doris/DorisDatabaseMeta.java
@@ -71,35 +71,26 @@ public class DorisDatabaseMeta extends MySqlDatabaseMeta {
             retval += "BIGINT NOT NULL PRIMARY KEY";
           }
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 3) {
-              retval += "TINYINT";
-            } else if (length < 5) {
-              retval += "SMALLINT";
-            } else if (length < 10) {
-              retval += "INT";
-            } else if (length < 20) {
-              retval += "BIGINT";
-            } else {
-              retval += "DECIMAL(" + length + ")";
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length < 3) {
+                retval += "TINYINT";
+              } else if (length < 5) {
+                retval += "SMALLINT";
+              } else if (length < 10) {
+                retval += "INT";
+              } else if (length < 20) {
+                retval += "BIGINT";
+              } else {
+                retval += "DECIMAL(" + length + ")";
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int len = (length < 1) ? 16 : length;
+              int p = (precision < 1) ? 16 : precision;
+              retval += "DECIMAL(" + len + "," + p + ")";
             }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE";
+            default -> retval += "DOUBLE";
           }
         }
         break;
diff --git 
a/plugins/databases/duckdb/src/main/java/org/apache/hop/databases/duckdb/DuckDBDatabaseMeta.java
 
b/plugins/databases/duckdb/src/main/java/org/apache/hop/databases/duckdb/DuckDBDatabaseMeta.java
index 686beeec0e..56b2455aa7 100644
--- 
a/plugins/databases/duckdb/src/main/java/org/apache/hop/databases/duckdb/DuckDBDatabaseMeta.java
+++ 
b/plugins/databases/duckdb/src/main/java/org/apache/hop/databases/duckdb/DuckDBDatabaseMeta.java
@@ -34,8 +34,6 @@ import org.apache.hop.core.row.IValueMeta;
 @GuiPlugin(id = "GUI-DuckDBDatabaseMeta")
 public class DuckDBDatabaseMeta extends BaseDatabaseMeta implements IDatabase {
 
-  private static final Class<?> PKG = DuckDBDatabaseMeta.class;
-
   @Override
   public String getCreateTableStatement() {
     return super.getCreateTableStatement();
@@ -81,35 +79,26 @@ public class DuckDBDatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
         ) {
           retval += "IDENTITY";
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 3) {
-              retval += "TINYINT";
-            } else if (length < 5) {
-              retval += "SMALLINT";
-            } else if (length < 10) {
-              retval += "INT";
-            } else if (length < 20) {
-              retval += "BIGINT";
-            } else {
-              retval += "DECIMAL(" + length + ")";
-            }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length < 3) {
+                retval += "TINYINT";
+              } else if (length < 5) {
+                retval += "SMALLINT";
+              } else if (length < 10) {
+                retval += "INT";
+              } else if (length < 20) {
+                retval += "BIGINT";
+              } else {
+                retval += "DECIMAL(" + length + ")";
+              }
             }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int p = (precision < 1) ? 16 : precision;
+              int len = (length < 1) ? 16 : length;
+              retval += "DECIMAL(" + len + "," + p + ")";
             }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE";
+            default -> retval += "DOUBLE";
           }
         }
         break;
diff --git 
a/plugins/databases/exasol4/src/main/java/org/apache/hop/databases/exasol4/Exasol4DatabaseMeta.java
 
b/plugins/databases/exasol4/src/main/java/org/apache/hop/databases/exasol4/Exasol4DatabaseMeta.java
index b09f134590..74a5d86aa9 100644
--- 
a/plugins/databases/exasol4/src/main/java/org/apache/hop/databases/exasol4/Exasol4DatabaseMeta.java
+++ 
b/plugins/databases/exasol4/src/main/java/org/apache/hop/databases/exasol4/Exasol4DatabaseMeta.java
@@ -226,29 +226,21 @@ public class Exasol4DatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
         ) {
           retval.append("BIGINT NOT NULL PRIMARY KEY");
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length > 0) {
-              retval.append("DECIMAL(" + length + ")");
-            } else {
-              retval.append("INTEGER");
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length > 0) {
+                retval.append("DECIMAL(").append(length).append(")");
+              } else {
+                retval.append("INTEGER");
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
-            }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int len = (length < 1) ? 16 : length;
+              int p = (precision < 1) ? 16 : precision;
+
+              
retval.append("DECIMAL(").append(len).append(",").append(p).append(")");
             }
-            retval.append("DECIMAL(" + length + "," + precision + ")");
-          } else {
-            // Floating point value with double precision...
-            retval.append("DOUBLE");
+            default -> retval.append("DOUBLE");
           }
         }
 
diff --git 
a/plugins/databases/firebird/src/main/java/org/apache/hop/databases/firebird/FirebirdDatabaseMeta.java
 
b/plugins/databases/firebird/src/main/java/org/apache/hop/databases/firebird/FirebirdDatabaseMeta.java
index 73cc0bdf65..74281e0815 100644
--- 
a/plugins/databases/firebird/src/main/java/org/apache/hop/databases/firebird/FirebirdDatabaseMeta.java
+++ 
b/plugins/databases/firebird/src/main/java/org/apache/hop/databases/firebird/FirebirdDatabaseMeta.java
@@ -176,31 +176,23 @@ public class FirebirdDatabaseMeta extends 
BaseDatabaseMeta implements IDatabase
         ) {
           retval += "BIGINT NOT NULL PRIMARY KEY";
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 5) {
-              retval += CONST_SMALLINT;
-            } else if (length < 10) {
-              retval += CONST_INTEGER;
-            } else {
-              retval += "BIGINT";
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length < 5) {
+                retval += CONST_SMALLINT;
+              } else if (length < 10) {
+                retval += CONST_INTEGER;
+              } else {
+                retval += "BIGINT";
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length < 1) {
-              // user configured no value for length. Use 16 digits, which is 
comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
-            }
-            if (precision < 1) {
-              // user configured no value for precision. Use 16 digits, which 
is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int len = (length < 1) ? 16 : length;
+              int p = (precision < 1) ? 16 : precision;
+
+              retval += "DECIMAL(" + len + "," + p + ")";
             }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE";
+            default -> retval += "DOUBLE";
           }
         }
         break;
diff --git 
a/plugins/databases/generic/src/main/java/org/apache/hop/databases/generic/GenericDatabaseMeta.java
 
b/plugins/databases/generic/src/main/java/org/apache/hop/databases/generic/GenericDatabaseMeta.java
index 4adb098268..0d1330cc36 100644
--- 
a/plugins/databases/generic/src/main/java/org/apache/hop/databases/generic/GenericDatabaseMeta.java
+++ 
b/plugins/databases/generic/src/main/java/org/apache/hop/databases/generic/GenericDatabaseMeta.java
@@ -245,35 +245,27 @@ public class GenericDatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
         ) {
           retval += "BIGSERIAL";
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 3) {
-              retval += "TINYINT";
-            } else if (length < 5) {
-              retval += "SMALLINT";
-            } else if (length < 10) {
-              retval += "INT";
-            } else if (length < 20) {
-              retval += "BIGINT";
-            } else {
-              retval += "DECIMAL(" + length + ")";
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length < 3) {
+                retval += "TINYINT";
+              } else if (length < 5) {
+                retval += "SMALLINT";
+              } else if (length < 10) {
+                retval += "INT";
+              } else if (length < 20) {
+                retval += "BIGINT";
+              } else {
+                retval += "DECIMAL(" + length + ")";
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
-            }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int len = (length < 1) ? 16 : length;
+              int p = (precision < 1) ? 16 : precision;
+
+              retval += "DECIMAL(" + len + "," + p + ")";
             }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE PRECISION";
+            default -> retval += "DOUBLE PRECISION";
           }
         }
         break;
diff --git 
a/plugins/databases/googlebigquery/src/main/java/org/apache/hop/databases/googlebigquery/GoogleBigQueryDatabaseMeta.java
 
b/plugins/databases/googlebigquery/src/main/java/org/apache/hop/databases/googlebigquery/GoogleBigQueryDatabaseMeta.java
index d1fd6bd536..0e89d166b2 100644
--- 
a/plugins/databases/googlebigquery/src/main/java/org/apache/hop/databases/googlebigquery/GoogleBigQueryDatabaseMeta.java
+++ 
b/plugins/databases/googlebigquery/src/main/java/org/apache/hop/databases/googlebigquery/GoogleBigQueryDatabaseMeta.java
@@ -69,8 +69,6 @@ public class GoogleBigQueryDatabaseMeta extends 
BaseDatabaseMeta implements IDat
     String retval = "";
 
     String fieldname = v.getName();
-    int precision = v.getPrecision();
-
     if (addFieldName) {
       retval += fieldname + " ";
     }
@@ -90,19 +88,16 @@ public class GoogleBigQueryDatabaseMeta extends 
BaseDatabaseMeta implements IDat
         break;
 
       case IValueMeta.TYPE_NUMBER, IValueMeta.TYPE_INTEGER, 
IValueMeta.TYPE_BIGNUMBER:
-        if (type == IValueMeta.TYPE_INTEGER) {
-          // Integer values...
-          retval += "INT64";
-        } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-          // Fixed point value...
-          if (v.getLength() < 39) {
-            retval += "NUMERIC";
-          } else {
-            retval += "BIGNUMERIC";
+        switch (type) {
+          case IValueMeta.TYPE_INTEGER -> retval += "INT64";
+          case IValueMeta.TYPE_BIGNUMBER -> {
+            if (v.getLength() < 39) {
+              retval += "NUMERIC";
+            } else {
+              retval += "BIGNUMERIC";
+            }
           }
-        } else {
-          // Floating point value with double precision...
-          retval += "FLOAT64";
+          default -> retval += "FLOAT64";
         }
         break;
 
diff --git 
a/plugins/databases/h2/src/main/java/org/apache/hop/databases/h2/H2DatabaseMeta.java
 
b/plugins/databases/h2/src/main/java/org/apache/hop/databases/h2/H2DatabaseMeta.java
index d151666e8e..c8a63fea11 100644
--- 
a/plugins/databases/h2/src/main/java/org/apache/hop/databases/h2/H2DatabaseMeta.java
+++ 
b/plugins/databases/h2/src/main/java/org/apache/hop/databases/h2/H2DatabaseMeta.java
@@ -179,35 +179,26 @@ public class H2DatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
         ) {
           retval += "IDENTITY";
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 3) {
-              retval += "TINYINT";
-            } else if (length < 5) {
-              retval += "SMALLINT";
-            } else if (length < 10) {
-              retval += "INT";
-            } else if (length < 20) {
-              retval += "BIGINT";
-            } else {
-              retval += "DECIMAL(" + length + ")";
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length < 3) {
+                retval += "TINYINT";
+              } else if (length < 5) {
+                retval += "SMALLINT";
+              } else if (length < 10) {
+                retval += "INT";
+              } else if (length < 20) {
+                retval += "BIGINT";
+              } else {
+                retval += "DECIMAL(" + length + ")";
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int len = (length < 1) ? 16 : length;
+              int p = (precision < 1) ? 16 : precision;
+              retval += "DECIMAL(" + len + "," + p + ")";
             }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE PRECISION";
+            default -> retval += "DOUBLE PRECISION";
           }
         }
         break;
diff --git 
a/plugins/databases/hive/src/main/java/org/apache/hop/databases/hive/HiveDatabaseMeta.java
 
b/plugins/databases/hive/src/main/java/org/apache/hop/databases/hive/HiveDatabaseMeta.java
index 889b977a5f..36c1db91f2 100644
--- 
a/plugins/databases/hive/src/main/java/org/apache/hop/databases/hive/HiveDatabaseMeta.java
+++ 
b/plugins/databases/hive/src/main/java/org/apache/hop/databases/hive/HiveDatabaseMeta.java
@@ -40,7 +40,6 @@ import org.apache.hop.metadata.api.HopMetadataProperty;
     documentationUrl = "/database/databases/apache-hive.html")
 @GuiPlugin(id = "GUI-HiveDatabaseMeta")
 public class HiveDatabaseMeta extends BaseDatabaseMeta implements IDatabase {
-  private static final Class<?> PKG = HiveDatabaseMeta.class;
 
   @GuiWidgetElement(
       id = "tablePartitions",
@@ -297,36 +296,28 @@ public class HiveDatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
             retval += "BIGINT NOT NULL PRIMARY KEY";
           }
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 3) {
-              retval += "TINYINT";
-            } else if (length < 5) {
-              retval += "SMALLINT";
-            } else if (length < 10) {
-              retval += "INT";
-            } else if (length < 20) {
-              retval += "BIGINT";
-            } else {
-              retval += "DECIMAL(" + length + ")";
-            }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
-            }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "DOUBLE";
-          }
+          retval +=
+              switch (type) {
+                case IValueMeta.TYPE_INTEGER -> {
+                  if (length < 3) {
+                    yield "TINYINT";
+                  } else if (length < 5) {
+                    yield "SMALLINT";
+                  } else if (length < 10) {
+                    yield "INT";
+                  } else if (length < 20) {
+                    yield "BIGINT";
+                  } else {
+                    yield "DECIMAL(" + length + ")";
+                  }
+                }
+                case IValueMeta.TYPE_BIGNUMBER -> {
+                  int p = (precision < 1) ? 16 : precision;
+                  int len = (length < 1) ? 16 : length;
+                  yield "DECIMAL(" + len + "," + p + ")";
+                }
+                default -> "DOUBLE";
+              };
         }
         break;
       case IValueMeta.TYPE_STRING:
diff --git 
a/plugins/databases/hypersonic/src/main/java/org/apache/hop/databases/hypersonic/HypersonicDatabaseMeta.java
 
b/plugins/databases/hypersonic/src/main/java/org/apache/hop/databases/hypersonic/HypersonicDatabaseMeta.java
index 5871ff6534..64f3ad7e72 100644
--- 
a/plugins/databases/hypersonic/src/main/java/org/apache/hop/databases/hypersonic/HypersonicDatabaseMeta.java
+++ 
b/plugins/databases/hypersonic/src/main/java/org/apache/hop/databases/hypersonic/HypersonicDatabaseMeta.java
@@ -143,35 +143,26 @@ public class HypersonicDatabaseMeta extends 
BaseDatabaseMeta implements IDatabas
           retval.append(
               "BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 0, INCREMENT 
BY 1) PRIMARY KEY");
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 3) {
-              retval.append("TINYINT");
-            } else if (length < 5) {
-              retval.append("SMALLINT");
-            } else if (length < 10) {
-              retval.append("INT");
-            } else if (length < 20) {
-              retval.append("BIGINT");
-            } else {
-              retval.append("DECIMAL(").append(length).append(")");
+          switch (type) {
+            case IValueMeta.TYPE_INTEGER -> {
+              if (length < 3) {
+                retval.append("TINYINT");
+              } else if (length < 5) {
+                retval.append("SMALLINT");
+              } else if (length < 10) {
+                retval.append("INT");
+              } else if (length < 20) {
+                retval.append("BIGINT");
+              } else {
+                retval.append("DECIMAL(").append(length).append(")");
+              }
             }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
+            case IValueMeta.TYPE_BIGNUMBER -> {
+              int p = (precision < 1) ? 16 : precision;
+              int len = (length < 1) ? 16 : length;
+              
retval.append("DECIMAL(").append(len).append(",").append(p).append(")");
             }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            
retval.append("DECIMAL(").append(length).append(",").append(precision).append(")");
-          } else {
-            // Floating point value with double precision...
-            retval.append("DOUBLE PRECISION");
+            default -> retval.append("DOUBLE PRECISION");
           }
         }
         break;
diff --git 
a/plugins/databases/informix/src/main/java/org/apache/hop/databases/informix/InformixDatabaseMeta.java
 
b/plugins/databases/informix/src/main/java/org/apache/hop/databases/informix/InformixDatabaseMeta.java
index 773f74a137..43926d6e45 100644
--- 
a/plugins/databases/informix/src/main/java/org/apache/hop/databases/informix/InformixDatabaseMeta.java
+++ 
b/plugins/databases/informix/src/main/java/org/apache/hop/databases/informix/InformixDatabaseMeta.java
@@ -194,34 +194,26 @@ public class InformixDatabaseMeta extends 
BaseDatabaseMeta implements IDatabase
             retval += "INTEGER PRIMARY KEY";
           }
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 5) {
-              retval += "SMALLINT";
-            } else if (length < 10) {
-              retval += "INT";
-            } else if (length < 20) {
-              retval += "BIGINT";
-            } else {
-              retval += "DECIMAL(" + length + ",0)";
-            }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
-            }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "FLOAT";
-          }
+          retval +=
+              switch (type) {
+                case IValueMeta.TYPE_INTEGER -> {
+                  if (length < 5) {
+                    yield "SMALLINT";
+                  } else if (length < 10) {
+                    yield "INT";
+                  } else if (length < 20) {
+                    yield "BIGINT";
+                  } else {
+                    yield "DECIMAL(" + length + ",0)";
+                  }
+                }
+                case IValueMeta.TYPE_BIGNUMBER -> {
+                  int p = (precision < 1) ? 16 : precision;
+                  int len = (length < 1) ? 16 : length;
+                  yield "DECIMAL(" + len + "," + p + ")";
+                }
+                default -> "FLOAT";
+              };
         }
         break;
       case IValueMeta.TYPE_STRING:
diff --git 
a/plugins/databases/ingres/src/main/java/org/apache/hop/databases/ingres/IngresDatabaseMeta.java
 
b/plugins/databases/ingres/src/main/java/org/apache/hop/databases/ingres/IngresDatabaseMeta.java
index ab40c92648..ce2474d625 100644
--- 
a/plugins/databases/ingres/src/main/java/org/apache/hop/databases/ingres/IngresDatabaseMeta.java
+++ 
b/plugins/databases/ingres/src/main/java/org/apache/hop/databases/ingres/IngresDatabaseMeta.java
@@ -171,36 +171,28 @@ public class IngresDatabaseMeta extends BaseDatabaseMeta 
implements IDatabase {
             retval += "BIGINT PRIMARY KEY NOT NULL";
           }
         } else {
-          if (type == IValueMeta.TYPE_INTEGER) {
-            // Integer values...
-            if (length < 3) {
-              retval += "TINYINT";
-            } else if (length < 5) {
-              retval += "SMALLINT";
-            } else if (length < 10) {
-              retval += "INT";
-            } else if (length < 20) {
-              retval += "BIGINT";
-            } else {
-              retval += "DECIMAL(" + length + ")";
-            }
-          } else if (type == IValueMeta.TYPE_BIGNUMBER) {
-            // Fixed point value...
-            if (length
-                < 1) { // user configured no value for length. Use 16 digits, 
which is comparable to
-              // mantissa 2^53 of IEEE 754 binary64 "double".
-              length = 16;
-            }
-            if (precision
-                < 1) { // user configured no value for precision. Use 16 
digits, which is comparable
-              // to IEEE 754 binary64 "double".
-              precision = 16;
-            }
-            retval += "DECIMAL(" + length + "," + precision + ")";
-          } else {
-            // Floating point value with double precision...
-            retval += "FLOAT8";
-          }
+          retval +=
+              switch (type) {
+                case IValueMeta.TYPE_INTEGER -> {
+                  if (length < 3) {
+                    yield "TINYINT";
+                  } else if (length < 5) {
+                    yield "SMALLINT";
+                  } else if (length < 10) {
+                    yield "INT";
+                  } else if (length < 20) {
+                    yield "BIGINT";
+                  } else {
+                    yield "DECIMAL(" + length + ")";
+                  }
+                }
+                case IValueMeta.TYPE_BIGNUMBER -> {
+                  int p = (precision < 1) ? 16 : precision;
+                  int len = (length < 1) ? 16 : length;
+                  yield "DECIMAL(" + len + "," + p + ")";
+                }
+                default -> "FLOAT8";
+              };
         }
         break;
       case IValueMeta.TYPE_STRING:
diff --git 
a/plugins/tech/aws/src/main/java/org/apache/hop/vfs/s3/metadata/S3MetaEditor.java
 
b/plugins/tech/aws/src/main/java/org/apache/hop/vfs/s3/metadata/S3MetaEditor.java
index 06b5ba6ffc..b530a18a7e 100644
--- 
a/plugins/tech/aws/src/main/java/org/apache/hop/vfs/s3/metadata/S3MetaEditor.java
+++ 
b/plugins/tech/aws/src/main/java/org/apache/hop/vfs/s3/metadata/S3MetaEditor.java
@@ -213,12 +213,10 @@ public class S3MetaEditor extends MetadataEditor<S3Meta> {
     wAuthType = new Combo(parent, SWT.BORDER | SWT.SINGLE | SWT.LEFT | 
SWT.READ_ONLY);
     PropsUi.setLook(wAuthType);
     wAuthType.setItems(
-        new String[] {
-          BaseMessages.getString(PKG, "S3Meta.AuthType.Default"),
-          BaseMessages.getString(PKG, "S3Meta.AuthType.AccessKeys"),
-          BaseMessages.getString(PKG, "S3Meta.AuthType.CredentialsFile"),
-          BaseMessages.getString(PKG, "S3Meta.AuthType.Anonymous"),
-        });
+        BaseMessages.getString(PKG, "S3Meta.AuthType.Default"),
+        BaseMessages.getString(PKG, "S3Meta.AuthType.AccessKeys"),
+        BaseMessages.getString(PKG, "S3Meta.AuthType.CredentialsFile"),
+        BaseMessages.getString(PKG, "S3Meta.AuthType.Anonymous"));
     FormData fdAuthType = new FormData();
     fdAuthType.top = new FormAttachment(wlAuthType, 0, SWT.CENTER);
     fdAuthType.left = new FormAttachment(middle, 0);
@@ -521,34 +519,39 @@ public class S3MetaEditor extends MetadataEditor<S3Meta> {
     meta.setCacheTtlSeconds(wCacheTtl.getText());
 
     int authIdx = wAuthType.getSelectionIndex();
-    if (authIdx == 1) {
-      meta.setAuthenticationType(S3AuthType.ACCESS_KEYS.name());
-      meta.setAccessKey(wAccessKey.getText());
-      meta.setSecretKey(wSecretKey.getText());
-      meta.setSessionToken(wSessionToken.getText());
-      meta.setCredentialsFile(null);
-      meta.setProfileName(null);
-    } else if (authIdx == 2) {
-      meta.setAuthenticationType(S3AuthType.CREDENTIALS_FILE.name());
-      meta.setAccessKey(null);
-      meta.setSecretKey(null);
-      meta.setSessionToken(null);
-      meta.setCredentialsFile(wCredentialsFile.getText());
-      meta.setProfileName(wProfileName.getText());
-    } else if (authIdx == 3) {
-      meta.setAuthenticationType(S3AuthType.ANONYMOUS.name());
-      meta.setAccessKey(null);
-      meta.setSecretKey(null);
-      meta.setSessionToken(null);
-      meta.setCredentialsFile(null);
-      meta.setProfileName(null);
-    } else {
-      meta.setAuthenticationType(S3AuthType.DEFAULT.name());
-      meta.setAccessKey(null);
-      meta.setSecretKey(null);
-      meta.setSessionToken(null);
-      meta.setCredentialsFile(null);
-      meta.setProfileName(wProfileName.getText());
+    switch (authIdx) {
+      case 1 -> {
+        meta.setAuthenticationType(S3AuthType.ACCESS_KEYS.name());
+        meta.setAccessKey(wAccessKey.getText());
+        meta.setSecretKey(wSecretKey.getText());
+        meta.setSessionToken(wSessionToken.getText());
+        meta.setCredentialsFile(null);
+        meta.setProfileName(null);
+      }
+      case 2 -> {
+        meta.setAuthenticationType(S3AuthType.CREDENTIALS_FILE.name());
+        meta.setAccessKey(null);
+        meta.setSecretKey(null);
+        meta.setSessionToken(null);
+        meta.setCredentialsFile(wCredentialsFile.getText());
+        meta.setProfileName(wProfileName.getText());
+      }
+      case 3 -> {
+        meta.setAuthenticationType(S3AuthType.ANONYMOUS.name());
+        meta.setAccessKey(null);
+        meta.setSecretKey(null);
+        meta.setSessionToken(null);
+        meta.setCredentialsFile(null);
+        meta.setProfileName(null);
+      }
+      default -> {
+        meta.setAuthenticationType(S3AuthType.DEFAULT.name());
+        meta.setAccessKey(null);
+        meta.setSecretKey(null);
+        meta.setSessionToken(null);
+        meta.setCredentialsFile(null);
+        meta.setProfileName(wProfileName.getText());
+      }
     }
     meta.setEndpoint(wEndpoint.getText());
     meta.setPathStyleAccess(wPathStyle.getSelection());
diff --git 
a/plugins/tech/salesforce/src/main/java/org/apache/hop/metadata/salesforce/SalesforceConnectionEditor.java
 
b/plugins/tech/salesforce/src/main/java/org/apache/hop/metadata/salesforce/SalesforceConnectionEditor.java
index 09c6f9fc81..d7a40f2657 100644
--- 
a/plugins/tech/salesforce/src/main/java/org/apache/hop/metadata/salesforce/SalesforceConnectionEditor.java
+++ 
b/plugins/tech/salesforce/src/main/java/org/apache/hop/metadata/salesforce/SalesforceConnectionEditor.java
@@ -1234,14 +1234,16 @@ public class SalesforceConnectionEditor extends 
MetadataEditor<SalesforceConnect
     connection.setName(wName.getText());
 
     int selectedIndex = wAuthType.getSelectionIndex();
-    if (selectedIndex == 1) {
-      connection.setAuthenticationType("OAUTH");
-      connection.setOauthApiVersion(wOAuthApiVersion.getText());
-    } else if (selectedIndex == 2) {
-      connection.setAuthenticationType("OAUTH_JWT");
-      connection.setOauthApiVersion(wOAuthJwtApiVersion.getText());
-    } else {
-      connection.setAuthenticationType("USERNAME_PASSWORD");
+    switch (selectedIndex) {
+      case 1 -> {
+        connection.setAuthenticationType("OAUTH");
+        connection.setOauthApiVersion(wOAuthApiVersion.getText());
+      }
+      case 2 -> {
+        connection.setAuthenticationType("OAUTH_JWT");
+        connection.setOauthApiVersion(wOAuthJwtApiVersion.getText());
+      }
+      default -> connection.setAuthenticationType("USERNAME_PASSWORD");
     }
 
     // Username/Password fields
diff --git 
a/plugins/transforms/coalesce/src/main/java/org/apache/hop/pipeline/transforms/coalesce/CoalesceMeta.java
 
b/plugins/transforms/coalesce/src/main/java/org/apache/hop/pipeline/transforms/coalesce/CoalesceMeta.java
index 945dca0751..02939ad58c 100644
--- 
a/plugins/transforms/coalesce/src/main/java/org/apache/hop/pipeline/transforms/coalesce/CoalesceMeta.java
+++ 
b/plugins/transforms/coalesce/src/main/java/org/apache/hop/pipeline/transforms/coalesce/CoalesceMeta.java
@@ -210,9 +210,11 @@ public class CoalesceMeta extends 
BaseTransformMeta<CoalesceTransform, CoalesceD
       List<String> duplicateFields = new ArrayList<>();
 
       for (String fieldName : coalesce.getInputFieldNames()) {
-
-        if (fields.contains(fieldName)) duplicateFields.add(fieldName);
-        else fields.add(fieldName);
+        if (fields.contains(fieldName)) {
+          duplicateFields.add(fieldName);
+        } else {
+          fields.add(fieldName);
+        }
 
         IValueMeta vmi = prev.searchValueMeta(fieldName);
         if (vmi == null) {
@@ -292,22 +294,21 @@ public class CoalesceMeta extends 
BaseTransformMeta<CoalesceTransform, CoalesceD
               // keep TYPE_STRING
               break;
             case IValueMeta.TYPE_INTEGER:
-              if (otherType == IValueMeta.TYPE_NUMBER) {
-                type = IValueMeta.TYPE_NUMBER;
-              } else if (otherType == IValueMeta.TYPE_BIGNUMBER) {
-                type = IValueMeta.TYPE_BIGNUMBER;
-              } else {
-                type = IValueMeta.TYPE_STRING;
-              }
+              type =
+                  switch (otherType) {
+                    case IValueMeta.TYPE_NUMBER -> IValueMeta.TYPE_NUMBER;
+                    case IValueMeta.TYPE_BIGNUMBER -> 
IValueMeta.TYPE_BIGNUMBER;
+                    default -> IValueMeta.TYPE_STRING;
+                  };
               break;
+
             case IValueMeta.TYPE_NUMBER:
-              if (otherType == IValueMeta.TYPE_INTEGER) {
-                // keep TYPE_NUMBER
-              } else if (otherType == IValueMeta.TYPE_BIGNUMBER) {
-                type = IValueMeta.TYPE_BIGNUMBER;
-              } else {
-                type = IValueMeta.TYPE_STRING;
-              }
+              type =
+                  switch (otherType) {
+                    case IValueMeta.TYPE_INTEGER -> type;
+                    case IValueMeta.TYPE_BIGNUMBER -> 
IValueMeta.TYPE_BIGNUMBER;
+                    default -> IValueMeta.TYPE_STRING;
+                  };
               break;
 
             case IValueMeta.TYPE_DATE:
@@ -325,13 +326,12 @@ public class CoalesceMeta extends 
BaseTransformMeta<CoalesceTransform, CoalesceD
               }
               break;
             case IValueMeta.TYPE_BIGNUMBER:
-              if (otherType == IValueMeta.TYPE_INTEGER) {
-                // keep TYPE_BIGNUMBER
-              } else if (otherType == IValueMeta.TYPE_NUMBER) {
-                // keep TYPE_BIGNUMBER
-              } else {
-                type = IValueMeta.TYPE_STRING;
-              }
+              type =
+                  switch (otherType) {
+                      // keep TYPE_BIGNUMBER
+                    case IValueMeta.TYPE_INTEGER, IValueMeta.TYPE_NUMBER -> 
type;
+                    default -> IValueMeta.TYPE_STRING;
+                  };
               break;
             case IValueMeta.TYPE_BOOLEAN,
                 IValueMeta.TYPE_INET,
diff --git 
a/plugins/transforms/denormaliser/src/main/java/org/apache/hop/pipeline/transforms/denormaliser/Denormaliser.java
 
b/plugins/transforms/denormaliser/src/main/java/org/apache/hop/pipeline/transforms/denormaliser/Denormaliser.java
index dbc2429e72..a782dd38d6 100644
--- 
a/plugins/transforms/denormaliser/src/main/java/org/apache/hop/pipeline/transforms/denormaliser/Denormaliser.java
+++ 
b/plugins/transforms/denormaliser/src/main/java/org/apache/hop/pipeline/transforms/denormaliser/Denormaliser.java
@@ -243,15 +243,13 @@ public class Denormaliser extends 
BaseTransform<DenormaliserMeta, DenormaliserDa
           long count = data.counters[i];
           Object sum = data.sum[i];
           if (count > 0) {
-            if (sum instanceof Long longValue) {
-              resultValue = longValue / count;
-            } else if (sum instanceof Double doubleValue) {
-              resultValue = doubleValue / count;
-            } else if (sum instanceof BigDecimal bigDecimalValue) {
-              resultValue = bigDecimalValue.divide(new BigDecimal(count));
-            } else {
-              resultValue = null;
-            }
+            resultValue =
+                switch (sum) {
+                  case Long l -> l / count;
+                  case Double d -> d / count;
+                  case BigDecimal bd -> bd.divide(BigDecimal.valueOf(count));
+                  default -> null;
+                };
           }
           break;
         case TYPE_AGGR_COUNT_ALL:
@@ -448,12 +446,14 @@ public class Denormaliser extends 
BaseTransform<DenormaliserMeta, DenormaliserDa
   private IValueMeta getConversionMeta(String mask) {
     IValueMeta meta = null;
     if (!Utils.isEmpty(mask)) {
-      meta = conversionMetaCache.get(mask);
-      if (meta == null) {
-        meta = new ValueMetaDate();
-        meta.setConversionMask(mask);
-        conversionMetaCache.put(mask, meta);
-      }
+      meta =
+          conversionMetaCache.computeIfAbsent(
+              mask,
+              key -> {
+                ValueMetaDate m = new ValueMetaDate();
+                m.setConversionMask(key);
+                return m;
+              });
     }
     return meta;
   }
diff --git 
a/plugins/transforms/edi2xml/src/main/java/org/apache/hop/pipeline/transforms/edi2xml/grammar/FastSimpleGenericEdifactDirectXMLParser.java
 
b/plugins/transforms/edi2xml/src/main/java/org/apache/hop/pipeline/transforms/edi2xml/grammar/FastSimpleGenericEdifactDirectXMLParser.java
index 33ad1daaaf..8dde30c25d 100644
--- 
a/plugins/transforms/edi2xml/src/main/java/org/apache/hop/pipeline/transforms/edi2xml/grammar/FastSimpleGenericEdifactDirectXMLParser.java
+++ 
b/plugins/transforms/edi2xml/src/main/java/org/apache/hop/pipeline/transforms/edi2xml/grammar/FastSimpleGenericEdifactDirectXMLParser.java
@@ -39,7 +39,7 @@ import org.antlr.runtime.TokenStream;
 import org.antlr.stringtemplate.StringTemplate;
 import org.antlr.stringtemplate.StringTemplateGroup;
 import org.antlr.stringtemplate.language.AngleBracketTemplateLexer;
-import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.text.StringEscapeUtils;
 
 @SuppressWarnings("java:S1104")
 public class FastSimpleGenericEdifactDirectXMLParser extends Parser {
diff --git 
a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoArrayExpansion.java
 
b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoArrayExpansion.java
index 74aa12a4c4..fa2f661bff 100644
--- 
a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoArrayExpansion.java
+++ 
b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoArrayExpansion.java
@@ -194,14 +194,13 @@ public class MongoArrayExpansion {
           sf.reset(variables);
 
           // what have we got?
-          if (element instanceof Document doc) {
-            result[i][sf.outputIndex] = sf.convertToHopValue(doc);
-          } else if (element instanceof List list) {
-            result[i][sf.outputIndex] = sf.convertToHopValue(list);
-          } else {
-            // assume a primitive
-            result[i][sf.outputIndex] = sf.getHopValue(element);
-          }
+          result[i][sf.outputIndex] =
+              switch (element) {
+                case Document doc -> sf.convertToHopValue(doc);
+                case List<?> list -> sf.convertToHopValue(list);
+                  // assume a primitive
+                default -> sf.getHopValue(element);
+              };
         }
       }
 
diff --git 
a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoField.java
 
b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoField.java
index 68621ded13..47db29132a 100644
--- 
a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoField.java
+++ 
b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongoField.java
@@ -19,6 +19,7 @@ package org.apache.hop.mongo.wrapper.field;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import java.math.BigDecimal;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
@@ -178,13 +179,12 @@ public class MongoField implements Comparable<MongoField> 
{
 
     return switch (tempValueMeta.getType()) {
       case IValueMeta.TYPE_BIGNUMBER -> {
-        if (fieldValue instanceof Number number) {
-          fieldValue = BigDecimal.valueOf(number.doubleValue());
-        } else if (fieldValue instanceof Date date) {
-          fieldValue = new BigDecimal(date.getTime());
-        } else {
-          fieldValue = new BigDecimal(fieldValue.toString());
-        }
+        fieldValue =
+            switch (fieldValue) {
+              case Number number -> BigDecimal.valueOf(number.doubleValue());
+              case Date date -> BigDecimal.valueOf(date.getTime());
+              default -> new BigDecimal(fieldValue.toString());
+            };
         yield tempValueMeta.getBigNumber(fieldValue);
       }
       case IValueMeta.TYPE_BINARY -> {
@@ -221,27 +221,27 @@ public class MongoField implements Comparable<MongoField> 
{
         yield tempValueMeta.getDate(fieldValue);
       }
       case IValueMeta.TYPE_INTEGER -> {
-        if (fieldValue instanceof Number number) {
-          fieldValue = (long) number.intValue();
-        } else if (fieldValue instanceof Binary binary) {
-          byte[] b = binary.getData();
-          String s = new String(b);
-          fieldValue = Long.valueOf(s);
-        } else {
-          fieldValue = Long.valueOf(fieldValue.toString());
-        }
+        fieldValue =
+            switch (fieldValue) {
+              case Number number -> number.longValue();
+              case Binary binary -> {
+                String s = new String(binary.getData(), 
StandardCharsets.UTF_8);
+                yield Long.valueOf(s);
+              }
+              default -> Long.valueOf(fieldValue.toString());
+            };
         yield tempValueMeta.getInteger(fieldValue);
       }
       case IValueMeta.TYPE_NUMBER -> {
-        if (fieldValue instanceof Number number) {
-          fieldValue = number.doubleValue();
-        } else if (fieldValue instanceof Binary binary) {
-          byte[] b = binary.getData();
-          String s = new String(b);
-          fieldValue = Double.valueOf(s);
-        } else {
-          fieldValue = Double.valueOf(fieldValue.toString());
-        }
+        fieldValue =
+            switch (fieldValue) {
+              case Number number -> number.doubleValue();
+              case Binary binary -> {
+                String s = new String(binary.getData(), 
StandardCharsets.UTF_8);
+                yield Double.valueOf(s);
+              }
+              default -> Double.valueOf(fieldValue.toString());
+            };
         yield tempValueMeta.getNumber(fieldValue);
       }
       case IValueMeta.TYPE_STRING -> tempValueMeta.getString(fieldValue);
diff --git 
a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongodbInputDiscoverFieldsImpl.java
 
b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongodbInputDiscoverFieldsImpl.java
index a84ab06e30..250ca54713 100644
--- 
a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongodbInputDiscoverFieldsImpl.java
+++ 
b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/wrapper/field/MongodbInputDiscoverFieldsImpl.java
@@ -288,40 +288,35 @@ public class MongodbInputDiscoverFieldsImpl implements 
MongoDbInputDiscoverField
     for (String key : rec.keySet()) {
       Object fieldValue = rec.get(key);
 
-      if (fieldValue instanceof Document subDoc) {
-        processRecord(subDoc, path + "." + key, name + "." + key, lookup);
-      } else if (fieldValue instanceof List list) {
-        processList(list, path + "." + key, name + "." + key, lookup);
-      } else {
-        // some sort of primitive
-        String finalPath = path + "." + key;
-        String finalName = name + "." + key;
-        if (!lookup.containsKey(finalPath)) {
-          MongoField newField = new MongoField();
-          int hopType = mongoToHopType(fieldValue);
-          // Following suit of mongoToHopType by interpreting null as String 
type
-          newField.mongoType = String.class;
-          if (fieldValue != null) {
-            newField.mongoType = fieldValue.getClass();
-          }
-          newField.fieldName = finalName;
-          newField.fieldPath = finalPath;
-          newField.hopType = IValueMeta.getTypeDescription(hopType);
-          newField.percentageOfSample = 1;
+      switch (fieldValue) {
+        case Document subDoc -> processRecord(subDoc, path + "." + key, name + 
"." + key, lookup);
+        case List<?> list -> processList(list, path + "." + key, name + "." + 
key, lookup);
+        default -> {
+          String finalPath = path + "." + key;
+          String finalName = name + "." + key;
 
-          lookup.put(finalPath, newField);
-        } else {
-          // update max indexes in array parts of name
           MongoField m = lookup.get(finalPath);
-          Class<?> fieldClass = String.class;
-          if (fieldValue != null) {
-            fieldClass = fieldValue.getClass();
+          Class<?> fieldClass = (fieldValue == null) ? String.class : 
fieldValue.getClass();
+
+          if (m == null) {
+            MongoField newField = new MongoField();
+            int hopType = mongoToHopType(fieldValue);
+
+            newField.mongoType = fieldClass;
+            newField.fieldName = finalName;
+            newField.fieldPath = finalPath;
+            newField.hopType = IValueMeta.getTypeDescription(hopType);
+            newField.percentageOfSample = 1;
+
+            lookup.put(finalPath, newField);
+          } else {
+            if (!m.mongoType.isAssignableFrom(fieldClass)) {
+              m.disparateTypes = true;
+            }
+
+            m.percentageOfSample++;
+            updateMinMaxArrayIndexes(m, finalName);
           }
-          if (!m.mongoType.isAssignableFrom(fieldClass)) {
-            m.disparateTypes = true;
-          }
-          m.percentageOfSample++;
-          updateMinMaxArrayIndexes(m, finalName);
         }
       }
     }
@@ -340,41 +335,38 @@ public class MongodbInputDiscoverFieldsImpl implements 
MongoDbInputDiscoverField
 
     for (int i = 0; i < list.size(); i++) {
       Object element = list.get(i);
+      switch (element) {
+        case Document doc ->
+            processRecord(doc, nonPrimitivePath, name + "[" + i + ":" + i + 
"]", lookup);
+        case List<?> subList ->
+            processList(subList, nonPrimitivePath, name + "[" + i + ":" + i + 
"]", lookup);
+        default -> {
+          // primitive handling
+          String finalPath = primitivePath + "[" + i + "]";
+          String finalName = name + "[" + i + "]";
 
-      if (element instanceof Document doc) {
-        processRecord(doc, nonPrimitivePath, name + "[" + i + ":" + i + "]", 
lookup);
-      } else if (element instanceof List subList) {
-        processList(subList, nonPrimitivePath, name + "[" + i + ":" + i + "]", 
lookup);
-      } else {
-        // some sort of primitive
-        String finalPath = primitivePath + "[" + i + "]";
-        String finalName = name + "[" + i + "]";
-        if (!lookup.containsKey(finalPath)) {
-          MongoField newField = new MongoField();
-          int hopType = mongoToHopType(element);
-          // Following suit of mongoToHopType by interpreting null as String 
type
-          newField.mongoType = String.class;
-          if (element != null) {
-            newField.mongoType = element.getClass();
-          }
-          newField.fieldName = finalPath;
-          newField.fieldPath = finalName;
-          newField.hopType = IValueMeta.getTypeDescription(hopType);
-          newField.percentageOfSample = 1;
-
-          lookup.put(finalPath, newField);
-        } else {
-          // update max indexes in array parts of name
           MongoField m = lookup.get(finalPath);
-          Class<?> elementClass = String.class;
-          if (element != null) {
-            elementClass = element.getClass();
-          }
-          if (!m.mongoType.isAssignableFrom(elementClass)) {
-            m.disparateTypes = true;
+          if (m == null) {
+            MongoField newField = new MongoField();
+            int hopType = mongoToHopType(element);
+
+            newField.mongoType = (element == null) ? String.class : 
element.getClass();
+            newField.fieldName = finalPath;
+            newField.fieldPath = finalName;
+            newField.hopType = IValueMeta.getTypeDescription(hopType);
+            newField.percentageOfSample = 1;
+
+            lookup.put(finalPath, newField);
+          } else {
+            Class<?> elementClass = (element == null) ? String.class : 
element.getClass();
+
+            if (!m.mongoType.isAssignableFrom(elementClass)) {
+              m.disparateTypes = true;
+            }
+
+            m.percentageOfSample++;
+            updateMinMaxArrayIndexes(m, finalName);
           }
-          m.percentageOfSample++;
-          updateMinMaxArrayIndexes(m, finalName);
         }
       }
     }
diff --git 
a/plugins/transforms/repeatfields/src/main/java/org/apache/hop/pipeline/transforms/repeatfields/RepeatFields.java
 
b/plugins/transforms/repeatfields/src/main/java/org/apache/hop/pipeline/transforms/repeatfields/RepeatFields.java
index 03508776aa..e13a0bc5e9 100644
--- 
a/plugins/transforms/repeatfields/src/main/java/org/apache/hop/pipeline/transforms/repeatfields/RepeatFields.java
+++ 
b/plugins/transforms/repeatfields/src/main/java/org/apache/hop/pipeline/transforms/repeatfields/RepeatFields.java
@@ -103,12 +103,12 @@ public class RepeatFields extends 
BaseTransform<RepeatFieldsMeta, RepeatFieldsDa
       // What do we need to do?
       switch (repeat.getType()) {
         case Previous -> targetValue = getPreviousValue(sourceValue, 
targetIndex);
-        case PreviousWhenNull -> {
-          // If the source value is null, take the previous value.
-          if (sourceValueMeta.isNull(sourceValue)) {
-            targetValue = getPreviousValue(null, targetIndex);
-          }
-        }
+        case PreviousWhenNull ->
+            // If the source value is null, take the previous value.
+            targetValue =
+                sourceValueMeta.isNull(sourceValue)
+                    ? getPreviousValue(null, targetIndex)
+                    : targetValue;
         case CurrentWhenIndicated ->
             targetValue = getCurrentValueWhenIndicated(i, repeat, r, 
sourceValue, targetIndex);
       }
diff --git 
a/plugins/transforms/verticabulkloader/src/main/java/org/apache/hop/pipeline/transforms/vertica/bulkloader/VerticaBulkLoader.java
 
b/plugins/transforms/verticabulkloader/src/main/java/org/apache/hop/pipeline/transforms/vertica/bulkloader/VerticaBulkLoader.java
index 156142af75..5e0dbe933f 100644
--- 
a/plugins/transforms/verticabulkloader/src/main/java/org/apache/hop/pipeline/transforms/vertica/bulkloader/VerticaBulkLoader.java
+++ 
b/plugins/transforms/verticabulkloader/src/main/java/org/apache/hop/pipeline/transforms/vertica/bulkloader/VerticaBulkLoader.java
@@ -34,7 +34,6 @@ import java.util.Date;
 import java.util.List;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
-import javax.sql.PooledConnection;
 import org.apache.commons.dbcp2.DelegatingConnection;
 import org.apache.hop.core.database.Database;
 import org.apache.hop.core.database.DatabaseMeta;
@@ -328,7 +327,7 @@ public class VerticaBulkLoader extends 
BaseTransform<VerticaBulkLoaderMeta, Vert
         return new ColumnSpec(ColumnSpec.VariableWidthType.VARCHAR, 
targetValueMeta.getLength());
       }
       case "DATE" -> {
-        if (inputValueMeta.isDate() == false) {
+        if (!inputValueMeta.isDate()) {
           throw new IllegalArgumentException(
               CONST_FIELD
                   + inputValueMeta.getName()
@@ -339,7 +338,7 @@ public class VerticaBulkLoader extends 
BaseTransform<VerticaBulkLoaderMeta, Vert
         }
       }
       case "TIME" -> {
-        if (inputValueMeta.isDate() == false) {
+        if (!inputValueMeta.isDate()) {
           throw new IllegalArgumentException(
               CONST_FIELD
                   + inputValueMeta.getName()
@@ -350,7 +349,7 @@ public class VerticaBulkLoader extends 
BaseTransform<VerticaBulkLoaderMeta, Vert
         }
       }
       case "TIMETZ" -> {
-        if (inputValueMeta.isDate() == false) {
+        if (!inputValueMeta.isDate()) {
           throw new IllegalArgumentException(
               CONST_FIELD
                   + inputValueMeta.getName()
@@ -361,7 +360,7 @@ public class VerticaBulkLoader extends 
BaseTransform<VerticaBulkLoaderMeta, Vert
         }
       }
       case "TIMESTAMP" -> {
-        if (inputValueMeta.isDate() == false) {
+        if (!inputValueMeta.isDate()) {
           throw new IllegalArgumentException(
               CONST_FIELD
                   + inputValueMeta.getName()
@@ -372,7 +371,7 @@ public class VerticaBulkLoader extends 
BaseTransform<VerticaBulkLoaderMeta, Vert
         }
       }
       case "TIMESTAMPTZ" -> {
-        if (inputValueMeta.isDate() == false) {
+        if (!inputValueMeta.isDate()) {
           throw new IllegalArgumentException(
               CONST_FIELD
                   + inputValueMeta.getName()
@@ -383,7 +382,7 @@ public class VerticaBulkLoader extends 
BaseTransform<VerticaBulkLoaderMeta, Vert
         }
       }
       case "INTERVAL", "INTERVAL DAY TO SECOND" -> {
-        if (inputValueMeta.isDate() == false) {
+        if (!inputValueMeta.isDate()) {
           throw new IllegalArgumentException(
               CONST_FIELD
                   + inputValueMeta.getName()
@@ -501,7 +500,7 @@ public class VerticaBulkLoader extends 
BaseTransform<VerticaBulkLoaderMeta, Vert
           .append("' ");
     }
 
-    // TODO: Should eventually get a preference for this, but for now, be 
backward compatible.
+    //  Should eventually get a preference for this, but for now, be backward 
compatible.
     sb.append("ENFORCELENGTH ");
 
     if (meta.isAbortOnError()) {
@@ -692,24 +691,22 @@ public class VerticaBulkLoader extends 
BaseTransform<VerticaBulkLoaderMeta, Vert
       if (conn instanceof VerticaConnection verticaConnection) {
         return verticaConnection;
       } else {
-        Connection underlyingConn = null;
-        if (conn instanceof DelegatingConnection delegatingConnection) {
-          DelegatingConnection pooledConn = delegatingConnection;
-          underlyingConn = pooledConn.getInnermostDelegate();
-        } else if (conn instanceof javax.sql.PooledConnection 
pooledConnection) {
-          PooledConnection pooledConn = pooledConnection;
-          underlyingConn = pooledConn.getConnection();
-        } else {
-          // Last resort - attempt to use unwrap to get at the connection.
-          try {
-            if (conn.isWrapperFor(VerticaConnection.class)) {
-              return conn.unwrap(VerticaConnection.class);
-            }
-          } catch (SQLException ignored) {
-            // ignored - the connection doesn't support unwrap or the 
connection cannot be
-            // unwrapped into a VerticaConnection.
-          }
-        }
+        Connection underlyingConn =
+            switch (conn) {
+              case DelegatingConnection<?> delegating -> 
delegating.getInnermostDelegate();
+              case javax.sql.PooledConnection pooled -> pooled.getConnection();
+              default -> {
+                try {
+                  if (conn.isWrapperFor(VerticaConnection.class)) {
+                    yield conn.unwrap(VerticaConnection.class);
+                  }
+                } catch (SQLException ignored) {
+                  // ignored - the connection doesn't support unwrap or the 
connection cannot be
+                  // unwrapped into a VerticaConnection.
+                }
+                yield null;
+              }
+            };
         if ((underlyingConn != null)
             && (underlyingConn instanceof VerticaConnection 
verticaConnection)) {
           return verticaConnection;
diff --git 
a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebService.java
 
b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebService.java
index b03b89c9bd..0563b5a917 100644
--- 
a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebService.java
+++ 
b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebService.java
@@ -406,31 +406,36 @@ public class WebService extends 
BaseTransform<WebServiceMeta, WebServiceData> {
                 cachedHttpClient.execute(vHttpMethod, cachedHostConfiguration);
         responseCode = httpResponse.getCode();
       }
-      if (responseCode == HttpStatus.SC_OK) {
-        httpEntity = httpResponse.getEntity();
-        charSet = StandardCharsets.UTF_8;
-        processRows(
-            httpEntity.getContent(),
-            rowData,
-            rowMeta,
-            
cachedWsdl.getWsdlTypes().isElementFormQualified(cachedWsdl.getTargetNamespace()),
-            charSet.toString());
-      } else if (responseCode == HttpStatus.SC_UNAUTHORIZED) {
-        throw new HopTransformException(
-            BaseMessages.getString(PKG, 
"WebServices.ERROR0011.Authentication", cachedURLService));
-      } else if (responseCode == HttpStatus.SC_NOT_FOUND) {
-        throw new HopTransformException(
-            BaseMessages.getString(PKG, "WebServices.ERROR0012.NotFound", 
cachedURLService));
-      } else if (responseCode == HttpStatus.SC_INTERNAL_SERVER_ERROR) {
-        throw new HopTransformException("Internal Server Error 500: " + 
cachedURLService);
-      } else {
-        throw new HopTransformException(
-            BaseMessages.getString(
-                PKG,
-                "WebServices.ERROR0001.ServerError",
-                Integer.toString(responseCode),
-                Const.NVL(readEntity(httpEntity, charSet.toString()), ""),
-                cachedURLService));
+
+      switch (responseCode) {
+        case HttpStatus.SC_OK -> {
+          httpEntity = httpResponse.getEntity();
+          charSet = StandardCharsets.UTF_8;
+
+          processRows(
+              httpEntity.getContent(),
+              rowData,
+              rowMeta,
+              
cachedWsdl.getWsdlTypes().isElementFormQualified(cachedWsdl.getTargetNamespace()),
+              charSet.toString());
+        }
+        case HttpStatus.SC_UNAUTHORIZED ->
+            throw new HopTransformException(
+                BaseMessages.getString(
+                    PKG, "WebServices.ERROR0011.Authentication", 
cachedURLService));
+        case HttpStatus.SC_NOT_FOUND ->
+            throw new HopTransformException(
+                BaseMessages.getString(PKG, "WebServices.ERROR0012.NotFound", 
cachedURLService));
+        case HttpStatus.SC_INTERNAL_SERVER_ERROR ->
+            throw new HopTransformException("Internal Server Error 500: " + 
cachedURLService);
+        default ->
+            throw new HopTransformException(
+                BaseMessages.getString(
+                    PKG,
+                    "WebServices.ERROR0001.ServerError",
+                    Integer.toString(responseCode),
+                    Const.NVL(readEntity(httpEntity, charSet.toString()), ""),
+                    cachedURLService));
       }
     } catch (UnknownHostException e) {
       throw new HopTransformException(
diff --git 
a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/wsdl/WsdlUtils.java
 
b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/wsdl/WsdlUtils.java
index 0ff317c4db..32a2275bd6 100644
--- 
a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/wsdl/WsdlUtils.java
+++ 
b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/wsdl/WsdlUtils.java
@@ -43,6 +43,8 @@ import org.apache.hop.core.exception.HopRuntimeException;
 /** Utilities for getting extensibility elements. */
 final class WsdlUtils {
 
+  private WsdlUtils() {}
+
   // extensibility element names
   private static final String SOAP_PORT_ADDRESS_NAME = "address";
   private static final String SOAP_BINDING_ELEMENT_NAME = "binding";
@@ -99,16 +101,17 @@ final class WsdlUtils {
         findExtensibilityElement((ElementExtensible) binding, 
SOAP_BINDING_ELEMENT_NAME);
 
     if (soapBindingElem != null) {
-      if (soapBindingElem instanceof SOAP12Binding soap12Binding) {
-        style = soap12Binding.getStyle();
-      } else if (soapBindingElem instanceof SOAPBinding soapBinding) {
-        style = soapBinding.getStyle();
-      } else {
-        throw new HopException(
-            "Binding type "
-                + soapBindingElem
-                + " encountered. The Web Service Lookup transform only 
supports SOAP Bindings!");
-      }
+      style =
+          switch (soapBindingElem) {
+            case SOAP12Binding soap12Binding -> soap12Binding.getStyle();
+            case SOAPBinding soapBinding -> soapBinding.getStyle();
+
+            default ->
+                throw new HopException(
+                    "Binding type "
+                        + soapBindingElem
+                        + " encountered. The Web Service Lookup transform only 
supports SOAP Bindings!");
+          };
     }
     return style;
   }
@@ -234,7 +237,7 @@ final class WsdlUtils {
               (ElementExtensible) bindingOutput, SOAP_HEADER_ELEMENT_NAME));
     }
 
-    HashSet<String> headerSet = new HashSet<>(headers.size());
+    HashSet<String> headerSet = HashSet.newHashSet(headers.size());
     for (ExtensibilityElement element : headers) {
       if (element instanceof SOAP12Header soap12Header) {
         headerSet.add(soap12Header.getPart());
diff --git 
a/ui/src/main/java/org/apache/hop/ui/core/dialog/EnterTextDialog.java 
b/ui/src/main/java/org/apache/hop/ui/core/dialog/EnterTextDialog.java
index 2a3e4ee5a7..5b81f3ee31 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/dialog/EnterTextDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/dialog/EnterTextDialog.java
@@ -237,12 +237,10 @@ public class EnterTextDialog extends Dialog {
     String newText = wDesc.getText();
     if (!newText.equals(origText)) {
       int save = HopGuiWorkflowGraph.showChangedWarning(shell, title);
-      if (save == SWT.CANCEL) {
-        e.doit = false;
-      } else if (save == SWT.YES) {
-        ok();
-      } else {
-        cancel();
+      switch (save) {
+        case SWT.CANCEL -> e.doit = false;
+        case SWT.YES -> ok();
+        default -> cancel();
       }
     } else {
       cancel();
diff --git 
a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/HopGuiTerminalPanel.java 
b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/HopGuiTerminalPanel.java
index e74d0e9bd3..c7c3be790b 100644
--- 
a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/HopGuiTerminalPanel.java
+++ 
b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/HopGuiTerminalPanel.java
@@ -801,7 +801,7 @@ public class HopGuiTerminalPanel extends Composite 
implements TabClosable {
           && fontSizeState.getStateMap() != null
           && fontSizeState.getStateMap().get("value") != null) {
         int saved = 
Const.toInt(fontSizeState.getStateMap().get("value").toString(), 100);
-        terminalFontSizePercent = Math.max(50, Math.min(200, saved));
+        terminalFontSizePercent = Math.clamp(saved, 50, 200);
       }
 
       if (auditList.getNames().isEmpty()) {
diff --git 
a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java 
b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java
index 983cbb7f12..4b4914ced8 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java
@@ -30,11 +30,11 @@ import java.awt.Frame;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.commons.lang3.reflect.MethodUtils;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.logging.LogChannel;
 import org.apache.hop.ui.core.PropsUi;
@@ -43,7 +43,6 @@ import org.eclipse.swt.awt.SWT_AWT;
 import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.TraverseEvent;
 import org.eclipse.swt.events.TraverseListener;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.FormAttachment;
@@ -76,7 +75,7 @@ public class JediTerminalWidget implements ITerminalWidget {
       Composite parent, String shellPath, String workingDirectory, int 
fontScalePercent) {
     this.shellPath = shellPath;
     this.workingDirectory = workingDirectory;
-    this.fontScalePercent.set(Math.max(50, Math.min(200, fontScalePercent)));
+    this.fontScalePercent.set(Math.clamp(fontScalePercent, 50, 200));
 
     createWidget(parent, parent.getDisplay());
 
@@ -143,42 +142,38 @@ public class JediTerminalWidget implements 
ITerminalWidget {
     // Defer focus until after terminal initialization
     bridgeComposite.addListener(
         SWT.FocusIn,
-        event -> {
-          display.asyncExec(
-              () -> {
-                if (bridgeComposite.isDisposed() || jediTermWidget == null) {
-                  return;
-                }
-                new Thread(
-                        () -> {
-                          try {
-                            java.awt.EventQueue.invokeLater(
-                                () -> {
-                                  if (jediTermWidget != null) {
-                                    try {
-                                      jediTermWidget.requestFocusInWindow();
-                                    } catch (Exception e) {
-                                      log.logDebug("Could not request focus: " 
+ e.getMessage());
+        event ->
+            display.asyncExec(
+                () -> {
+                  if (bridgeComposite.isDisposed() || jediTermWidget == null) {
+                    return;
+                  }
+                  new Thread(
+                          () -> {
+                            try {
+                              java.awt.EventQueue.invokeLater(
+                                  () -> {
+                                    if (jediTermWidget != null) {
+                                      try {
+                                        jediTermWidget.requestFocusInWindow();
+                                      } catch (Exception e) {
+                                        log.logDebug("Could not request focus: 
" + e.getMessage());
+                                      }
                                     }
-                                  }
-                                });
-                          } catch (Exception e) {
-                            log.logDebug("Error requesting AWT focus: " + 
e.getMessage());
-                          }
-                        })
-                    .start();
-              });
-        });
+                                  });
+                            } catch (Exception e) {
+                              log.logDebug("Error requesting AWT focus: " + 
e.getMessage());
+                            }
+                          })
+                      .start();
+                }));
 
     // Override tab listener and send it to jediTerm
     if (Const.isLinux()) {
       TraverseListener tabTraverse =
-          new TraverseListener() {
-            @Override
-            public void keyTraversed(TraverseEvent e) {
-              if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == 
SWT.TRAVERSE_TAB_PREVIOUS) {
-                e.doit = false;
-              }
+          e -> {
+            if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == 
SWT.TRAVERSE_TAB_PREVIOUS) {
+              e.doit = false;
             }
           };
       KeyAdapter tabKey =
@@ -299,7 +294,7 @@ public class JediTerminalWidget implements ITerminalWidget {
 
   @Override
   public void setFontScalePercent(int percent) {
-    int clamped = Math.max(50, Math.min(200, percent));
+    int clamped = Math.clamp(percent, 50, 200);
     fontScalePercent.set(clamped);
     if (jediTermWidget == null) {
       return;
@@ -313,9 +308,7 @@ public class JediTerminalWidget implements ITerminalWidget {
         () -> {
           try {
             TerminalPanel panel = jediTermWidget.getTerminalPanel();
-            Method reinit = 
TerminalPanel.class.getDeclaredMethod("reinitFontAndResize");
-            reinit.setAccessible(true);
-            reinit.invoke(panel);
+            MethodUtils.invokeMethod(panel, true, "reinitFontAndResize");
           } catch (Exception e) {
             log.logDebug("Terminal font reinit: " + e.getMessage());
           }

Reply via email to