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

com.sdklite.net.http.HttpMessage Maven / Gradle / Ivy

package com.sdklite.net.http;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * Represents the HTTP message
 * 
 * @author johnsonlee
 *
 */
public abstract class HttpMessage {

    protected final List headers;

    protected final HttpEntity entity;

    protected HttpMessage(final Builder builder) {
        this.headers = Collections.unmodifiableList(builder.headers);
        this.entity = builder.entity;
    }

    public List getHeaders() {
        return this.headers;
    }

    public List getHeaders(final String name) {
        final List headers = new ArrayList();

        for (final HttpHeader header : this.headers) {
            if (header.getName().equalsIgnoreCase(name)) {
                headers.add(header);
            }
        }

        return Collections.unmodifiableList(headers);
    }

    public HttpHeader getHeader(final String name) {
        for (final HttpHeader header : this.headers) {
            if (header.getName().equalsIgnoreCase(name)) {
                return header;
            }
        }

        return null;
    }

    public HttpEntity getEntity() {
        return this.entity;
    }

    public abstract Builder newBuilder();

    public static abstract class Builder {

        protected final List headers = new ArrayList();

        protected HttpEntity entity;

        public Builder() {
        }

        protected Builder(final HttpMessage message) {
            this.headers.addAll(message.headers);
            this.entity = message.entity;
        }

        public Builder addHeaders(final HttpHeader... headers) {
            this.headers.addAll(Arrays.asList(headers));
            return this;
        }

        public Builder addHeader(final String name, final String value) {
            return addHeaders(new SimpleHttpHeader(name, value));
        }

        public Builder setEntity(final HttpEntity entity) {
            this.entity = entity;
            return this;
        }

        public abstract HttpMessage build();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy