Skip to content

Instantly share code, notes, and snippets.

@jingibus
Created January 25, 2018 09:27
Show Gist options
  • Save jingibus/b877e28c376cc64b5b77ac7328e8214c to your computer and use it in GitHub Desktop.
Save jingibus/b877e28c376cc64b5b77ac7328e8214c to your computer and use it in GitHub Desktop.
Example generated code
package com.instagram.common.json.annotation.processor.parent;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.instagram.common.json.JsonFactoryHolder;
import com.instagram.common.json.JsonHelper;
import com.instagram.common.json.JsonSerializationHandler;
import java.io.IOException;
import java.util.HashMap;
import javax.annotation.Nullable;
public final class InterfaceParentUUT__JsonHelper
implements JsonHelper<InterfaceParentUUT> {
private static final HashMap<String,JsonSerializationHandler<InterfaceParentUUT>> sHandlerMap = new HashMap<>();
public static void registerHandler(String typeName, JsonSerializationHandler<InterfaceParentUUT> handler) {
if (sHandlerMap.containsKey(typeName)) {
final String message = String.format(
"Duplicate handler type name. %s is already mapped to an instance of %s",
typeName,
sHandlerMap.get(typeName).getClass().getName());
throw new IllegalArgumentException(message);
}
sHandlerMap.put(typeName, handler);
}
public static void unregisterHandler(String typeName) {
sHandlerMap.remove(typeName);
}
private static JsonSerializationHandler<InterfaceParentUUT> getHandler(String typeName) {
final @Nullable JsonSerializationHandler<InterfaceParentUUT> handler = sHandlerMap.get(typeName);
if (handler == null) {
final String message = String.format(
"No JsonSerializationHandler registered for type name: %s",
typeName);
throw new IllegalArgumentException(message);
}
return handler;
}
public static InterfaceParentUUT parseFromJson(JsonParser parser)
throws IOException {
if (parser.getCurrentToken() != JsonToken.START_ARRAY) {
parser.skipChildren();
}
parser.nextToken();
if (parser.getCurrentToken() != JsonToken.VALUE_STRING) {
parser.skipChildren();
}
String typeName = parser.getText();
parser.nextToken();
final InterfaceParentUUT instance = getHandler(typeName).parseFromJson(parser);
parser.nextToken();
return instance;
}
public static InterfaceParentUUT parseFromJson(String inputString)
throws IOException {
JsonParser jp = JsonFactoryHolder.APP_FACTORY.createParser(inputString);
jp.nextToken();
return parseFromJson(jp);
}
// writeStartAndEnd is included for API compatibility, but is ignored.
public static void serializeToJson(JsonGenerator generator, InterfaceParentUUT object, boolean writeStartAndEndIgnored)
throws IOException {
generator.writeStartArray();
generator.writeString(object.getTypeNameYeah());
getHandler(object.getTypeNameYeah()).serializeToJson(generator, object);
generator.writeEndArray();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment