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 c25b86e13c Issue #6988 : Hide ValueMetaBase constructor (#7387)
c25b86e13c is described below

commit c25b86e13cd5795c78eba581e4f59094e4f806e4
Author: Matt Casters <[email protected]>
AuthorDate: Mon Jul 13 15:56:45 2026 +0200

    Issue #6988 : Hide ValueMetaBase constructor (#7387)
    
    * issue #7118 : field selection for table view export to spreadsheet
    
    * issue #6988 : Visibility of ValueMetaBase Constructors
    
    * issue #6988 : Visibility of ValueMetaBase Constructors (spotless)
---
 .../main/java/org/apache/hop/core/row/RowMeta.java |  10 +-
 .../apache/hop/core/row/value/ValueMetaBase.java   |  87 +++++++-----
 .../java/org/apache/hop/core/util/TestUtil.java    |  82 +++++++++++
 .../java/org/apache/hop/core/ConditionTest.java    |   8 ++
 .../hop/core/database/BaseDatabaseMetaTest.java    |   2 +
 .../hop/core/database/DatabaseConnectingTest.java  |   4 +
 .../apache/hop/core/database/DatabaseMetaTest.java |   2 +
 .../org/apache/hop/core/database/DatabaseTest.java |   2 +
 .../extension/ExtensionPointIntegrationTest.java   |   2 +
 .../hop/core/row/RowMetaAddRemoveValueTest.java    |   2 +
 .../java/org/apache/hop/core/row/RowMetaTest.java  |  13 +-
 .../apache/hop/core/row/ValueMetaAndDataTests.java |   2 +
 .../core/row/value/ValueMetaAvroRecordTest.java    |   2 +
 .../hop/core/row/value/ValueMetaBaseTest.java      |   3 +
 .../hop/core/row/value/ValueMetaFactoryTest.java   |   2 +
 .../apache/hop/core/util/StringEvaluatorTest.java  |   2 +
 .../hop/core/variables/VariableRegistryTest.java   |   6 +-
 .../metadata/SerializableMetadataProviderTest.java |   2 +
 .../apache/hop/execution/ExecutionDataTest.java    |   2 +
 .../hop/pipeline/transform/BaseTransformTest.java  |  23 +--
 .../cratedb/CrateDBValueMetaBaseTest.java          |   9 +-
 .../greenplum/GreenplumValueMetaBaseTest.java      |   8 +-
 .../hop/databases/hive/HiveValueMetaBaseTest.java  |   3 +-
 .../databases/mysql/MySqlValueMetaBaseTest.java    |   3 +-
 .../postgresql/PostgreSqlValueMetaBaseTest.java    |   9 +-
 .../teradata/TeradataValueMetaBaseTest.java        |   8 +-
 .../vertica/Vertica5DatabaseMetaTest.java          |   2 +-
 .../writer/Cql3SsTableWriterTest.java              |   8 +-
 .../transforms/jdbcmetadata/JdbcMetadataMeta.java  |  21 ++-
 .../textfileoutput/TextFileOutputTest.java         |   4 +-
 .../transforms/webservices/WebServiceDialog.java   | 156 +++++++++++----------
 .../transforms/xml/xmloutput/XmlOutputMeta.java    |   4 +-
 32 files changed, 332 insertions(+), 161 deletions(-)

