Example usage for org.springframework.beans PropertyValues getPropertyValues

List of usage examples for org.springframework.beans PropertyValues getPropertyValues

Introduction

In this page you can find the example usage for org.springframework.beans PropertyValues getPropertyValues.

Prototype

PropertyValue[] getPropertyValues();

Source Link

Document

Return an array of the PropertyValue objects held in this object.

Usage

From source file:com.trenako.web.infrastructure.ServletRequestPathVariablesPropertyValuesTests.java

@Test
public void shouldFillPropertyValues() {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setRequestURI("/trenako-web/rs/brand/ACME");

    PropertyValues pvs = new ServletRequestPathVariablesPropertyValues(request);

    assertNotNull(pvs);/*from www  .ja va 2s  . c o  m*/
    assertEquals(1, pvs.getPropertyValues().length);
    assertEquals("ACME", pvs.getPropertyValue("brand").getValue());
}

From source file:de.luzzifa.spring.test.CustomBeanPostProcessor.java

private List<PropertyValue> getOriginalPropertyValuesList(PropertyValues pvs) {
    if (pvs instanceof MutablePropertyValues) {
        return ((MutablePropertyValues) pvs).getPropertyValueList();
    }/*from   w  w w  .j  av  a 2 s.  c  o  m*/
    return Arrays.asList(pvs.getPropertyValues());
}

From source file:org.codehaus.groovy.grails.web.binding.GrailsDataBinder.java

private PropertyValues filterPropertyValues(PropertyValues propertyValues, String prefix) {
    if (prefix == null || prefix.length() == 0)
        return propertyValues;

    PropertyValue[] valueArray = propertyValues.getPropertyValues();
    MutablePropertyValues newValues = new MutablePropertyValues();
    for (PropertyValue propertyValue : valueArray) {
        String name = propertyValue.getName();
        final String prefixWithDot = prefix + PREFIX_SEPERATOR;
        if (name.startsWith(prefixWithDot)) {
            name = name.substring(prefixWithDot.length(), name.length());
            newValues.addPropertyValue(name, propertyValue.getValue());
        }//from ww w  . j a  v  a 2 s .  co  m
    }
    return newValues;
}

From source file:org.jdal.aop.SerializableReference.java

private Object readResolve() throws ObjectStreamException {
    if (beanFactory == null) {
        log.error("Can't not deserialize reference without bean factory");
        return null;
    }//w  w w  . ja va 2s .  c  o m

    if (useMemoryCache) {
        Object ret = serializedObjects.remove(this.id);
        if (ret != null) {
            if (log.isDebugEnabled())
                log.debug("Removed a serialized reference. serialized objects size [" + serializedObjects.size()
                        + "]");

            return getSerializableProxy(ret);
        }
    }

    if (targetBeanName != null) {
        if (log.isDebugEnabled())
            log.debug("Resolving serializable object to bean name [" + targetBeanName + "]");

        return getSerializableProxy();
    }

    if (log.isDebugEnabled())
        log.debug("Resolving serializable object for [" + descriptor.getDependencyName() + "]");

    Field field = descriptor.getField();

    // Check bean definition
    BeanDefinition rbd = beanFactory.getBeanDefinition(beanName);
    PropertyValues pvs = rbd.getPropertyValues();
    if (pvs.contains(field.getName())) {
        Object value = pvs.getPropertyValue(field.getName());
        if (value instanceof BeanReference) {
            // cache the bean name 
            this.targetBeanName = ((BeanReference) value).getBeanName();
            return getSerializableProxy();
        }
    }

    // Check Autowired
    try {
        Object bean = beanFactory.resolveDependency(descriptor, beanName);

        if (bean != null)
            return getSerializableProxy(bean);
    } catch (BeansException be) {
        // dependency not found.
    }

    // Check Resource annotation
    if (field.isAnnotationPresent(Resource.class)) {
        Resource r = field.getAnnotation(Resource.class);
        String name = StringUtils.isEmpty(r.name()) ? descriptor.getField().getName() : r.name();

        if (beanFactory.containsBean(name)) {
            this.targetBeanName = name;
            return getSerializableProxy();
        }
    }

    // Try with depend beans.      
    String[] dependentBeans = beanFactory.getDependenciesForBean(beanName);
    List<String> candidates = new ArrayList<String>();

    for (String name : dependentBeans) {
        if (beanFactory.isTypeMatch(name, descriptor.getDependencyType()))
            ;
        candidates.add(name);
    }

    if (candidates.size() == 1)
        return getSerializableProxy(beanFactory.getBean(candidates.get(0)));

    if (candidates.size() > 1) {
        for (PropertyValue pv : pvs.getPropertyValues()) {
            if (pv.getValue() instanceof BeanReference) {
                BeanReference br = (BeanReference) pv.getValue();
                if (candidates.contains(br.getBeanName()))
                    return getSerializableProxy(beanFactory.getBean(br.getBeanName()));
            }
        }
    }

    log.error("Cant not resolve serializable reference wiht candidates " + candidates.toArray());

    return null;
}

From source file:gov.nih.nci.cabig.caaers.domain.expeditedfields.ExpeditedReportTree.java

/**
 * Verify nodes satisfied.//from   w w w.  j  a va  2 s . co  m
 *
 * @param propertyNodes the property nodes
 * @param report the report
 * @return the list
 */
public List<UnsatisfiedProperty> verifyNodesSatisfied(Collection<TreeNode> propertyNodes,
        ExpeditedAdverseEventReport report) {
    if (log.isDebugEnabled()) {
        log.debug("Examining report for satisfaction of " + propertyNodes);
    }
    List<UnsatisfiedProperty> unsatisfied = new LinkedList<UnsatisfiedProperty>();
    for (TreeNode node : propertyNodes) {
        PropertyValues values = node.getPropertyValuesFrom(report);
        for (PropertyValue pv : values.getPropertyValues()) {
            Object value = pv.getValue();
            if (value == null
                    || (value instanceof CodedEnum && String.valueOf(value).contains("Please select")))
                unsatisfied.add(new UnsatisfiedProperty(node, pv.getName()));
        }
    }
    return unsatisfied;
}

From source file:org.nextframework.controller.ExtendedBeanWrapper.java

public void setPropertyValues(PropertyValues propertyValues, boolean ignoreUnknown) throws BeansException {
    List propertyAccessExceptions = new ArrayList();
    PropertyValue[] pvs = propertyValues.getPropertyValues();
    for (int i = 0; i < pvs.length; i++) {
        try {//w w  w.j av a  2 s .  com
            // This method may throw any BeansException, which won't be caught
            // here, if there is a critical failure such as no matching field.
            // We can attempt to deal only with less serious exceptions.
            setPropertyValue(pvs[i]);
        } catch (NotWritablePropertyException ex) {
            if (!ignoreUnknown) {
                throw ex;
            }
            // Otherwise, just ignore it and continue...
        } catch (PropertyAccessException ex) {
            propertyAccessExceptions.add(ex);
        }
    }

    // If we encountered individual exceptions, throw the composite exception.
    if (!propertyAccessExceptions.isEmpty()) {
        Object[] paeArray = propertyAccessExceptions
                .toArray(new PropertyAccessException[propertyAccessExceptions.size()]);
        throw new PropertyBatchUpdateException((PropertyAccessException[]) paeArray);
    }
}

From source file:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.java

/**
 * Apply the given property values, resolving any runtime references
 * to other beans in this bean factory. Must use deep copy, so we
 * don't permanently modify this property.
 * @param beanName the bean name passed for better exception information
 * @param mbd the merged bean definition
 * @param bw the BeanWrapper wrapping the target object
 * @param pvs the new property values/*from  ww w. j a  va2 s. c om*/
 */
