Search in sources :

Example 91 with Member

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

the class MemberUtil method getFieldAndAccessorsForElement.

/**
 * Returns a list of objects, that are either field or getter/setter methods of this field, based
 * on single accessible object of a class. If it fails to find anything, it returns the passed
 * object.
 *
 * @param ao an object to find field, getter/setter method for
 * @return a list of field and getter/setter methods or {@code ao} if nothing has been found
 */
public static List<AccessibleObject> getFieldAndAccessorsForElement(AccessibleObject ao) {
    String fieldName = getFieldName(ao);
    if (fieldName == null) {
        return Arrays.asList(ao);
    }
    Class declaringClass = ((Member) ao).getDeclaringClass();
    try {
        PropertyDescriptor descriptor = new PropertyDescriptor(fieldName, declaringClass);
        Field field = ReflectionUtils.findField(declaringClass, fieldName);
        Method getter = descriptor.getReadMethod();
        Method setter = descriptor.getWriteMethod();
        List<AccessibleObject> result = new ArrayList<>();
        if (field != null) {
            result.add(field);
        }
        if (getter != null) {
            result.add(getter);
        }
        if (setter != null) {
            result.add(setter);
        }
        if (result.isEmpty()) {
            result.add(ao);
        }
        return result;
    } catch (IntrospectionException e) {
        return Arrays.asList(ao);
    }
}
Also used : Field(java.lang.reflect.Field) PropertyDescriptor(java.beans.PropertyDescriptor) ArrayList(java.util.ArrayList) IntrospectionException(java.beans.IntrospectionException) CtClass(javassist.CtClass) AccessibleObject(java.lang.reflect.AccessibleObject) Method(java.lang.reflect.Method) Member(java.lang.reflect.Member)

Example 92 with Member

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

the class NonEditableProcessor method getElementsToProcess.

@Override
protected Set<? extends AnnotatedElement> getElementsToProcess() {
    List<Member> members = ReflectionsUtil.getFilteredMembers(clazz, nonEditable());
    Set<AnnotatedElement> elements = new LinkedHashSet<>(members.size());
    for (Member member : members) {
        if (member instanceof AnnotatedElement) {
            elements.add((AnnotatedElement) member);
        }
    }
    return elements;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) AnnotatedElement(java.lang.reflect.AnnotatedElement) Member(java.lang.reflect.Member)

Example 93 with Member

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

the class UIDisplayableProcessor method getElementsToProcess.

@Override
protected Set<? extends AnnotatedElement> getElementsToProcess() {
    List<Member> members = ReflectionsUtil.getFilteredMembers(clazz, uiDisplayable());
    Set<AnnotatedElement> elements = new LinkedHashSet<>(members.size());
    for (Member member : members) {
        if (member instanceof AnnotatedElement) {
            elements.add((AnnotatedElement) member);
        }
    }
    return elements;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) AnnotatedElement(java.lang.reflect.AnnotatedElement) Member(java.lang.reflect.Member)

Example 94 with Member

use of java.lang.reflect.Member in project spoon by INRIA.

the class CtFieldReferenceImpl method getModifiers.

@Override
public Set<ModifierKind> getModifiers() {
    CtVariable<?> v = getDeclaration();
    if (v != null) {
        return v.getModifiers();
    }
    Member m = getActualField();
    if (m != null) {
        return RtHelper.getModifiers(m.getModifiers());
    }
    return Collections.emptySet();
}
Also used : Member(java.lang.reflect.Member)

Example 95 with Member

use of java.lang.reflect.Member in project AndHook by rrrfff.

the class HookHelper method applyHooks.

public static void applyHooks(final Class<?> holdClass, final ClassLoader loader) {
    for (final Method hookMethod : holdClass.getDeclaredMethods()) {
        final Hook hookInfo = hookMethod.getAnnotation(Hook.class);
        if (hookInfo != null) {
            String name = hookInfo.name();
            if (name.isEmpty())
                name = hookMethod.getName();
            Class<?> clazz = hookInfo.clazz();
            try {
                if (clazz == Hook.class)
                    clazz = loader.loadClass(hookInfo.value());
                final Class<?>[] _parameterTypes = hookMethod.getParameterTypes();
                if (_parameterTypes.length < 1) {
                    Log.e(AndHook.LOG_TAG, "unexpected args number!");
                    continue;
                }
                final Class<?>[] parameterTypes = new Class[_parameterTypes.length - 1];
                System.arraycopy(_parameterTypes, 1, parameterTypes, 0, parameterTypes.length);
                Member origin;
                if (isConstructor(clazz, name)) {
                    origin = findConstructorHierarchically(clazz, parameterTypes);
                } else {
                    origin = findMethodHierarchically(clazz, name, parameterTypes);
                }
                if (origin != null) {
                    if (Modifier.isStatic(origin.getModifiers())) {
                        AndHook.ensureClassInitialized(clazz);
                    }
                    if (hookInfo.need_origin()) {
                        HookHelper.hook(origin, hookMethod);
                    } else {
                        AndHook.hookNoBackup(origin, hookMethod);
                    }
                }
            } catch (final Exception e) {
                Log.e(AndHook.LOG_TAG, e.getMessage(), e);
            }
        }
    }
}
Also used : Method(java.lang.reflect.Method) 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