in meecrowave-junit/src/main/java/org/apache/meecrowave/junit5/MeecrowaveExtension.java [87:134]
private void doStart(final ExtensionContext context) {
final Meecrowave.Builder builder = new Meecrowave.Builder();
final MeecrowaveConfig config = findConfig(context);
final String ctx;
if (config != null) {
ctx = config.context();
for (final Method method : MeecrowaveConfig.class.getMethods()) {
if (MeecrowaveConfig.class != method.getDeclaringClass()) {
continue;
}
try {
final Object value = method.invoke(config);
final Field configField = Configuration.class.getDeclaredField(method.getName());
if (!configField.isAccessible()) {
configField.setAccessible(true);
}
if (value != null && (!String.class.isInstance(value) || !value.toString().isEmpty())) {
if (!configField.isAccessible()) {
configField.setAccessible(true);
}
configField.set(builder, File.class == configField.getType() ? /*we use string instead */new File(value.toString()) : value);
}
} catch (final NoSuchFieldException nsfe) {
// ignored
} catch (final Exception e) {
throw new IllegalStateException(e);
}
}
if (builder.getHttpPort() < 0) {
builder.randomHttpPort();
}
} else {
ctx = "";
}
final ExtensionContext.Store store = context.getStore(NAMESPACE);
final Meecrowave meecrowave = new Meecrowave(builder);
store.put(Meecrowave.class, meecrowave);
store.put(Meecrowave.Builder.class, builder);
meecrowave.bake(ctx);
doInject(context);
store.put(LifecyleState.class, onInjection(context, null));
}