/** * Extracts the declared Hadoop configuration variables (fields with * {@literal @}HadoopConf annotations) from a class. * * @param clazz The class to extract conf variable declarations from. * @param includeParentClasses If true, also includes declared variables in the super classes. * @return The list of configuration variables declared. */ public static List<ConfigurationVariable> extractDeclaredVariables( Class<?> clazz, boolean includeParentClasses) { final List<ConfigurationVariable> variables = new ArrayList<ConfigurationVariable>(); do { for (Field field : clazz.getDeclaredFields()) { final HadoopConf annotation = field.getAnnotation(HadoopConf.class); if (null != annotation) { variables.add(new ConfigurationVariable(field, annotation)); } } clazz = clazz.getSuperclass(); } while (includeParentClasses && null != clazz); return variables; }