/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.engine;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.fudgemsg.FudgeContext;
import org.fudgemsg.mapping.FudgeDeserializer;
import org.fudgemsg.wire.FudgeMsgReader;
import org.fudgemsg.wire.xml.FudgeXMLStreamReader;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.fudgemsg.OpenGammaFudgeContext;
/**
* Responsible for deserializing a ViewInputs object from
* an input stream. Primarily a wrapper to hide underlying
* fudge deserialization constructs.
*/
public class ViewResultsDeserializer {
private final InputStream _inputStream;
/**
* Create a deserializer for the specified input stream.
*
* @param inputStream the stream to create a deserializer for
*/
public ViewResultsDeserializer(InputStream inputStream) {
_inputStream = ArgumentChecker.notNull(inputStream, "inputStream");
}
/**
* Deserialize the requested object from the input stream.
* Generally, this will either be a {@link ViewInputs} or a
* {@link ViewOutputs} object.
*
* @param clss the class for the type of object to be returned
* @param <T> the type of the object to be returned
* @return the deserialized object
*/
public <T> T deserialize(Class<T> clss) {
// Configure view from file
FudgeContext ctx = OpenGammaFudgeContext.getInstance();
FudgeXMLStreamReader reader = new FudgeXMLStreamReader(ctx, new InputStreamReader(_inputStream));
FudgeMsgReader fudgeMsgReader = new FudgeMsgReader(reader);
FudgeDeserializer deserializer = new FudgeDeserializer(ctx);
return deserializer.fudgeMsgToObject(clss, fudgeMsgReader.nextMessage());
}
}