1 /*
2 * Copyright 2012 The Netty Project
3 *
4 * The Netty Project licenses this file to you under the Apache License,
5 * version 2.0 (the "License"); you may not use this file except in compliance
6 * with the License. You may obtain a copy of the License at:
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations
14 * under the License.
15 */
16 package org.jboss.netty.handler.codec.http.multipart;
17
18 import org.jboss.netty.buffer.ChannelBuffer;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.nio.charset.Charset;
24
25 /**
26 * Extended interface for InterfaceHttpData
27 */
28 public interface HttpData extends InterfaceHttpData {
29 /**
30 * Set the content from the ChannelBuffer (erase any previous data)
31 *
32 * @param buffer
33 * must be not null
34 * @exception IOException
35 */
36 void setContent(ChannelBuffer buffer) throws IOException;
37
38 /**
39 * Add the content from the ChannelBuffer
40 *
41 * @param buffer
42 * must be not null except if last is set to False
43 * @param last
44 * True of the buffer is the last one
45 * @exception IOException
46 */
47 void addContent(ChannelBuffer buffer, boolean last) throws IOException;
48
49 /**
50 * Set the content from the file (erase any previous data)
51 *
52 * @param file
53 * must be not null
54 * @exception IOException
55 */
56 void setContent(File file) throws IOException;
57
58 /**
59 * Set the content from the inputStream (erase any previous data)
60 *
61 * @param inputStream
62 * must be not null
63 * @exception IOException
64 */
65 void setContent(InputStream inputStream) throws IOException;
66
67 /**
68 *
69 * @return True if the InterfaceHttpData is completed (all data are stored)
70 */
71 boolean isCompleted();
72
73 /**
74 * Returns the size in byte of the InterfaceHttpData
75 *
76 * @return the size of the InterfaceHttpData
77 */
78 long length();
79
80 /**
81 * Deletes the underlying storage for a file item, including deleting any
82 * associated temporary disk file.
83 */
84 void delete();
85
86 /**
87 * Returns the contents of the file item as an array of bytes.
88 *
89 * @return the contents of the file item as an array of bytes.
90 * @exception IOException
91 */
92 byte[] get() throws IOException;
93
94 /**
95 * Returns the content of the file item as a ChannelBuffer
96 *
97 * @return the content of the file item as a ChannelBuffer
98 * @throws IOException
99 */
100 ChannelBuffer getChannelBuffer() throws IOException;
101
102 /**
103 * Returns a ChannelBuffer for the content from the current position with at
104 * most length read bytes, increasing the current position of the Bytes
105 * read. Once it arrives at the end, it returns an EMPTY_BUFFER and it
106 * resets the current position to 0.
107 *
108 * @return a ChannelBuffer for the content from the current position or an
109 * EMPTY_BUFFER if there is no more data to return
110 */
111 ChannelBuffer getChunk(int length) throws IOException;
112
113 /**
114 * Returns the contents of the file item as a String, using the default
115 * character encoding.
116 *
117 * @return the contents of the file item as a String, using the default
118 * character encoding.
119 */
120 String getString() throws IOException;
121
122 /**
123 * Returns the contents of the file item as a String, using the specified
124 * charset.
125 *
126 * @param encoding
127 * the charset to use
128 * @return the contents of the file item as a String, using the specified
129 * charset.
130 * @exception IOException
131 */
132 String getString(Charset encoding) throws IOException;
133
134 /**
135 * Set the Charset passed by the browser if defined
136 *
137 * @param charset
138 * Charset to set - must be not null
139 */
140 void setCharset(Charset charset);
141
142 /**
143 * Returns the Charset passed by the browser or null if not defined.
144 *
145 * @return the Charset passed by the browser or null if not defined.
146 */
147 Charset getCharset();
148
149 /**
150 * A convenience method to write an uploaded item to disk. If a previous one
151 * exists, it will be deleted. Once this method is called, if successful,
152 * the new file will be out of the cleaner of the factory that creates the
153 * original InterfaceHttpData object.
154 *
155 * @param dest
156 * destination file - must be not null
157 * @return True if the write is successful
158 * @exception IOException
159 */
160 boolean renameTo(File dest) throws IOException;
161
162 /**
163 * Provides a hint as to whether or not the file contents will be read from
164 * memory.
165 *
166 * @return True if the file contents is in memory.
167 */
168 boolean isInMemory();
169
170 /**
171 *
172 * @return the associated File if this data is represented in a file
173 * @exception IOException
174 * if this data is not represented by a file
175 */
176 File getFile() throws IOException;
177
178 }