EnumValueDescriptor result = findValueByNumber(number); if (result != null) { return result;
if (enumDescriptor.findValueByNumber(0) == null) { throw runtime.newTypeError("Enum definition " + enumName + " does not contain a value for '0'");
while (input.getBytesUntilLimit() > 0) { final int rawValue = input.readEnum(); final Object value = field.getEnumType().findValueByNumber(rawValue); if (value == null) { value = field.getEnumType().findValueByNumber(rawValue);
public static Function<String, Object> lookupTransform( Descriptors.FieldDescriptor fieldDescriptor) { switch (fieldDescriptor.getJavaType()) { case BOOLEAN: return text -> Integer.parseInt(Objects.requireNonNull(text)); case ENUM: return text -> fieldDescriptor.getEnumType() .findValueByNumber(Integer.parseInt(Objects.requireNonNull(text))); case INT: return Integer::parseInt; case LONG: return Long::parseLong; case FLOAT: return Float::parseFloat; case DOUBLE: return Double::parseDouble; case STRING: return text -> text; case BYTE_STRING: return text -> text; default: throw new FieldConversionException( "not support java type: " + fieldDescriptor.getJavaType() + ", field=" + fieldDescriptor.getFullName()); } } }
private EnumValueDescriptor parseEnum(EnumDescriptor enumDescriptor, JsonElement json) throws InvalidProtocolBufferException { String value = json.getAsString(); EnumValueDescriptor result = enumDescriptor.findValueByName(value); if (result == null) { // Try to interpret the value as a number. try { int numericValue = parseInt32(json); if (enumDescriptor.getFile().getSyntax() == FileDescriptor.Syntax.PROTO3) { result = enumDescriptor.findValueByNumberCreatingIfUnknown(numericValue); } else { result = enumDescriptor.findValueByNumber(numericValue); } } catch (InvalidProtocolBufferException e) { // Fall through. This exception is about invalid int32 value we get from parseInt32() but // that's not the exception we want the user to see. Since result == null, we will throw // an exception later. } if (result == null) { throw new InvalidProtocolBufferException( "Invalid enum value: " + value + " for enum type: " + enumDescriptor.getFullName()); } } return result; }
private EnumValueDescriptor parseEnum(EnumDescriptor enumDescriptor, JsonElement json) throws InvalidProtocolBufferException { String value = json.getAsString(); EnumValueDescriptor result = enumDescriptor.findValueByName(value); if (result == null) { // Try to interpret the value as a number. try { int numericValue = parseInt32(json); if (enumDescriptor.getFile().getSyntax() == FileDescriptor.Syntax.PROTO3) { result = enumDescriptor.findValueByNumberCreatingIfUnknown(numericValue); } else { result = enumDescriptor.findValueByNumber(numericValue); } } catch (InvalidProtocolBufferException e) { // Fall through. This exception is about invalid int32 value we get from parseInt32() but // that's not the exception we want the user to see. Since result == null, we will throw // an exception later. } if (result == null) { throw new InvalidProtocolBufferException( "Invalid enum value: " + value + " for enum type: " + enumDescriptor.getFullName()); } } return result; }
/** * Parse Enum value {@link EnumValueDescriptor} associated with given {@link EnumDescriptor} from * given text if found. Otherwise, throw a {@link ParseException}. * * <p>The text could be either enum value name or enum value number. */ static EnumValueDescriptor parseEnum(EnumDescriptor enumType, String text) { EnumValueDescriptor value = null; if (lookingAtNumber(text)) { int number = parseUInt32(text); value = enumType.findValueByNumber(number); if (value == null) { throw new ParseException(String.format( "Enum type '%s' has no value with number %d", enumType.getFullName(), number)); } } else { value = enumType.findValueByName(text); if (value == null) { throw new ParseException(String.format( "Enum type '%s' has no value with name '%s'", enumType.getFullName(), text)); } } return value; }
private EnumValueDescriptor parseEnum(EnumDescriptor enumDescriptor, JsonElement json) throws InvalidProtocolBufferException { String value = json.getAsString(); EnumValueDescriptor result = enumDescriptor.findValueByName(value); if (result == null) { // Try to interpret the value as a number. try { int numericValue = parseInt32(json); if (enumDescriptor.getFile().getSyntax() == FileDescriptor.Syntax.PROTO3) { result = enumDescriptor.findValueByNumberCreatingIfUnknown(numericValue); } else { result = enumDescriptor.findValueByNumber(numericValue); } } catch (InvalidProtocolBufferException e) { // Fall through. This exception is about invalid int32 value we get from parseInt32() but // that's not the exception we want the user to see. Since result == null, we will throw // an exception later. } if (result == null) { throw new InvalidProtocolBufferException( "Invalid enum value: " + value + " for enum type: " + enumDescriptor.getFullName()); } } return result; }
private EnumValueDescriptor parseEnum(EnumDescriptor enumDescriptor, JsonElement json) throws InvalidProtocolBufferException { String value = json.getAsString(); EnumValueDescriptor result = enumDescriptor.findValueByName(value); if (result == null) { // Try to interpret the value as a number. try { int numericValue = parseInt32(json); if (enumDescriptor.getFile().getSyntax() == FileDescriptor.Syntax.PROTO3) { result = enumDescriptor.findValueByNumberCreatingIfUnknown(numericValue); } else { result = enumDescriptor.findValueByNumber(numericValue); } } catch (InvalidProtocolBufferException e) { // Fall through. This exception is about invalid int32 value we get from parseInt32() but // that's not the exception we want the user to see. Since result == null, we will throw // an exception later. } if (result == null) { throw new InvalidProtocolBufferException( "Invalid enum value: " + value + " for enum type: " + enumDescriptor.getFullName()); } } return result; }
public static EnumValueDescriptor getEnumValue(final FieldDescriptor key, final Integer value) { return getEnumValue(key, key.getEnumType().findValueByNumber(value)); }
@Override public Object fromSqlValue(Descriptors.FieldDescriptor fieldDescriptor, Object sqlValue) { if (sqlValue == null) { return fieldDescriptor.getEnumType().findValueByNumber(0); } else if (sqlValue instanceof Integer) { return fieldDescriptor.getEnumType().findValueByNumber((Integer) sqlValue); } else if (sqlValue instanceof Internal.EnumLite) { return sqlValue; } throw new FieldConversionException(Descriptors.FieldDescriptor.JavaType.ENUM, sqlValue); } }
@Override Object protoFromSoy(SoyValue field) { // The proto reflection api wants the EnumValueDescriptor, not the actual enum instance int value = field.integerValue(); // in proto3 we preserve unknown enum values (for consistency with jbcsrc), but for proto2 // we don't, and so if the field is unknown we will return null which will trigger an NPE // again, for consistency with jbcsrc. if (enumDescriptor.getFile().getSyntax() == Syntax.PROTO3) { return enumDescriptor.findValueByNumberCreatingIfUnknown(value); } return enumDescriptor.findValueByNumber(value); } };
@Override Object protoFromSoy(SoyValue field) { // The proto reflection api wants the EnumValueDescriptor, not the actual enum instance int value = field.integerValue(); // in proto3 we preserve unknown enum values (for consistency with jbcsrc), but for proto2 // we don't, and so if the field is unknown we will return null which will trigger an NPE // again, for consistency with jbcsrc. if (enumDescriptor.getFile().getSyntax() == Syntax.PROTO3) { return enumDescriptor.findValueByNumberCreatingIfUnknown(value); } return enumDescriptor.findValueByNumber(value); } };
/** * Gets the enum value for the given enum type and number * * @param enumTypeName the enum type name * @param enumNumber the enum number * @return the enum value descriptor (null if not found) */ public EnumValueDescriptor getEnumValue(String enumTypeName, int enumNumber) { EnumDescriptor enumType = getEnumDescriptor(enumTypeName); if (enumType == null) return null; return enumType.findValueByNumber(enumNumber); }
value = enumType.findValueByNumber(number); if (value == null) { throw tokenizer.parseExceptionPreviousToken("Enum type \""
Enum eNum = (Enum) value; int ordinal = eNum.ordinal(); EnumValueDescriptor findValueByNumber = fieldDescriptor.getEnumType().findValueByNumber(ordinal); builder.setField(fieldDescriptor, findValueByNumber); } else if (value.getClass() == Date.class) {
value = enumType.findValueByNumber(number); if (value == null) { String unknownValueMsg =
value = enumType.findValueByNumber(number); if (value == null) { throw tokenizer.parseExceptionPreviousToken(
field.getEnumType().findValueByNumberCreatingIfUnknown(rawValue)); } else { final Object value = field.getEnumType().findValueByNumber(rawValue); if (value == null) { value = field.getEnumType().findValueByNumberCreatingIfUnknown(rawValue); } else { value = field.getEnumType().findValueByNumber(rawValue);
@JRubyMethod(meta = true) public static IRubyObject lookup(ThreadContext context, IRubyObject recv, IRubyObject number) { RubyEnumDescriptor rubyEnumDescriptorescriptor = (RubyEnumDescriptor) getDescriptor(context, recv); Descriptors.EnumDescriptor descriptor = rubyEnumDescriptorescriptor.getDescriptor(); Descriptors.EnumValueDescriptor value = descriptor.findValueByNumber(RubyNumeric.num2int(number)); if (value == null) return context.runtime.getNil(); return context.runtime.newSymbol(value.getName()); }