Package com.opengamma.financial.analytics.fudgemsg

Source Code of com.opengamma.financial.analytics.fudgemsg.AnalyticsTestBase

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.fudgemsg;

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;

import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.mapping.FudgeDeserializer;
import org.fudgemsg.mapping.FudgeSerializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opengamma.util.fudgemsg.OpenGammaFudgeContext;
import com.opengamma.util.fudgemsg.WriteReplaceHelper;

/**
* Base class for testing OG-Analytics objects to and from Fudge messages.
*/
public class AnalyticsTestBase {

  private static final Logger s_logger = LoggerFactory.getLogger(AnalyticsTestBase.class);

  @Deprecated
  protected FudgeContext getFudgeContext() {
    return OpenGammaFudgeContext.getInstance();
  }

  private FudgeMsg cycleMessage(final FudgeMsg message) {
    final byte[] data = OpenGammaFudgeContext.getInstance().toByteArray(message);
    s_logger.info("{} bytes", data.length);
    return OpenGammaFudgeContext.getInstance().deserialize(data).getMessage();
  }

  @SuppressWarnings("unchecked")
  protected <T> T cycleObject(final Class<T> clazz, final T object) {
    s_logger.info("object {}", object);
    final FudgeSerializer fudgeSerializationContext = new FudgeSerializer(getFudgeContext());
    final FudgeDeserializer fudgeDeserializationContext = new FudgeDeserializer(getFudgeContext());
    FudgeMsg message = fudgeSerializationContext.objectToFudgeMsg(WriteReplaceHelper.writeReplace(object));
    assertNotNull(message);
    s_logger.info("message {}", message);
    message = cycleMessage(message);
    s_logger.info("message {}", message);
    final Object newObject = fudgeDeserializationContext.fudgeMsgToObject(message);
    assertNotNull(newObject);
    s_logger.info("object {}", newObject);
    assertTrue(clazz.isAssignableFrom(newObject.getClass()));
    assertEquals(object.getClass(), newObject.getClass());
    return (T) newObject;
  }

}
TOP

Related Classes of com.opengamma.financial.analytics.fudgemsg.AnalyticsTestBase

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.