Package org.uengine.components.serializers

Source Code of org.uengine.components.serializers.XStreamSerializer

package org.uengine.components.serializers;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.Vector;

import org.uengine.kernel.ActivityRepository;
import org.uengine.kernel.DefaultActivity;
import org.uengine.kernel.GlobalContext;
import org.uengine.kernel.NeedArrangementToSerialize;
import org.uengine.kernel.ProcessDefinition;
import org.uengine.kernel.Serializer;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.core.JVM;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.xml.CompactWriter;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.mapper.Mapper;

/**
* @author Jinyoung Jang
*/

public class XStreamSerializer implements Serializer{
  public XStream xstream;// = new XStream(/*new DomDriver()*/);

  public XStreamSerializer(){
    xstream = new XStream(/*new DomDriver()*/);
   
    if("true".equals(GlobalContext.getPropertyString("xstream.compatibility.for.jdk1.4.1", "true"))){
      xstream.registerConverter(new ActivityRepositoryConverter(xstream.getClassMapper()));
    }
  }
 
  public boolean isSerializable(Class cls){
    return true;
  }
 
  public void serialize(Object sourceObj, OutputStream os, Hashtable extendedContext) throws Exception{

    if(sourceObj instanceof NeedArrangementToSerialize)
      ((NeedArrangementToSerialize)sourceObj).beforeSerialization();

    try{
      xstream.toXML(sourceObj, new OutputStreamWriter(os, "UTF-8"));
      //
    }catch(Exception ex){
      throw ex;
    }finally{
      try{os.close();}catch(Exception exx){};
    }
  }
 
  public Object deserialize(InputStream is, Hashtable extendedContext) throws Exception{
    Object obj = null;

    try{
      //xstream.setClassLoader(getClass().getClassLoader().loadClass("com.acme.TestClass"));
      //GlobalContext.class.getClassLoader().loadClass("com.acme.TestClass");
     
      obj = xstream.fromXML(new InputStreamReader(is, "UTF-8"));
    }catch(Exception e){
      throw e;
    }finally{
      try{is.close();}catch(Exception exx){};
    }
   
    if(obj instanceof NeedArrangementToSerialize)
      ((NeedArrangementToSerialize)obj).afterDeserialization();
   
    return obj;
  }
 
  public static void main(String args[]) throws Exception{
/*    Object test = GlobalContext.deserialize(new FileInputStream("Y:\\src\\servlet_home\\webapps\\uengine-web\\WEB-INF\\classes\\procdef\\629.upd"), "XStream");
   
    System.out.println(test);
*/   
   
//    ProcessDefinition proc = new ProcessDefinition();
//    proc.addChildActivity(new DefaultActivity("test"));
//   
//    FileOutputStream fos = new FileOutputStream(new File("c:\\test.xml"));
//    GlobalContext.serialize(proc, fos, String.class);
//    fos.close();
//    Object test = GlobalContext.deserialize(new FileInputStream("c:\\test.xml"), "XStream");
   
//    System.out.println(test);
 
    (new XStreamSerializer()).find(args[0]);
//    (new XStreamSerializer()).convert("c:\\temp\\procdef\\491.upd");
  }
 
 
  protected static void convert(String src, Serializer sourceSerialzer, Serializer targetSerializer) throws Exception{
    String srcXMLPath = src;
    String targetXMLPath = srcXMLPath.split("\\.")[0] + ".xpd";
   
    try{
      //System.out.println(srcXMLPath + " to " + targetXMLPath + ".");

      Object srcObj = sourceSerialzer.deserialize(new java.io.FileInputStream(srcXMLPath), null);
     
      ProcessDefinition def = (ProcessDefinition)srcObj;       
       
     
      System.out.println(src+"="+def.getName());
      //targetSerializer.serialize(srcObj, new java.io.FileOutputStream(targetXMLPath), null);
    }catch(Exception e){
      //e.printStackTrace();
    }

  }
 
    protected static void find(String s) throws Exception
    {
      XStreamSerializer sourceSerializer = new XStreamSerializer();
      sourceSerializer.xstream = new XStream();
      XStreamSerializer targetSerializer = new XStreamSerializer();
     
        File file = new File(s);
        File afile[] = file.listFiles();
        for(int i = 0; i < afile.length; i++){
            if(afile[i].getName().endsWith(".upd")){
                convert(afile[i].getPath(), sourceSerializer, targetSerializer);
            }else
            if(afile[i].isDirectory())
                find(afile[i].getPath());
        }
    }
 
}

class ActivityRepositoryConverter extends com.thoughtworks.xstream.converters.collections.CollectionConverter{
      public ActivityRepositoryConverter(Mapper mapper) {
          super(mapper);
      }

      public boolean canConvert(Class type) {
          return ActivityRepository.class == type;
      }

}
TOP

Related Classes of org.uengine.components.serializers.XStreamSerializer

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.