WSO2 EI, загрузка схем проверки из свойства - PullRequest
0 голосов
/ 31 мая 2019

У меня есть одна последовательность, которая будет загружаться из конкретной схемы проверки JSON из реестра, в зависимости от значения тела запроса:

<switch description="" source="get-property('uri.var.service')">
    <case regex="1">
        <property expression="base64Decode(get-property('registry', 'conf:/schemas/1'))" name="schema" scope="default" type="STRING"/>
    </case>
    <case regex="2">
        <property expression="base64Decode(get-property('registry', 'conf:/schemas/2'))" name="schema" scope="default" type="STRING"/>
    </case>
</switch>

Тогда я пытаюсь подтвердить это:

<validate cache-schema="true" source="json-eval($)">
    <schema key="{get-property('schema')}"/>
</validate>

Однако, это выдает мне эту ошибку:

 ValidateMediator Can not find JSON Schema {
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "uin": {
      "type": "string"
    }
  },
  "required": [
    "uin"
  ]
}

Почему я не могу загрузить правильную схему из свойства? Кроме того, в документации WSI2 EI нет примеров, касающихся динамических ключей для проверки JSON.

1 Ответ

2 голосов
/ 03 июня 2019

Согласно реализации проверяющего посредника [1] , из реестра может быть загружен только ключ схемы, а не вся схема. В вашем случае вся схема загружается вместо ключа схемы. В качестве решения вы можете определить свойство схемы как просто строковое значение.

<property name="schema" scope="default" type="STRING" value="conf:/schema.json"/>
...