Wso2esb: ошибка при обработке нулевого значения в случае переключения

Я использую wso2esb 4.7.0 и wso2dss 3.1.0. Я хочу выбрать какой-либо столбец из таблицы. Для этого я использовал следующий запрос в dss:

select roleid,rolename,rolecode from mrole where clientid = ? and ModifiedOn = ?

Он отлично работает как в dss, так и в esb. Вывод выглядит следующим образом:

{"roleid":"1077282521908571","rolename":"adminrole","rolecode":"adminrole"},{"roleid":"1077282521908571","rolename":"adminrole","rolecode":"adminrole"},{"roleid":"1077278842127704","rolename":"everyonerole","rolecode":"everyonerole"},{"roleid":"1077282521908571","rolename":"adminrole","rolecode":"adminrole"}

это один случай. Теперь во втором случае, если я не был изменен, то очевидно, что он показывает ошибку в dss, например:

Caused by: javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'SQLQuery.processNormalQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: muser_DataService2.0
Location: /muser_DataService2.0.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: Select_Role_Details_Op
Current Params: {clientid=214057357158656, modifiedon=}
Nested Exception:-
java.lang.NumberFormatException: For input string: ""

Чтобы решить эту проблему, я использую регистр переключения в esb, например:

 <switch source="get-property('ModifiedOn')">
            <case regex="''">
               <property name="ModifiedOn" value="0" scope="default" type="STRING"/>
               <log level="custom">
                  <property name="ModifiedOn in case of null: "
                            expression="get-property('ModifiedOn')"/>
               </log>
            </case>           
 </switch>

он показывает предупреждающее сообщение в esb, например:

[2014-10-08 11:43:54,100]  WARN - SwitchCase Provided character sequence for switch case condition is 'null'. Switch case will not be executed.

и без выполнения случая переключения он напрямую движется вперед и генерирует ошибку, а dss показывает ошибку, как указано выше. Как я должен указать нулевое условие в случае переключения?


person user3129056    schedule 08.10.2014    source источник


Ответы (1)


используйте boolean функцию xpath, чтобы проверить, существует ли ваше свойство:

<filter xpath="boolean(get-property('ModifiedOn'))">
   <then> 
      ...
   </then>
   <else>
      ...
   </else>
</filter>
person Jean-Michel    schedule 08.10.2014