Example usage for com.fasterxml.jackson.databind.ser BeanPropertyWriter getType

List of usage examples for com.fasterxml.jackson.databind.ser BeanPropertyWriter getType

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind.ser BeanPropertyWriter getType.

Prototype

public JavaType getType() 

Source Link

Usage

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;
}