Search in sources :

Example 86 with Member

use of java.lang.reflect.Member in project fabric8 by jboss-fuse.

the class BeanValidationAnnotationIntrospector method hasIgnoreMarker.

@Override
public boolean hasIgnoreMarker(AnnotatedMember m) {
    Member member = m.getMember();
    int modifiers = member.getModifiers();
    if (Modifier.isTransient(modifiers)) {
        if (LOG.isLoggable(Level.FINE)) {
            LOG.fine("Ignoring transient member " + m);
        }
        return true;
    } else if (m instanceof AnnotatedMethod) {
        AnnotatedMethod method = (AnnotatedMethod) m;
        String methodName = method.getName();
        // lets see if there is a transient field of the same name as the getter
        if (methodName.startsWith("get") && method.getParameterCount() == 0) {
            String fieldName = Introspector.decapitalize(methodName.substring(3));
            Class<?> declaringClass = method.getDeclaringClass();
            Field field = findField(fieldName, declaringClass);
            if (field != null) {
                int fieldModifiers = field.getModifiers();
                if (Modifier.isTransient(fieldModifiers)) {
                    LOG.fine("Ignoring member " + m + " due to transient field called " + fieldName);
                    return true;
                }
            }
        }
    }
    return super.hasIgnoreMarker(m);
}
Also used : Field(java.lang.reflect.Field) AnnotatedMethod(com.fasterxml.jackson.databind.introspect.AnnotatedMethod) Member(java.lang.reflect.Member) AnnotatedMember(com.fasterxml.jackson.databind.introspect.AnnotatedMember)

Example 87 with Member

use of java.lang.reflect.Member in project SimpleFlatMapper by arnaudroger.

the class InstantiatorBuilder method appendNewInstanceBuilderOnMethod.

private static <S> void appendNewInstanceBuilderOnMethod(Class<?> sourceClass, ExecutableInstantiatorDefinition instantiatorDefinition, Map<Parameter, Getter<? super S, ?>> injections, ClassWriter cw, String targetType, String sourceType, String classType, Parameter[] parameters) throws NoSuchMethodException {
    MethodVisitor mv;
    mv = cw.visitMethod(ACC_PUBLIC, "newInstance", "(" + AsmUtils.toTargetTypeDeclaration(sourceType) + ")" + AsmUtils.toTargetTypeDeclaration(targetType), null, new String[] { "java/lang/Exception" });
    mv.visitCode();
    mv.visitTypeInsn(NEW, targetType);
    mv.visitInsn(DUP);
    StringBuilder sb = new StringBuilder();
    for (Parameter p : parameters) {
        Getter<? super S, ?> getter = injections.get(p);
        sb.append(AsmUtils.toTargetTypeDeclaration(p.getType()));
        if (getter == null) {
            if (TypeHelper.isPrimitive(p.getType())) {
                mv.visitInsn(AsmUtils.defaultValue.get(p.getType()));
            } else {
                mv.visitInsn(ACONST_NULL);
            }
        } else {
            invokeGetter(p, getter, classType, sourceClass, mv, null, false);
        }
    }
    Member exec = instantiatorDefinition.getExecutable();
    if (exec instanceof Constructor) {
        mv.visitMethodInsn(INVOKESPECIAL, targetType, "<init>", "(" + sb.toString() + ")V", false);
    } else {
        mv.visitMethodInsn(INVOKESTATIC, AsmUtils.toAsmType(((Method) exec).getDeclaringClass()), exec.getName(), AsmUtils.toSignature((Method) exec), false);
    }
    mv.visitInsn(ARETURN);
    mv.visitMaxs(3, 2);
    mv.visitEnd();
}
Also used : Constructor(java.lang.reflect.Constructor) Parameter(org.simpleflatmapper.reflect.Parameter) Method(java.lang.reflect.Method) Member(java.lang.reflect.Member) MethodVisitor(org.simpleflatmapper.ow2asm.MethodVisitor)

