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 4d23a103e0 fix broken IT tests, fixes #5691 (#5692)
4d23a103e0 is described below
commit 4d23a103e0f8d53c6081fd4a02657de7c21229a5
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Mon Sep 8 15:50:55 2025 +0200
fix broken IT tests, fixes #5691 (#5692)
Also a fix that is happening in some of our custom code, caused by not
using strict types in HopConfig.java
---
.../java/org/apache/hop/core/config/HopConfig.java | 39 +++++++++++++---------
.../integration-tests-opensearch.yaml | 2 +-
integration-tests/vertica/disabled.txt | 17 ++++++++++
.../hop/avro/transforms/avrooutput/AvroOutput.java | 6 ++--
4 files changed, 45 insertions(+), 19 deletions(-)
diff --git a/core/src/main/java/org/apache/hop/core/config/HopConfig.java
b/core/src/main/java/org/apache/hop/core/config/HopConfig.java
index 3e6c766e00..9a6b73b30f 100644
--- a/core/src/main/java/org/apache/hop/core/config/HopConfig.java
+++ b/core/src/main/java/org/apache/hop/core/config/HopConfig.java
@@ -21,7 +21,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.hop.core.Const;
@@ -33,7 +32,7 @@ import org.apache.hop.core.variables.DescribedVariable;
* This class keeps track of storing and retrieving all the configuration
options in Hop. This
* includes all options of the various plugins in the Hop ecosystem.
*/
-public class HopConfig extends ConfigFile implements IConfigFile {
+public class HopConfig extends ConfigFile {
private static final String HOP_GUI_PROPERTIES_KEY = "guiProperties";
@@ -147,11 +146,19 @@ public class HopConfig extends ConfigFile implements
IConfigFile {
Map<String, String> map = new HashMap<>();
getInstance().configMap.put(HOP_GUI_PROPERTIES_KEY, map);
return map;
+ } else if (propertiesObject instanceof Map) {
+ @SuppressWarnings("unchecked")
+ Map<String, String> propertiesMap = (Map<String, String>)
propertiesObject;
+ return propertiesMap;
} else {
- return (Map<String, String>) propertiesObject;
+ // If the object is not a Map, create a new one and log a warning
+ System.err.println("Warning: GUI properties object is not a Map,
creating new one");
+ Map<String, String> map = new HashMap<>();
+ getInstance().configMap.put(HOP_GUI_PROPERTIES_KEY, map);
+ return map;
}
} catch (Exception e) {
- throw new RuntimeException("Error getting GUI properties from the Hop
configuration");
+ throw new RuntimeException("Error getting GUI properties from the Hop
configuration", e);
}
}
@@ -163,20 +170,22 @@ public class HopConfig extends ConfigFile implements
IConfigFile {
* @return the value associated to the variable
*/
public static String readStringVariable(String key, String defaultValue) {
- String value = null;
-
- ArrayList<DescribedVariable> variables =
- (ArrayList<DescribedVariable>)
getInstance().configMap.get(HOP_VARIABLES_KEY);
- if (variables != null) {
- Iterator<DescribedVariable> i = variables.iterator();
-
- while (i.hasNext() && value == null) {
- DescribedVariable v = i.next();
- if (v.getName().equals(key)) value = v.getValue();
+ try {
+ List<DescribedVariable> variables =
getInstance().getDescribedVariables();
+ if (variables != null) {
+ for (DescribedVariable v : variables) {
+ if (v.getName().equals(key)) {
+ return v.getValue();
+ }
+ }
}
+ } catch (Exception e) {
+ // Log the error but don't fail the entire operation
+ // Return the default value instead
+ System.err.println("Error reading string variable '" + key + "': " +
e.getMessage());
}
- return value == null ? defaultValue : value;
+ return defaultValue;
}
public static void setGuiProperty(String key, String value) {
diff --git a/docker/integration-tests/integration-tests-opensearch.yaml
b/docker/integration-tests/integration-tests-opensearch.yaml
index ca258b8790..b2d4efc579 100644
--- a/docker/integration-tests/integration-tests-opensearch.yaml
+++ b/docker/integration-tests/integration-tests-opensearch.yaml
@@ -27,7 +27,7 @@ services:
- opensearch
opensearch:
- image: opensearch:latest
+ image: opensearchproject/opensearch:latest
ports:
- "9200"
- "9600"
diff --git a/integration-tests/vertica/disabled.txt
b/integration-tests/vertica/disabled.txt
new file mode 100644
index 0000000000..7560e5b3bc
--- /dev/null
+++ b/integration-tests/vertica/disabled.txt
@@ -0,0 +1,17 @@
+#
+# 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.
+#
+#
\ No newline at end of file
diff --git
a/plugins/tech/avro/src/main/java/org/apache/hop/avro/transforms/avrooutput/AvroOutput.java
b/plugins/tech/avro/src/main/java/org/apache/hop/avro/transforms/avrooutput/AvroOutput.java
index adba57bcf6..ee5b36a29a 100644
---
a/plugins/tech/avro/src/main/java/org/apache/hop/avro/transforms/avrooutput/AvroOutput.java
+++
b/plugins/tech/avro/src/main/java/org/apache/hop/avro/transforms/avrooutput/AvroOutput.java
@@ -95,15 +95,15 @@ public class AvroOutput extends
BaseTransform<AvroOutputMeta, AvroOutputData> {
if (avroName.startsWith("$.")) {
avroName = avroName.substring(2);
}
- if (!Utils.isEmpty(parentName) || avroName.startsWith(parentName + "."))
{
- if (!Utils.isEmpty(parentName)) {
+ if (parentName.isEmpty() || avroName.startsWith(parentName + ".")) {
+ if (!parentName.isEmpty()) {
avroName = avroName.substring(parentName.length() + 1);
}
if (avroName.contains(".")) {
String currentAvroPath = avroName.substring(0,
avroName.indexOf("."));
Schema childSchema = recordSchema.getField(currentAvroPath).schema();
String childPath = parentName + "." + currentAvroPath;
- if (Utils.isEmpty(parentName)) {
+ if (parentName.isEmpty()) {
childPath = currentAvroPath;
}