package de.jpaw.bonaparte.core;
import java.util.List;
import java.util.Map;
import de.jpaw.bonaparte.pojos.meta.FieldDefinition;
import de.jpaw.bonaparte.pojos.meta.ObjectReference;
import de.jpaw.json.JsonException;
import de.jpaw.json.JsonParser;
public abstract class AbstractPartialJsonStringParser extends AbstractMessageParser<MessageParserException> implements MessageParser<MessageParserException> {
abstract protected String getString(FieldDefinition di)throws MessageParserException;
abstract protected MessageParserException newMPE(int errorCode, FieldDefinition di, String msg); // construct a suitable exception
@Override
public Map<String, Object> readJson(ObjectReference di) throws MessageParserException {
String tmp = getString(di);
if (tmp == null)
return null;
try {
return new JsonParser(tmp, false).parseObject();
} catch (JsonException e) {
throw newMPE(MessageParserException.JSON_EXCEPTION_MAP, di, e.getMessage());
}
}
@Override
public List<Object> readArray(ObjectReference di) throws MessageParserException {
String tmp = getString(di);
if (tmp == null)
return null;
try {
return new JsonParser(tmp, false).parseArray();
} catch (JsonException e) {
throw newMPE(MessageParserException.JSON_EXCEPTION_ARRAY, di, e.getMessage());
}
}
@Override
public Object readElement(ObjectReference di) throws MessageParserException {
String tmp = getString(di);
if (tmp == null)
return null;
try {
return new JsonParser(tmp, false).parseElement();
} catch (JsonException e) {
throw newMPE(MessageParserException.JSON_EXCEPTION_OBJECT, di, e.getMessage());
}
}
}