Serializer.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.pdd.logger.traccia;
- import java.io.ByteArrayOutputStream;
- import java.io.OutputStream;
- import java.lang.reflect.Field;
- import java.util.Properties;
- import org.openspcoop2.message.xml.MessageXMLUtils;
- import org.openspcoop2.utils.json.JacksonJsonUtils;
- import org.openspcoop2.utils.json.JacksonXmlUtils;
- import org.openspcoop2.utils.service.beans.TransazioneBase;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- /**
- * Serializer
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class Serializer {
- private boolean prettyPrint = false;
- private String xml_namespace = "http://govway.org/traccia";
- private String xml_localName = "traccia";
-
- public Serializer() {
- }
- public Serializer(Properties pConf) throws TracciaException {
- try {
- Field [] fields = Serializer.class.getDeclaredFields();
- for (Field field : fields) {
- String fieldName = field.getName();
- fieldName = fieldName.replace("_", ".");
- if(pConf.containsKey(fieldName)) {
- String value = pConf.getProperty(fieldName);
- String bCN = boolean.class.getName()+"";
- if(bCN.equals(field.getType().getName())) {
- field.set(this, "true".equalsIgnoreCase(value));
- }else {
- field.set(this, value);
- }
- }
- }
- }catch(Exception e) {
- throw new TracciaException(e.getMessage(),e);
- }
-
- }
-
-
- public byte[] toJsonByteArray(TransazioneBase transazione) throws TracciaException {
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- this.toJson(bout, transazione);
- bout.flush();
- bout.close();
- return bout.toByteArray();
- }
- catch(Exception e) {
- throw new TracciaException(e.getMessage(),e);
- }
- }
- public String toJson(TransazioneBase transazione) throws TracciaException {
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- this.toJson(bout, transazione);
- bout.flush();
- bout.close();
- return bout.toString();
- }
- catch(Exception e) {
- throw new TracciaException(e.getMessage(),e);
- }
- }
- public void toJson(OutputStream os , TransazioneBase transazione) throws TracciaException {
- try {
- JacksonJsonUtils jsonUtils = JacksonJsonUtils.getInstance(this.prettyPrint);
- jsonUtils.writeTo(transazione, os);
- }
- catch(Exception e) {
- throw new TracciaException(e.getMessage(),e);
- }
- }
-
- public byte[] toXmlByteArray(TransazioneBase transazione) throws TracciaException {
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- this.toXml(bout, transazione);
- bout.flush();
- bout.close();
- return bout.toByteArray();
- }
- catch(Exception e) {
- throw new TracciaException(e.getMessage(),e);
- }
- }
- public String toXml(TransazioneBase transazione) throws TracciaException {
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- this.toXml(bout, transazione);
- bout.flush();
- bout.close();
- return bout.toString();
- }
- catch(Exception e) {
- throw new TracciaException(e.getMessage(),e);
- }
- }
- public void toXml(OutputStream os , TransazioneBase transazione) throws TracciaException {
- try {
- JacksonXmlUtils jacksonXmlUtils = JacksonXmlUtils.getInstance(this.prettyPrint);
-
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- jacksonXmlUtils.writeTo(transazione, bout);
- bout.flush();
- bout.close();
-
- MessageXMLUtils xmlUtils = MessageXMLUtils.DEFAULT;
- Element element = xmlUtils.newElement(bout.toByteArray());
- Document dom = xmlUtils.newDocument();
- Element elementNew = dom.createElementNS(this.xml_namespace, this.xml_localName);
- NodeList list = element.getChildNodes();
- for (int i = 0; i < list.getLength(); i++) {
- Node n = list.item(i);
- Node nAdopt = dom.adoptNode(n.cloneNode(true));
- elementNew.appendChild(nAdopt);
- }
- xmlUtils.writeTo(elementNew, os);
-
- }
- catch(Exception e) {
- throw new TracciaException(e.getMessage(),e);
- }
- }
-
- public void setPrettyPrint(boolean prettyPrint) {
- this.prettyPrint = prettyPrint;
- }
- public void setXml_namespace(String xml_namespace) {
- this.xml_namespace = xml_namespace;
- }
- public void setXml_localName(String xml_localName) {
- this.xml_localName = xml_localName;
- }
- }