List of usage examples for com.fasterxml.jackson.databind.ser BeanPropertyWriter getType
public JavaType getType()
From source file:org.mongojack.internal.util.SerializationUtils.java
private static JsonSerializer<?> findUpdateSerializer(boolean targetIsCollection, String fieldPath, SerializerProvider serializerProvider, JsonSerializer serializer) { if (serializer instanceof BeanSerializerBase) { JsonSerializer<?> fieldSerializer = serializer; // Iterate through the components of the field name String[] fields = fieldPath.split("\\."); for (String field : fields) { if (fieldSerializer == null) { // We don't have a field serializer to look up the field on, // so give up return null; }//from w w w .j av a2 s .com if (field.equals("$") || field.matches("\\d+")) { // The current serializer must be a collection if (fieldSerializer instanceof ContainerSerializer) { JsonSerializer contentSerializer = ((ContainerSerializer) fieldSerializer) .getContentSerializer(); if (contentSerializer == null) { // Work it out JavaType contentType = ((ContainerSerializer) fieldSerializer).getContentType(); if (contentType != null) { contentSerializer = JacksonAccessor.findValueSerializer(serializerProvider, contentType); } } fieldSerializer = contentSerializer; } else { // Give up, don't attempt to serialise it return null; } } else if (fieldSerializer instanceof BeanSerializerBase) { BeanPropertyWriter writer = JacksonAccessor.findPropertyWriter((BeanSerializerBase) serializer, field); if (writer != null) { fieldSerializer = writer.getSerializer(); if (fieldSerializer == null) { // Do a generic lookup fieldSerializer = JacksonAccessor.findValueSerializer(serializerProvider, writer.getType()); } } else { // Give up return null; } } else if (fieldSerializer instanceof MapSerializer) { fieldSerializer = ((MapSerializer) fieldSerializer).getContentSerializer(); } else { // Don't know how to find what the serialiser for this field // is return null; } } // Now we have a serializer for the field, see if we're supposed to // be serialising for a collection if (targetIsCollection) { if (fieldSerializer instanceof ContainerSerializer) { fieldSerializer = ((ContainerSerializer) fieldSerializer).getContentSerializer(); } else if (fieldSerializer instanceof ObjectIdSerializer) { // Special case for ObjectIdSerializer, leave as is, the // ObjectIdSerializer handles both single // values as well as collections with no problems. } else { // Give up return null; } } return fieldSerializer; } else { return null; } }
From source file:org.mongojack.internal.util.SerializationUtils.java
private static JsonSerializer<?> findQuerySerializer(boolean targetIsCollection, String fieldPath, SerializerProvider serializerProvider, JsonSerializer serializer) { if (serializer instanceof BeanSerializerBase || serializer instanceof MapSerializer) { JsonSerializer<?> fieldSerializer = serializer; // Iterate through the components of the field name String[] fields = fieldPath.split("\\."); for (String field : fields) { if (fieldSerializer == null) { // We don't have a field serializer to look up the field on, // so give up return null; }/*from w w w . jav a 2 s . c o m*/ boolean isIndex = field.matches("\\d+"); // First step into the collection if there is one if (!isIndex) { while (fieldSerializer instanceof ContainerSerializer) { JsonSerializer contentSerializer = ((ContainerSerializer) fieldSerializer) .getContentSerializer(); if (contentSerializer == null) { // Work it out JavaType contentType = ((ContainerSerializer) fieldSerializer).getContentType(); if (contentType != null) { contentSerializer = JacksonAccessor.findValueSerializer(serializerProvider, contentType); } } fieldSerializer = contentSerializer; } } if (isIndex) { if (fieldSerializer instanceof ContainerSerializer) { JsonSerializer contentSerializer = ((ContainerSerializer) fieldSerializer) .getContentSerializer(); if (contentSerializer == null) { // Work it out JavaType contentType = ((ContainerSerializer) fieldSerializer).getContentType(); if (contentType != null) { contentSerializer = JacksonAccessor.findValueSerializer(serializerProvider, contentType); } } fieldSerializer = contentSerializer; } else { // Give up, don't attempt to serialise it return null; } } else if (fieldSerializer instanceof BeanSerializerBase) { BeanPropertyWriter writer = JacksonAccessor.findPropertyWriter((BeanSerializerBase) serializer, field); if (writer != null) { fieldSerializer = writer.getSerializer(); if (fieldSerializer == null) { // Do a generic lookup fieldSerializer = JacksonAccessor.findValueSerializer(serializerProvider, writer.getType()); } } else { // Give up return null; } } else if (fieldSerializer instanceof MapSerializer) { fieldSerializer = ((MapSerializer) fieldSerializer).getContentSerializer(); } else { // Don't know how to find what the serialiser for this field // is return null; } } // Now we have a serializer for the field, see if we're supposed to // be serialising for a collection if (targetIsCollection) { if (fieldSerializer instanceof ContainerSerializer) { fieldSerializer = ((ContainerSerializer) fieldSerializer).getContentSerializer(); } else if (fieldSerializer instanceof ObjectIdSerializer) { // Special case for ObjectIdSerializer, leave as is, the // ObjectIdSerializer handles both single // values as well as collections with no problems. } else { // Give up return null; } } return fieldSerializer; } else { return null; } }
From source file:org.bonitasoft.engine.business.data.impl.jackson.EntityBeanSerializerModifier.java
@Override public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc, List<BeanPropertyWriter> beanProperties) { LOG.trace("Changing list of property writers for {}", beanDesc.getClassInfo()); List<BeanPropertyWriter> newProperties = new ArrayList<>(); if (shouldBeIgnored(beanDesc)) { LOG.trace("Ignoring all properties of this bean"); return newProperties; }/*w w w. j a v a 2 s. c o m*/ for (BeanPropertyWriter beanPropertyWriter : beanProperties) { LOG.trace("{}", beanPropertyWriter); LOG.trace("Bean type {}", beanPropertyWriter.getType()); if (shouldBeReplacedByLink(beanPropertyWriter)) { LOG.trace("Has to be replaced by link"); BeanPropertyWriter ignoredPropertyWriter = new IgnoredPropertyWriter(beanPropertyWriter); LOG.trace("Adding only an ignored property writer {}", ignoredPropertyWriter); newProperties.add(ignoredPropertyWriter); } else { newProperties.add(beanPropertyWriter); if (ExtraPropertyUtils.shouldAddExtraProperty(beanPropertyWriter)) { LOG.trace("Will have an additional property"); BeanPropertyWriter additionalPropertyWriter = ExtraBeanPropertyWriter .newWriter(beanPropertyWriter); LOG.trace("Adding new property {}", additionalPropertyWriter); newProperties.add(additionalPropertyWriter); } } } return newProperties; }