/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.core.security.impl;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.fudgemsg.FudgeContext;
import org.fudgemsg.mapping.FudgeObjectReader;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.core.security.Security;
import com.opengamma.util.ArgumentChecker;
/**
*
*/
public final class SecurityFudgeUtil {
private SecurityFudgeUtil() {
}
public static byte[] convertToFudge(FudgeContext fudgeContext, Security security) {
ArgumentChecker.notNull(fudgeContext, "fudgeContext");
ArgumentChecker.notNull(security, "security");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
fudgeContext.writeObject(security, baos);
byte[] bytes = baos.toByteArray();
return bytes;
}
public static Security convertFromFudge(FudgeContext fudgeContext, String className, byte[] data) {
ArgumentChecker.notNull(fudgeContext, "fudgeContext");
ArgumentChecker.notNull(className, "className");
if (data == null) {
return null;
}
Class<?> clazz = null;
try {
//clazz = Class.forName(className);
clazz = SecurityFudgeUtil.class.getClassLoader().loadClass(className);
} catch (ClassNotFoundException ex) {
throw new OpenGammaRuntimeException("No class available with name " + className + " for decoding.", ex);
}
ByteArrayInputStream bais = new ByteArrayInputStream(data);
FudgeObjectReader objectReader = fudgeContext.createObjectReader(bais);
Security security = (Security) objectReader.read(clazz);
return security;
}
}