private void doStart()

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));
    }