protected static Field findField(String fieldName, Class<?> declaringClass) { try { return declaringClass.getDeclaredField(fieldName); } catch (NoSuchFieldException e) { Class<?> superclass = declaringClass.getSuperclass(); if (superclass != null && superclass != declaringClass) { return findField(fieldName, superclass); } else { return null; } } }
@Override public void setupModule(SetupContext context) { BeanValidationAnnotationIntrospector introspector = new BeanValidationAnnotationIntrospector(context.getTypeFactory()); context.insertAnnotationIntrospector(introspector); }
@Override public void setupModule(SetupContext context) { BeanValidationAnnotationIntrospector introspector = new BeanValidationAnnotationIntrospector(context.getTypeFactory()); context.insertAnnotationIntrospector(introspector); }
protected static Field findField(String fieldName, Class<?> declaringClass) { try { return declaringClass.getDeclaredField(fieldName); } catch (NoSuchFieldException e) { Class<?> superclass = declaringClass.getSuperclass(); if (superclass != null && superclass != declaringClass) { return findField(fieldName, superclass); } else { return null; } } }
@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); }
@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); }