Example 88 with Member

use of java.lang.reflect.Member in project core by weld.

the class Formats method formatAsStackTraceElement.

/**
 * See also WELD-1454.
 *
 * @param ij
 * @return the formatted string
 */
public static String formatAsStackTraceElement(InjectionPoint ij) {
    Member member;
    if (ij.getAnnotated() instanceof AnnotatedField) {
        AnnotatedField<?> annotatedField = (AnnotatedField<?>) ij.getAnnotated();
        member = annotatedField.getJavaMember();
    } else if (ij.getAnnotated() instanceof AnnotatedParameter<?>) {
        AnnotatedParameter<?> annotatedParameter = (AnnotatedParameter<?>) ij.getAnnotated();
        member = annotatedParameter.getDeclaringCallable().getJavaMember();
    } else {
        // Throwing an exception here would hide the original exception.
        return "-";
    }
    return formatAsStackTraceElement(member);
}
Also used : AnnotatedParameter(javax.enterprise.inject.spi.AnnotatedParameter) AnnotatedField(javax.enterprise.inject.spi.AnnotatedField) Member(java.lang.reflect.Member)

Example 89 with Member

use of java.lang.reflect.Member in project core by weld.

the class ResolvableBuilder method addQualifier.

private ResolvableBuilder addQualifier(Annotation qualifier, InjectionPoint injectionPoint) {
    QualifierInstance qualifierInstance = QualifierInstance.of(qualifier, store);
    final Class<? extends Annotation> annotationType = qualifierInstance.getAnnotationClass();
    // Handle the @New qualifier special case
    if (annotationType.equals(New.class)) {
        New newQualifier = New.class.cast(qualifier);
        if (newQualifier.value().equals(New.class) && rawType == null) {
            throw new IllegalStateException("Cannot transform @New when there is no known raw type");
        } else if (newQualifier.value().equals(New.class)) {
            qualifier = new NewLiteral(rawType);
            qualifierInstance = QualifierInstance.of(qualifier, store);
        }
    } else if (injectionPoint != null && annotationType.equals(Named.class)) {
        Named named = (Named) qualifier;
        if (named.value().equals("")) {
            // WELD-1739
            // This is an injection point with an @Named qualifier, with no value specified, we need to assume the name of the field or parameter is the
            // value
            Member member = injectionPoint.getMember();
            if (member instanceof Executable) {
                // Method or constructor injection
                Executable executable = (Executable) member;
                AnnotatedParameter<?> annotatedParameter = (AnnotatedParameter<?>) injectionPoint.getAnnotated();
                Parameter parameter = executable.getParameters()[annotatedParameter.getPosition()];
                named = new NamedLiteral(parameter.getName());
            } else {
                named = new NamedLiteral(injectionPoint.getMember().getName());
            }
            qualifier = named;
            qualifierInstance = QualifierInstance.of(named, store);
        }
    }
    checkQualifier(qualifier, qualifierInstance, annotationType);
    this.qualifierInstances.add(qualifierInstance);
    return this;
}
Also used : New(javax.enterprise.inject.New) Named(javax.inject.Named) AnnotatedParameter(javax.enterprise.inject.spi.AnnotatedParameter) Parameter(java.lang.reflect.Parameter) AnnotatedParameter(javax.enterprise.inject.spi.AnnotatedParameter) NewLiteral(org.jboss.weld.literal.NewLiteral) Executable(java.lang.reflect.Executable) Member(java.lang.reflect.Member) NamedLiteral(org.jboss.weld.literal.NamedLiteral)

Example 90 with Member

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

the class RestIgnoreProcessor method getElementsToProcess.

@Override
protected Set<? extends AnnotatedElement> getElementsToProcess() {
    List<Member> members = ReflectionsUtil.getFilteredMembers(clazz, restIgnore());
    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)

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