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

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

Introduction

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

Prototype

@Override
    @Nullable
    public Object getSource() 

Source Link

Usage

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

protected Object handleSetValues(final PropertyValue configuredValue) {
    final Object value;
    LOGGER.debug(//from   w ww  .  j  av a  2 s. c o  m
            "[{}] Set of values / bean reference names has been configured - treating property {} of {} as <set>",
            this.beanName, this.propertyName, this.targetBeanName);

    final ManagedSet<Object> set = new ManagedSet<>();

    if (this.merge && configuredValue != null) {
        final Object configuredValueDefinition = configuredValue.getValue();
        if (configuredValueDefinition instanceof ManagedSet<?>) {
            final ManagedSet<?> oldSet = (ManagedSet<?>) configuredValueDefinition;
            set.setElementTypeName(oldSet.getElementTypeName());
            set.setMergeEnabled(oldSet.isMergeEnabled());
            set.setSource(oldSet.getSource());

            set.addAll(oldSet);

            LOGGER.debug("[{}] Merged existing value set values: {}", this.beanName, oldSet);
        }
    }

    Set<Object> valuesToAdd;
    if (this.valueSet != null) {
        LOGGER.debug("[{}] Set of configured values for {} of {}: ", this.beanName, this.propertyName,
                this.targetBeanName, this.valueSet);
        valuesToAdd = this.valueSet;
    } else {
        LOGGER.debug("[{}] Set of configured bean reference names for {} of {}: ", this.beanName,
                this.propertyName, this.targetBeanName, this.beanReferenceNameSet);
        valuesToAdd = new HashSet<>();
        for (final String beanReferenceName : this.beanReferenceNameSet) {
            valuesToAdd.add(new RuntimeBeanReference(beanReferenceName));
        }
    }

    LOGGER.debug("[{}] Adding new entries to set for {} of {}", this.beanName, this.propertyName,
            this.targetBeanName);
    set.addAll(valuesToAdd);

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