throw new ParserException("Invalid option name: %s", name); DynamicMessage msg = value.getMessage(); return msg.get(rest); } else {
throw new ParserException("Invalid option name: %s", name); DynamicMessage msg = value.getMessage(); return msg.get(rest); } else {
@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())); } } }
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); } }
@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())); } } }
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 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 void set(Key key, Value value) { if (fields.containsKey(key) && value.isMessageType()) { // merge Value prevValue = fields.get(key); if (!prevValue.isMessageType()) { throw new ParserException(value, "Can not set '%s': incompatible type", key); } DynamicMessage prevMessage = prevValue.getMessage(); DynamicMessage message = value.getMessage(); prevMessage.merge(message); } else { // create new or override previous value fields.put(key, 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; } }
private void set(Key key, Value value) { if (fields.containsKey(key) && value.isMessageType()) { // merge Value prevValue = fields.get(key); if (!prevValue.isMessageType()) { throw new ParserException(value, "Can not set '%s': incompatible type", key); } DynamicMessage prevMessage = prevValue.getMessage(); DynamicMessage message = value.getMessage(); prevMessage.merge(message); } else { // create new or override previous value fields.put(key, value); } }
private DynamicMessage getChildMessage(Value value, Key key) { DynamicMessage msg; Value val = fields.get(key); if (!val.isMessageType()) { throw new ParserException(value, "Can not assign option value: type error"); } msg = val.getMessage(); return msg; }
private DynamicMessage getChildMessage(Value value, Key key) { DynamicMessage msg; Value val = fields.get(key); if (!val.isMessageType()) { throw new ParserException(value, "Can not assign option value: type error"); } msg = val.getMessage(); return msg; }