use of org.apache.knox.gateway.config.Configure in project knox by apache.
the class DefaultConfigurationInjector method injectFieldValue.
private void injectFieldValue(Field field, Object target, ConfigurationAdapter adapter, ConfigurationBinding binding) throws ConfigurationException {
Configure annotation = field.getAnnotation(Configure.class);
if (annotation != null) {
Alias alias = field.getAnnotation(Alias.class);
String name = getConfigName(field, alias);
String bind = getBindName(target, name, binding);
Object value = retrieveValue(target, bind, name, field.getType(), adapter, binding);
if (value == null) {
Optional optional = field.getAnnotation(Optional.class);
if (optional == null) {
throw new ConfigurationException(String.format("Failed to find configuration for %s bound to %s of %s via %s", bind, name, target.getClass().getName(), adapter.getClass().getName()));
}
} else {
try {
if (!field.isAccessible()) {
field.setAccessible(true);
}
field.set(target, value);
} catch (Exception e) {
throw new ConfigurationException(String.format("Failed to inject field configuration property %s of %s", name, target.getClass().getName()), e);
}
}
}
}
use of org.apache.knox.gateway.config.Configure in project knox by apache.
the class DefaultConfigurationInjector method injectMethodValue.
private void injectMethodValue(Method method, Object target, ConfigurationAdapter adapter, ConfigurationBinding binding) throws ConfigurationException {
Configure methodTag = method.getAnnotation(Configure.class);
if (methodTag != null) {
Alias aliasTag = method.getAnnotation(Alias.class);
String methodName = getConfigName(method, aliasTag);
Class[] argTypes = method.getParameterTypes();
Object[] args = new Object[argTypes.length];
Annotation[][] argTags = method.getParameterAnnotations();
for (int i = 0; i < argTypes.length; i++) {
String argName = getConfigName(methodName, argTags[i]);
String bndName = getBindName(target, argName, binding);
Object argValue = retrieveValue(target, bndName, argName, argTypes[i], adapter, binding);
if (argValue == null) {
Default defTag = findAnnotation(argTags[i], Default.class);
if (defTag != null) {
String strValue = defTag.value();
argValue = convertValue(target, argName, strValue, argTypes[i]);
} else {
throw new ConfigurationException(String.format("Failed to find configuration for %s as %s of %s via %s", bndName, argName, target.getClass().getName(), adapter.getClass().getName()));
}
}
args[i] = argValue;
}
if (!method.isAccessible()) {
method.setAccessible(true);
}
try {
method.invoke(target, args);
} catch (Exception e) {
throw new ConfigurationException(String.format("Failed to inject method configuration via %s of %s", methodName, target.getClass().getName()), e);
}
}
}
Aggregations