Java,  OSB

Expondo um Serviço Rest no OSB – Parte 2: Transformando Xml em Json Java

Neste Post vou mostrar um codigo Java pronto que faz a transformação de um XML para um Json e em seguida vou mostrar como devemos exportar este projeto em um arquivo JAR para expor no OSB.

É importante entendermos neste processo como deve ser realizado o export do projeto pois para outros codigos Java devemos fazer de outras formas pois cada código pode existir uma particularidade no caso de dependências.

A exposição do serviço Rest no OSB será dividida em Partes conforme abaixo para que eu consiga detalhar ao máximo cada etapa, consulte o Link de cada uma para ver as demais Partes:

Abra o eclipse e crie um projeto java como abaixo clicando em Create a Java Project

Obs: No meu caso estou utilizando o Spring Tool Suite 4  que já aparece a opção de criar o projeto.

Em Project Name coloque XmlJson e em Use a project specific JRE você precisará usar a JDK 1.6 do Java pois este é um codigo Java antigo e irá compilar apenas nesta versão do JAVA, e em seguida clique em Finish.

Agora clique com o botão direito em cima de JRE System Livrary e clique em Properties.

Na caixa que abrir clique em Execution environment e em seguida na outra caixa clique em J2SE-1.4 e ao lado clique em jdk1.6.0_45 (ou a versão que você tiver da JDK 6) e em seguida clique em Apply and Close nas duas caixas que foram abertas.

Agora crie uma pasta chamada META-INF e dentro da pasta crie um arquivo chamado MANIFEST.MF para que fique conforme abaixo:

Adicione o conteúdo abaixo dentro deste arquivo:

Manifest-Version: 1.0
Class-Path: json-lib-2.4.jar

Agora dentro da pasta src crie a package br.com.uanscarvalho e crie a classe XmlJsonUtil. Abaixo veja como criar a classe.

Copie abaixo o codigo para que fique dentro da classe XmlJsonUtil

package br.com.uanscarvalho;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;

import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;

public class XmlJsonUtil {

	public static String xmlToJson(XmlObject xmlObject) throws Exception {

		String xml = xmlObject.toString();

		System.out.println(xml);

		XMLSerializer ser = new XMLSerializer();
		JSONObject json = (JSONObject) ser.read(xml);

		System.out.println(json);

		return json.toString();
	}

	public static String xmlToJsonArray(XmlObject xmlObject) throws Exception {

		String xml = xmlObject.toString();

		System.out.println(xml);

		XMLSerializer ser = new XMLSerializer();
		JSONArray json = (JSONArray) ser.read(xml);

		System.out.println(json);

		return json.toString();
	}

	public static XmlObject jsonToXml(String json) throws Exception {

		if (json == null || json.trim().length() == 0) {
			return null;
		}

		XMLSerializer ser = new XMLSerializer();

		String xml = "";

		if (json.startsWith("{")) {
			JSONObject jsonObject = JSONObject.fromObject(json);
			xml = ser.write(jsonObject);
		} else {
			JSONArray jsonArray = JSONArray.fromObject(json);
			xml = ser.write(jsonArray);
		}

		return XmlObject.Factory.parse(xml);
	}

