/** * 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; }
final String key = getKey(); if (null == key) { throw new HadoopConfigurationException("Missing 'key' attribute of @HadoopConf on " mField.setBoolean(instance, conf.getBoolean(key, getDefaultBoolean(instance))); } else if (float.class == mField.getType()) { mField.setFloat(instance, conf.getFloat(key, getDefaultFloat(instance))); } else if (double.class == mField.getType()) { mField.setDouble(instance, conf.getFloat(key, getDefaultDouble(instance))); } else if (int.class == mField.getType()) { mField.setInt(instance, conf.getInt(key, getDefaultInt(instance))); } else if (long.class == mField.getType()) { mField.setLong(instance, conf.getLong(key, getDefaultLong(instance))); } else if (mField.getType().isAssignableFrom(String.class)) { mField.set(instance, conf.get(key, getDefaultString(instance))); } else if (mField.getType().isAssignableFrom(Collection.class)) { mField.set(instance, conf.getStringCollection(key));
for (ConfigurationVariable variable : variables) { try { variable.setValue(instance, conf); } catch (IllegalAccessException e) { throw new HadoopConfigurationException(e);