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 java.io.File; 19 import java.io.IOException; 20 import java.io.InputStream; 21 import java.nio.charset.Charset; 22 23 import org.jboss.netty.buffer.ChannelBuffer; 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 * @param length 109 * @return a ChannelBuffer for the content from the current position or an 110 * EMPTY_BUFFER if there is no more data to return 111 * @throws IOException 112 */ 113 ChannelBuffer getChunk(int length) throws IOException; 114 115 /** 116 * Returns the contents of the file item as a String, using the default 117 * character encoding. 118 * 119 * @return the contents of the file item as a String, using the default 120 * character encoding. 121 * @exception IOException 122 */ 123 String getString() throws IOException; 124 125 /** 126 * Returns the contents of the file item as a String, using the specified 127 * charset. 128 * 129 * @param encoding 130 * the charset to use 131 * @return the contents of the file item as a String, using the specified 132 * charset. 133 * @exception IOException 134 */ 135 String getString(Charset encoding) throws IOException; 136 137 /** 138 * Set the Charset passed by the browser if defined 139 * 140 * @param charset 141 * Charset to set - must be not null 142 */ 143 void setCharset(Charset charset); 144 145 /** 146 * Returns the Charset passed by the browser or null if not defined. 147 * 148 * @return the Charset passed by the browser or null if not defined. 149 */ 150 Charset getCharset(); 151 152 /** 153 * A convenience method to write an uploaded item to disk. If a previous one 154 * exists, it will be deleted. Once this method is called, if successful, 155 * the new file will be out of the cleaner of the factory that creates the 156 * original InterfaceHttpData object. 157 * 158 * @param dest 159 * destination file - must be not null 160 * @return True if the write is successful 161 * @exception IOException 162 */ 163 boolean renameTo(File dest) throws IOException; 164 165 /** 166 * Provides a hint as to whether or not the file contents will be read from 167 * memory. 168 * 169 * @return True if the file contents is in memory. 170 */ 171 boolean isInMemory(); 172 173 /** 174 * 175 * @return the associated File if this data is represented in a file 176 * @exception IOException 177 * if this data is not represented by a file 178 */ 179 File getFile() throws IOException; 180 181 }