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 = "";
+  }
 }

Reply via email to