Jordan Sammut created NIFI-15975:
------------------------------------

             Summary: JSLTTransformJSON Processor flagging errors on valid JSLT
                 Key: NIFI-15975
                 URL: https://issues.apache.org/jira/browse/NIFI-15975
             Project: Apache NiFi
          Issue Type: Bug
            Reporter: Jordan Sammut


I am noticing some inconsistencies when it comes to the JSLTTransformJSON when 
validating the JSLT expression:

*Example 1*
{code:java}
let is_valid_record =
  (.value.action == "tags")let pass = if($is_valid_record)
  let customer_id = .value.user_id
  let client_name = replace(.value.client_name, "-[^-]+$", "")
  let updated_at = format-time(number(.value.version), "yyyy-MM-dd 
HH:mm:ss.SSS", "UTC")  {
  "key": $client_name + "/" + $customer_id,
  "metadata": {
    "topic": "customer_tag.cl1." + $client_name + ".v1"
  },
  "value": {    "customer_id":  $customer_id,
    "client_name":  $client_name,
    "message_id":   .value.msg_id,
    "updated_at":   $updated_at,
    "tags": .value.tags,
    "api_version": .value.api_version,    "source_kafka_timestamp": 
format-time(number(.metadata.timestamp) / 1000, "yyyy-MM-dd HH:mm:ss.SSS", 
"UTC"),
    "nifi_captured_at":       format-time(now(), "yyyy-MM-dd HH:mm:ss.SSS", 
"UTC")
    }
  }
else
  null
$pass{code}


The above transformation seems to compile with no issues, however if I had to 
add a comment at the very first line, Example "// Test", the compilation fails 
with the following error:

"'JSLT Transformation' is invalid because JSLT Transformation not valid: Read 
JSLT Transform failed"

*Example 2:*

{code:java}
let id = .value.id
let client_name = replace(.value.client_name, "-[^-]+$", ""){
"key": $client_name + "/" + $id,
"metadata": {
  "topic": "group.cl1." + $client_name + ".v1"
},
"value": {
  "client_name":  $client_name,
  "id":           $id,
  "name":         .value.name,
  "operation":    .value.operation,
  "enabled":      .value.enabled,
  "api_version":  .value.api_version,
  "message_id":   .value.msg_id,
  "source_kafka_timestamp": format-time(number(.metadata.timestamp) / 1000, 
"yyyy-MM-dd HH:mm:ss.SSS", "UTC"),
  "nifi_captured_at":       format-time(now(), "yyyy-MM-dd HH:mm:ss.SSS", "UTC")
  }
} {code}

The above is a valid JSLT but is returning the following error on compilation:

"'JSLT Transformation' is invalid because JSLT Transformation not valid: Parse 
error: Encountered " "=" "= "" at line 1, column 35. Was expecting: "(" ... at 
<inline>:1:23"

Simple adding a space at line 2 fixes it though:


{code:java}
let id = .value.id
 let client_name = replace(.value.client_name, "-[^-]+$", ""){
"key": $client_name + "/" + $id,
"metadata": {
  "topic": "group.cl1." + $client_name + ".v1"
},
"value": {
  "client_name":  $client_name,
  "id":           $id,
  "name":         .value.name,
  "operation":    .value.operation,
  "enabled":      .value.enabled,
  "api_version":  .value.api_version,
  "message_id":   .value.msg_id,
  "source_kafka_timestamp": format-time(number(.metadata.timestamp) / 1000, 
"yyyy-MM-dd HH:mm:ss.SSS", "UTC"),
  "nifi_captured_at":       format-time(now(), "yyyy-MM-dd HH:mm:ss.SSS", "UTC")
  }
} {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to