protected void applyPropertyValues(String beanName, BeanDefinition mbd, BeanWrapper bw, PropertyValues pvs) {
    if (pvs.isEmpty()) {
        return;
    }

    if (System.getSecurityManager() != null && bw instanceof BeanWrapperImpl) {
        ((BeanWrapperImpl) bw).setSecurityContext(getAccessControlContext());
    }

    MutablePropertyValues mpvs = null;
    List<PropertyValue> original;

    if (pvs instanceof MutablePropertyValues) {
        mpvs = (MutablePropertyValues) pvs;
        if (mpvs.isConverted()) {
            // Shortcut: use the pre-converted values as-is.
            try {
                bw.setPropertyValues(mpvs);
                return;
            } catch (BeansException ex) {
                throw new BeanCreationException(mbd.getResourceDescription(), beanName,
                        "Error setting property values", ex);
            }
        }
        original = mpvs.getPropertyValueList();
    } else {
        original = Arrays.asList(pvs.getPropertyValues());
    }

    TypeConverter converter = getCustomTypeConverter();
    if (converter == null) {
        converter = bw;
    }
    BeanDefinitionValueResolver valueResolver = new BeanDefinitionValueResolver(this, beanName, mbd, converter);

    // Create a deep copy, resolving any references for values.
    List<PropertyValue> deepCopy = new ArrayList<>(original.size());
    boolean resolveNecessary = false;
    for (PropertyValue pv : original) {
        if (pv.isConverted()) {
            deepCopy.add(pv);
        } else {
            String propertyName = pv.getName();
            Object originalValue = pv.getValue();
            Object resolvedValue = valueResolver.resolveValueIfNecessary(pv, originalValue);
            Object convertedValue = resolvedValue;
            boolean convertible = bw.isWritableProperty(propertyName)
                    && !PropertyAccessorUtils.isNestedOrIndexedProperty(propertyName);
            if (convertible) {
                convertedValue = convertForProperty(resolvedValue, propertyName, bw, converter);
            }
            // Possibly store converted value in merged bean definition,
            // in order to avoid re-conversion for every created bean instance.
            if (resolvedValue == originalValue) {
                if (convertible) {
                    pv.setConvertedValue(convertedValue);
                }
                deepCopy.add(pv);
            } else if (convertible && originalValue instanceof TypedStringValue
                    && !((TypedStringValue) originalValue).isDynamic()
                    && !(convertedValue instanceof Collection || ObjectUtils.isArray(convertedValue))) {
                pv.setConvertedValue(convertedValue);
                deepCopy.add(pv);
            } else {
                resolveNecessary = true;
                deepCopy.add(new PropertyValue(pv, convertedValue));
            }
        }
    }
    if (mpvs != null && !resolveNecessary) {
        mpvs.setConverted();
    }

    // Set our (possibly massaged) deep copy.
    try {
        bw.setPropertyValues(new MutablePropertyValues(deepCopy));
    } catch (BeansException ex) {
        throw new BeanCreationException(mbd.getResourceDescription(), beanName, "Error setting property values",
                ex);
    }
}

From source file:org.springframework.springfaces.mvc.bind.ReverseDataBinderTest.java

@Test
public void shouldReverseBind() throws Exception {
    Sample target = new Sample();
    DataBinder dataBinder = new DataBinder(target);
    initBinder(dataBinder);//from  w  w w .j ava2 s .  co  m
    MutablePropertyValues pvs = new MutablePropertyValues();
    pvs.addPropertyValue("customTypeValue", "custom");
    pvs.addPropertyValue("dateValue", S01_12_2009);
    pvs.addPropertyValue("integerValue", "123");
    pvs.addPropertyValue("stringValue", "string");
    dataBinder.bind(pvs);

    assertThat(target.getIntegerValue(), is(equalTo(new Integer(123))));
    assertThat(target.getStringValue(), is(equalTo("string")));
    assertThat(target.getDateValue(), is(equalTo(D01_12_2009)));
    assertThat(target.getCustomTypeValue(), is(equalTo(new CustomType("custom"))));

    ReverseDataBinder reverseDataBinder = new ReverseDataBinder(dataBinder);
    PropertyValues result = reverseDataBinder.reverseBind();
    for (int i = 0; i < result.getPropertyValues().length; i++) {
        PropertyValue pv = result.getPropertyValues()[i];
        this.logger.info(pv.getName() + "=" + pv.getValue());
    }
    assertThat(result, is(equalTo((Object) pvs)));
}

From source file:org.springframework.springfaces.mvc.bind.ReverseDataBinderTest.java

private void doTestReverseBindWithDefaultValues(boolean dontSkip, boolean noConstructor) throws Exception {
    Sample target = noConstructor ? new SampleWithoutDefaultConstructor("") : new Sample();
    target.setIntegerValue(new Integer(123));
    DataBinder dataBinder = new DataBinder(target);
    ReverseDataBinder reverseDataBinder = new ReverseDataBinder(dataBinder);
    if (dontSkip) {
        // Only set when skipped to test default is true
        reverseDataBinder.setSkipDefaultValues(false);
    }/*from   w  w w. ja va 2  s  . c om*/
    PropertyValues result = reverseDataBinder.reverseBind();
    boolean fullBindExpected = dontSkip || noConstructor;
    assertThat(result.getPropertyValues().length, is(equalTo(fullBindExpected ? 2 : 1)));
    assertThat(result.getPropertyValue("integerValue").getValue(), is(equalTo((Object) "123")));
    if (fullBindExpected) {
        assertThat(result.getPropertyValue("stringValue").getValue(), is(equalTo((Object) "default")));
    }
}