1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.http.io.entity;
29
30 import java.io.IOException;
31 import java.io.InputStream;
32 import java.nio.file.Files;
33 import java.nio.file.Path;
34
35 import org.apache.hc.core5.annotation.Contract;
36 import org.apache.hc.core5.annotation.ThreadingBehavior;
37 import org.apache.hc.core5.http.ContentType;
38 import org.apache.hc.core5.util.Args;
39
40
41
42
43 @Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
44 public class PathEntity extends AbstractHttpEntity {
45
46 private final Path path;
47
48 public PathEntity(final Path path, final ContentType contentType, final String contentEncoding) {
49 super(contentType, contentEncoding);
50 this.path = Args.notNull(path, "Path");
51 }
52
53 public PathEntity(final Path path, final ContentType contentType) {
54 super(contentType, null);
55 this.path = Args.notNull(path, "Path");
56 }
57
58 @Override
59 public final boolean isRepeatable() {
60 return true;
61 }
62
63 @Override
64 public final long getContentLength() {
65 try {
66 return Files.size(this.path);
67 } catch (final IOException e) {
68 throw new IllegalStateException(e);
69 }
70 }
71
72 @Override
73 public final InputStream getContent() throws IOException {
74 return Files.newInputStream(path);
75 }
76
77 @Override
78 public final boolean isStreaming() {
79 return false;
80 }
81
82 @Override
83 public final void close() throws IOException {
84
85 }
86
87 }