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

com.jn.agileway.web.request.header.SetResponseHeaderHandler Maven / Gradle / Ivy

package com.jn.agileway.web.request.header;

import com.jn.agileway.web.request.handler.HttpRequestHandler;
import com.jn.agileway.web.request.handler.HttpRequestHandlerChain;
import com.jn.agileway.http.rr.RR;
import com.jn.langx.lifecycle.AbstractInitializable;
import com.jn.langx.lifecycle.InitializationException;
import com.jn.langx.util.Objs;
import com.jn.langx.util.collection.Pipeline;
import com.jn.langx.util.function.Function;

import java.util.List;

public class SetResponseHeaderHandler extends AbstractInitializable implements HttpRequestHandler {
    private List rules;
    private HttpRequestHandlerChain setters;

    public SetResponseHeaderHandler() {
    }

    public void setRules(List rules) {
        this.rules = rules;
    }

    @Override
    protected void doInit() throws InitializationException {
        if (Objs.isNotEmpty(rules)) {
            HttpRequestHandlerChain chain = new HttpRequestHandlerChain();

            List setterList = Pipeline.of(rules).map(new Function() {
                @Override
                public HttpRequestHandler apply(HttpResponseHeaderRule rule) {
                    return new HttpResponseHeaderSetterFactory().get(rule);
                }
            }).asList();
            chain.setHandlers(setterList);
            this.setters = chain;
        }
    }

    @Override
    public void handle(RR rr) {
        if (Objs.isEmpty(setters)) {
            return;
        }
        setters.handle(rr);
    }

    @Override
    public String toString() {
        return "Set-Response-Header";
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy