@SuppressWarnings("unchecked") public <T extends Enum> T getEnumMemberValue( AnnotationNode node, String name, Class<T> type, T defaultValue) { if (node == null) return defaultValue; final PropertyExpression member = (PropertyExpression) node.getMember(name); if (member == null) return defaultValue; if (!type.equals(member.getObjectExpression().getType().getTypeClass())) return defaultValue; try { String value = member.getPropertyAsString(); Method fromString = type.getMethod("valueOf", String.class); return (T) fromString.invoke(null, value); } catch (Exception e) { return defaultValue; } }
public void visitPropertyExpression(PropertyExpression expression) { expression.getObjectExpression().visit(this); expression.getProperty().visit(this); }