in meecrowave-core/src/main/java/org/apache/meecrowave/cdi/MeecrowaveSeContainerInitializer.java [62:107]
public SeContainerInitializer addProperty(final String s, final Object o) {
if (Configuration.class.isInstance(o)) {
builder = Configuration.class.cast(o);
return this;
}
final String setter = "set" + Character.toUpperCase(s.charAt(0)) + s.substring(1);
final Class<? extends Configuration> builderClass = builder.getClass();
final Optional<Method> setterOpt = Stream.of(Configuration.class.getMethods())
.filter(m -> m.getName().equals(setter) && m.getParameterCount() == 1)
.findFirst();
if (!setterOpt.isPresent()) {
super.addProperty(s, o);
// todo: log or do we assume delegate will ?
return this;
}
try {
builderClass.getMethod(setter, o.getClass()).invoke(builder, o);
} catch (final NoSuchMethodException nsme) {
if (Integer.class.isInstance(o)) {
try {
builderClass.getMethod(setter, int.class).invoke(builder, o);
} catch (final NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
throw new IllegalArgumentException(nsme);
}
} else if (Long.class.isInstance(o)) {
try {
builderClass.getMethod(setter, long.class).invoke(builder, o);
} catch (final NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
throw new IllegalArgumentException(nsme);
}
} else if (Boolean.class.isInstance(o)) {
try {
builderClass.getMethod(setter, boolean.class).invoke(builder, o);
} catch (final NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
throw new IllegalArgumentException(nsme);
}
} else {
throw new IllegalArgumentException(nsme);
}
} catch (final IllegalAccessException | InvocationTargetException ex) {
throw new IllegalArgumentException(ex);
}
return this;
}