проверка нуля в DataWeave 2 - PullRequest
       6

проверка нуля в DataWeave 2

0 голосов
/ 07 сентября 2018

У меня есть URL-адреса в моем URL, и я использую в DW как:

<set-variable value=" #[output application/java --- ( (attributes.queryParams.filePath startsWith  ('/opt/mypath/')))] .../>

Если я не передаю какие-либо параметры, я получаю исключение как:

  Message               : "You called the function 'startsWith' with these arguments: 
       1: Null (null)
       2: String ("/opt/mypath/")

     But it expects arguments of these types:
       1: String
       2: String 
 1| output application/java --- ( (attributes.queryParams.filePath startsWith  ('/opt/mypath/')))

1) Как проверить для нуля?

2) Если параметры не передаются, я хочу вернуться к пользователю, чтобы передать параметры и избежать дальнейших потоков. Можно ли вернуться в DataWeave? или мне нужно использовать стандартный скрипт Groovy для возврата?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете использовать условную логику для защиты от нулевых входов, например:

if (attributes.queryParams.filePath != null) (attributes.queryParams.filePath startsWith '/opt/mypath/') else null

Если вам нужна защита и от пустой строки, я бы использовал isEmpty:

if (isEmpty(attributes.queryParams.filePath)) null else (attributes.queryParams.filePath startsWith '/opt/mypath/')

Однако, если вы подтвердите, что attributes.queryParams.filePath не является нулевым заранее, код DataWeave может быть более простым. Вот и все. Это остановит весь поток и вернет ошибку, если параметр запроса имеет значение null:

<flow name="flow" doc:id="d891a730-794d-4ca5-b6d9-dd00238d89ba" >
  <http:listener doc:name="Listener" doc:id="a1cadeb8-d589-436c-8342-c13e065e4618" config-ref="HTTP_Listener_config" path="/test"/>
  <validation:is-not-null doc:name="Is not null" doc:id="66577b65-ba8d-4954-b3e7-e598310773ea" value="#[attributes.queryParams.filePath]" message='"filePath" must be included in the query parameters'/>
  <set-variable value="#[attributes.queryParams.filePath]" doc:name="Set Variable" doc:id="68511ea5-25cf-465f-ad89-c33a83ab83ec" variableName="filePath"/>
  <error-handler>
    <on-error-propagate enableNotifications="true" logException="true" doc:name="On Error Propagate" doc:id="ac12ae39-c388-4204-b1b1-b8c42aefcd66" >
    <ee:transform doc:name="Transform Message" doc:id="da695971-3ca4-435e-a4cd-b19fdd431bd6" >
      <ee:message >
        <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
error.description
]]></ee:set-payload>
        </ee:message>
      </ee:transform>
    </on-error-propagate>
  </error-handler>
</flow>
...