Package com.opengamma.engine.fudgemsg

Source Code of com.opengamma.engine.fudgemsg.ComputedValueFudgeBuilder

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

import org.apache.commons.lang.Validate;
import org.fudgemsg.FudgeField;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.MutableFudgeMsg;
import org.fudgemsg.mapping.FudgeBuilder;
import org.fudgemsg.mapping.FudgeBuilderFor;
import org.fudgemsg.mapping.FudgeDeserializer;
import org.fudgemsg.mapping.FudgeSerializer;

import com.opengamma.engine.value.ComputedValue;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.util.fudgemsg.WriteReplaceHelper;

/**
* Fudge message builder for {@code ComputedValue}.
*/
@FudgeBuilderFor(ComputedValue.class)
public class ComputedValueFudgeBuilder implements FudgeBuilder<ComputedValue> {

  /**
   * Fudge field name.
   */
  private static final String SPECIFICATION_KEY = "specification";
  /**
   * Fudge field name.
   */
  private static final String VALUE_KEY = "value";

  @Override
  public MutableFudgeMsg buildMessage(final FudgeSerializer serializer, final ComputedValue object) {
    final MutableFudgeMsg msg = serializer.newMessage();
    appendToMsg(serializer, object, msg);
    return msg;
  }

  /*package*/static void appendToMsg(final FudgeSerializer serializer, final ComputedValue object, final MutableFudgeMsg msg) {
    final ValueSpecification specification = object.getSpecification();
    if (specification != null) {
      serializer.addToMessage(msg, SPECIFICATION_KEY, null, specification);
    }
    final Object value = object.getValue();
    if (value != null) {
      serializer.addToMessageWithClassHeaders(msg, VALUE_KEY, null, WriteReplaceHelper.writeReplace(value));
    }
  }

  @Override
  public ComputedValue buildObject(final FudgeDeserializer deserializer, final FudgeMsg msg) {
    final ValueSpecification valueSpec = getValueSpecification(deserializer, msg);
    final Object valueObject = getValueObject(deserializer, msg);
    return new ComputedValue(valueSpec, valueObject);
  }

  /*package*/static ValueSpecification getValueSpecification(final FudgeDeserializer deserializer, final FudgeMsg msg) {
    final FudgeField fudgeField = msg.getByName(SPECIFICATION_KEY);
    Validate.notNull(fudgeField, "Fudge message is not a ComputedValue - field 'specification' is not present");
    final ValueSpecification valueSpec = deserializer.fieldValueToObject(ValueSpecification.class, fudgeField);
    return valueSpec;
  }

  /*package*/static Object getValueObject(final FudgeDeserializer deserializer, final FudgeMsg msg) {
    FudgeField fudgeField;
    fudgeField = msg.getByName(VALUE_KEY);
    Validate.notNull(fudgeField, "Fudge message is not a ComputedValue - field 'value' is not present");
    final Object valueObject = deserializer.fieldValueToObject(fudgeField);
    return valueObject;
  }

}
TOP

Related Classes of com.opengamma.engine.fudgemsg.ComputedValueFudgeBuilder

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.