/*
* Copyright (C) 2014 Intel Corporation
* All rights reserved.
*/
package test.xstream;
import com.intel.dcsg.cpg.crypto.RsaUtil;
import org.junit.Test;
import com.intel.mtwilson.rpc.v2.model.Rpc;
import com.intel.mtwilson.rpc.v2.model.RpcPriv;
import com.intel.dcsg.cpg.io.UUID;
import com.intel.dcsg.cpg.x509.X509Builder;
import com.intel.dcsg.cpg.x509.X509Util;
import com.thoughtworks.xstream.XStream;
import java.security.cert.X509Certificate;
/**
*
* @author jbuhacoff
*/
public class XstreamTest {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(XstreamTest.class);
@Test
public void testWriteObject() throws Exception {
// make a sample object
RpcPriv rpc = new RpcPriv();
rpc.setId(new UUID());
rpc.setName("test rpc");
rpc.setStatus(Rpc.Status.QUEUE);
rpc.setInput(new byte[] { 0, 1, 2, 3 });
X509Certificate cert = X509Builder.factory().selfSigned("CN=Test", RsaUtil.generateRsaKeyPair(1024)).build();
rpc.setOutput(cert.getEncoded());
// write to xml
XStream xs = new XStream();
String xml = xs.toXML(rpc);
log.debug("xml: {}", xml);
// read from xml
Object pojo = xs.fromXML(xml);
log.debug("pojo: {}", pojo.getClass().getName());
RpcPriv rpc2 = (RpcPriv)pojo;
log.debug("id: {}" , rpc2.getId());
log.debug("status: {}", rpc2.getStatus());
log.debug("input: {}", rpc2.getInput());
X509Certificate cert2 = X509Util.decodeDerCertificate(rpc2.getOutput());
log.debug("cert: {}", cert2.getSubjectX500Principal().getName());
}
}