Created
January 25, 2018 09:27
-
-
Save jingibus/b877e28c376cc64b5b77ac7328e8214c to your computer and use it in GitHub Desktop.
Example generated code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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