/** * Method that will try to construct a {@link BeanSerializer} for * given class. Returns null if no properties are found. */ public JsonSerializer<Object> findBeanSerializer(SerializerProvider prov, JavaType type, BeanDescription beanDesc) throws JsonMappingException { // First things first: we know some types are not beans... if (!isPotentialBeanType(type.getRawClass())) { // 03-Aug-2012, tatu: Except we do need to allow serializers for Enums, // as per [databind#24] if (!type.isEnumType()) { return null; } } return constructBeanSerializer(prov, beanDesc); }
if (_hasEnumSerializer && type.isEnumType()) { key.reset(Enum.class); ser = _classMappings.get(key);
@Override public JsonNode getSchema(SerializerProvider provider, Type typeHint) { if (_serializeAsIndex(provider)) { return createSchemaNode("integer", true); } ObjectNode objectNode = createSchemaNode("string", true); if (typeHint != null) { JavaType type = provider.constructType(typeHint); if (type.isEnumType()) { ArrayNode enumNode = objectNode.putArray("enum"); for (SerializableString value : _values.values()) { enumNode.add(value.getValue()); } } } return objectNode; }
if (!type.isEnumType()) { ClassUtil.Ctor[] declaredCtors = ClassUtil.getConstructors(type.getRawClass()); for (ClassUtil.Ctor ctor : declaredCtors) {
if (type.isEnumType()) { deser = _createEnumKeyDeserializer(ctxt, type); } else {
if (type.isAbstract() && !type.isPrimitive() && !type.isEnumType()) {
if (type.isEnumType()) { return factory.createEnumDeserializer(ctxt, type, beanDesc);
if (!enumType.isEnumType()) { enumType = null;
if (model == null && type.isEnumType()) { model = new StringSchema(); _addEnumProps(type.getRawClass(), model);
public static <T> FieldSchema<T> create(Field protoField, PropertyDescriptor propertyDescriptor) { if (propertyDescriptor.getJavaType().isEnumType()) { return new EnumSchema<>(protoField, propertyDescriptor); } return new EnumDynamicSchema<>(protoField, propertyDescriptor); }
public EnumMeta(Field protoField, JavaType javaType) { io.protostuff.compiler.model.Enum enumType = (io.protostuff.compiler.model.Enum) protoField.getType(); for (EnumConstant enumConstant : enumType.getConstants()) { enumNameToValueMap.put(enumConstant.getName(), enumConstant.getValue()); enumValues.put(enumConstant.getValue(), null); } if (!javaType.isEnumType()) { return; } try { Method method = javaType.getRawClass().getMethod("values"); method.setAccessible(true); Object[] values = (Object[]) method.invoke(null); for (Object value : values) { Enum<?> enumValue = (Enum<?>) value; enumValues.put(enumNameToValueMap.get(enumValue.name()), enumValue); } } catch (Throwable e) { throw new IllegalStateException( "Failed to collect enum values, class=" + javaType.getRawClass().getName(), e); } }
public static <T> FieldSchema<T> create(Field protoField, PropertyDescriptor propertyDescriptor) { JavaType javaType = propertyDescriptor.getJavaType(); if (javaType.isEnumType()) { return new EnumSchema<>(protoField, propertyDescriptor); } if (Integer.class.equals(javaType.getRawClass()) || javaType.isJavaLangObject()) { return new IntEnumSchema<>(protoField, propertyDescriptor); } if (int.class.equals(javaType.getRawClass())) { return new IntPrimitiveEnumSchema<>(protoField, propertyDescriptor); } ProtoUtils.throwNotSupportMerge(protoField, propertyDescriptor.getJavaType()); return null; }
@Override public Object readFrom(Input input) throws IOException { int ordinal = input.readInt32(); if (javaType.isEnumType()) { return enumValues.get(ordinal); } return ordinal; }
@Override public boolean useForType(JavaType t) { return !t.isEnumType() && (t.getRawClass().getName().startsWith("org.iguana") || t.getRawClass().getName().startsWith("iguana")); } }
@Override public JsonStringFormatVisitor expectStringFormat(JavaType type) { if (type.isEnumType()) { return super.expectStringFormat(type); } return _throwUnsupported("'String' type not supported as root type by protobuf"); }
@Override public JsonStringFormatVisitor expectStringFormat(JavaType type) { if (type.isEnumType()) { return super.expectStringFormat(type); } return _throwUnsupported("'String' type not supported as root type by protobuf"); }
public EnumElementVisitor(SerializerProvider provider, JavaType type, DefinedTypeElementBuilders definedTypeElementBuilders, boolean isNested) { if (!type.isEnumType()) { throw new IllegalArgumentException("Expected an enum, however given type is " + type); } _builder = EnumElement.builder(); _builder.name(type.getRawClass().getSimpleName()); _builder.documentation("Enum for " + type.toCanonical()); }
public EnumElementVisitor(SerializerProvider provider, JavaType type, DefinedTypeElementBuilders definedTypeElementBuilders, boolean isNested) { if (!type.isEnumType()) { throw new IllegalArgumentException("Expected an enum, however given type is " + type); } _builder = EnumElement.builder(); _builder.name(type.getRawClass().getSimpleName()); _builder.documentation("Enum for " + type.toCanonical()); }
/** * Method that will try to construct a {@link BeanSerializer} for * given class. Returns null if no properties are found. */ public JsonSerializer<Object> findBeanSerializer(SerializerProvider prov, JavaType type, BeanDescription beanDesc) throws JsonMappingException { // First things first: we know some types are not beans... if (!isPotentialBeanType(type.getRawClass())) { // 03-Aug-2012, tatu: Except we do need to allow serializers for Enums, // as per [Issue#24] if (!type.isEnumType()) { return null; } } return constructBeanSerializer(prov, beanDesc); }
@Override public JsonStringFormatVisitor expectStringFormat(JavaType type) { if (type.isEnumType()) { EnumElementVisitor visitor = new EnumElementVisitor(_provider, type, _definedTypeElementBuilders, _isNested); _builder = visitor; _definedTypeElementBuilders.addTypeElement(type, visitor, _isNested); return visitor; } // 31-Mar-2017, tatu: This is bit messy, may get Base64 encoded or int array so if (ProtobufSchemaHelper.isBinaryType(type)) { _simpleType = ScalarType.BYTES; } else { _simpleType = ScalarType.STRING; } return null; }