001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.http.resource;
018
019import java.io.*;
020import java.util.function.*;
021
022import org.apache.http.*;
023import org.apache.juneau.http.entity.*;
024import org.apache.juneau.http.header.*;
025
026/**
027 * A streamed, non-repeatable resource that obtains its content from an {@link InputStream}.
028 *
029 * <h5 class='section'>See Also:</h5><ul>
030 *    <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/JuneauRestCommonBasics">juneau-rest-common Basics</a>
031 * </ul>
032 */
033public class StreamResource extends BasicResource {
034   /**
035    * Constructor.
036    */
037   public StreamResource() {
038      super(new StreamEntity());
039   }
040
041   /**
042    * Constructor.
043    *
044    * @param contentType The entity content type.
045    * @param contents The entity contents.
046    */
047   public StreamResource(ContentType contentType, InputStream contents) {
048      super(new StreamEntity(contentType, contents));
049   }
050
051   /**
052    * Copy constructor.
053    *
054    * @param copyFrom The bean being copied.
055    */
056   protected StreamResource(StreamResource copyFrom) {
057      super(copyFrom);
058   }
059
060   @Override /* Overridden from BasicResource */
061   public StreamResource addHeader(String name, String value) {
062      super.addHeader(name, value);
063      return this;
064   }
065
066   @Override /* Overridden from BasicResource */
067   public StreamResource addHeaders(Header...values) {
068      super.addHeaders(values);
069      return this;
070   }
071
072   @Override
073   public StreamResource copy() {
074      return new StreamResource(this);
075   }
076
077   @Override /* Overridden from BasicResource */
078   public StreamResource setCached() throws IOException {
079      super.setCached();
080      return this;
081   }
082
083   @Override /* Overridden from BasicResource */
084   public StreamResource setChunked() {
085      super.setChunked();
086      return this;
087   }
088
089   @Override /* Overridden from BasicResource */
090   public StreamResource setChunked(boolean value) {
091      super.setChunked(value);
092      return this;
093   }
094
095   @Override /* Overridden from BasicResource */
096   public StreamResource setContent(Object value) {
097      super.setContent(value);
098      return this;
099   }
100
101   @Override /* Overridden from BasicResource */
102   public StreamResource setContent(Supplier<?> value) {
103      super.setContent(value);
104      return this;
105   }
106
107   @Override /* Overridden from BasicResource */
108   public StreamResource setContentEncoding(ContentEncoding value) {
109      super.setContentEncoding(value);
110      return this;
111   }
112
113   @Override /* Overridden from BasicResource */
114   public StreamResource setContentEncoding(String value) {
115      super.setContentEncoding(value);
116      return this;
117   }
118
119   @Override /* Overridden from BasicResource */
120   public StreamResource setContentLength(long value) {
121      super.setContentLength(value);
122      return this;
123   }
124
125   @Override /* Overridden from BasicResource */
126   public StreamResource setContentType(ContentType value) {
127      super.setContentType(value);
128      return this;
129   }
130
131   @Override /* Overridden from BasicResource */
132   public StreamResource setContentType(String value) {
133      super.setContentType(value);
134      return this;
135   }
136
137   @Override /* Overridden from BasicResource */
138   public StreamResource setHeader(String name, String value) {
139      super.setHeader(name, value);
140      return this;
141   }
142
143   @Override /* Overridden from BasicResource */
144   public StreamResource setHeaders(Header...values) {
145      super.setHeaders(values);
146      return this;
147   }
148
149   @Override /* Overridden from BasicResource */
150   public StreamResource setHeaders(HeaderList value) {
151      super.setHeaders(value);
152      return this;
153   }
154
155   @Override /* Overridden from BasicResource */
156   public StreamResource setUnmodifiable() {
157      super.setUnmodifiable();
158      return this;
159   }
160}