diff --git a/core/src/main/java/org/apache/hop/core/row/RowMeta.java 
b/core/src/main/java/org/apache/hop/core/row/RowMeta.java
index 5ea4ffdc5d..295720c15a 100644
--- a/core/src/main/java/org/apache/hop/core/row/RowMeta.java
+++ b/core/src/main/java/org/apache/hop/core/row/RowMeta.java
@@ -1294,8 +1294,14 @@ public class RowMeta implements IRowMeta {
 
     int nrValues = XmlHandler.countNodes(node, ValueMetaBase.XML_META_TAG);
     for (int i = 0; i < nrValues; i++) {
-      IValueMeta valueMetaSource =
-          new ValueMetaBase(XmlHandler.getSubNodeByNr(node, 
ValueMetaBase.XML_META_TAG, i));
+      Node valueMetaNode = XmlHandler.getSubNodeByNr(node, 
ValueMetaBase.XML_META_TAG, i);
+
+      // Load the base value metadata from XML
+      int valueType = 
ValueMetaBase.getType(XmlHandler.getTagValue(valueMetaNode, "type"));
+      IValueMeta valueMetaSource = ValueMetaFactory.createValueMeta(valueType);
+      ValueMetaBase.loadBaseValueMetaFromXml(valueMetaSource, valueMetaNode);
+
+      // Clone the metadata
       IValueMeta valueMeta =
           ValueMetaFactory.createValueMeta(
               valueMetaSource.getName(),
diff --git 
a/core/src/main/java/org/apache/hop/core/row/value/ValueMetaBase.java 
b/core/src/main/java/org/apache/hop/core/row/value/ValueMetaBase.java
index 3cdbeef757..5dae65ca35 100644
--- a/core/src/main/java/org/apache/hop/core/row/value/ValueMetaBase.java
+++ b/core/src/main/java/org/apache/hop/core/row/value/ValueMetaBase.java
@@ -284,27 +284,27 @@ public class ValueMetaBase implements IValueMeta {
 
   // endregion
 
-  public ValueMetaBase() {
+  protected ValueMetaBase() {
     this(null, IValueMeta.TYPE_NONE, -1, -1);
   }
 
-  public ValueMetaBase(String name) {
+  protected ValueMetaBase(String name) {
     this(name, IValueMeta.TYPE_NONE, -1, -1);
   }
 
-  public ValueMetaBase(String name, int type) {
+  protected ValueMetaBase(String name, int type) {
     this(name, type, -1, -1);
   }
 
-  public ValueMetaBase(String name, int type, Comparator<Object> comparator) {
+  protected ValueMetaBase(String name, int type, Comparator<Object> 
comparator) {
     this(name, type, -1, -1, comparator);
   }
 
-  public ValueMetaBase(String name, int type, int length, int precision) {
+  protected ValueMetaBase(String name, int type, int length, int precision) {
     this(name, type, length, precision, null);
   }
 
-  public ValueMetaBase(
+  protected ValueMetaBase(
       String name, int type, int length, int precision, Comparator<Object> 
comparator) {
     this.name = name;
     this.type = type;
@@ -336,17 +336,21 @@ public class ValueMetaBase implements IValueMeta {
     setDefaultConversionMask();
   }
 
-  public ValueMetaBase(Node node) throws HopException {
+  protected ValueMetaBase(Node node) throws HopException {
     this();
+    this.type = getType(XmlHandler.getTagValue(node, "type"));
+    loadBaseValueMetaFromXml(this, node);
+  }
 
-    type = getType(XmlHandler.getTagValue(node, "type"));
-    storageType = getStorageType(XmlHandler.getTagValue(node, "storagetype"));
+  public static void loadBaseValueMetaFromXml(IValueMeta valueMeta, Node node) 
throws HopException {
+    int storageType = getStorageType(XmlHandler.getTagValue(node, 
"storagetype"));
+    valueMeta.setStorageType(storageType);
 
     switch (storageType) {
       case STORAGE_TYPE_INDEXED:
         Node indexNode = XmlHandler.getSubNode(node, CONST_INDEX);
         int nrIndexes = XmlHandler.countNodes(indexNode, CONST_VALUE);
-        index = new Object[nrIndexes];
+        Object[] index = new Object[nrIndexes];
 
         for (int i = 0; i < index.length; i++) {
           Node valueNode = XmlHandler.getSubNodeByNr(indexNode, CONST_VALUE, 
i);
@@ -354,7 +358,7 @@ public class ValueMetaBase implements IValueMeta {
           if (Utils.isEmpty(valueString)) {
             index[i] = null;
           } else {
-            switch (type) {
+            switch (valueMeta.getType()) {
               case TYPE_STRING:
                 index[i] = valueString;
                 break;
@@ -378,9 +382,9 @@ public class ValueMetaBase implements IValueMeta {
                 break;
               default:
                 throw new HopException(
-                    this
+                    valueMeta
                         + " : Unable to de-serialize index storage type from 
XML for data type "
-                        + getType());
+                        + valueMeta.getTypeDesc());
             }
           }
         }
@@ -392,7 +396,10 @@ public class ValueMetaBase implements IValueMeta {
         Node storageMetaNode = XmlHandler.getSubNode(node, CONST_STORAGE_META);
         Node storageValueMetaNode = XmlHandler.getSubNode(storageMetaNode, 
XML_META_TAG);
         if (storageValueMetaNode != null) {
-          storageMetadata = new ValueMetaBase(storageValueMetaNode);
+          int storageValueType = 
getType(XmlHandler.getTagValue(storageValueMetaNode, "type"));
+          IValueMeta storageValueMeta = 
ValueMetaFactory.createValueMeta(storageValueType);
+          loadBaseValueMetaFromXml(storageValueMeta, storageValueMetaNode);
+          valueMeta.setStorageMetadata(storageValueMeta);
         }
         break;
 
@@ -400,36 +407,42 @@ public class ValueMetaBase implements IValueMeta {
         break;
     }
 
-    name = XmlHandler.getTagValue(node, "name");
-    length = Integer.parseInt(XmlHandler.getTagValue(node, CONST_LENGTH));
-    precision = Integer.parseInt(XmlHandler.getTagValue(node, 
CONST_PRECISION));
-    origin = XmlHandler.getTagValue(node, "origin");
-    comments = XmlHandler.getTagValue(node, "comments");
-    conversionMask = XmlHandler.getTagValue(node, "conversion_Mask");
-    decimalSymbol = XmlHandler.getTagValue(node, "decimal_symbol");
-    groupingSymbol = XmlHandler.getTagValue(node, "grouping_symbol");
-    currencySymbol = XmlHandler.getTagValue(node, "currency_symbol");
-    trimType = getTrimTypeByCode(XmlHandler.getTagValue(node, "trim_type"));
-    caseInsensitive = "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"case_insensitive"));
-    collatorDisabled = "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"collator_disabled"));
+    valueMeta.setName(XmlHandler.getTagValue(node, "name"));
+    valueMeta.setLength(Integer.parseInt(XmlHandler.getTagValue(node, 
CONST_LENGTH)));
+    valueMeta.setPrecision(Integer.parseInt(XmlHandler.getTagValue(node, 
CONST_PRECISION)));
+    valueMeta.setOrigin(XmlHandler.getTagValue(node, "origin"));
+    valueMeta.setComments(XmlHandler.getTagValue(node, "comments"));
+    valueMeta.setConversionMask(XmlHandler.getTagValue(node, 
"conversion_Mask"));
+    valueMeta.setDecimalSymbol(XmlHandler.getTagValue(node, "decimal_symbol"));
+    valueMeta.setGroupingSymbol(XmlHandler.getTagValue(node, 
"grouping_symbol"));
+    valueMeta.setCurrencySymbol(XmlHandler.getTagValue(node, 
"currency_symbol"));
+    valueMeta.setTrimType(getTrimTypeByCode(XmlHandler.getTagValue(node, 
"trim_type")));
+    valueMeta.setCaseInsensitive(
+        "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"case_insensitive")));
+    valueMeta.setCollatorDisabled(
+        "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"collator_disabled")));
     if (XmlHandler.getTagValue(node, CONST_COLLATOR_STRENGTH) != null) {
-      collatorStrength = Integer.parseInt(XmlHandler.getTagValue(node, 
CONST_COLLATOR_STRENGTH));
-    }
-    sortedDescending = "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"sort_descending"));
-    outputPaddingEnabled = "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"output_padding"));
-    dateFormatLenient = "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"date_format_lenient"));
+      valueMeta.setCollatorStrength(
+          Integer.parseInt(XmlHandler.getTagValue(node, 
CONST_COLLATOR_STRENGTH)));
+    }
+    valueMeta.setSortedDescending(
+        "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, "sort_descending")));
+    valueMeta.setOutputPaddingEnabled(
+        "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, "output_padding")));
+    valueMeta.setDateFormatLenient(
+        "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"date_format_lenient")));
     String dateFormatLocaleString = XmlHandler.getTagValue(node, 
"date_format_locale");
     if (!Utils.isEmpty(dateFormatLocaleString)) {
-      dateFormatLocale = EnvUtil.createLocale(dateFormatLocaleString);
+      
valueMeta.setDateFormatLocale(EnvUtil.createLocale(dateFormatLocaleString));
     }
     String dateTimeZoneString = XmlHandler.getTagValue(node, 
"date_format_timezone");
     if (!Utils.isEmpty(dateTimeZoneString)) {
-      dateFormatTimeZone = EnvUtil.createTimeZone(dateTimeZoneString);
+      
valueMeta.setDateFormatTimeZone(EnvUtil.createTimeZone(dateTimeZoneString));
     } else {
-      dateFormatTimeZone = TimeZone.getDefault();
+      valueMeta.setDateFormatTimeZone(TimeZone.getDefault());
     }
-    lenientStringToNumber =
-        "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"lenient_string_to_number"));
+    valueMeta.setLenientStringToNumber(
+        "Y".equalsIgnoreCase(XmlHandler.getTagValue(node, 
"lenient_string_to_number")));
   }
 
   /**
@@ -442,7 +455,7 @@ public class ValueMetaBase implements IValueMeta {
    *     loadMetaData() method.
    */
   @Deprecated(since = "2.0")
-  public ValueMetaBase(DataInputStream inputStream) throws HopFileException {
+  protected ValueMetaBase(DataInputStream inputStream) throws HopFileException 
{
     this();
     try {
       type = inputStream.readInt();
diff --git a/core/src/main/java/org/apache/hop/core/util/TestUtil.java 
b/core/src/main/java/org/apache/hop/core/util/TestUtil.java
new file mode 100644
index 0000000000..ad8573a994
--- /dev/null
+++ b/core/src/main/java/org/apache/hop/core/util/TestUtil.java
@@ -0,0 +1,82 @@
+/*
+ * 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.util;
+
+import org.apache.hop.core.HopClientEnvironment;
+import org.apache.hop.core.database.DatabaseMetaPlugin;
+import org.apache.hop.core.database.DatabasePluginType;
+import org.apache.hop.core.database.NoneDatabaseMeta;
+import org.apache.hop.core.encryption.HopTwoWayPasswordEncoder;
+import org.apache.hop.core.encryption.TwoWayPasswordEncoderPlugin;
+import org.apache.hop.core.encryption.TwoWayPasswordEncoderPluginType;
+import org.apache.hop.core.exception.HopException;
+import org.apache.hop.core.plugins.PluginRegistry;
+import org.apache.hop.core.row.value.ValueMetaAvroRecord;
+import org.apache.hop.core.row.value.ValueMetaBigNumber;
+import org.apache.hop.core.row.value.ValueMetaBinary;
+import org.apache.hop.core.row.value.ValueMetaBoolean;
+import org.apache.hop.core.row.value.ValueMetaDate;
+import org.apache.hop.core.row.value.ValueMetaInteger;
+import org.apache.hop.core.row.value.ValueMetaInternetAddress;
+import org.apache.hop.core.row.value.ValueMetaNone;
+import org.apache.hop.core.row.value.ValueMetaNumber;
+import org.apache.hop.core.row.value.ValueMetaPlugin;
+import org.apache.hop.core.row.value.ValueMetaPluginType;
+import org.apache.hop.core.row.value.ValueMetaSerializable;
+import org.apache.hop.core.row.value.ValueMetaString;
+import org.apache.hop.core.row.value.ValueMetaTimestamp;
+
+public class TestUtil {
+  public static void registerTestPluginTypes() throws HopException {
+    HopClientEnvironment.init();
+    PluginRegistry registry = PluginRegistry.getInstance();
+    registry.registerPluginClass(
+        ValueMetaNone.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaString.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaInteger.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaNumber.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaDate.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaBigNumber.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaBoolean.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaSerializable.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaBinary.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaTimestamp.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaInternetAddress.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+    registry.registerPluginClass(
+        ValueMetaAvroRecord.class.getName(), ValueMetaPluginType.class, 
ValueMetaPlugin.class);
+
+    registry.registerPluginClass(
+        NoneDatabaseMeta.class.getName(), DatabasePluginType.class, 
DatabaseMetaPlugin.class);
+
+    registry.registerPluginClass(
+        HopTwoWayPasswordEncoder.class.getName(),
+        TwoWayPasswordEncoderPluginType.class,
+        TwoWayPasswordEncoderPlugin.class);
+  }
+}
diff --git a/core/src/test/java/org/apache/hop/core/ConditionTest.java 
b/core/src/test/java/org/apache/hop/core/ConditionTest.java
index 8081c9c176..eb911d84d0 100644
--- a/core/src/test/java/org/apache/hop/core/ConditionTest.java
+++ b/core/src/test/java/org/apache/hop/core/ConditionTest.java
@@ -29,8 +29,10 @@ import org.apache.hop.core.row.RowMeta;
 import org.apache.hop.core.row.ValueMetaAndData;
 import org.apache.hop.core.row.value.ValueMetaInteger;
 import org.apache.hop.core.row.value.ValueMetaNumber;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.core.xml.XmlHandler;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.w3c.dom.Document;
@@ -39,6 +41,12 @@ import org.w3c.dom.Node;
 @ExtendWith(RestoreHopEnvironmentExtension.class)
 class ConditionTest {
 
+  @BeforeAll
+  static void setUpClass() throws Exception {
+    HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
+  }
+
   @Test
   void testNegatedTrueFuncEvaluatesAsFalse() throws Exception {
     String left = "test_filed";
diff --git 
a/core/src/test/java/org/apache/hop/core/database/BaseDatabaseMetaTest.java 
b/core/src/test/java/org/apache/hop/core/database/BaseDatabaseMetaTest.java
index 9f21a90a75..784f464b74 100644
--- a/core/src/test/java/org/apache/hop/core/database/BaseDatabaseMetaTest.java
+++ b/core/src/test/java/org/apache/hop/core/database/BaseDatabaseMetaTest.java
@@ -36,6 +36,7 @@ import org.apache.hop.core.exception.HopRuntimeException;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaString;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.core.variables.Variables;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
 import org.junit.jupiter.api.BeforeEach;
@@ -53,6 +54,7 @@ class BaseDatabaseMetaTest {
     nativeMeta = new ConcreteBaseDatabaseMeta();
     nativeMeta.setAccessType(DatabaseMeta.TYPE_ACCESS_NATIVE);
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @Test
diff --git 
a/core/src/test/java/org/apache/hop/core/database/DatabaseConnectingTest.java 
b/core/src/test/java/org/apache/hop/core/database/DatabaseConnectingTest.java
index 2c70540978..47e04a0e4a 100644
--- 
a/core/src/test/java/org/apache/hop/core/database/DatabaseConnectingTest.java
+++ 
b/core/src/test/java/org/apache/hop/core/database/DatabaseConnectingTest.java
@@ -38,6 +38,7 @@ import org.apache.hop.core.HopClientEnvironment;
 import org.apache.hop.core.database.map.DatabaseConnectionMap;
 import org.apache.hop.core.exception.HopDatabaseException;
 import org.apache.hop.core.logging.ILoggingObject;
+import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.variables.Variables;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
@@ -55,6 +56,9 @@ class DatabaseConnectingTest {
   @BeforeAll
   static void setUp() throws Exception {
     HopClientEnvironment.init();
+    PluginRegistry registry = PluginRegistry.getInstance();
+    registry.registerPluginClass(
+        NoneDatabaseMeta.class.getName(), DatabasePluginType.class, 
DatabaseMetaPlugin.class);
   }
 
   @AfterEach
diff --git 
a/core/src/test/java/org/apache/hop/core/database/DatabaseMetaTest.java 
b/core/src/test/java/org/apache/hop/core/database/DatabaseMetaTest.java
index 4269c950e8..44b095e82a 100644
--- a/core/src/test/java/org/apache/hop/core/database/DatabaseMetaTest.java
+++ b/core/src/test/java/org/apache/hop/core/database/DatabaseMetaTest.java
@@ -46,6 +46,7 @@ import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.RowMeta;
 import org.apache.hop.core.row.value.ValueMetaNone;
 import org.apache.hop.core.row.value.ValueMetaPluginType;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.variables.Variables;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
@@ -70,6 +71,7 @@ class DatabaseMetaTest {
     DatabasePluginType.getInstance().searchPlugins();
     ValueMetaPluginType.getInstance().searchPlugins();
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @BeforeEach
diff --git a/core/src/test/java/org/apache/hop/core/database/DatabaseTest.java 
b/core/src/test/java/org/apache/hop/core/database/DatabaseTest.java
index 4debf7e507..77b33eaf3c 100644
--- a/core/src/test/java/org/apache/hop/core/database/DatabaseTest.java
+++ b/core/src/test/java/org/apache/hop/core/database/DatabaseTest.java
@@ -57,6 +57,7 @@ import org.apache.hop.core.logging.LogLevel;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.value.ValueMetaNumber;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.variables.Variables;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
@@ -96,6 +97,7 @@ class DatabaseTest {
   @BeforeAll
   static void setUpClass() throws Exception {
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @BeforeEach
diff --git 
a/core/src/test/java/org/apache/hop/core/extension/ExtensionPointIntegrationTest.java
 
b/core/src/test/java/org/apache/hop/core/extension/ExtensionPointIntegrationTest.java
index 0ad736e78f..88f5e61ec1 100644
--- 
a/core/src/test/java/org/apache/hop/core/extension/ExtensionPointIntegrationTest.java
+++ 
b/core/src/test/java/org/apache/hop/core/extension/ExtensionPointIntegrationTest.java
@@ -44,6 +44,7 @@ import org.apache.hop.core.exception.HopPluginException;
 import org.apache.hop.core.logging.ILogChannel;
 import org.apache.hop.core.plugins.IPlugin;
 import org.apache.hop.core.plugins.PluginRegistry;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -67,6 +68,7 @@ class ExtensionPointIntegrationTest {
     }
 
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @Test
diff --git 
a/core/src/test/java/org/apache/hop/core/row/RowMetaAddRemoveValueTest.java 
b/core/src/test/java/org/apache/hop/core/row/RowMetaAddRemoveValueTest.java
index 4e39c49205..a16ec13461 100644
--- a/core/src/test/java/org/apache/hop/core/row/RowMetaAddRemoveValueTest.java
+++ b/core/src/test/java/org/apache/hop/core/row/RowMetaAddRemoveValueTest.java
@@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import org.apache.hop.core.HopClientEnvironment;
 import org.apache.hop.core.exception.HopValueException;
 import org.apache.hop.core.row.value.ValueMetaFactory;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -33,6 +34,7 @@ class RowMetaAddRemoveValueTest {
   @BeforeAll
   static void setUpClass() throws Exception {
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @Test
diff --git a/core/src/test/java/org/apache/hop/core/row/RowMetaTest.java 
b/core/src/test/java/org/apache/hop/core/row/RowMetaTest.java
index e2168b1e6b..fa7376e3c7 100644
--- a/core/src/test/java/org/apache/hop/core/row/RowMetaTest.java
+++ b/core/src/test/java/org/apache/hop/core/row/RowMetaTest.java
@@ -38,12 +38,13 @@ import org.apache.commons.io.IOUtils;
 import org.apache.hop.core.HopClientEnvironment;
 import org.apache.hop.core.exception.HopPluginException;
 import org.apache.hop.core.exception.HopValueException;
-import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.row.value.ValueMetaDate;
 import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaInteger;
 import org.apache.hop.core.row.value.ValueMetaString;
 import org.apache.hop.core.row.value.ValueMetaTimestamp;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.core.xml.XmlHandler;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
 import org.junit.jupiter.api.BeforeAll;
@@ -66,6 +67,8 @@ class RowMetaTest {
   @BeforeAll
   static void setUpBeforeClass() throws Exception {
     HopClientEnvironment.init();
+    PluginRegistry registry = PluginRegistry.getInstance();
+    TestUtil.registerTestPluginTypes();
   }
 
   @BeforeEach
@@ -172,8 +175,8 @@ class RowMetaTest {
   }
 
   @Test
-  void testAddValueMetaNullName() {
-    IValueMeta vmi = new ValueMetaBase();
+  void testAddValueMetaNullName() throws HopPluginException {
+    IValueMeta vmi = ValueMetaFactory.createValueMeta(IValueMeta.TYPE_NONE);
     rowMeta.addValueMeta(vmi);
     assertTrue(rowMeta.getValueMetaList().contains(vmi));
   }
@@ -216,8 +219,8 @@ class RowMetaTest {
   }
 
   @Test
-  void testSetValueMetaNullName() {
-    IValueMeta vmi = new ValueMetaBase();
+  void testSetValueMetaNullName() throws HopPluginException {
+    IValueMeta vmi = ValueMetaFactory.createValueMeta(IValueMeta.TYPE_NONE);
     rowMeta.setValueMeta(1, vmi);
     assertEquals(1, rowMeta.getValueMetaList().indexOf(vmi));
     assertEquals(3, rowMeta.size(), "There is still 3 elements:");
diff --git 
a/core/src/test/java/org/apache/hop/core/row/ValueMetaAndDataTests.java 
b/core/src/test/java/org/apache/hop/core/row/ValueMetaAndDataTests.java
index 446c8fc970..dcdb6586ad 100644
--- a/core/src/test/java/org/apache/hop/core/row/ValueMetaAndDataTests.java
+++ b/core/src/test/java/org/apache/hop/core/row/ValueMetaAndDataTests.java
@@ -33,6 +33,7 @@ import org.apache.hop.core.row.value.ValueMetaInteger;
 import org.apache.hop.core.row.value.ValueMetaNumber;
 import org.apache.hop.core.row.value.ValueMetaSerializable;
 import org.apache.hop.core.row.value.ValueMetaString;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.core.xml.XmlHandler;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
 import org.junit.jupiter.api.BeforeAll;
@@ -47,6 +48,7 @@ class ValueMetaAndDataTests {
   @BeforeAll
   static void beforeClassSetUp() throws HopException {
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @Test
diff --git 
a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaAvroRecordTest.java 
b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaAvroRecordTest.java
index bcb110aa31..3db6b47748 100644
--- 
a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaAvroRecordTest.java
+++ 
b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaAvroRecordTest.java
@@ -33,6 +33,7 @@ import org.apache.avro.generic.GenericData;
 import org.apache.avro.generic.GenericRecord;
 import org.apache.avro.util.Utf8;
 import org.apache.hop.core.HopClientEnvironment;
+import org.apache.hop.core.util.TestUtil;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.junit.jupiter.api.BeforeAll;
@@ -95,6 +96,7 @@ class ValueMetaAvroRecordTest {
   @BeforeAll
   static void before() throws Exception {
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @Test
diff --git 
a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaBaseTest.java 
b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaBaseTest.java
index b61a2cdf17..1d09e760cb 100644
--- a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaBaseTest.java
+++ b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaBaseTest.java
@@ -70,6 +70,7 @@ import org.apache.hop.core.logging.HopLoggingEvent;
 import org.apache.hop.core.logging.IHopLoggingEventListener;
 import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.row.IValueMeta;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.variables.Variables;
 import org.apache.hop.core.xml.XmlHandler;
@@ -120,6 +121,8 @@ class ValueMetaBaseTest {
     PluginRegistry.addPluginType(DatabasePluginType.getInstance());
     PluginRegistry.init();
     HopLogStore.init();
+
+    TestUtil.registerTestPluginTypes();
   }
 
   @BeforeEach
diff --git 
a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaFactoryTest.java 
b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaFactoryTest.java
index c867346c11..3bea13e04e 100644
--- a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaFactoryTest.java
+++ b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaFactoryTest.java
@@ -37,6 +37,7 @@ import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.exception.HopPluginException;
 import org.apache.hop.core.exception.HopValueException;
 import org.apache.hop.core.row.IValueMeta;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -49,6 +50,7 @@ class ValueMetaFactoryTest {
   @BeforeAll
   static void beforeClassSetUp() throws HopException {
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @Test
diff --git 
a/core/src/test/java/org/apache/hop/core/util/StringEvaluatorTest.java 
b/core/src/test/java/org/apache/hop/core/util/StringEvaluatorTest.java
index 51ed53f767..9d69e64fcd 100644
--- a/core/src/test/java/org/apache/hop/core/util/StringEvaluatorTest.java
+++ b/core/src/test/java/org/apache/hop/core/util/StringEvaluatorTest.java
@@ -49,6 +49,8 @@ class StringEvaluatorTest {
   @BeforeEach
   void setUp() throws HopException {
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
+
     evaluator = new StringEvaluator();
     Locale.setDefault(Locale.US);
   }
diff --git 
a/core/src/test/java/org/apache/hop/core/variables/VariableRegistryTest.java 
b/core/src/test/java/org/apache/hop/core/variables/VariableRegistryTest.java
index 32d3552c9b..0d16ae3104 100644
--- a/core/src/test/java/org/apache/hop/core/variables/VariableRegistryTest.java
+++ b/core/src/test/java/org/apache/hop/core/variables/VariableRegistryTest.java
@@ -22,6 +22,8 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import org.apache.hop.core.Const;
+import org.apache.hop.core.HopClientEnvironment;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -32,8 +34,10 @@ class VariableRegistryTest {
 
   @Test
   void testInit() throws Exception {
-    VariableRegistry.init();
+    HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
 
+    VariableRegistry.init();
     VariableRegistry registry = VariableRegistry.getInstance();
     DescribedVariable describedVariable =
         registry.findDescribedVariable(Const.HOP_PASSWORD_ENCODER_PLUGIN);
diff --git 
a/engine/src/test/java/org/apache/hop/core/metadata/SerializableMetadataProviderTest.java
 
b/engine/src/test/java/org/apache/hop/core/metadata/SerializableMetadataProviderTest.java
index d7593d37f9..0b6f9c6f70 100644
--- 
a/engine/src/test/java/org/apache/hop/core/metadata/SerializableMetadataProviderTest.java
+++ 
b/engine/src/test/java/org/apache/hop/core/metadata/SerializableMetadataProviderTest.java
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import org.apache.hop.core.HopEnvironment;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.metadata.api.IHopMetadataSerializer;
 import org.apache.hop.metadata.serializer.memory.MemoryMetadataProvider;
 import org.apache.hop.server.HopServerMeta;
@@ -32,6 +33,7 @@ class SerializableMetadataProviderTest {
   @BeforeEach
   void before() throws Exception {
     HopEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @Test
diff --git 
a/engine/src/test/java/org/apache/hop/execution/ExecutionDataTest.java 
b/engine/src/test/java/org/apache/hop/execution/ExecutionDataTest.java
index 9764cbae40..a87ca1d62c 100644
--- a/engine/src/test/java/org/apache/hop/execution/ExecutionDataTest.java
+++ b/engine/src/test/java/org/apache/hop/execution/ExecutionDataTest.java
@@ -32,6 +32,7 @@ import org.apache.hop.core.json.HopJson;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.RowBuffer;
 import org.apache.hop.core.row.RowMetaBuilder;
+import org.apache.hop.core.util.TestUtil;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -41,6 +42,7 @@ class ExecutionDataTest {
   void before() throws Exception {
     // Load data type plugins
     HopClientEnvironment.init();
+    TestUtil.registerTestPluginTypes();
   }
 
   @Test
diff --git 
a/engine/src/test/java/org/apache/hop/pipeline/transform/BaseTransformTest.java 
b/engine/src/test/java/org/apache/hop/pipeline/transform/BaseTransformTest.java
index 4a0a343bd2..9410f39796 100644
--- 
a/engine/src/test/java/org/apache/hop/pipeline/transform/BaseTransformTest.java
+++ 
b/engine/src/test/java/org/apache/hop/pipeline/transform/BaseTransformTest.java
@@ -44,6 +44,7 @@ import org.apache.hop.core.QueueRowSet;
 import org.apache.hop.core.ResultFile;
 import org.apache.hop.core.SingleRowRowSet;
 import org.apache.hop.core.exception.HopException;
+import org.apache.hop.core.exception.HopPluginException;
 import org.apache.hop.core.exception.HopTransformException;
 import org.apache.hop.core.fileinput.NonAccessibleFileObject;
 import org.apache.hop.core.logging.ILogChannel;
@@ -52,9 +53,10 @@ import org.apache.hop.core.logging.LogLevel;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.RowMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaInteger;
 import org.apache.hop.core.row.value.ValueMetaString;
+import org.apache.hop.core.util.TestUtil;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.pipeline.Pipeline;
 import org.apache.hop.pipeline.engines.local.LocalPipelineEngine;
@@ -75,7 +77,8 @@ class BaseTransformTest {
   @Mock private IRowHandler rowHandler;
 
   @BeforeEach
-  void setup() {
+  void setup() throws HopException {
+    TestUtil.registerTestPluginTypes();
     mockHelper =
         new TransformMockHelper<>("BASE TRANSFORM", ITransformMeta.class, 
ITransformData.class);
 
@@ -386,7 +389,7 @@ class BaseTransformTest {
   }
 
   @Test
-  void notEmptyFieldName() throws HopTransformException {
+  void notEmptyFieldName() throws HopException {
     BaseTransform<ITransformMeta, ITransformData> baseTransform =
         new BaseTransform<>(
             mockHelper.transformMeta,
@@ -400,13 +403,13 @@ class BaseTransformTest {
     baseTransform.setRowHandler(rowHandler);
 
     IRowMeta rowMeta = new RowMeta();
-    rowMeta.addValueMeta(new ValueMetaBase("name", IValueMeta.TYPE_INTEGER));
+    rowMeta.addValueMeta(ValueMetaFactory.createValueMeta("name", 
IValueMeta.TYPE_INTEGER));
 
     baseTransform.putRow(rowMeta, new Object[] {0});
   }
 
   @Test
-  void nullFieldName() {
+  void nullFieldName() throws HopPluginException {
     BaseTransform<ITransformMeta, ITransformData> baseTransform =
         new BaseTransform<>(
             mockHelper.transformMeta,
@@ -421,14 +424,14 @@ class BaseTransformTest {
     baseTransform.setAllowEmptyFieldNamesAndTypes(false);
 
     IRowMeta rowMeta = new RowMeta();
-    rowMeta.addValueMeta(new ValueMetaBase(null, IValueMeta.TYPE_INTEGER));
+    rowMeta.addValueMeta(ValueMetaFactory.createValueMeta(null, 
IValueMeta.TYPE_INTEGER));
 
     assertThrows(
         HopTransformException.class, () -> baseTransform.putRow(rowMeta, new 
Object[] {0}));
   }
 
   @Test
-  void emptyFieldName() {
+  void emptyFieldName() throws HopPluginException {
     BaseTransform<ITransformMeta, ITransformData> baseTransform =
         new BaseTransform<>(
             mockHelper.transformMeta,
@@ -441,14 +444,14 @@ class BaseTransformTest {
     baseTransform.setAllowEmptyFieldNamesAndTypes(false);
 
     IRowMeta rowMeta = new RowMeta();
-    rowMeta.addValueMeta(new ValueMetaBase("", IValueMeta.TYPE_INTEGER));
+    rowMeta.addValueMeta(ValueMetaFactory.createValueMeta("", 
IValueMeta.TYPE_INTEGER));
 
     assertThrows(
         HopTransformException.class, () -> baseTransform.putRow(rowMeta, new 
Object[] {0}));
   }
 
   @Test
-  void blankFieldName() {
+  void blankFieldName() throws HopPluginException {
     BaseTransform<ITransformMeta, ITransformData> baseTransform =
         new BaseTransform<>(
             mockHelper.transformMeta,
@@ -461,7 +464,7 @@ class BaseTransformTest {
     baseTransform.setAllowEmptyFieldNamesAndTypes(false);
 
     IRowMeta rowMeta = new RowMeta();
-    rowMeta.addValueMeta(new ValueMetaBase("  ", IValueMeta.TYPE_INTEGER));
+    rowMeta.addValueMeta(ValueMetaFactory.createValueMeta("  ", 
IValueMeta.TYPE_INTEGER));
 
     assertThrows(
         HopTransformException.class, () -> baseTransform.putRow(rowMeta, new 
Object[] {0}));
diff --git 
a/plugins/databases/cratedb/src/test/java/org/apache/hop/databases/cratedb/CrateDBValueMetaBaseTest.java
 
b/plugins/databases/cratedb/src/test/java/org/apache/hop/databases/cratedb/CrateDBValueMetaBaseTest.java
index ce098d16ca..2471f79cbc 100644
--- 
a/plugins/databases/cratedb/src/test/java/org/apache/hop/databases/cratedb/CrateDBValueMetaBaseTest.java
+++ 
b/plugins/databases/cratedb/src/test/java/org/apache/hop/databases/cratedb/CrateDBValueMetaBaseTest.java
@@ -158,7 +158,8 @@ class CrateDBValueMetaBaseTest {
 
     String data = StringUtils.repeat("*", 2048);
 
-    ValueMetaBase valueMetaString = new ValueMetaBase(LOG_FIELD, 
IValueMeta.TYPE_STRING, 2048, 0);
+    IValueMeta valueMetaString =
+        ValueMetaFactory.createValueMeta(LOG_FIELD, IValueMeta.TYPE_STRING, 
2048, 0);
     valueMetaString.setPreparedStatementValue(databaseMetaSpy, 
preparedStatementMock, 0, data);
 
     verify(preparedStatementMock, never()).setString(0, data);
@@ -171,9 +172,9 @@ class CrateDBValueMetaBaseTest {
         events.get(0).getMessage().toString());
   }
 
-  private void initValueMeta(BaseDatabaseMeta dbMeta, int length, Object data)
-      throws HopDatabaseException {
-    ValueMetaBase valueMetaString = new ValueMetaBase(LOG_FIELD, 
IValueMeta.TYPE_STRING, length, 0);
+  private void initValueMeta(BaseDatabaseMeta dbMeta, int length, Object data) 
throws HopException {
+    IValueMeta valueMetaString =
+        ValueMetaFactory.createValueMeta(LOG_FIELD, IValueMeta.TYPE_STRING, 
length, 0);
     databaseMetaSpy.setIDatabase(dbMeta);
     valueMetaString.setPreparedStatementValue(databaseMetaSpy, 
preparedStatementMock, 0, data);
   }
diff --git 
a/plugins/databases/greenplum/src/test/java/org/apache/hop/databases/greenplum/GreenplumValueMetaBaseTest.java
 
b/plugins/databases/greenplum/src/test/java/org/apache/hop/databases/greenplum/GreenplumValueMetaBaseTest.java
index f39131642f..4c5d7b88e4 100644
--- 
a/plugins/databases/greenplum/src/test/java/org/apache/hop/databases/greenplum/GreenplumValueMetaBaseTest.java
+++ 
b/plugins/databases/greenplum/src/test/java/org/apache/hop/databases/greenplum/GreenplumValueMetaBaseTest.java
@@ -38,7 +38,7 @@ import org.apache.hop.core.logging.HopLoggingEvent;
 import org.apache.hop.core.logging.IHopLoggingEventListener;
 import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.row.IValueMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaPluginType;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.variables.Variables;
@@ -76,7 +76,7 @@ class GreenplumValueMetaBaseTest {
   private PreparedStatement preparedStatementMock = 
mock(PreparedStatement.class);
   private ResultSet resultSet;
   private DatabaseMeta dbMeta;
-  private ValueMetaBase valueMetaBase;
+  private IValueMeta valueMetaBase;
   private IVariables variables;
 
   @BeforeAll
@@ -89,12 +89,12 @@ class GreenplumValueMetaBaseTest {
   }
 
   @BeforeEach
-  void setUp() {
+  void setUp() throws HopException {
     listener = new StoreLoggingEventListener();
     HopLogStore.getAppender().addLoggingEventListener(listener);
     dbMeta = spy(DatabaseMeta.class);
     dbMeta.setIDatabase(spy(GreenplumDatabaseMeta.class));
-    valueMetaBase = new ValueMetaBase();
+    valueMetaBase = ValueMetaFactory.createValueMeta(IValueMeta.TYPE_NONE);
     resultSet = mock(ResultSet.class);
     variables = spy(new Variables());
   }
diff --git 
a/plugins/databases/hive/src/test/java/org/apache/hop/databases/hive/HiveValueMetaBaseTest.java
 
b/plugins/databases/hive/src/test/java/org/apache/hop/databases/hive/HiveValueMetaBaseTest.java
index 6d639d7b40..f698c421f6 100644
--- 
a/plugins/databases/hive/src/test/java/org/apache/hop/databases/hive/HiveValueMetaBaseTest.java
+++ 
b/plugins/databases/hive/src/test/java/org/apache/hop/databases/hive/HiveValueMetaBaseTest.java
@@ -39,7 +39,6 @@ import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.exception.HopPluginException;
 import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.row.IValueMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
 import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaPluginType;
 import org.apache.hop.core.row.value.ValueMetaString;
@@ -91,7 +90,7 @@ class HiveValueMetaBaseTest {
   void testGetValueFromSqlTypeBinaryHive() throws Exception {
 
     final int binaryColumnIndex = 1;
-    ValueMetaBase valueMetaBase = new ValueMetaBase();
+    IValueMeta valueMetaBase = 
ValueMetaFactory.createValueMeta(IValueMeta.TYPE_NONE);
     DatabaseMeta dbMeta = spy(new DatabaseMeta());
     IDatabase iDatabase = new HiveDatabaseMeta();
     dbMeta.setIDatabase(iDatabase);
diff --git 
a/plugins/databases/mysql/src/test/java/org/apache/hop/databases/mysql/MySqlValueMetaBaseTest.java
 
b/plugins/databases/mysql/src/test/java/org/apache/hop/databases/mysql/MySqlValueMetaBaseTest.java
index 7b746d2a62..fa82e5852b 100644
--- 
a/plugins/databases/mysql/src/test/java/org/apache/hop/databases/mysql/MySqlValueMetaBaseTest.java
+++ 
b/plugins/databases/mysql/src/test/java/org/apache/hop/databases/mysql/MySqlValueMetaBaseTest.java
@@ -42,7 +42,6 @@ import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.exception.HopPluginException;
 import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.row.IValueMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
 import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaPluginType;
 import org.apache.hop.core.row.value.ValueMetaString;
@@ -101,7 +100,7 @@ class MySqlValueMetaBaseTest {
   void testGetValueFromSqlTypeBinaryMysql() throws Exception {
 
     final int binaryColumnIndex = 1;
-    ValueMetaBase valueMetaBase = new ValueMetaBase();
+    IValueMeta valueMetaBase = 
ValueMetaFactory.createValueMeta(IValueMeta.TYPE_NONE);
     DatabaseMeta dbMeta = spy(new DatabaseMeta());
     IDatabase iDatabase = new MySqlDatabaseMeta();
     dbMeta.setIDatabase(iDatabase);
diff --git 
a/plugins/databases/postgresql/src/test/java/org/apache/hop/databases/postgresql/PostgreSqlValueMetaBaseTest.java
 
b/plugins/databases/postgresql/src/test/java/org/apache/hop/databases/postgresql/PostgreSqlValueMetaBaseTest.java
index 1141f7a44c..294b3205b1 100644
--- 
a/plugins/databases/postgresql/src/test/java/org/apache/hop/databases/postgresql/PostgreSqlValueMetaBaseTest.java
+++ 
b/plugins/databases/postgresql/src/test/java/org/apache/hop/databases/postgresql/PostgreSqlValueMetaBaseTest.java
@@ -158,7 +158,8 @@ class PostgreSqlValueMetaBaseTest {
 
     String data = StringUtils.repeat("*", 2048);
 
-    ValueMetaBase valueMetaString = new ValueMetaBase(LOG_FIELD, 
IValueMeta.TYPE_STRING, 2048, 0);
+    IValueMeta valueMetaString =
+        ValueMetaFactory.createValueMeta(LOG_FIELD, IValueMeta.TYPE_STRING, 
2048, 0);
     valueMetaString.setPreparedStatementValue(databaseMetaSpy, 
preparedStatementMock, 0, data);
 
     verify(preparedStatementMock, never()).setString(0, data);
@@ -171,9 +172,9 @@ class PostgreSqlValueMetaBaseTest {
         events.get(0).getMessage().toString());
   }
 
-  private void initValueMeta(BaseDatabaseMeta dbMeta, int length, Object data)
-      throws HopDatabaseException {
-    ValueMetaBase valueMetaString = new ValueMetaBase(LOG_FIELD, 
IValueMeta.TYPE_STRING, length, 0);
+  private void initValueMeta(BaseDatabaseMeta dbMeta, int length, Object data) 
throws HopException {
+    IValueMeta valueMetaString =
+        ValueMetaFactory.createValueMeta(LOG_FIELD, IValueMeta.TYPE_STRING, 
length, 0);
     databaseMetaSpy.setIDatabase(dbMeta);
     valueMetaString.setPreparedStatementValue(databaseMetaSpy, 
preparedStatementMock, 0, data);
   }
diff --git 
a/plugins/databases/teradata/src/test/java/org/apache/hop/databases/teradata/TeradataValueMetaBaseTest.java
 
b/plugins/databases/teradata/src/test/java/org/apache/hop/databases/teradata/TeradataValueMetaBaseTest.java
index 6abe4e0b55..ec1255232d 100644
--- 
a/plugins/databases/teradata/src/test/java/org/apache/hop/databases/teradata/TeradataValueMetaBaseTest.java
+++ 
b/plugins/databases/teradata/src/test/java/org/apache/hop/databases/teradata/TeradataValueMetaBaseTest.java
@@ -38,7 +38,7 @@ import org.apache.hop.core.logging.HopLoggingEvent;
 import org.apache.hop.core.logging.IHopLoggingEventListener;
 import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.row.IValueMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaPluginType;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.variables.Variables;
@@ -76,7 +76,7 @@ class TeradataValueMetaBaseTest {
   private final PreparedStatement preparedStatementMock = 
mock(PreparedStatement.class);
   private ResultSet resultSet;
   private DatabaseMeta dbMeta;
-  private ValueMetaBase valueMetaBase;
+  private IValueMeta valueMetaBase;
   private IVariables variables;
 
   @BeforeAll
@@ -88,11 +88,11 @@ class TeradataValueMetaBaseTest {
   }
 
   @BeforeEach
-  void setUp() {
+  void setUp() throws HopException {
     listener = new StoreLoggingEventListener();
     HopLogStore.getAppender().addLoggingEventListener(listener);
 
-    valueMetaBase = new ValueMetaBase();
+    valueMetaBase = ValueMetaFactory.createValueMeta(IValueMeta.TYPE_NONE);
     dbMeta = spy(new DatabaseMeta());
     dbMeta.setIDatabase(spy(TeradataDatabaseMeta.class));
     resultSet = mock(ResultSet.class);
diff --git 
a/plugins/databases/vertica/src/test/java/org/apache/hop/databases/vertica/Vertica5DatabaseMetaTest.java
 
b/plugins/databases/vertica/src/test/java/org/apache/hop/databases/vertica/Vertica5DatabaseMetaTest.java
index faac0a84b6..449ad11068 100644
--- 
a/plugins/databases/vertica/src/test/java/org/apache/hop/databases/vertica/Vertica5DatabaseMetaTest.java
+++ 
b/plugins/databases/vertica/src/test/java/org/apache/hop/databases/vertica/Vertica5DatabaseMetaTest.java
@@ -153,7 +153,7 @@ class Vertica5DatabaseMetaTest extends 
VerticaDatabaseMetaTest {
     final int expectedBinarylength = 1;
     final int expectedVarBinarylength = 80;
 
-    ValueMetaBase obj = new ValueMetaBase();
+    IValueMeta obj = ValueMetaFactory.createValueMeta(IValueMeta.TYPE_NONE);
     DatabaseMeta dbMeta = spy(new DatabaseMeta());
     IDatabase iDatabase = new Vertica5DatabaseMeta();
     dbMeta.setIDatabase(iDatabase);
diff --git 
a/plugins/tech/cassandra/src/test/java/org/apache/hop/pipeline/transforms/cassandrasstableoutput/writer/Cql3SsTableWriterTest.java
 
b/plugins/tech/cassandra/src/test/java/org/apache/hop/pipeline/transforms/cassandrasstableoutput/writer/Cql3SsTableWriterTest.java
index 633fecfb28..f38b631b6e 100644
--- 
a/plugins/tech/cassandra/src/test/java/org/apache/hop/pipeline/transforms/cassandrasstableoutput/writer/Cql3SsTableWriterTest.java
+++ 
b/plugins/tech/cassandra/src/test/java/org/apache/hop/pipeline/transforms/cassandrasstableoutput/writer/Cql3SsTableWriterTest.java
@@ -35,9 +35,11 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.cassandra.io.sstable.CQLSSTableWriter;
 import org.apache.commons.lang3.SystemUtils;
+import org.apache.hop.core.exception.HopPluginException;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.mockito.stubbing.Answer;
@@ -101,12 +103,12 @@ class Cql3SsTableWriterTest {
     writer.init();
   }
 
-  private Cql3SSTableWriter getCql3SSTableWriter() {
+  private Cql3SSTableWriter getCql3SSTableWriter() throws HopPluginException {
     Cql3SSTableWriter writer = new CQL3SSTableWriterStub();
     writer.setPrimaryKey(KEY_FIELD);
     IRowMeta rmi = mock(IRowMeta.class);
-    IValueMeta one = new ValueMetaBase(KEY_FIELD, ValueMetaBase.TYPE_INTEGER);
-    IValueMeta two = new ValueMetaBase(COLUMN, ValueMetaBase.TYPE_STRING);
+    IValueMeta one = ValueMetaFactory.createValueMeta(KEY_FIELD, 
ValueMetaBase.TYPE_INTEGER);
+    IValueMeta two = ValueMetaFactory.createValueMeta(COLUMN, 
ValueMetaBase.TYPE_STRING);
     List<IValueMeta> valueMetaList = new ArrayList<>();
     valueMetaList.add(one);
     valueMetaList.add(two);
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMeta.java
 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMeta.java
index 4922536504..b112c95de8 100644
--- 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMeta.java
+++ 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMeta.java
@@ -28,8 +28,8 @@ import org.apache.hop.core.exception.HopTransformException;
 import org.apache.hop.core.exception.HopValueException;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
 import org.apache.hop.core.row.value.ValueMetaBoolean;
+import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaInteger;
 import org.apache.hop.core.row.value.ValueMetaString;
 import org.apache.hop.core.variables.IVariables;
@@ -626,12 +626,19 @@ public class JdbcMetadataMeta extends 
BaseTransformMeta<JdbcMetadata, JdbcMetada
         if (!fieldName.equals(outputField.getName())) {
           continue;
         }
-        field =
-            new ValueMetaBase(
-                outputField.getRename() == null ? fieldName : 
outputField.getRename(),
-                field.getType());
-        field.setOrigin(origin);
-        rowMeta.addValueMeta(field);
+        String newFieldName = outputField.getRename() == null ? fieldName : 
outputField.getRename();
+        try {
+          field = ValueMetaFactory.createValueMeta(newFieldName, 
field.getType());
+          field.setOrigin(origin);
+          rowMeta.addValueMeta(field);
+        } catch (Exception e) {
+          throw new HopTransformException(
+              "Error creating a value metadata called "
+                  + newFieldName
+                  + " of type "
+                  + field.getType(),
+              e);
+        }
         break;
       }
     }
diff --git 
a/plugins/transforms/textfile/src/test/java/org/apache/hop/pipeline/transforms/textfileoutput/TextFileOutputTest.java
 
b/plugins/transforms/textfile/src/test/java/org/apache/hop/pipeline/transforms/textfileoutput/TextFileOutputTest.java
index 9cdb2cbac5..cff519cc11 100644
--- 
a/plugins/transforms/textfile/src/test/java/org/apache/hop/pipeline/transforms/textfileoutput/TextFileOutputTest.java
+++ 
b/plugins/transforms/textfile/src/test/java/org/apache/hop/pipeline/transforms/textfileoutput/TextFileOutputTest.java
@@ -45,7 +45,7 @@ import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.RowMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.row.value.ValueMetaString;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.variables.Variables;
@@ -837,7 +837,7 @@ class TextFileOutputTest {
     String outputEncode = "Windows-1252";
     Object[] rows = {testString.getBytes(inputEncode)};
 
-    ValueMetaBase iValueMeta = new ValueMetaBase("test", 
IValueMeta.TYPE_STRING);
+    IValueMeta iValueMeta = ValueMetaFactory.createValueMeta("test", 
IValueMeta.TYPE_STRING);
     iValueMeta.setStringEncoding(inputEncode);
     iValueMeta.setStorageType(IValueMeta.STORAGE_TYPE_BINARY_STRING);
     iValueMeta.setStorageMetadata(new ValueMetaString());
diff --git 
a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebServiceDialog.java
 
b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebServiceDialog.java
index a4da94acc8..a299f360d1 100644
--- 
a/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebServiceDialog.java
+++ 
b/plugins/transforms/webservices/src/main/java/org/apache/hop/pipeline/transforms/webservices/WebServiceDialog.java
@@ -29,11 +29,12 @@ import javax.xml.namespace.QName;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.Props;
 import org.apache.hop.core.exception.HopException;
+import org.apache.hop.core.exception.HopPluginException;
 import org.apache.hop.core.exception.HopTransformException;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.RowMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.util.Utils;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.i18n.BaseMessages;
@@ -376,31 +377,29 @@ public class WebServiceDialog extends BaseTransformDialog 
{
         new SelectionAdapter() {
           @Override
           public void widgetSelected(SelectionEvent event) {
-            if (inWsdlParamContainer == null) {
-              try {
-                loadWebService(wURL.getText());
-                loadOperation(wOperation.getText());
-              } catch (HopException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
+            try {
+              if (inWsdlParamContainer == null) {
+                loadWebServiceAndOperation();
               }
-            }
-            IRowMeta r = getInWebServiceFields();
-            if (r != null) {
-              BaseTransformDialog.getFieldsFromPrevious(
-                  r, fieldInTableView, 2, new int[] {2}, new int[] {}, -1, -1, 
null);
-            }
-            // Define type for new entries
-            if (inWsdlParamContainer != null) {
-              TableItem[] items = fieldInTableView.table.getItems();
-              for (TableItem item : items) {
-                String type = 
inWsdlParamContainer.getParamType(item.getText(2));
-                if (type != null) {
-                  item.setText(3, type);
-                } else {
-                  item.dispose();
+              IRowMeta r = getInWebServiceFields();
+              if (r != null) {
+                BaseTransformDialog.getFieldsFromPrevious(
+                    r, fieldInTableView, 2, new int[] {2}, new int[] {}, -1, 
-1, null);
+              }
+              // Define type for new entries
+              if (inWsdlParamContainer != null) {
+                TableItem[] items = fieldInTableView.table.getItems();
+                for (TableItem item : items) {
+                  String type = 
inWsdlParamContainer.getParamType(item.getText(2));
+                  if (type != null) {
+                    item.setText(3, type);
+                  } else {
+                    item.dispose();
+                  }
                 }
               }
+            } catch (Exception e) {
+              new ErrorDialog(shell, "Error", "Error getting Web Service 
fields", e);
             }
           }
         });
@@ -428,20 +427,24 @@ public class WebServiceDialog extends BaseTransformDialog 
{
     tabItemFieldIn.setControl(vCompositeTabField);
 
     if (inWsdlParamContainer != null) {
-      IRowMeta r = getInWebServiceFields();
-      for (int i = 0; i < r.size(); ++i) {
-        String wsName = r.getValueMeta(i).getName();
-        TableItem vTableItem = new TableItem(fieldInTableView.table, SWT.NONE);
-        vTableItem.setText(2, Const.NVL(wsName, ""));
-        vTableItem.setText(3, 
Const.NVL(inWsdlParamContainer.getParamType(wsName), ""));
-
-        if (oldTableView != null) {
-          TableItem[] oldItems = oldTableView.table.getItems();
-          String previousField = getField(oldItems, wsName);
-          if (previousField != null) {
-            vTableItem.setText(1, previousField);
+      try {
+        IRowMeta r = getInWebServiceFields();
+        for (int i = 0; i < r.size(); ++i) {
+          String wsName = r.getValueMeta(i).getName();
+          TableItem vTableItem = new TableItem(fieldInTableView.table, 
SWT.NONE);
+          vTableItem.setText(2, Const.NVL(wsName, ""));
+          vTableItem.setText(3, 
Const.NVL(inWsdlParamContainer.getParamType(wsName), ""));
+
+          if (oldTableView != null) {
+            TableItem[] oldItems = oldTableView.table.getItems();
+            String previousField = getField(oldItems, wsName);
+            if (previousField != null) {
+              vTableItem.setText(1, previousField);
+            }
           }
         }
+      } catch (Exception e) {
+        new ErrorDialog(shell, "Error", "Error getting Web Service fields", e);
       }
     }
     if (oldTableView != null) {
@@ -452,6 +455,15 @@ public class WebServiceDialog extends BaseTransformDialog {
     fieldInTableView.optWidth(true);
   }
 
+  private void loadWebServiceAndOperation() throws HopException {
+    try {
+      loadWebService(wURL.getText());
+      loadOperation(wOperation.getText());
+    } catch (HopException e) {
+      throw new HopException("Error loading web service and operation", e);
+    }
+  }
+
   private String getField(TableItem[] items, String wsName) {
     if (wsName == null) {
       return null;
@@ -521,26 +533,24 @@ public class WebServiceDialog extends BaseTransformDialog 
{
         new SelectionAdapter() {
           @Override
           public void widgetSelected(SelectionEvent event) {
-            if (outWsdlParamContainer == null) {
-              try {
-                loadWebService(wURL.getText());
-                loadOperation(wOperation.getText());
-              } catch (HopException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
+            try {
+              if (outWsdlParamContainer == null) {
+                loadWebServiceAndOperation();
               }
-            }
-            IRowMeta r = getOutWebServiceFields();
-            if (r != null) {
-              BaseTransformDialog.getFieldsFromPrevious(
-                  r, fieldOutTableView, 2, new int[] {1, 2}, new int[] {}, -1, 
-1, null);
-            }
-            // Define type for new entries
-            if (outWsdlParamContainer != null) {
-              TableItem[] items = fieldOutTableView.table.getItems();
-              for (TableItem item : items) {
-                item.setText(3, 
outWsdlParamContainer.getParamType(item.getText(2)));
+              IRowMeta r = getOutWebServiceFields();
+              if (r != null) {
+                BaseTransformDialog.getFieldsFromPrevious(
+                    r, fieldOutTableView, 2, new int[] {1, 2}, new int[] {}, 
-1, -1, null);
+              }
+              // Define type for new entries
+              if (outWsdlParamContainer != null) {
+                TableItem[] items = fieldOutTableView.table.getItems();
+                for (TableItem item : items) {
+                  item.setText(3, 
outWsdlParamContainer.getParamType(item.getText(2)));
+                }
               }
+            } catch (Exception e) {
+              new ErrorDialog(shell, "Error", "Error getting web service 
fields", e);
             }
           }
         });
@@ -567,24 +577,28 @@ public class WebServiceDialog extends BaseTransformDialog 
{
     tabItemFieldOut.setControl(vCompositeTabFieldOut);
 
     if (fieldOutTableView.table.getItemCount() == 0 && outWsdlParamContainer 
!= null) {
-      IRowMeta r = getOutWebServiceFields();
-      for (int i = 0; i < r.size(); ++i) {
-        String wsName = r.getValueMeta(i).getName();
-        String wsType = r.getValueMeta(i).getTypeDesc();
-
-        TableItem vTableItem = new TableItem(fieldOutTableView.table, 
SWT.NONE);
-        vTableItem.setText(2, wsName);
-        vTableItem.setText(3, wsType);
-        if (oldTableView != null) {
-          String previousField = getField(oldTableView.table.getItems(), 
wsName);
-          if (previousField != null && !"".equals(previousField)) {
-            vTableItem.setText(1, previousField);
+      try {
+        IRowMeta r = getOutWebServiceFields();
+        for (int i = 0; i < r.size(); ++i) {
+          String wsName = r.getValueMeta(i).getName();
+          String wsType = r.getValueMeta(i).getTypeDesc();
+
+          TableItem vTableItem = new TableItem(fieldOutTableView.table, 
SWT.NONE);
+          vTableItem.setText(2, wsName);
+          vTableItem.setText(3, wsType);
+          if (oldTableView != null) {
+            String previousField = getField(oldTableView.table.getItems(), 
wsName);
+            if (previousField != null && !"".equals(previousField)) {
+              vTableItem.setText(1, previousField);
+            } else {
+              vTableItem.setText(1, wsName);
+            }
           } else {
             vTableItem.setText(1, wsName);
           }
-        } else {
-          vTableItem.setText(1, wsName);
         }
+      } catch (Exception e) {
+        new ErrorDialog(shell, "Error", "Error getting web service fields", e);
       }
     }
     fieldOutTableView.removeEmptyRows();
@@ -592,7 +606,7 @@ public class WebServiceDialog extends BaseTransformDialog {
     fieldOutTableView.optWidth(true);
   }
 
-  private IRowMeta getInWebServiceFields() {
+  private IRowMeta getInWebServiceFields() throws HopPluginException {
     IRowMeta r = null;
     if (inWsdlParamContainer != null) {
       r = new RowMeta();
@@ -600,7 +614,7 @@ public class WebServiceDialog extends BaseTransformDialog {
       // If we have already saved fields mapping, we only show these mappings
       for (String param : params) {
         IValueMeta value =
-            new ValueMetaBase(
+            ValueMetaFactory.createValueMeta(
                 param, 
XsdType.xsdTypeToHopType(inWsdlParamContainer.getParamType(param)));
         r.addValueMeta(value);
       }
@@ -608,7 +622,7 @@ public class WebServiceDialog extends BaseTransformDialog {
     return r;
   }
 
-  private IRowMeta getOutWebServiceFields() {
+  private IRowMeta getOutWebServiceFields() throws HopPluginException {
     IRowMeta r = null;
     if (outWsdlParamContainer != null) {
       r = new RowMeta();
@@ -616,7 +630,7 @@ public class WebServiceDialog extends BaseTransformDialog {
       // If we have already saved fields mapping, we only show these mappings
       for (String outParam : outParams) {
         IValueMeta value =
-            new ValueMetaBase(
+            ValueMetaFactory.createValueMeta(
                 outParam, 
XsdType.xsdTypeToHopType(outWsdlParamContainer.getParamType(outParam)));
         r.addValueMeta(value);
       }
diff --git 
a/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/xmloutput/XmlOutputMeta.java
 
b/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/xmloutput/XmlOutputMeta.java
index 2d2bb26548..e1ca7c3058 100644
--- 
a/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/xmloutput/XmlOutputMeta.java
+++ 
b/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/xmloutput/XmlOutputMeta.java
@@ -34,7 +34,7 @@ import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.RowMeta;
-import org.apache.hop.core.row.value.ValueMetaBase;
+import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.util.Utils;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.vfs.HopVfs;
@@ -358,7 +358,7 @@ public class XmlOutputMeta extends 
BaseTransformMeta<XmlOutput, XmlOutputData> {
     RowMeta row = new RowMeta();
     for (XmlField field : outputFields) {
       row.addValueMeta(
-          new ValueMetaBase(
+          ValueMetaFactory.createValueMeta(
               field.getFieldName(), field.getType(), field.getLength(), 
field.getPrecision()));
     }
     return row;

Reply via email to