Utilizando JSON em projetos iBOLT e uniPaaS

Jeronimo Costa

O padrão de notação JSON (“JavaScript Object Notation” http://en.wikipedia.org/wiki/JSON) tem sido bastante utilizado na troca de informações entre aplicações WEB atualmente, isto porque existem alguns ganhos como quantidade de bytes se comparado com XML (http://en.wikipedia.org/wiki/JSON#Comparison_with_other_formats) e o fato de não ser necessário a utilização de parse mais apurado como XML.

Como em nossa tecnologia (iBOLT e uniPaaS) existe a grande facilidade de trabalhar com XML, que tal convertermos JSON para XML? A idéia deste post é se utilizar de um componente JAVA já desenvolvido para o tratamento de JSON e incluir em nossa solução um componente reutilizável para iBOLT e invocar este código JAVA no uniPaaS.

As referências do nosso post são:

1)      http://json.org: Descrição de toda notação JSON

2)      http://json.org/java/: Código Java que iremos utilizar em nossa solução iBOLT e uniPaaS

3)      http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html: Como compilar o código extraído do item 2

4)      http://download.oracle.com/javase/6/docs/technotes/tools/windows/jar.html: Como gerar o arquivo .jar para ser incluído na biblioteca do iBOLT e uniPaaS

5)      http://devnet.magicsoftware.com/en/library?book=en/uniPaaS/&page=Java_Integration/Type_Signatures.htm: Como saber a assinatura de um objeto JAVA para ser utilizado em uniPaaS.

 

Preparando nossa biblioteca escrita em JAVA

Faça o download do código fonte que está no item 2 da nossa referência. Neste exemplo colocarei na pasta C:\POST, para seguir a estrutura do JAVA. Como o código foi desenvolvido dentro de um pacote org.json, coloque os arquivos dentro de uma estrutura de pasta org\json, então coloque todos os arquivos no caminho C:\POST\org\json. Veja como ficou nossa estrutura:

Para facilitar o nosso teste no iBOLT e uniPaaS, vamos criar um novo código JAVA, este código fará a conversão do objeto JSON em XML e vice-versa.

Crie um novo arquivo chamado Conversor.java e inclua o seguinte código:

Agora vamos compilar todos estes arquivos *.java, executando simplesmente o comando javac *.java, veja como foi o resultado:

Agora vamos juntar todos os *.class em um único pacote, basta ir para a pasta C:\POST e rodar o comando jar -cvf json.jar org\json\*.class, veja como foi o resultado:

Pronto na pasta C:\POST foi gerado o arquivo json.jar que vamos utilizar no iBOLT e uniPaaS.

 

Utilizando em iBOLT

Como o iBOLT tem a possibilidade de expandir a capacidade de sua lista de componentes, utilizando o item componente SDK (http://devnet.magicsoftware.com/en/library?book=en/iBOLT/&page=Component_SDK.htm) vamos incluir um novo componente que será capaz de converter um formato JSON para XML e ao contrário.

Pegue o arquivo json.jar gerado no item anterior e coloque na pasta <ibolt_home>\java\lib.

Acesse o menu Tools / Component SDK e clique em New.  Coloque as seguintes informações na tela:

 

Repare que o tipo é Java, e para ficar mais interessante copiei a imagem de http://json.org/img/json160.gif para <ibolt_home>icons\jsonifc.gif.

Clique em Methods e digite org.json.Conversor no campo class name, ao teclar tab aparecerão os métodos. Selecione somente os métodos toXML e toJSON. Veja:

Após clicar em load abrirá uma tela para melhorar a forma de configurar o nosso componente, neste passo é interessante colocar nomes amigáveis em Display Name, neste sentido vamos fazer as seguintes alterações:

No método toJSON, no parâmetro P1 colocar o display name para XML e no parâmetro P_Return colocar o display name para JSON. Em ambos os parâmetros altere o campo Picture para 32000.

No método toXML, no parâmetro P1 colocar o display name para JSON e no parâmetro P_Return colocar o display name para XML. Em ambos os parâmetros altere o campo Picture para 32000.

Clique em OK.

Para gerar o nosso componente e ser possível sua utilização clique em Generate e depois OK e pode fechar a tela atual.

O componente definido nos passos anteriores fica gravado na pasta <ibolt_home>\User resources\Components onde cada pasta significa um componente definido na tela do Componente SDK.

Sempre que precisar utilizar nos projetos o componente colocado no componente SDK você deve acionar o menu Project / Component clicando no botão Add.

Agora já temos um novo componente na lista de componente do iBOLT. Veja:

Agora podemos configurar os métodos, veja:

 

Observações que devem ser sempre seguidas em ambiente desenvolvimento e produção que utilizarem o componente em questão:

1)      O arquivo json.jar deve estar sempre no caminho <ibolt_home>\java\lib

2)      O componente SDK deve estar sempre na pasta <ibolt_home>\User resources\Components

 

Utilizando em uniPaaS

Para o uniPaaS carregar o arquivo json.jar criado anteriormente teremos que acrescentar no magic.ini na seção [MAGIC_JAVA] na configuração CLASSPATH o local onde o uniPaaS poderá encontrar o arquivo json.jar. Neste sentido iremos disponibilizar o arquivo json.jar em uma pasta na própria instalação do uniPaaS no local C:\MSE\uniPaaS1.9h\json por exemplo, veja:

Precisamos alterar no magic.ini na seção [MAGIC_JAVA] na configuração CLASSPATH informando o arquivo json.jar. Veja:

Agora vamos fazer o programa que invoca o código JAVA, imaginando que tivéssemos uma tela desta forma:

A referência da variável JSON é igual a “A” e a referência da variável XML é igual “B”. Basta utilizar a função JCallStatic. Nesta função precisamos passar o nome da classe e método, assinatura e parâmetros. No nosso caso as informações são:

Nome da classe = org.json.Conversor.toXML

Assinatura = (Ljava/lang/String;)Ljava/lang/String;  esta informação foi obtida utilizando a nossa referência do item 5.

O parâmetro = JSON que neste caso é a variável A.

Veja como fica nossa expressão:

A expressão acima está sendo utilizada em um update. Veja:

Executando e testando, veja que o objeto JSON é convertido em XML:

 

CONCLUSÃO

Com a implementação de uma nova funcionalidade em nossa ferramenta, colocamos em prática a possibilidade de interoperabilidade e aumento da capacidade em nossa ferramenta iBOLT e uniPaaS. Com isso, em um exemplo bem prático e simples colocamos a prova de como são simples e poderosas as nossas ferramentas.

Espero que este post tenha ajudado a enxergar no iBOLT e uniPaaS as ferramentas poderosas e versáteis que temos em nossas mãos.

 

Jeronimo Alberto da Costa 
Analista Programador / Magic Software Brasil 

3 comentários

  1. Jeronimo,

    Este componente é apenas para converter de JSON para XML ?, alguma alternativa de XML para JSON no caso de envio de dados para APIs.

    Obrigado.

  2. Thank you foe excellent article.
    I have a problem though, I copied the json.jar to the ibolt java/lib directory
    and did find it when searching for org.json.Conversor

    but when I select org.json.Conversor I get an error:
    failed to explore java file

    I managed to compile all the classes as described
    Hope for your help.

    TIA

  3. Isso é bacana, porque dá para pegar dados disponíveis em JSON, e ler com o DataMapper (no iBolt) ou com as funções Xml (no uniPaaS).

    E vice-versa.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *