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);
}
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();
}
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);
}
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;
}
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;
}
Aggregations