@Override public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc, List<BeanPropertyWriter> beanProperties) { return beanProperties.stream().map((w) -> { BeanPropertyWriter mapping = w; if (Optional.class.isAssignableFrom(w.getPropertyType())) { mapping = new JavaOptionalBeanPropertyWriter(w); } return mapping; }).collect(Collectors.toList()); } }
/** * Introspect serializer for java beans * * @param beanSerializer * @param type */ private void introspectSerializer(BeanSerializerBase beanSerializer, CustomType type) { try { Field propsField = beanSerializer.getClass().getSuperclass().getDeclaredField("_props"); propsField.setAccessible(true); BeanPropertyWriter[] props = (BeanPropertyWriter[]) propsField.get(beanSerializer); for (BeanPropertyWriter prop : props) { JavaType propType = prop.getType(); getType(propType); String signature = JacksonSignature.createSignature(propType); type.addBeanProperty(new BeanProperty(prop.getName(), signature, prop.getPropertyType(), prop.getMetadata().getDescription(), prop .getMetadata().isRequired())); } } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }
Class<?> serType = prop.getRawSerializationType(); if (serType == null) { serType = prop.getPropertyType();
Class<?> propertyType = beanPropertyWriter.getPropertyType();
Class<?> serType = getRawSerializationType(); if (serType == null) { serType = getPropertyType();
Class<?> serType = getRawSerializationType(); if (serType == null) { serType = getPropertyType();