	public static XmlObject jsonToGenericXml(String json) throws Exception {

		if (json == null || json.trim().length() == 0) {
			return null;
		}

		JSONObject jsonObject = JSONObject.fromObject(json);
		JSONArray jsonArray = jsonObject.getJSONArray("Documents");

		if (jsonArray == null || jsonArray.size() == 0) {
			return null;
		}

		JSONObject root = (JSONObject) jsonArray.get(0);

		String xml = "<jsonToXml><e></e></jsonToXml>";

		XmlObject xmlObject = XmlObject.Factory.parse(xml);
		XmlCursor xmlCursor = xmlObject.newCursor();
		xmlCursor.toChild("jsonToXml");
		xmlCursor.toChild("e");

		Set entrySet = root.entrySet();
		for (Iterator iter = entrySet.iterator(); iter.hasNext();) {
			Map.Entry element = (Map.Entry) iter.next();
			Object value = element.getValue();
			String valueAsString = "";

			if (value == null) {
				valueAsString = "";
			} else {
				valueAsString = value.toString();
			}

			if (value.equals("null")) {
				xmlCursor.insertElement((String) element.getKey());
			} else {
				xmlCursor.insertElementWithText((String) element.getKey(),
						valueAsString);
			}

		}

		return xmlObject;
	}
	
	
	public static void main(String[] args) throws Exception {
		String json = "[{" +
         "\"verificador\":\"1\","+
         "\"tipo\":\"total\","+
         "\"valor_pago\":\"18.00\","+
         "\"data_pagamento\":\"2020-02-01\","+
         "\"data_transacao\":\"2020-02-02\"}," +
         "{"+
         "\"verificador\":\"2\","+
         "\"tipo\":\"parcial\","+
         "\"valor_pago\":\"30.00\","+
         "\"data_pagamento\":\"2020-02-18\","+
         "\"data_transacao\":\"2020-02-19\"}]";
		
		XmlObject xml = XmlJsonUtil.jsonToXml( json );
		
		System.out.println( xml.toString() );
		
		String jsonResult = XmlJsonUtil.xmlToJsonArray( xml );
		
		System.out.println( jsonResult );
	}
}

Veja que o codigo realmente ficou todo quebrado pois precisamos agora adicionar as libs necessárias que são nossas dependencias.

Faça o download das libs necessarias que estão no meu gitHub e em seguida baixe para algum local da sua maquina. Abaixo veja que no meu caso ficou em C:\libs

Vá novamente para o eclipse e com o botao direito clique em cima do seu projeto XmlJson e clique novamente em Properties.

Então ira aparecer a tela abaixo, ao lado esquerdo clique em Java Build Path em seguida clique na aba Libraries e depois clique em Add Exernal Jar

Agora vá na pasta onde estão suas libs, selecione todas e clique em abrir:

Na tela seguinte veja como deverá ficar, então clique em Apply and Close

Tudo Ok, caso queira fazer um teste com a classe XmlJsonUtil, basta apenas clicar com o botão direto em cima da classe e em seguida Run As –> Java Application

Vamos agora exportar o projeto para ser usado no OSB, para isso clique com o botão direito em cima do projeto e clique em Export

Selecione JAR file conforme abaixo e clique em Next

Em JAR file conforme abaixo selecione onde você ira salvar o arquivo e o nome. No meu caso vou salvar em C:\libs com o nome xmlJson.jar e em seguida clique em Next

Na tela seguinte selecione as duas opções de Export e em seguida clique em Next

Na próxima tela clique em Use existing manifest from workspace, em seguida selecione o arquivo MANIFEST.MF conforme abaixo e clique em OK

Então na tela abaixo clique em Finish e nosso arquivo JAR estará pronto para ser utilizado no OSB para fazer a transformação de um XML para um JSON e vice versa.

Clique abaixo para fazer o download no meu GitHub de todas as libs necessárias para colocarmos no OSB, principalmente a lib que acabamos de criar.

https://github.com/uanscarvalho/ProjetoXmlJsonOSB.git

Abraços e até a Próxima

/:-D

 

 

Criei este Blog destinado a desenvolvedores e interessados na Tecnologia Oracle SOA Suite, minha idéia é que no futuro ele sirva de referência para Analistas e Desenvolvedores desde aprendizes a especialistas. Já existem alguns Posts interessantes que abordam um pouco do meu dia a dia, no passar do tempo irei alimentar este Blog com o máximo de informações possíveis, por isso peço por gentileza aos interessados e afins que caso tenham alguma dúvida, sugestão ou crítica que me digam para que eu possa da melhor forma suprir as expectativas e na medida do possível sanar todas as duvidas que vierem a surgir ou até mesmo criar novos Posts abordando algum tópico que venha a ser relevante para todos os interessados. Obrigado Uans Carvalho

Leave a Reply

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