Search in sources :

Example 66 with Member

use of java.lang.reflect.Member in project spring-framework by spring-projects.

the class ReflectivePropertyAccessor method write.

@Override
public void write(EvaluationContext context, Object target, String name, Object newValue) throws AccessException {
    if (target == null) {
        throw new AccessException("Cannot write property on null target");
    }
    Class<?> type = (target instanceof Class ? (Class<?>) target : target.getClass());
    Object possiblyConvertedNewValue = newValue;
    TypeDescriptor typeDescriptor = getTypeDescriptor(context, target, name);
    if (typeDescriptor != null) {
        try {
            possiblyConvertedNewValue = context.getTypeConverter().convertValue(newValue, TypeDescriptor.forObject(newValue), typeDescriptor);
        } catch (EvaluationException evaluationException) {
            throw new AccessException("Type conversion failure", evaluationException);
        }
    }
    PropertyCacheKey cacheKey = new PropertyCacheKey(type, name, target instanceof Class);
    Member cachedMember = this.writerCache.get(cacheKey);
    if (cachedMember == null || cachedMember instanceof Method) {
        Method method = (Method) cachedMember;
        if (method == null) {
            method = findSetterForProperty(name, type, target);
            if (method != null) {
                cachedMember = method;
                this.writerCache.put(cacheKey, cachedMember);
            }
        }
        if (method != null) {
            try {
                ReflectionUtils.makeAccessible(method);
                method.invoke(target, possiblyConvertedNewValue);
                return;
            } catch (Exception ex) {
                throw new AccessException("Unable to access property '" + name + "' through setter method", ex);
            }
        }
    }
    if (cachedMember == null || cachedMember instanceof Field) {
        Field field = (Field) cachedMember;
        if (field == null) {
            field = findField(name, type, target);
            if (field != null) {
                cachedMember = field;
                this.writerCache.put(cacheKey, cachedMember);
            }
        }
        if (field != null) {
            try {
                ReflectionUtils.makeAccessible(field);
                field.set(target, possiblyConvertedNewValue);
                return;
            } catch (Exception ex) {
                throw new AccessException("Unable to access field '" + name + "'", ex);
            }
        }
    }
    throw new AccessException("Neither setter method nor field found for property '" + name + "'");
}
Also used : Field(java.lang.reflect.Field) AccessException(org.springframework.expression.AccessException) TypeDescriptor(org.springframework.core.convert.TypeDescriptor) EvaluationException(org.springframework.expression.EvaluationException) Method(java.lang.reflect.Method) Member(java.lang.reflect.Member) EvaluationException(org.springframework.expression.EvaluationException) AccessException(org.springframework.expression.AccessException)

Example 67 with Member

use of java.lang.reflect.Member in project spring-framework by spring-projects.

the class ObjectToObjectConverter method getValidatedMember.

private static Member getValidatedMember(Class<?> targetClass, Class<?> sourceClass) {
    Member member = conversionMemberCache.get(targetClass);
    if (isApplicable(member, sourceClass)) {
        return member;
    }
    member = determineToMethod(targetClass, sourceClass);
    if (member == null) {
        member = determineFactoryMethod(targetClass, sourceClass);
        if (member == null) {
            member = determineFactoryConstructor(targetClass, sourceClass);
            if (member == null) {
                return null;
            }
        }
    }
    conversionMemberCache.put(targetClass, member);
    return member;
}
Also used : Member(java.lang.reflect.Member)

Example 68 with Member

use of java.lang.reflect.Member in project spring-framework by spring-projects.

the class InjectionMetadata method checkConfigMembers.

public void checkConfigMembers(RootBeanDefinition beanDefinition) {
    Set<InjectedElement> checkedElements = new LinkedHashSet<>(this.injectedElements.size());
    for (InjectedElement element : this.injectedElements) {
        Member member = element.getMember();
        if (!beanDefinition.isExternallyManagedConfigMember(member)) {
            beanDefinition.registerExternallyManagedConfigMember(member);
            checkedElements.add(element);
            if (logger.isDebugEnabled()) {
                logger.debug("Registered injected element on class [" + this.targetClass.getName() + "]: " + element);
            }
        }
    }
    this.checkedElements = checkedElements;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) Member(java.lang.reflect.Member)

Example 69 with Member

use of java.lang.reflect.Member in project robovm by robovm.

the class TestAnnotations method sortMembers.

// End RoboVM changes 
@SuppressWarnings({ "rawtypes", "unchecked" })
private static List sortMembers(Object[] members) {
    List l = new ArrayList(Arrays.asList(members));
    Collections.sort(l, new Comparator<Member>() {

        @Override
        public int compare(Member m1, Member m2) {
            return m1.toString().compareTo(m2.toString());
        }
    });
    return l;
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Member(java.lang.reflect.Member)

Example 70 with Member

use of java.lang.reflect.Member in project geode by apache.

the class AttributeDescriptor method getReadMember.

Member getReadMember(Class targetClass) throws NameNotFoundException {
    // mapping: public field (same name), method (getAttribute()),
    // method (attribute())
    List key = new ArrayList();
    key.add(targetClass);
    key.add(_name);
    Member m = (Member) _cache.get(key);
    if (m != null)
        return m;
    m = getReadField(targetClass);
    if (m == null)
        m = getReadMethod(targetClass);
    if (m != null)
        _cache.putIfAbsent(key, m);
    else
        throw new NameNotFoundException(LocalizedStrings.AttributeDescriptor_NO_PUBLIC_ATTRIBUTE_NAMED_0_WAS_FOUND_IN_CLASS_1.toLocalizedString(new Object[] { _name, targetClass.getName() }));
    // override security for nonpublic derived classes with public members
    ((AccessibleObject) m).setAccessible(true);
    return m;
}
Also used : NameNotFoundException(org.apache.geode.cache.query.NameNotFoundException) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) AccessibleObject(java.lang.reflect.AccessibleObject) Member(java.lang.reflect.Member)

Aggregations

Member (java.lang.reflect.Member)135 Method (java.lang.reflect.Method)41 Field (java.lang.reflect.Field)30 ArrayList (java.util.ArrayList)13 AccessibleObject (java.lang.reflect.AccessibleObject)12 Type (java.lang.reflect.Type)12 Annotation (java.lang.annotation.Annotation)11 Constructor (java.lang.reflect.Constructor)10 TypeVariable (java.lang.reflect.TypeVariable)9 InvocationTargetException (java.lang.reflect.InvocationTargetException)8 ParameterizedType (java.lang.reflect.ParameterizedType)7 Map (java.util.Map)7 MetaInfo (org.qi4j.api.common.MetaInfo)7 InjectionPoint (com.google.inject.spi.InjectionPoint)6 AnnotatedElement (java.lang.reflect.AnnotatedElement)6 LinkedHashSet (java.util.LinkedHashSet)6 Optional (org.qi4j.api.common.Optional)6 ValueConstraintsInstance (org.qi4j.runtime.composite.ValueConstraintsInstance)6 ValueConstraintsModel (org.qi4j.runtime.composite.ValueConstraintsModel)6 HashSet (java.util.HashSet)5