@Override public void serialize(Value value, JsonGenerator gen, SerializerProvider provider) throws IOException { switch (value.getType()) { case BOOLEAN: gen.writeBoolean(value.getBoolean()); break; case INTEGER: gen.writeNumber(value.getInt64()); break; case FLOAT: gen.writeNumber(value.getDouble()); break; case STRING: gen.writeString(value.getString()); break; case ENUM: gen.writeString(value.getEnumName()); break; case MESSAGE: gen.writeObject(value.getMessage()); break; default: throw new IllegalStateException(String.valueOf(value.getType())); } } }
@Override public void serialize(Value value, JsonGenerator gen, SerializerProvider provider) throws IOException { switch (value.getType()) { case BOOLEAN: gen.writeBoolean(value.getBoolean()); break; case INTEGER: gen.writeNumber(value.getInt64()); break; case FLOAT: gen.writeNumber(value.getDouble()); break; case STRING: gen.writeString(value.getString()); break; case ENUM: gen.writeString(value.getEnumName()); break; case MESSAGE: gen.writeObject(value.getMessage()); break; default: throw new IllegalStateException(String.valueOf(value.getType())); } } }
/** * Returns a java field default value for proto field. */ public static String getDefaultValue(Field field) { FieldType type = field.getType(); if (type instanceof ScalarFieldType) { return ScalarFieldTypeUtil.getDefaultValue((ScalarFieldType) type); } if (type instanceof Message) { Message m = (Message) type; return UserTypeUtil.getCanonicalName(m) + ".getDefaultInstance()"; } if (type instanceof Enum) { Enum anEnum = (Enum) type; String defaultValue; List<EnumConstant> constants = anEnum.getConstants(); if (constants.isEmpty()) { defaultValue = "UNRECOGNIZED"; } else { DynamicMessage options = field.getOptions(); defaultValue = options.containsKey(DEFAULT) ? options.get(DEFAULT).getEnumName() : constants.get(0).getName(); } return UserTypeUtil.getCanonicalName(anEnum) + "." + defaultValue; } throw new IllegalArgumentException(String.valueOf(type)); }
private void checkFieldValue(ProtoContext context, Descriptor descriptor, Field field, DynamicMessage.Value value) { String fieldName = field.getName(); FieldType fieldType = field.getType(); DynamicMessage.Value.Type valueType = value.getType(); if (fieldType instanceof ScalarFieldType) { ScalarFieldType scalarFieldType = (ScalarFieldType) fieldType; if (!isAssignableFrom(scalarFieldType, value)) { throw new ParserException(value, "Cannot set option '%s': expected %s value", fieldName, fieldType); } } else if (fieldType instanceof Enum) { Enum anEnum = (Enum) fieldType; Set<String> allowedNames = anEnum.getConstantNames(); if (valueType != DynamicMessage.Value.Type.ENUM || !allowedNames.contains(value.getEnumName())) { throw new ParserException(value, "Cannot set option '%s': expected enum = %s", fieldName, allowedNames); } } else if (fieldType instanceof Message) { if (valueType != DynamicMessage.Value.Type.MESSAGE) { throw new ParserException(value, "Cannot set option '%s': expected message value", fieldName); } Message message = (Message) fieldType; processOptions(context, message, descriptor, value.getMessage()); } else { throw new IllegalStateException("Unknown field type: " + fieldType); } }
private void checkFieldValue(ProtoContext context, Descriptor descriptor, Field field, DynamicMessage.Value value) { String fieldName = field.getName(); FieldType fieldType = field.getType(); DynamicMessage.Value.Type valueType = value.getType(); if (fieldType instanceof ScalarFieldType) { ScalarFieldType scalarFieldType = (ScalarFieldType) fieldType; if (!isAssignableFrom(scalarFieldType, value)) { throw new ParserException(value, "Cannot set option '%s': expected %s value", fieldName, fieldType); } } else if (fieldType instanceof Enum) { Enum anEnum = (Enum) fieldType; Set<String> allowedNames = anEnum.getConstantNames(); if (valueType != DynamicMessage.Value.Type.ENUM || !allowedNames.contains(value.getEnumName())) { throw new ParserException(value, "Cannot set option '%s': expected enum = %s", fieldName, allowedNames); } } else if (fieldType instanceof Message) { if (valueType != DynamicMessage.Value.Type.MESSAGE) { throw new ParserException(value, "Cannot set option '%s': expected message value", fieldName); } Message message = (Message) fieldType; processOptions(context, message, descriptor, value.getMessage()); } else { throw new IllegalStateException("Unknown field type: " + fieldType); } }
/** * Returns a java field default value for proto field. */ public static String getDefaultValue(Field field) { FieldType type = field.getType(); if (type instanceof ScalarFieldType) { return ScalarFieldTypeUtil.getDefaultValue((ScalarFieldType) type); } if (type instanceof Message) { Message m = (Message) type; return UserTypeUtil.getCanonicalName(m) + ".getDefaultInstance()"; } if (type instanceof Enum) { Enum anEnum = (Enum) type; String defaultValue; List<EnumConstant> constants = anEnum.getConstants(); if (constants.isEmpty()) { defaultValue = "UNRECOGNIZED"; } else { DynamicMessage options = field.getOptions(); defaultValue = options.containsKey(DEFAULT) ? options.get(DEFAULT).getEnumName() : constants.get(0).getName(); } return UserTypeUtil.getCanonicalName(anEnum) + "." + defaultValue; } throw new IllegalArgumentException(String.valueOf(type)); }
private Object transformValueToObject(Value value) { switch (value.getType()) { case BOOLEAN: return value.getBoolean(); case INTEGER: return value.getInt64(); case FLOAT: return value.getDouble(); case STRING: return value.getString(); case ENUM: return value.getEnumName(); case MESSAGE: return value.getMessage(); default: return value; } }
private Object transformValueToObject(Value value) { switch (value.getType()) { case BOOLEAN: return value.getBoolean(); case INTEGER: return value.getInt64(); case FLOAT: return value.getDouble(); case STRING: return value.getString(); case ENUM: return value.getEnumName(); case MESSAGE: return value.getMessage(); default: return value; } }