mcorp. tecnologia e informações inúteis de utilidade pública

18dez/090

Testes na versão 2.2.0 do WSO2 Data Services Server

Estava eu, numa calma sexta-feira, realizando testes na recém lançada versão 2.2.0 do WSO2 Data Services Server, e para começá-los resolvi fazer deploy dos serviços que já temos desenvolvido, pensando que tudo seria tranquilo, como estava o meu dia, mas... ledo engano.

Erro - Primeiro ato

Fui no básico: "Add > Data Service > Upload" e...

wso2-data-services-faulty-01Um erro que não me diz muito, então o jeito foi ver o que poderia ser por "tentativa" e erro. Após um pouco de luta e leitura do código fonte do arquivo DBS, descobri que era algum método que executa uma procedure e não tinha o ordinal preenchido.

<query id="productsByGroup" useConfig="default">
<sql>call sp_productsByGroup @group_id = ?</sql>
<param name="cliente" ordinal="" sqlType="INTEGER" type="IN"/>
<result defaultNamespace="http://ds.ws.mcorp.com.br/products" element="products" rowName="product">
<element column="id" name="id"/>
<element column="name" name="name"/>
</result>
</query>

Então peguei a linha 3 e corrigi, deixando assim:

<query id="productsByGroup" useConfig="default">
<sql>call sp_productsByGroup @group_id = ?</sql>
<param name="cliente" ordinal="1" sqlType="INTEGER" type="IN"/>
<result defaultNamespace="http://ds.ws.mcorp.com.br/products" element="products" rowName="product">
<element column="id" name="id"/>
<element column="name" name="name"/>
</result>
</query>

Ou seja, devíamos ter prestado mais atenção quando falavam ser obrigatório para procedures o preenchimento desse campo, mas como nunca deu problema, então não prestávamos a devida atenção.

Erro - Segundo ato

Com o serviço devidamente publicado, fui a execução dos métodos para ver se tudo iria bem. Primeiro método (sem parâmetros de entrada) foi tranquilo, retornou tudo que eu precisava. Já no segundo método...

wso2-data-services-faulty-02E voltamos a busca do erro perdido... E dessa vez não foi falta de atenção nossa, apenas o plugin que o pessoal do WSO2 disponibiliza (e que ensinei a compilar) que não preencheu o atributo como devia. Na chamada da operação estava assim:

<operation name="productsByGroup">
<call-query href="productsByGroup">
<with-param name="group_id" query-param=""/>
</call-query>
</operation>

Enquanto deveria estar assim:

<operation name="productsByGroup">
<call-query href="productsByGroup">
<with-param name="group_id" query-param="group_id"/>
</call-query>
</operation>

E feito todas essas alterações na definição dos data service, tudo correu bem e tranquilo com essa nova versão.

Mas ainda acho que vale a pena esperar um pouco pra ver se não aparece nenhuma correção que levem eles a gerar a versão 2.2.1; também tenho que verificar se os patches que aplicamos na versão anterior deixaram de ser necessário. Mas isso fica pra uma próximo oportunidade.