diff options
author | Emmanuel Bourg <ebourg@apache.org> | 2014-12-03 14:31:16 +0100 |
---|---|---|
committer | Emmanuel Bourg <ebourg@apache.org> | 2014-12-03 14:31:16 +0100 |
commit | c56370beb0a2bfa263e125fce107dceccee89fd3 (patch) | |
tree | 7ee611ceb0acbbdf7f83abcd72adb854b7d77225 /spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java | |
parent | aa5221b73661fa728dc4e62e1230e9104528c4eb (diff) |
Imported Upstream version 3.2.12
Diffstat (limited to 'spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java')
-rw-r--r-- | spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java b/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java new file mode 100644 index 00000000..c0da24a9 --- /dev/null +++ b/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfoFactory.java @@ -0,0 +1,65 @@ +/* + * Copyright 2002-2013 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.beans; + +import java.beans.BeanInfo; +import java.beans.IntrospectionException; +import java.beans.Introspector; +import java.lang.reflect.Method; + +import org.springframework.core.Ordered; + +/** + * {@link BeanInfoFactory} implementation that evaluates whether bean classes have + * "non-standard" JavaBeans setter methods and are thus candidates for introspection + * by Spring's (package-visible) {@code ExtendedBeanInfo} implementation. + * + * <p>Ordered at {@link Ordered#LOWEST_PRECEDENCE} to allow other user-defined + * {@link BeanInfoFactory} types to take precedence. + * + * @author Chris Beams + * @since 3.2 + * @see BeanInfoFactory + * @see CachedIntrospectionResults + */ +public class ExtendedBeanInfoFactory implements BeanInfoFactory, Ordered { + + /** + * Return an {@link ExtendedBeanInfo} for the given bean class, if applicable. + */ + public BeanInfo getBeanInfo(Class<?> beanClass) throws IntrospectionException { + return (supports(beanClass) ? new ExtendedBeanInfo(Introspector.getBeanInfo(beanClass)) : null); + } + + /** + * Return whether the given bean class declares or inherits any non-void + * returning bean property or indexed property setter methods. + */ + private boolean supports(Class<?> beanClass) { + for (Method method : beanClass.getMethods()) { + if (ExtendedBeanInfo.isCandidateWriteMethod(method)) { + return true; + } + } + return false; + } + + public int getOrder() { + return Ordered.LOWEST_PRECEDENCE; + } + +} |