Class MixedAttribute
- java.lang.Object
-
- io.netty.handler.codec.http.multipart.MixedAttribute
-
- All Implemented Interfaces:
ByteBufHolder
,Attribute
,HttpData
,InterfaceHttpData
,ReferenceCounted
,Comparable<InterfaceHttpData>
public class MixedAttribute extends Object implements Attribute
Mixed implementation using both in Memory and in File with a limit of size
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface io.netty.handler.codec.http.multipart.InterfaceHttpData
InterfaceHttpData.HttpDataType
-
-
Constructor Summary
Constructors Constructor Description MixedAttribute(String name, long limitSize)
MixedAttribute(String name, long definedSize, long limitSize)
MixedAttribute(String name, long definedSize, long limitSize, Charset charset)
MixedAttribute(String name, long definedSize, long limitSize, Charset charset, String baseDir, boolean deleteOnExit)
MixedAttribute(String name, long limitSize, Charset charset)
MixedAttribute(String name, long limitSize, Charset charset, String baseDir, boolean deleteOnExit)
MixedAttribute(String name, String value, long limitSize)
MixedAttribute(String name, String value, long limitSize, Charset charset)
MixedAttribute(String name, String value, long limitSize, Charset charset, String baseDir, boolean deleteOnExit)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addContent(ByteBuf buffer, boolean last)
Add the content from the ChannelBuffervoid
checkSize(long newSize)
Check if the new size is not reaching the max limit allowed.int
compareTo(InterfaceHttpData o)
ByteBuf
content()
Return the data which is held by thisByteBufHolder
.Attribute
copy()
Creates a deep copy of thisByteBufHolder
.long
definedLength()
Returns the defined length of the HttpData.void
delete()
Deletes the underlying storage for a file item, including deleting any associated temporary disk file.Attribute
duplicate()
Duplicates thisByteBufHolder
.boolean
equals(Object obj)
byte[]
get()
Returns the contents of the file item as an array of bytes.
Note: this method will allocate a lot of memory, if the data is currently stored on the file system.ByteBuf
getByteBuf()
Returns the content of the file item as a ByteBuf.
Note: this method will allocate a lot of memory, if the data is currently stored on the file system.Charset
getCharset()
Returns the Charset passed by the browser or null if not defined.ByteBuf
getChunk(int length)
Returns a ChannelBuffer for the content from the current position with at most length read bytes, increasing the current position of the Bytes read.File
getFile()
InterfaceHttpData.HttpDataType
getHttpDataType()
long
getMaxSize()
Returns the maxSize for this HttpData.String
getName()
Returns the name of this InterfaceHttpData.String
getString()
Returns the contents of the file item as a String, using the default character encoding.String
getString(Charset encoding)
Returns the contents of the file item as a String, using the specified charset.String
getValue()
Returns the value of this HttpData.int
hashCode()
boolean
isCompleted()
boolean
isInMemory()
Provides a hint as to whether or not the file contents will be read from memory.long
length()
Returns the size in byte of the InterfaceHttpDataint
refCnt()
Returns the reference count of this object.boolean
release()
Decreases the reference count by1
and deallocates this object if the reference count reaches at0
.boolean
release(int decrement)
Decreases the reference count by the specifieddecrement
and deallocates this object if the reference count reaches at0
.boolean
renameTo(File dest)
A convenience getMethod to write an uploaded item to disk.Attribute
replace(ByteBuf content)
Returns a newByteBufHolder
which contains the specifiedcontent
.Attribute
retain()
Increases the reference count by1
.Attribute
retain(int increment)
Increases the reference count by the specifiedincrement
.Attribute
retainedDuplicate()
Duplicates thisByteBufHolder
.void
setCharset(Charset charset)
Set the Charset passed by the browser if definedvoid
setContent(ByteBuf buffer)
Set the content from the ChannelBuffer (erase any previous data)void
setContent(File file)
Set the content from the file (erase any previous data)void
setContent(InputStream inputStream)
Set the content from the inputStream (erase any previous data)void
setMaxSize(long maxSize)
Set the maxSize for this HttpData.void
setValue(String value)
Sets the value of this HttpData.String
toString()
Attribute
touch()
Records the current access location of this object for debugging purposes.Attribute
touch(Object hint)
Records the current access location of this object with an additional arbitrary information for debugging purposes.
-
-
-
Constructor Detail
-
MixedAttribute
public MixedAttribute(String name, long limitSize)
-
MixedAttribute
public MixedAttribute(String name, long definedSize, long limitSize)
-
MixedAttribute
public MixedAttribute(String name, long limitSize, Charset charset, String baseDir, boolean deleteOnExit)
-
MixedAttribute
public MixedAttribute(String name, long definedSize, long limitSize, Charset charset)
-
MixedAttribute
public MixedAttribute(String name, long definedSize, long limitSize, Charset charset, String baseDir, boolean deleteOnExit)
-
-
Method Detail
-
getMaxSize
public long getMaxSize()
Description copied from interface:HttpData
Returns the maxSize for this HttpData.- Specified by:
getMaxSize
in interfaceHttpData
-
setMaxSize
public void setMaxSize(long maxSize)
Description copied from interface:HttpData
Set the maxSize for this HttpData. When limit will be reached, an exception will be raised. Setting it to (-1) means no limitation. By default, to be set from the HttpDataFactory.- Specified by:
setMaxSize
in interfaceHttpData
-
checkSize
public void checkSize(long newSize) throws IOException
Description copied from interface:HttpData
Check if the new size is not reaching the max limit allowed. The limit is always computed in terms of bytes.- Specified by:
checkSize
in interfaceHttpData
- Throws:
IOException
-
addContent
public void addContent(ByteBuf buffer, boolean last) throws IOException
Description copied from interface:HttpData
Add the content from the ChannelBufferReferenceCounted.release()
ownership ofbuffer
is transferred to thisHttpData
.- Specified by:
addContent
in interfaceHttpData
- Parameters:
buffer
- must be not null except if last is set to Falselast
- True of the buffer is the last one- Throws:
IOException
-
delete
public void delete()
Description copied from interface:HttpData
Deletes the underlying storage for a file item, including deleting any associated temporary disk file.
-
get
public byte[] get() throws IOException
Description copied from interface:HttpData
Returns the contents of the file item as an array of bytes.
Note: this method will allocate a lot of memory, if the data is currently stored on the file system.- Specified by:
get
in interfaceHttpData
- Returns:
- the contents of the file item as an array of bytes.
- Throws:
IOException
-
getByteBuf
public ByteBuf getByteBuf() throws IOException
Description copied from interface:HttpData
Returns the content of the file item as a ByteBuf.
Note: this method will allocate a lot of memory, if the data is currently stored on the file system.- Specified by:
getByteBuf
in interfaceHttpData
- Returns:
- the content of the file item as a ByteBuf
- Throws:
IOException
-
getCharset
public Charset getCharset()
Description copied from interface:HttpData
Returns the Charset passed by the browser or null if not defined.- Specified by:
getCharset
in interfaceHttpData
- Returns:
- the Charset passed by the browser or null if not defined.
-
getString
public String getString() throws IOException
Description copied from interface:HttpData
Returns the contents of the file item as a String, using the default character encoding.- Specified by:
getString
in interfaceHttpData
- Returns:
- the contents of the file item as a String, using the default character encoding.
- Throws:
IOException
-
getString
public String getString(Charset encoding) throws IOException
Description copied from interface:HttpData
Returns the contents of the file item as a String, using the specified charset.- Specified by:
getString
in interfaceHttpData
- Parameters:
encoding
- the charset to use- Returns:
- the contents of the file item as a String, using the specified charset.
- Throws:
IOException
-
isCompleted
public boolean isCompleted()
- Specified by:
isCompleted
in interfaceHttpData
- Returns:
- True if the InterfaceHttpData is completed (all data are stored)
-
isInMemory
public boolean isInMemory()
Description copied from interface:HttpData
Provides a hint as to whether or not the file contents will be read from memory.- Specified by:
isInMemory
in interfaceHttpData
- Returns:
- True if the file contents is in memory.
-
length
public long length()
Description copied from interface:HttpData
Returns the size in byte of the InterfaceHttpData
-
definedLength
public long definedLength()
Description copied from interface:HttpData
Returns the defined length of the HttpData. If no Content-Length is provided in the request, the defined length is always 0 (whatever during decoding or in final state). If Content-Length is provided in the request, this is this given defined length. This value does not change, whatever during decoding or in the final state. This method could be used for instance to know the amount of bytes transmitted for one particular HttpData, for example oneFileUpload
or any known bigAttribute
.- Specified by:
definedLength
in interfaceHttpData
- Returns:
- the defined length of the HttpData
-
renameTo
public boolean renameTo(File dest) throws IOException
Description copied from interface:HttpData
A convenience getMethod to write an uploaded item to disk. If a previous one exists, it will be deleted. Once this getMethod is called, if successful, the new file will be out of the cleaner of the factory that creates the original InterfaceHttpData object.- Specified by:
renameTo
in interfaceHttpData
- Parameters:
dest
- destination file - must be not null- Returns:
- True if the write is successful
- Throws:
IOException
-
setCharset
public void setCharset(Charset charset)
Description copied from interface:HttpData
Set the Charset passed by the browser if defined- Specified by:
setCharset
in interfaceHttpData
- Parameters:
charset
- Charset to set - must be not null
-
setContent
public void setContent(ByteBuf buffer) throws IOException
Description copied from interface:HttpData
Set the content from the ChannelBuffer (erase any previous data)ReferenceCounted.release()
ownership ofbuffer
is transferred to thisHttpData
.- Specified by:
setContent
in interfaceHttpData
- Parameters:
buffer
- must be not null- Throws:
IOException
-
setContent
public void setContent(File file) throws IOException
Description copied from interface:HttpData
Set the content from the file (erase any previous data)- Specified by:
setContent
in interfaceHttpData
- Parameters:
file
- must be not null- Throws:
IOException
-
setContent
public void setContent(InputStream inputStream) throws IOException
Description copied from interface:HttpData
Set the content from the inputStream (erase any previous data)- Specified by:
setContent
in interfaceHttpData
- Parameters:
inputStream
- must be not null- Throws:
IOException
-
getHttpDataType
public InterfaceHttpData.HttpDataType getHttpDataType()
- Specified by:
getHttpDataType
in interfaceInterfaceHttpData
- Returns:
- The HttpDataType
-
getName
public String getName()
Description copied from interface:InterfaceHttpData
Returns the name of this InterfaceHttpData.- Specified by:
getName
in interfaceInterfaceHttpData
-
compareTo
public int compareTo(InterfaceHttpData o)
- Specified by:
compareTo
in interfaceComparable<InterfaceHttpData>
-
getValue
public String getValue() throws IOException
Description copied from interface:Attribute
Returns the value of this HttpData.- Specified by:
getValue
in interfaceAttribute
- Throws:
IOException
-
setValue
public void setValue(String value) throws IOException
Description copied from interface:Attribute
Sets the value of this HttpData.- Specified by:
setValue
in interfaceAttribute
- Throws:
IOException
-
getChunk
public ByteBuf getChunk(int length) throws IOException
Description copied from interface:HttpData
Returns a ChannelBuffer for the content from the current position with at most length read bytes, increasing the current position of the Bytes read. Once it arrives at the end, it returns an EMPTY_BUFFER and it resets the current position to 0.- Specified by:
getChunk
in interfaceHttpData
- Returns:
- a ChannelBuffer for the content from the current position or an EMPTY_BUFFER if there is no more data to return
- Throws:
IOException
-
getFile
public File getFile() throws IOException
- Specified by:
getFile
in interfaceHttpData
- Returns:
- the associated File if this data is represented in a file
- Throws:
IOException
- if this data is not represented by a file
-
copy
public Attribute copy()
Description copied from interface:ByteBufHolder
Creates a deep copy of thisByteBufHolder
.
-
duplicate
public Attribute duplicate()
Description copied from interface:ByteBufHolder
Duplicates thisByteBufHolder
. Be aware that this will not automatically callByteBufHolder.retain()
.
-
retainedDuplicate
public Attribute retainedDuplicate()
Description copied from interface:ByteBufHolder
Duplicates thisByteBufHolder
. This method returns a retained duplicate unlikeByteBufHolder.duplicate()
.- Specified by:
retainedDuplicate
in interfaceAttribute
- Specified by:
retainedDuplicate
in interfaceByteBufHolder
- Specified by:
retainedDuplicate
in interfaceHttpData
- See Also:
ByteBuf.retainedDuplicate()
-
replace
public Attribute replace(ByteBuf content)
Description copied from interface:ByteBufHolder
Returns a newByteBufHolder
which contains the specifiedcontent
.
-
content
public ByteBuf content()
Description copied from interface:ByteBufHolder
Return the data which is held by thisByteBufHolder
.- Specified by:
content
in interfaceByteBufHolder
-
refCnt
public int refCnt()
Description copied from interface:ReferenceCounted
Returns the reference count of this object. If0
, it means this object has been deallocated.- Specified by:
refCnt
in interfaceReferenceCounted
-
retain
public Attribute retain()
Description copied from interface:ReferenceCounted
Increases the reference count by1
.- Specified by:
retain
in interfaceAttribute
- Specified by:
retain
in interfaceByteBufHolder
- Specified by:
retain
in interfaceHttpData
- Specified by:
retain
in interfaceInterfaceHttpData
- Specified by:
retain
in interfaceReferenceCounted
-
retain
public Attribute retain(int increment)
Description copied from interface:ReferenceCounted
Increases the reference count by the specifiedincrement
.- Specified by:
retain
in interfaceAttribute
- Specified by:
retain
in interfaceByteBufHolder
- Specified by:
retain
in interfaceHttpData
- Specified by:
retain
in interfaceInterfaceHttpData
- Specified by:
retain
in interfaceReferenceCounted
-
touch
public Attribute touch()
Description copied from interface:ReferenceCounted
Records the current access location of this object for debugging purposes. If this object is determined to be leaked, the information recorded by this operation will be provided to you viaResourceLeakDetector
. This method is a shortcut totouch(null)
.- Specified by:
touch
in interfaceAttribute
- Specified by:
touch
in interfaceByteBufHolder
- Specified by:
touch
in interfaceHttpData
- Specified by:
touch
in interfaceInterfaceHttpData
- Specified by:
touch
in interfaceReferenceCounted
-
touch
public Attribute touch(Object hint)
Description copied from interface:ReferenceCounted
Records the current access location of this object with an additional arbitrary information for debugging purposes. If this object is determined to be leaked, the information recorded by this operation will be provided to you viaResourceLeakDetector
.- Specified by:
touch
in interfaceAttribute
- Specified by:
touch
in interfaceByteBufHolder
- Specified by:
touch
in interfaceHttpData
- Specified by:
touch
in interfaceInterfaceHttpData
- Specified by:
touch
in interfaceReferenceCounted
-
release
public boolean release()
Description copied from interface:ReferenceCounted
Decreases the reference count by1
and deallocates this object if the reference count reaches at0
.- Specified by:
release
in interfaceReferenceCounted
- Returns:
true
if and only if the reference count became0
and this object has been deallocated
-
release
public boolean release(int decrement)
Description copied from interface:ReferenceCounted
Decreases the reference count by the specifieddecrement
and deallocates this object if the reference count reaches at0
.- Specified by:
release
in interfaceReferenceCounted
- Returns:
true
if and only if the reference count became0
and this object has been deallocated
-
-