package org.webpieces.httpparser.api.dto; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.webpieces.httpparser.api.common.Header; import org.webpieces.httpparser.api.common.KnownHeaderName; public abstract class HttpMessage extends HttpPayload { protected List<Header> headers = new ArrayList<>(); //Convenience structure that further morphs the headers into a Map that can //be looked up by key. private transient Headers headersStruct = new Headers(); /** * Order of HTTP Headers matters for Headers with the same key */ public List<Header> getHeaders() { return Collections.unmodifiableList(headers); } public void addHeader(Header header) { headers.add(header); headersStruct.addHeader(header); } /** * * @return */ public Headers getHeaderLookupStruct() { return headersStruct; } @Override public boolean isHasChunkedTransferHeader() { //need to account for a few Transfer Encoding headers Header header = headersStruct.getLastInstanceOfHeader(KnownHeaderName.TRANSFER_ENCODING); return header != null && "chunked".equals(header.getValue()); } }