Example usage for org.springframework.beans.factory.support ManagedMap getSource

List of usage examples for org.springframework.beans.factory.support ManagedMap getSource

Introduction

In this page you can find the example usage for org.springframework.beans.factory.support ManagedMap getSource.

Prototype

@Override
    @Nullable
    public Object getSource() 

Source Link

Usage

From source file:de.acosix.alfresco.utility.common.spring.PropertyAlteringBeanFactoryPostProcessor.java

protected Object handleMapValues(final PropertyValue configuredValue) {
    final Object value;
    LOGGER.debug(/*from   w ww .  j a  v  a  2 s.co  m*/
            "[{}] Map of values / bean reference names has been configured - treating property {} of {} as <map>",
            this.beanName, this.propertyName, this.targetBeanName);

    final ManagedMap<Object, Object> map = new ManagedMap<>();

    if (this.merge && configuredValue != null) {
        final Object configuredValueDefinition = configuredValue.getValue();
        if (configuredValueDefinition instanceof ManagedMap<?, ?>) {
            final ManagedMap<?, ?> oldMap = (ManagedMap<?, ?>) configuredValueDefinition;

            map.setKeyTypeName(oldMap.getKeyTypeName());
            map.setValueTypeName(oldMap.getValueTypeName());
            map.setMergeEnabled(oldMap.isMergeEnabled());
            map.setSource(oldMap.getSource());

            map.putAll(oldMap);

            LOGGER.debug("[{}] Merged existing map values: {}", this.beanName, oldMap);
        }
    }

    Map<Object, Object> valuesToMap;
    if (this.valueMap != null) {
        LOGGER.debug("[{}] Map of configured values for {} of {}: ", this.beanName, this.propertyName,
                this.targetBeanName, this.valueMap);
        valuesToMap = this.valueMap;
    } else {
        LOGGER.debug("[{}] Map of configured bean reference names for {} of {}: ", this.beanName,
                this.propertyName, this.targetBeanName, this.beanReferenceNameMap);
        valuesToMap = new HashMap<>();
        for (final Entry<Object, String> beanReferenceEntry : this.beanReferenceNameMap.entrySet()) {
            valuesToMap.put(beanReferenceEntry.getKey(),
                    new RuntimeBeanReference(beanReferenceEntry.getValue()));
        }
    }

    LOGGER.debug("[{}] Putting new entries into map for {} of {}", this.beanName, this.propertyName,
            this.targetBeanName);
    map.putAll(valuesToMap);

    if (!map.isMergeEnabled() && this.mergeParent) {
        LOGGER.debug("[{}] Enabling \"merge\" for <map> on {} of {}", this.beanName, this.propertyName,
                this.targetBeanName);
    }
    map.setMergeEnabled(map.isMergeEnabled() || this.mergeParent);
    value = map;
    return value;
}