All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.datakernel.http.di.PromiseGeneratorModule Maven / Gradle / Ivy

package io.datakernel.http.di;

import io.datakernel.di.core.Binding;
import io.datakernel.di.core.BindingGenerator;
import io.datakernel.di.module.AbstractModule;
import io.datakernel.promise.Promise;

/**
 * @since 3.0.0
 */
public class PromiseGeneratorModule extends AbstractModule {
	private PromiseGeneratorModule() {
	}

	public static PromiseGeneratorModule create() {
		return new PromiseGeneratorModule();
	}

	@Override
	protected void configure() {
		BindingGenerator> generator = (bindings, scope, key) -> {
			Binding binding = bindings.get(key.getTypeParameter(0));
			return binding != null ?
					binding.mapInstance(Promise::of) :
					null;
		};
		generate(Promise.class, generator);
	}
}