Example usage for org.springframework.data.mapping PersistentProperty isMap

List of usage examples for org.springframework.data.mapping PersistentProperty isMap

Introduction

In this page you can find the example usage for org.springframework.data.mapping PersistentProperty isMap.

Prototype

boolean isMap();

Source Link

Document

Returns whether the property is a Map .

Usage

From source file:org.lightadmin.core.persistence.metamodel.PersistentPropertyType.java

public static PersistentPropertyType forPersistentProperty(PersistentProperty persistentProperty) {
    final Class<?> attrType = persistentProperty.getType();

    if (persistentProperty.isAnnotationPresent(Embedded.class)
            || persistentProperty.isAnnotationPresent(EmbeddedId.class)) {
        return PersistentPropertyType.EMBEDDED;
    }//from  w  w  w. ja  v a2s.com

    if (persistentProperty.isAssociation()) {
        if (persistentProperty.isCollectionLike()) {
            return PersistentPropertyType.ASSOC_MULTI;
        }
        return PersistentPropertyType.ASSOC;
    }

    if (persistentProperty.isMap()) {
        return PersistentPropertyType.MAP;
    }

    if (ClassUtils.isAssignable(Enum.class, attrType)) {
        return ENUM;
    }

    if (forType(attrType) == STRING && persistentProperty.isAnnotationPresent(FileReference.class)) {
        return PersistentPropertyType.FILE;
    }

    if (isOfDateType(persistentProperty)) {
        return DATE;
    }

    if (isOfTimeType(persistentProperty)) {
        return TIME;
    }

    if (isOfDateTimeType(persistentProperty)) {
        return DATE_TIME;
    }

    return forType(attrType);
}

From source file:org.lightadmin.core.web.support.DynamicPersistentEntityResourceProcessor.java

private Object associationPropertyValue(Association association, Object instance) {
    PersistentProperty persistentProperty = association.getInverse();
    PersistentEntity persistentEntity = persistentProperty.getOwner();

    if (persistentProperty.isMap()) {
        return null;
    }//from  ww w.j av  a2  s .c o  m

    if (persistentProperty.isCollectionLike()) {
        return associatedPersistentEntities(association, instance);
    }

    Object associationValue = beanWrapper(instance).getPropertyValue(persistentProperty.getName());

    return associatedPersistentEntity(persistentProperty, associationValue);
}

From source file:org.springframework.data.rest.webmvc.json.DomainObjectReader.java

/**
 * Merges the given {@link ObjectNode} onto the given object.
 * /* w ww. jav  a 2 s.co m*/
 * @param root must not be {@literal null}.
 * @param target must not be {@literal null}.
 * @param mapper must not be {@literal null}.
 * @return
 * @throws Exception
 */
private <T> T doMerge(ObjectNode root, T target, ObjectMapper mapper) throws Exception {

    Assert.notNull(root, "Root ObjectNode must not be null!");
    Assert.notNull(target, "Target object instance must not be null!");
    Assert.notNull(mapper, "ObjectMapper must not be null!");

    PersistentEntity<?, ?> entity = entities.getPersistentEntity(target.getClass());

    if (entity == null) {
        return mapper.readerForUpdating(target).readValue(root);
    }

    MappedProperties mappedProperties = getJacksonProperties(entity, mapper);

    for (Iterator<Entry<String, JsonNode>> i = root.fields(); i.hasNext();) {

        Entry<String, JsonNode> entry = i.next();
        JsonNode child = entry.getValue();

        if (child.isArray()) {
            continue;
        }

        String fieldName = entry.getKey();

        if (!mappedProperties.hasPersistentPropertyForField(fieldName)) {
            i.remove();
            continue;
        }

        if (child.isObject()) {

            PersistentProperty<?> property = mappedProperties.getPersistentProperty(fieldName);

            if (associationLinks.isLinkableAssociation(property)) {
                continue;
            }

            PersistentPropertyAccessor accessor = entity.getPropertyAccessor(target);
            Object nested = accessor.getProperty(property);

            ObjectNode objectNode = (ObjectNode) child;

            if (property.isMap()) {

                // Keep empty Map to wipe it as expected
                if (!objectNode.fieldNames().hasNext()) {
                    continue;
                }

                doMergeNestedMap((Map<String, Object>) nested, objectNode, mapper);

                // Remove potentially emptied Map as values have been handled recursively
                if (!objectNode.fieldNames().hasNext()) {
                    i.remove();
                }

                continue;
            }

            if (nested != null && property.isEntity()) {
                doMerge(objectNode, nested, mapper);
            }
        }
    }

    return mapper.readerForUpdating(target).readValue(root);
}