/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.web.json; import java.io.StringReader; import java.io.StringWriter; import org.fudgemsg.FudgeContext; import org.fudgemsg.FudgeMsg; import org.fudgemsg.mapping.FudgeDeserializer; import com.opengamma.util.fudgemsg.OpenGammaFudgeContext; /** * Partial implementation of {@link JSONBuilder} * * @param <T> the config document parameter type */ public abstract class AbstractJSONBuilder<T> implements JSONBuilder<T> { private static final FudgeContext s_fudgeContext = OpenGammaFudgeContext.getInstance(); protected <E> E fromJSON(Class<E> clazz, String json) { FudgeMsg fudgeMsg = toFudgeMsg(json); return new FudgeDeserializer(s_fudgeContext).fudgeMsgToObject(clazz, fudgeMsg); } private FudgeMsg toFudgeMsg(final String json) { FudgeMsgJSONReader fudgeJSONReader = new FudgeMsgJSONReader(s_fudgeContext, new StringReader(json)); return fudgeJSONReader.readMessage(); } public static String fudgeToJson(final Object configObj) { FudgeMsg fudgeMsg = s_fudgeContext.toFudgeMsg(configObj).getMessage(); StringWriter sw = new StringWriter(); try (FudgeMsgJSONWriter fudgeJSONWriter = new FudgeMsgJSONWriter(s_fudgeContext, sw)) { fudgeJSONWriter.writeMessage(fudgeMsg); return sw.toString(); } } }