/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.fudgemsg; import java.util.Collection; 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.google.common.collect.Lists; import com.opengamma.engine.value.ValueSpecification; import com.opengamma.engine.view.cycle.ComputationCycleQuery; /** * Fudge message builder for {@code ComputationCacheQuery}. */ @FudgeBuilderFor(ComputationCycleQuery.class) public class ComputationCacheQueryFudgeBuilder implements FudgeBuilder<ComputationCycleQuery> { private static final String CALCULATION_CONFIGURATION_FIELD_NAME = "calculationConfigurationName"; private static final String VALUE_SPECIFICATIONS_FIELD_NAME = "valueSpecifications"; @Override public MutableFudgeMsg buildMessage(FudgeSerializer serializer, ComputationCycleQuery object) { MutableFudgeMsg msg = serializer.newMessage(); msg.add(CALCULATION_CONFIGURATION_FIELD_NAME, object.getCalculationConfigurationName()); final MutableFudgeMsg valueSpecificationsMessage = serializer.newMessage(); for (ValueSpecification valueSpecification : object.getValueSpecifications()) { serializer.addToMessage(valueSpecificationsMessage, null, null, valueSpecification); } msg.add(VALUE_SPECIFICATIONS_FIELD_NAME, valueSpecificationsMessage); return msg; } @Override public ComputationCycleQuery buildObject(FudgeDeserializer deserializer, FudgeMsg message) { ComputationCycleQuery computationCacheQuery = new ComputationCycleQuery(); computationCacheQuery.setCalculationConfigurationName(message.getString(CALCULATION_CONFIGURATION_FIELD_NAME)); Collection<ValueSpecification> specs = Lists.newArrayList(); FudgeMsg valueSpecificationMessage = message.getMessage(VALUE_SPECIFICATIONS_FIELD_NAME); for (FudgeField fudgeField : valueSpecificationMessage) { specs.add(deserializer.fieldValueToObject(ValueSpecification.class, fudgeField)); } computationCacheQuery.setValueSpecifications(specs); return computationCacheQuery; } }