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

org.eclipse.jetty.http.content.HttpContent Maven / Gradle / Ivy

There is a newer version: 12.1.0.alpha0
Show newest version
//
// ========================================================================
// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
// which is available at https://www.apache.org/licenses/LICENSE-2.0.
//
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
// ========================================================================
//

package org.eclipse.jetty.http.content;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.time.Instant;
import java.util.Set;

import org.eclipse.jetty.http.CompressedContentFormat;
import org.eclipse.jetty.http.HttpField;
import org.eclipse.jetty.http.MimeTypes.Type;
import org.eclipse.jetty.util.resource.Resource;

/**
 * HttpContent interface.
 * 

This information represents all the information about a * static resource that is needed to evaluate conditional headers * and to serve the content if need be. It can be implemented * either transiently (values and fields generated on demand) or * persistently (values and fields pre-generated in anticipation of * reuse in from a cache). *

*/ public interface HttpContent { HttpField getContentType(); String getContentTypeValue(); String getCharacterEncoding(); Type getMimeType(); HttpField getContentEncoding(); String getContentEncodingValue(); HttpField getContentLength(); long getContentLengthValue(); Instant getLastModifiedInstant(); HttpField getLastModified(); String getLastModifiedValue(); HttpField getETag(); String getETagValue(); Resource getResource(); /** *

Get this HTTP content as a {@link ByteBuffer} if possible.

*

Each invocation returns a new {@link ByteBuffer} instance that is * read-only and contains valid data between the pos and the limit.

* @return a {@link ByteBuffer} instance or null. */ ByteBuffer getByteBuffer(); default long getBytesOccupied() { return getContentLengthValue(); } /** * @return Set of available pre-compressed formats for this content, or null if this has not been checked. */ Set getPreCompressedContentFormats(); void release(); interface Factory { /** * @param path The path within the context to the resource * @return A {@link HttpContent} * @throws IOException if unable to get content */ HttpContent getContent(String path) throws IOException; } /** * HttpContent Wrapper. */ class Wrapper implements HttpContent { private final HttpContent _delegate; public Wrapper(HttpContent content) { _delegate = content; } public HttpContent getWrapped() { return _delegate; } @Override public HttpField getContentType() { return _delegate.getContentType(); } @Override public String getContentTypeValue() { return _delegate.getContentTypeValue(); } @Override public String getCharacterEncoding() { return _delegate.getCharacterEncoding(); } @Override public Type getMimeType() { return _delegate.getMimeType(); } @Override public HttpField getContentEncoding() { return _delegate.getContentEncoding(); } @Override public String getContentEncodingValue() { return _delegate.getContentEncodingValue(); } @Override public HttpField getContentLength() { return _delegate.getContentLength(); } @Override public long getContentLengthValue() { return _delegate.getContentLengthValue(); } @Override public Instant getLastModifiedInstant() { return _delegate.getLastModifiedInstant(); } @Override public HttpField getLastModified() { return _delegate.getLastModified(); } @Override public String getLastModifiedValue() { return _delegate.getLastModifiedValue(); } @Override public HttpField getETag() { return _delegate.getETag(); } @Override public String getETagValue() { return _delegate.getETagValue(); } @Override public Resource getResource() { return _delegate.getResource(); } @Override public ByteBuffer getByteBuffer() { return _delegate.getByteBuffer(); } @Override public long getBytesOccupied() { return _delegate.getBytesOccupied(); } @Override public Set getPreCompressedContentFormats() { return _delegate.getPreCompressedContentFormats(); } @Override public void release() { _delegate.release(); } @Override public String toString() { return "%s@%x[%s]".formatted(getClass().getSimpleName(), hashCode(), _delegate); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy