Package com.im.imjutil.serialization

Source Code of com.im.imjutil.serialization.Serializer

package com.im.imjutil.serialization;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
import com.thoughtworks.xstream.io.xml.DomDriver;

/**
* Classe responsavel por gerar a serializacao texto de um objeto binario,
* podendo usar os protocolos XML ou JSON.
*
* @author Felipe Zappala
*/
public final class Serializer {

  private Serializer() {
    super();
  }
 
  /**
   * algoritmo de serializacao
   */
  @SuppressWarnings("unchecked")
  private static <T> T serializer(Object object,
      boolean isJSON, boolean isSerialize) {
    XStream serializer;
    if (isJSON) {
      // Serializador JSON
      serializer = new XStream(new JettisonMappedXmlDriver());
    } else {
      // Serializador XML
      serializer = new XStream(new DomDriver());
    }
    // Processa automaticamente as anotacoes presentes nos modelos.
    serializer.autodetectAnnotations(true);

    if (isSerialize) {
      // Serializa o objeto
      return (T) serializer.toXML(object);
    }
    // Desserializa o objeto
    return (T) serializer.fromXML((String) object);
  }
 
  /**
   * Serializa um objeto Java para string XML.
   */
  public static String toXML(Object obj) {
    return serializer(obj, false, true);
  }
 
  /**
   * Desserializa uma string XML para um objeto Java.
   */
  public static <T> T fromXML(String obj) {
    return serializer(obj, false, false);
  }
 
  /**
   * Serializa um objeto Java para uma string JSON.
   */
  public static String toJSON(Object obj) {
    return serializer(obj, true, true);
  }
 
  /**
   * Desserializa uma string JSON para um objeto Java.
   */
  public static <T> T fromJSON(String obj) {
    return serializer(obj, true, false);
  }
 
}
TOP

Related Classes of com.im.imjutil.serialization.Serializer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.