Example usage for org.springframework.util ObjectUtils unwrapOptional

List of usage examples for org.springframework.util ObjectUtils unwrapOptional

Introduction

In this page you can find the example usage for org.springframework.util ObjectUtils unwrapOptional.

Prototype

@Nullable
public static Object unwrapOptional(@Nullable Object obj) 

Source Link

Document

Unwrap the given object which is potentially a java.util.Optional .

Usage

From source file:org.springframework.beans.AbstractNestablePropertyAccessor.java

/**
 * Switch the target object, replacing the cached introspection results only
 * if the class of the new object is different to that of the replaced object.
 * @param object the new target object/*from w ww  . j av a  2 s . c o m*/
 * @param nestedPath the nested path of the object
 * @param rootObject the root object at the top of the path
 */
public void setWrappedInstance(Object object, @Nullable String nestedPath, @Nullable Object rootObject) {
    this.wrappedObject = ObjectUtils.unwrapOptional(object);
    Assert.notNull(this.wrappedObject, "Target object must not be null");
    this.nestedPath = (nestedPath != null ? nestedPath : "");
    this.rootObject = (!"".equals(this.nestedPath) ? rootObject : this.wrappedObject);
    this.nestedPropertyAccessors = null;
    this.typeConverterDelegate = new TypeConverterDelegate(this, this.wrappedObject);
}

From source file:org.springframework.beans.AbstractNestablePropertyAccessor.java

/**
 * Retrieve a Property accessor for the given nested property.
 * Create a new one if not found in the cache.
 * <p>Note: Caching nested PropertyAccessors is necessary now,
 * to keep registered custom editors for nested properties.
 * @param nestedProperty property to create the PropertyAccessor for
 * @return the PropertyAccessor instance, either cached or newly created
 *///from w w w  . ja v a2  s  .co  m
private AbstractNestablePropertyAccessor getNestedPropertyAccessor(String nestedProperty) {
    if (this.nestedPropertyAccessors == null) {
        this.nestedPropertyAccessors = new HashMap<>();
    }
    // Get value of bean property.
    PropertyTokenHolder tokens = getPropertyNameTokens(nestedProperty);
    String canonicalName = tokens.canonicalName;
    Object value = getPropertyValue(tokens);
    if (value == null || (value instanceof Optional && !((Optional) value).isPresent())) {
        if (isAutoGrowNestedPaths()) {
            value = setDefaultValue(tokens);
        } else {
            throw new NullValueInNestedPathException(getRootClass(), this.nestedPath + canonicalName);
        }
    }

    // Lookup cached sub-PropertyAccessor, create new one if not found.
    AbstractNestablePropertyAccessor nestedPa = this.nestedPropertyAccessors.get(canonicalName);
    if (nestedPa == null || nestedPa.getWrappedInstance() != ObjectUtils.unwrapOptional(value)) {
        if (logger.isTraceEnabled()) {
            logger.trace("Creating new nested " + getClass().getSimpleName() + " for property '" + canonicalName
                    + "'");
        }
        nestedPa = newNestedPropertyAccessor(value,
                this.nestedPath + canonicalName + NESTED_PROPERTY_SEPARATOR);
        // Inherit all type-specific PropertyEditors.
        copyDefaultEditorsTo(nestedPa);
        copyCustomEditorsTo(nestedPa, canonicalName);
        this.nestedPropertyAccessors.put(canonicalName, nestedPa);
    } else {
        if (logger.isTraceEnabled()) {
            logger.trace("Using cached nested property accessor for property '" + canonicalName + "'");
        }
    }
    return nestedPa;
}

From source file:org.springframework.cache.interceptor.CacheAspectSupport.java

@Nullable
private Object unwrapReturnValue(Object returnValue) {
    return ObjectUtils.unwrapOptional(returnValue);
}

From source file:org.springframework.validation.DataBinder.java

/**
 * Create a new DataBinder instance./*from  www .  j a va  2s  .c  o m*/
 * @param target the target object to bind onto (or {@code null}
 * if the binder is just used to convert a plain parameter value)
 * @param objectName the name of the target object
 */
public DataBinder(@Nullable Object target, String objectName) {
    this.target = ObjectUtils.unwrapOptional(target);
    this.objectName = objectName;
}