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

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


The following commit(s) were added to refs/heads/master by this push:
     new 0e691d4  HOP-2292 : Internal Hop variables not set on pipelines and 
workflows
     new c38ba37  Merge pull request #461 from mattcasters/master
0e691d4 is described below

commit 0e691d4d40adebaf5342ef7ac99cf69436f194df
Author: Matt Casters <[email protected]>
AuthorDate: Fri Dec 11 21:41:06 2020 +0100

    HOP-2292 : Internal Hop variables not set on pipelines and workflows
---
 .../hop/pipeline/engine/PipelineEngineFactory.java |   4 +
 .../java/org/apache/hop/workflow/Workflow.java     |   2 +-
 .../java/org/apache/hop/workflow/WorkflowMeta.java |   4 -
 .../hop/workflow/engine/WorkflowEngineFactory.java |   2 +
 .../0006-check-variables.hwf                       |   2 -
 .../0007-internal-pipeline-variables.hpl           | 288 +++++++++++++++++++++
 .../main-0007-internal-variables.hwf               | 118 +++++++++
 7 files changed, 413 insertions(+), 7 deletions(-)

diff --git 
a/engine/src/main/java/org/apache/hop/pipeline/engine/PipelineEngineFactory.java
 
b/engine/src/main/java/org/apache/hop/pipeline/engine/PipelineEngineFactory.java
index a1842c7..22600d6 100644
--- 
a/engine/src/main/java/org/apache/hop/pipeline/engine/PipelineEngineFactory.java
+++ 
b/engine/src/main/java/org/apache/hop/pipeline/engine/PipelineEngineFactory.java
@@ -67,6 +67,10 @@ public class PipelineEngineFactory {
     //
     pipelineEngine.initializeFrom( variables );
 
+    // Set internal variables...
+    //
+    pipelineMeta.setInternalHopVariables( pipelineEngine );
+
     // Copy over the parameter definitions
     //
     pipelineEngine.copyParametersFromDefinitions( pipelineMeta );
diff --git a/engine/src/main/java/org/apache/hop/workflow/Workflow.java 
b/engine/src/main/java/org/apache/hop/workflow/Workflow.java
index 2061805..eefdbb7 100644
--- a/engine/src/main/java/org/apache/hop/workflow/Workflow.java
+++ b/engine/src/main/java/org/apache/hop/workflow/Workflow.java
@@ -963,7 +963,7 @@ public abstract class Workflow extends Variables implements 
IVariables, INamedPa
     if (workflowMeta==null) {
       setInternalHopVariables( this, null, null );
     } else {
-      setInternalHopVariables( this, workflowMeta.getFilename(), 
workflowMeta.getName() );
+      workflowMeta.setInternalHopVariables( this );
     }
   }
 
diff --git a/engine/src/main/java/org/apache/hop/workflow/WorkflowMeta.java 
b/engine/src/main/java/org/apache/hop/workflow/WorkflowMeta.java
index dd2a601..76d5a05 100644
--- a/engine/src/main/java/org/apache/hop/workflow/WorkflowMeta.java
+++ b/engine/src/main/java/org/apache/hop/workflow/WorkflowMeta.java
@@ -162,10 +162,6 @@ public class WorkflowMeta extends AbstractMeta implements 
Cloneable, Comparable<
     workflowStatus = -1;
     workflowVersion = null;
 
-    // setInternalHopVariables(); Don't clear the internal variables for
-    // ad-hoc workflows, it's ruins the previews
-    // etc.
-
     log = LogChannel.GENERAL;
   }
 
diff --git 
a/engine/src/main/java/org/apache/hop/workflow/engine/WorkflowEngineFactory.java
 
b/engine/src/main/java/org/apache/hop/workflow/engine/WorkflowEngineFactory.java
index dfac724..28821e1 100644
--- 
a/engine/src/main/java/org/apache/hop/workflow/engine/WorkflowEngineFactory.java
+++ 
b/engine/src/main/java/org/apache/hop/workflow/engine/WorkflowEngineFactory.java
@@ -62,6 +62,8 @@ public class WorkflowEngineFactory {
     //
     workflowEngine.initializeFrom(variables);
 
+    workflowEngine.setInternalHopVariables();
+
     // Copy the parameters from the metadata...
     //
     workflowEngine.copyParametersFromDefinitions( workflowMeta );
diff --git 
a/integration-tests/parameters_and_variables/0006-check-variables.hwf 
b/integration-tests/parameters_and_variables/0006-check-variables.hwf
index 219721a..465cc05 100644
--- a/integration-tests/parameters_and_variables/0006-check-variables.hwf
+++ b/integration-tests/parameters_and_variables/0006-check-variables.hwf
@@ -28,8 +28,6 @@
       <description/>
       <type>SPECIAL</type>
       <attributes/>
-      <start>Y</start>
-      <dummy>N</dummy>
       <repeat>N</repeat>
       <schedulerType>0</schedulerType>
       <intervalSeconds>0</intervalSeconds>
diff --git 
a/integration-tests/parameters_and_variables/0007-internal-pipeline-variables.hpl
 
b/integration-tests/parameters_and_variables/0007-internal-pipeline-variables.hpl
new file mode 100644
index 0000000..bf1503e
--- /dev/null
+++ 
b/integration-tests/parameters_and_variables/0007-internal-pipeline-variables.hpl
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pipeline>
+  <info>
+    <name>0006-internal-pipeline-variables</name>
+    <name_sync_with_filename>Y</name_sync_with_filename>
+    <description/>
+    <extended_description/>
+    <pipeline_version/>
+    <pipeline_type>Normal</pipeline_type>
+    <parameters>
+    </parameters>
+    <capture_transform_performance>N</capture_transform_performance>
+    
<transform_performance_capturing_delay>1000</transform_performance_capturing_delay>
+    
<transform_performance_capturing_size_limit>100</transform_performance_capturing_size_limit>
+    <created_user>-</created_user>
+    <created_date>2020/12/11 21:09:27.289</created_date>
+    <modified_user>-</modified_user>
+    <modified_date>2020/12/11 21:09:27.289</modified_date>
+    <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key>
+    <is_key_private>N</is_key_private>
+  </info>
+  <notepads>
+  </notepads>
+  <order>
+    <hop>
+      <from>internal.entry.current.folder</from>
+      <to>fields</to>
+      <enabled>Y</enabled>
+    </hop>
+    <hop>
+      <from>fields</from>
+      <to>not resolved?</to>
+      <enabled>Y</enabled>
+    </hop>
+    <hop>
+      <from>not resolved?</from>
+      <to>Abort</to>
+      <enabled>Y</enabled>
+    </hop>
+  </order>
+  <transform>
+    <name>fields</name>
+    <type>WriteToLog</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <loglevel>log_level_basic</loglevel>
+    <displayHeader>Y</displayHeader>
+    <limitRows>N</limitRows>
+    <limitRowsNumber>0</limitRowsNumber>
+    <logmessage/>
+    <fields>
+      <field>
+        <name>internal.entry.current.folder</name>
+      </field>
+      <field>
+        <name>internal.pipeline.filename.name</name>
+      </field>
+      <field>
+        <name>internal.pipeline.name</name>
+      </field>
+      <field>
+        <name>internal.transform.name</name>
+      </field>
+      <field>
+        <name>internal.transform.copynr</name>
+      </field>
+    </fields>
+    <attributes/>
+    <GUI>
+      <xloc>352</xloc>
+      <yloc>112</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>internal.entry.current.folder</name>
+    <type>GetVariable</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <fields>
+      <field>
+        <name>internal.entry.current.folder</name>
+        <variable>${Internal.Entry.Current.Folder}</variable>
+        <type>String</type>
+        <format/>
+        <currency/>
+        <decimal/>
+        <group/>
+        <length>-1</length>
+        <precision>-1</precision>
+        <trim_type>none</trim_type>
+      </field>
+      <field>
+        <name>internal.pipeline.filename.name</name>
+        <variable>${Internal.Pipeline.Filename.Name}</variable>
+        <type>String</type>
+        <format/>
+        <currency/>
+        <decimal/>
+        <group/>
+        <length>-1</length>
+        <precision>-1</precision>
+        <trim_type>none</trim_type>
+      </field>
+      <field>
+        <name>internal.pipeline.name</name>
+        <variable>${Internal.Pipeline.Name}</variable>
+        <type>String</type>
+        <format/>
+        <currency/>
+        <decimal/>
+        <group/>
+        <length>-1</length>
+        <precision>-1</precision>
+        <trim_type>none</trim_type>
+      </field>
+      <field>
+        <name>internal.transform.name</name>
+        <variable>${Internal.Transform.Name}</variable>
+        <type>String</type>
+        <format/>
+        <currency/>
+        <decimal/>
+        <group/>
+        <length>-1</length>
+        <precision>-1</precision>
+        <trim_type>none</trim_type>
+      </field>
+      <field>
+        <name>internal.transform.copynr</name>
+        <variable>${Internal.Transform.CopyNr}</variable>
+        <type>String</type>
+        <format/>
+        <currency/>
+        <decimal/>
+        <group/>
+        <length>-1</length>
+        <precision>-1</precision>
+        <trim_type>none</trim_type>
+      </field>
+    </fields>
+    <attributes/>
+    <GUI>
+      <xloc>179</xloc>
+      <yloc>110</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>not resolved?</name>
+    <type>FilterRows</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <send_true_to/>
+    <send_false_to/>
+    <compare>
+      <condition>
+        <negated>N</negated>
+        <conditions>
+          <condition>
+            <negated>N</negated>
+            <leftvalue>internal.entry.current.folder</leftvalue>
+            <function>=</function>
+            <rightvalue/>
+            <value>
+              <name>constant</name>
+              <type>String</type>
+              <text>${Internal.Entry.Current.Folder}</text>
+              <length>-1</length>
+              <precision>-1</precision>
+              <isnull>N</isnull>
+              <mask/>
+            </value>
+          </condition>
+          <condition>
+            <negated>N</negated>
+            <operator>OR</operator>
+            <leftvalue>internal.pipeline.filename.name</leftvalue>
+            <function>=</function>
+            <rightvalue/>
+            <value>
+              <name>constant</name>
+              <type>String</type>
+              <text>${Internal.Pipeline.Filename.Name}</text>
+              <length>-1</length>
+              <precision>-1</precision>
+              <isnull>N</isnull>
+              <mask/>
+            </value>
+          </condition>
+          <condition>
+            <negated>N</negated>
+            <operator>OR</operator>
+            <leftvalue>internal.pipeline.name</leftvalue>
+            <function>=</function>
+            <rightvalue/>
+            <value>
+              <name>constant</name>
+              <type>String</type>
+              <text>${Internal.Pipeline.Name}</text>
+              <length>-1</length>
+              <precision>-1</precision>
+              <isnull>N</isnull>
+              <mask/>
+            </value>
+          </condition>
+          <condition>
+            <negated>N</negated>
+            <operator>OR</operator>
+            <leftvalue>internal.transform.name</leftvalue>
+            <function>=</function>
+            <rightvalue/>
+            <value>
+              <name>constant</name>
+              <type>String</type>
+              <text>${Internal.Transform.Name}</text>
+              <length>-1</length>
+              <precision>-1</precision>
+              <isnull>N</isnull>
+              <mask/>
+            </value>
+          </condition>
+          <condition>
+            <negated>N</negated>
+            <operator>OR</operator>
+            <leftvalue>internal.transform.copynr</leftvalue>
+            <function>=</function>
+            <rightvalue/>
+            <value>
+              <name>constant</name>
+              <type>String</type>
+              <text>${Internal.Transform.CopyNr}</text>
+              <length>-1</length>
+              <precision>-1</precision>
+              <isnull>N</isnull>
+              <mask/>
+            </value>
+          </condition>
+        </conditions>
+      </condition>
+    </compare>
+    <attributes/>
+    <GUI>
+      <xloc>496</xloc>
+      <yloc>112</yloc>
+    </GUI>
+  </transform>
+  <transform>
+    <name>Abort</name>
+    <type>Abort</type>
+    <description/>
+    <distribute>Y</distribute>
+    <custom_distribution/>
+    <copies>1</copies>
+    <partitioning>
+      <method>none</method>
+      <schema_name/>
+    </partitioning>
+    <row_threshold>0</row_threshold>
+    <message/>
+    <always_log_rows>Y</always_log_rows>
+    <abort_option>ABORT</abort_option>
+    <attributes/>
+    <GUI>
+      <xloc>640</xloc>
+      <yloc>112</yloc>
+    </GUI>
+  </transform>
+  <transform_error_handling>
+  </transform_error_handling>
+  <attributes/>
+</pipeline>
diff --git 
a/integration-tests/parameters_and_variables/main-0007-internal-variables.hwf 
b/integration-tests/parameters_and_variables/main-0007-internal-variables.hwf
new file mode 100644
index 0000000..1757440
--- /dev/null
+++ 
b/integration-tests/parameters_and_variables/main-0007-internal-variables.hwf
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workflow>
+  <name>main-0007-internal-variables</name>
+  <name_sync_with_filename>Y</name_sync_with_filename>
+  <description/>
+  <extended_description/>
+  <workflow_version/>
+  <created_user>-</created_user>
+  <created_date>2020/12/11 21:08:46.255</created_date>
+  <modified_user>-</modified_user>
+  <modified_date>2020/12/11 21:08:46.255</modified_date>
+  <parameters>
+    </parameters>
+  <actions>
+    <action>
+      <name>Start</name>
+      <description/>
+      <type>SPECIAL</type>
+      <attributes/>
+      <repeat>N</repeat>
+      <schedulerType>0</schedulerType>
+      <intervalSeconds>0</intervalSeconds>
+      <intervalMinutes>60</intervalMinutes>
+      <hour>12</hour>
+      <minutes>0</minutes>
+      <weekDay>1</weekDay>
+      <DayOfMonth>1</DayOfMonth>
+      <parallel>N</parallel>
+      <nr>0</nr>
+      <xloc>112</xloc>
+      <yloc>96</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>0007-internal-pipeline-variables.hpl</name>
+      <description/>
+      <type>PIPELINE</type>
+      <attributes/>
+      <filename>${PROJECT_HOME}/0007-internal-pipeline-variables.hpl</filename>
+      <params_from_previous>N</params_from_previous>
+      <exec_per_row>N</exec_per_row>
+      <clear_rows>N</clear_rows>
+      <clear_files>N</clear_files>
+      <set_logfile>N</set_logfile>
+      <logfile/>
+      <logext/>
+      <add_date>N</add_date>
+      <add_time>N</add_time>
+      <loglevel>Basic</loglevel>
+      <set_append_logfile>N</set_append_logfile>
+      <wait_until_finished>Y</wait_until_finished>
+      <follow_abort_remote>N</follow_abort_remote>
+      <create_parent_folder>N</create_parent_folder>
+      <run_configuration>local</run_configuration>
+      <parameters>
+        <pass_all_parameters>Y</pass_all_parameters>
+      </parameters>
+      <parallel>N</parallel>
+      <nr>0</nr>
+      <xloc>304</xloc>
+      <yloc>96</yloc>
+      <attributes_hac/>
+    </action>
+    <action>
+      <name>0007-internal-variables.hwf</name>
+      <description/>
+      <type>WORKFLOW</type>
+      <attributes/>
+      <run_configuration>local</run_configuration>
+      <filename>${PROJECT_HOME}/0007-internal-variables.hwf</filename>
+      <params_from_previous>N</params_from_previous>
+      <exec_per_row>N</exec_per_row>
+      <set_logfile>N</set_logfile>
+      <logfile/>
+      <logext/>
+      <add_date>N</add_date>
+      <add_time>N</add_time>
+      <loglevel>Nothing</loglevel>
+      <wait_until_finished>Y</wait_until_finished>
+      <follow_abort_remote>N</follow_abort_remote>
+      <create_parent_folder>N</create_parent_folder>
+      <pass_export>N</pass_export>
+      <run_configuration>local</run_configuration>
+      <parameters>
+        <pass_all_parameters>Y</pass_all_parameters>
+      </parameters>
+      <set_append_logfile>N</set_append_logfile>
+      <parallel>N</parallel>
+      <nr>0</nr>
+      <xloc>528</xloc>
+      <yloc>96</yloc>
+      <attributes_hac/>
+    </action>
+  </actions>
+  <hops>
+    <hop>
+      <from>Start</from>
+      <to>0007-internal-pipeline-variables.hpl</to>
+      <from_nr>0</from_nr>
+      <to_nr>0</to_nr>
+      <enabled>Y</enabled>
+      <evaluation>Y</evaluation>
+      <unconditional>Y</unconditional>
+    </hop>
+    <hop>
+      <from>0007-internal-pipeline-variables.hpl</from>
+      <to>0007-internal-variables.hwf</to>
+      <from_nr>0</from_nr>
+      <to_nr>0</to_nr>
+      <enabled>Y</enabled>
+      <evaluation>Y</evaluation>
+      <unconditional>N</unconditional>
+    </hop>
+  </hops>
+  <notepads>
+  </notepads>
+  <attributes/>
+</workflow>

Reply via email to