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

io.inverno.mod.http.base.Base Maven / Gradle / Ivy

package io.inverno.mod.http.base;

import io.inverno.core.v1.Module;
import io.inverno.mod.base.converter.ObjectConverter;
import io.inverno.mod.http.base.header.HeaderCodec;
import io.inverno.mod.http.base.internal.ParameterConverter;
import io.inverno.mod.http.base.internal.header.AcceptCodec;
import io.inverno.mod.http.base.internal.header.AcceptLanguageCodec;
import io.inverno.mod.http.base.internal.header.ContentDispositionCodec;
import io.inverno.mod.http.base.internal.header.ContentTypeCodec;
import io.inverno.mod.http.base.internal.header.CookieCodec;
import io.inverno.mod.http.base.internal.header.GenericHeaderService;
import io.inverno.mod.http.base.internal.header.SetCookieCodec;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;
import javax.annotation.processing.Generated;

@Generated(value= {"io.inverno.core.compiler.InvernoCompiler", "1"}, date = "2021-08-13T16:34:51.846501420+02:00[Europe/Paris]")
public final class Base extends Module {

	private Bean headerService;
	private Bean cookieCodec;
	private Bean acceptCodec;
	private Bean setCookieCodec;
	private Bean acceptLanguageCodec;
	private Bean contentDispositionCodec;
	private Bean contentTypeCodec;
	private Bean> parameterConverter;

	private Base(@Socket(name = "headerCodecs", wiredTo = {"setCookieCodec", "contentTypeCodec", "acceptLanguageCodec", "parameterConverter", "acceptCodec", "cookieCodec", "contentDispositionCodec", "headerService"}) Optional>>> headerCodecs, @Socket(name = "parameterConverter", wiredTo = {"cookieCodec", "headerService"}) Optional>> parameterConverterOverride) {
		super("io.inverno.mod.http.base");

		this.headerService = this.with(ModuleBeanBuilder
			.singleton("headerService", () -> {
				GenericHeaderService headerService = new GenericHeaderService();
				headerService.setHeaderCodecs(new BeanAggregator>()
					.add(this.cookieCodec.get())
					.add(this.acceptCodec.get())
					.add(this.setCookieCodec.get())
					.add(this.acceptLanguageCodec.get())
					.add(this.contentDispositionCodec.get())
					.add(this.contentTypeCodec.get())
					.add(headerCodecs.orElse(() -> null).get())
				.toList());
				return headerService;
			})
		);
		this.cookieCodec = this.with(ModuleBeanBuilder
			.singleton("cookieCodec", () -> {
				CookieCodec cookieCodec = new CookieCodec(
					this.parameterConverter.get()
				);

				return cookieCodec;
			})
		);
		this.acceptCodec = this.with(ModuleBeanBuilder
			.singleton("acceptCodec", () -> {
				AcceptCodec acceptCodec = new AcceptCodec();

				return acceptCodec;
			})
		);
		this.setCookieCodec = this.with(ModuleBeanBuilder
			.singleton("setCookieCodec", () -> {
				SetCookieCodec setCookieCodec = new SetCookieCodec();

				return setCookieCodec;
			})
		);
		this.acceptLanguageCodec = this.with(ModuleBeanBuilder
			.singleton("acceptLanguageCodec", () -> {
				AcceptLanguageCodec acceptLanguageCodec = new AcceptLanguageCodec();

				return acceptLanguageCodec;
			})
		);
		this.contentDispositionCodec = this.with(ModuleBeanBuilder
			.singleton("contentDispositionCodec", () -> {
				ContentDispositionCodec contentDispositionCodec = new ContentDispositionCodec();

				return contentDispositionCodec;
			})
		);
		this.contentTypeCodec = this.with(ModuleBeanBuilder
			.singleton("contentTypeCodec", () -> {
				ContentTypeCodec contentTypeCodec = new ContentTypeCodec();

				return contentTypeCodec;
			})
		);
		this.parameterConverter = this.with(WrapperBeanBuilder
			.singleton("parameterConverter", () -> {
				ParameterConverter parameterConverter = new ParameterConverter();

				return parameterConverter;
			})
			.override(parameterConverterOverride)
		);
	}

	public GenericHeaderService headerService() {
		return this.headerService.get();
	}

	private CookieCodec cookieCodec() {
		return this.cookieCodec.get();
	}

	private AcceptCodec acceptCodec() {
		return this.acceptCodec.get();
	}

	private SetCookieCodec setCookieCodec() {
		return this.setCookieCodec.get();
	}

	private AcceptLanguageCodec acceptLanguageCodec() {
		return this.acceptLanguageCodec.get();
	}

	private ContentDispositionCodec contentDispositionCodec() {
		return this.contentDispositionCodec.get();
	}

	private ContentTypeCodec contentTypeCodec() {
		return this.contentTypeCodec.get();
	}

	private ObjectConverter parameterConverter() {
		return this.parameterConverter.get();
	}

	public static final class Builder extends ModuleBuilder {

		private Optional>>> headerCodecs = Optional.empty();
		private Optional>> parameterConverter = Optional.empty();

		protected Base doBuild() {
			return new Base(this.headerCodecs, this.parameterConverter);
		}

		public Builder setHeaderCodecs(List> headerCodecs) {
			this.headerCodecs = Optional.ofNullable(headerCodecs != null ? () -> headerCodecs : null);
			return this;
		}

		public Builder setParameterConverter(ObjectConverter parameterConverter) {
			this.parameterConverter = Optional.ofNullable(parameterConverter != null ? () -> parameterConverter : null);
			return this;
		}
	}

	public static final class Linker extends ModuleLinker {

		public Linker(Map sockets) {
			super(sockets);
		}

		@SuppressWarnings("unchecked")
		protected Base link() {
			return new Base(
				(Optional>>>)this.sockets.get("headerCodecs"),
				(Optional>>)this.sockets.get("parameterConverter")
			);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy