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

com.progressoft.brix.domino.api.server.request.DefaultRequestContext Maven / Gradle / Ivy

The newest version!
package com.progressoft.brix.domino.api.server.request;

import com.progressoft.brix.domino.api.shared.request.RequestBean;

public class DefaultRequestContext implements RequestContext {

    private final T requestBean;
    private final MultiMap parameters;
    private final MultiMap headers;
    private final String requestPath;

    public DefaultRequestContext(String requestPath, T requestBean, MultiMap parameters, MultiMap headers) {
        this.requestPath = requestPath;
        this.requestBean = requestBean;
        this.parameters = parameters;
        this.headers = headers;
    }

    @Override
    public T getRequestBean() {
        return requestBean;
    }

    @Override
    public MultiMap headers() {
        return headers;
    }

    @Override
    public MultiMap parameters() {
        return parameters;
    }

    @Override
    public String getRequestPath() {
        return requestPath;
    }

    public static  RequestContextBuilder forRequest(S requestBean) {
        return new RequestContextBuilder<>(requestBean);
    }

    public static class RequestContextBuilder {

        private String requestPath;
        private S requestBean;
        private MultiMap parameters;
        private MultiMap headers;

        public RequestContextBuilder(S requestBean) {
            this.requestBean = requestBean;
        }

        public RequestContextBuilder requestPath(String requestPath) {
            this.requestPath = requestPath;
            return this;
        }

        public RequestContextBuilder parameters(MultiMap parameters) {
            this.parameters = parameters;
            return this;
        }

        public RequestContextBuilder headers(MultiMap headers) {
            this.headers = headers;
            return this;
        }

        public RequestContext build() {
            return new DefaultRequestContext<>(requestPath, requestBean, parameters, headers);
        }
    }
}