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 ccf230a967 Fix show filenames button throws an error in Get Data From
XML #6060 (#6065)
ccf230a967 is described below
commit ccf230a967bae8ff26c1bac6e9b09edf4c795283
Author: lance <[email protected]>
AuthorDate: Tue Dec 2 23:14:08 2025 +0800
Fix show filenames button throws an error in Get Data From XML #6060 (#6065)
* fix show filenames button throws an error in Get Data From XML
Signed-off-by: lance <[email protected]>
* fix show filenames button throws an error in Get Data From XML
Signed-off-by: lance <[email protected]>
---------
Signed-off-by: lance <[email protected]>
---
.../xml/getxmldata/GetXmlDataDialog.java | 29 ++++++++++++++--------
.../transforms/xml/getxmldata/GetXmlDataMeta.java | 22 +++++++++++++---
.../transforms/xml/getxmldata/PdOption.java | 17 ++++++++-----
3 files changed, 49 insertions(+), 19 deletions(-)
diff --git
a/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/GetXmlDataDialog.java
b/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/GetXmlDataDialog.java
index df8b935011..2bfc1a8efe 100644
---
a/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/GetXmlDataDialog.java
+++
b/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/GetXmlDataDialog.java
@@ -193,16 +193,25 @@ public class GetXmlDataDialog extends BaseTransformDialog
{
String precNodeName = null;
- private PdOption readFilePdOption;
- private PdOption readUrlPdOption;
- private PdOption readXmlPdOption;
- private PdOption readHopVfsPdOption;
- private PdOption readSnippetPdOption;
+ private final PdOption readFilePdOption;
+ private final PdOption readUrlPdOption;
+ private final PdOption readXmlPdOption;
+ private final PdOption readHopVfsPdOption;
+ private final PdOption readSnippetPdOption;
public GetXmlDataDialog(
Shell parent, IVariables variables, GetXmlDataMeta transformMeta,
PipelineMeta pipelineMeta) {
super(parent, variables, transformMeta, pipelineMeta);
input = transformMeta;
+
+ // Initialize options and set default values. This prevents a potential
NPE in get() methods.
+ // if getLoopPathList() is not triggered and these 5 options remain
uninitialized.
+ // Call option.resetOption() before using any option instance.
+ this.readFilePdOption = new PdOption();
+ this.readUrlPdOption = new PdOption();
+ this.readXmlPdOption = new PdOption();
+ this.readHopVfsPdOption = new PdOption();
+ this.readSnippetPdOption = new PdOption();
}
@Override
@@ -1293,7 +1302,7 @@ public class GetXmlDataDialog extends BaseTransformDialog
{
@Override
public void enrich(EnterTextDialog enterTextDialog) {
- readSnippetPdOption = new PdOption();
+ readSnippetPdOption.resetOption();
readSnippetPdOption.setUseSnippet(true);
Button wbbLoopPathList =
getWbbLoopPathList(enterTextDialog.getShell());
@@ -1480,7 +1489,7 @@ public class GetXmlDataDialog extends BaseTransformDialog
{
BaseMessages.getString(PKG,
"GetXMLDataDialog.AskURL.Message"));
url = d.open();
}
- readUrlPdOption = new PdOption();
+ readUrlPdOption.resetOption();
readUrlPdOption.setUseUrl(true);
readUrlPdOption.setValidating(meta.isValidating());
LoopNodesImportProgressDialog pd =
@@ -1503,7 +1512,7 @@ public class GetXmlDataDialog extends BaseTransformDialog
{
if (!StringUtil.isEmpty(filePath)) {
str = filePath;
}
- readFilePdOption = new PdOption();
+ readFilePdOption.resetOption();
readFilePdOption.setEncoding(
meta.getEncoding() == null ? CONST_UTF_8 : meta.getEncoding());
readFilePdOption.setValidating(meta.isValidating());
@@ -1523,7 +1532,7 @@ public class GetXmlDataDialog extends BaseTransformDialog
{
null);
xml = d.open();
}
- readXmlPdOption = new PdOption();
+ readXmlPdOption.resetOption();
readXmlPdOption.setValidating(meta.isValidating());
LoopNodesImportProgressDialog pd =
new LoopNodesImportProgressDialog(shell, xml, readXmlPdOption);
@@ -1537,7 +1546,7 @@ public class GetXmlDataDialog extends BaseTransformDialog
{
// Check the first file
if (fileinputList.getFile(0).exists()) {
- readHopVfsPdOption = new PdOption();
+ readHopVfsPdOption.resetOption();
readHopVfsPdOption.setValidating(meta.isValidating());
readHopVfsPdOption.setEncoding(
meta.getEncoding() == null ? CONST_UTF_8 : meta.getEncoding());
diff --git
a/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/GetXmlDataMeta.java
b/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/GetXmlDataMeta.java
index b63e57bf5d..9b34a633f2 100644
---
a/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/GetXmlDataMeta.java
+++
b/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/GetXmlDataMeta.java
@@ -251,7 +251,17 @@ public class GetXmlDataMeta extends
BaseTransformMeta<GetXmlData, GetXmlDataData
private String sizeFieldName;
public GetXmlDataMeta() {
- super(); // allocate BaseTransformMeta
+ // allocate BaseTransformMeta
+ super();
+
+ // init files, inputFields list
+ if (this.filesList == null) {
+ this.filesList = new ArrayList<>();
+ }
+
+ if (this.inputFields == null) {
+ this.inputFields = new ArrayList<>();
+ }
}
public String getRequiredFilesDesc(String tt) {
@@ -302,8 +312,14 @@ public class GetXmlDataMeta extends
BaseTransformMeta<GetXmlData, GetXmlDataData
validating = false;
loopXPath = "";
- filesList = new ArrayList<>();
- inputFields = new ArrayList<>();
+ // init files, inputFields list
+ if (this.filesList == null) {
+ this.filesList = new ArrayList<>();
+ }
+
+ if (this.inputFields == null) {
+ this.inputFields = new ArrayList<>();
+ }
rowLimit = 0;
diff --git
a/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/PdOption.java
b/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/PdOption.java
index bafda53164..12bfbdf964 100644
---
a/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/PdOption.java
+++
b/plugins/transforms/xml/src/main/java/org/apache/hop/pipeline/transforms/xml/getxmldata/PdOption.java
@@ -31,12 +31,7 @@ public class PdOption {
private String loopXPath;
PdOption() {
- isValidating = false;
- useUrl = false;
- useSnippet = false;
- encoding = null;
- isXmlSourceFile = false;
- loopXPath = "";
+ resetOption();
}
// if the encoding is not null, the source must be a file
@@ -44,4 +39,14 @@ public class PdOption {
this.encoding = encoding;
this.isXmlSourceFile = true;
}
+
+ /** Resets all configuration options to their default values. */
+ public void resetOption() {
+ this.isValidating = false;
+ this.useUrl = false;
+ this.useSnippet = false;
+ this.encoding = null;
+ this.isXmlSourceFile = false;
+ this.loopXPath = "";
+ }
}