public class SerializerUtil
extends java.lang.Object
Hilfsklasse zum (De-)Serialisieren von Daten für Protokolle und Auswertungen.
Wichtig: Die Methoden serializeIntoDataArray(Data.Array,Serializable)
und deserializeZIP(byte[])
sind nicht Threadsafe!
Modifier and Type | Field and Description |
---|---|
private java.io.ByteArrayOutputStream |
bosStatic
Outputstream.
|
private static int |
BUFFER_SIZE
Puffergröße für Ausgabestream und Array für komprimierte Daten.
|
private byte[] |
compressedData
Array das den komprimierten Datensatz (serialisiertes & gezipptes Objekt) enthält.
|
(package private) static int |
COMPRESSION_LEVEL
Kommpressionsfaktor. 1 = sehr schnell vs 9 = sehr klein.
|
private static Debug |
debug
Debug Ausgabe
|
private java.util.zip.Deflater |
def
Objekt zum Komprimieren.
|
private byte[] |
header
Header, der jedem Objekt vorangeht.
|
private int |
headerOffset
Anzahl Bytes die zusätzlich nach einem Reset vom Objektoutputstream vor jedes Objekt geschrieben werden.
|
private java.util.zip.Inflater |
inflater
Objekt zum dekomprimieren.
|
private java.io.ObjectOutputStream |
oos
Führt die Serialisierung durch.
|
private byte[] |
uncompressedData
Bytefeld für dekomprimierte Daten.
|
Constructor and Description |
---|
SerializerUtil()
Konstruktor.
|
Modifier and Type | Method and Description |
---|---|
static java.lang.Object |
deserialize(byte[] data)
Deserialisiert ein Objekt aus einem Byte-Array
|
static java.lang.Object |
deserialize(java.lang.String fileName)
Deserialisiert ein Objekt aus einer Datei.
|
static java.lang.Long |
deserializeId(byte[] data)
Deserialisiert einen
long Wert aus einem Byte-Array |
java.lang.Object |
deserializeZIP(byte[] compressedData)
Deserialisiert und dekomprimiert ein Objekt aus einem Bytefeld.
|
void |
done()
Beendet den Serialisierer.
|
protected void |
finalize()
Ruft
done() auf. |
static void |
insertArray(Data.Array dest,
byte[] source,
int length)
Fügt einen Byte-Array in den Datensatz ein.
|
private static int |
readInt(byte[] ba) |
static void |
serialize(java.lang.String fileName,
java.io.Serializable obj)
Serialisiert ein Objekt in eine Datei.
|
static byte[] |
serializeId(long longValue)
Serialisiert einen Long Wert in einen Byte-Array
|
void |
serializeIntoDataArray(Data.Array dest,
java.io.Serializable obj)
Serialisiert und komprimiert ein Objekt in ein Data-Feld.
|
static byte[] |
serializeToByteArray(java.io.Serializable obj)
Serialisiert ein Objekt in einen Byte-Array.
|
private static void |
writeInt(int input,
byte[] ba) |
private static final Debug debug
Debug Ausgabe
private static final int BUFFER_SIZE
Puffergröße für Ausgabestream und Array für komprimierte Daten. Für jeden Thread zur Protokollerstellung werden 2 dieser Puffer angelegt.
static final int COMPRESSION_LEVEL
Kommpressionsfaktor. 1 = sehr schnell vs 9 = sehr klein.
private java.util.zip.Deflater def
Objekt zum Komprimieren.
private byte[] compressedData
Array das den komprimierten Datensatz (serialisiertes & gezipptes Objekt) enthält.
private java.io.ByteArrayOutputStream bosStatic
Outputstream. Enthält das serialisiertes Objekt.
private int headerOffset
Anzahl Bytes die zusätzlich nach einem Reset vom Objektoutputstream vor jedes Objekt geschrieben werden.
private byte[] header
Header, der jedem Objekt vorangeht.
private java.io.ObjectOutputStream oos
Führt die Serialisierung durch.
private java.util.zip.Inflater inflater
Objekt zum dekomprimieren.
private byte[] uncompressedData
Bytefeld für dekomprimierte Daten.
public SerializerUtil() throws FailureException
Konstruktor. Führt Initialisierung durch.
FailureException
- Fehler bei der Initialisierung.public void serializeIntoDataArray(Data.Array dest, java.io.Serializable obj) throws FailureException
Serialisiert und komprimiert ein Objekt in ein Data-Feld. Diese Methode ist nicht Threadsafe. TODO nicht komprimieren, falls komprimierte Daten > unkomprimierte Daten.
dest
- Data-Feld, in das das gepackte und serialisierte Objekt geschrieben wird.obj
- Objekt das serialisiert und gezippt wird.FailureException
- Fehler beim serialisieren und packen.public java.lang.Object deserializeZIP(byte[] compressedData) throws FailureException
Deserialisiert und dekomprimiert ein Objekt aus einem Bytefeld.
compressedData
- Bytefeld mit komprimiertem und serialisiertem Objekt.FailureException
- Fehler beim dekomprimieren und deserialisieren.public void done()
Beendet den Serialisierer. Diese Methode muss aufgerufen werden, wenn der Serialisierer nicht mehr verwendet wird.
protected void finalize() throws java.lang.Throwable
Ruft done()
auf.
finalize
in class java.lang.Object
java.lang.Throwable
Object.finalize()
public static byte[] serializeToByteArray(java.io.Serializable obj) throws FailureException
Serialisiert ein Objekt in einen Byte-Array.
obj
- ObjektFailureException
- Objekt konnte nicht serialisiert werdenpublic static void serialize(java.lang.String fileName, java.io.Serializable obj) throws FailureException
Serialisiert ein Objekt in eine Datei.
fileName
- Dateinameobj
- ObjektFailureException
- Falls es zu einem Fehler kommt.public static java.lang.Object deserialize(java.lang.String fileName)
Deserialisiert ein Objekt aus einer Datei.
fileName
- Dateinamepublic static java.lang.Object deserialize(byte[] data)
Deserialisiert ein Objekt aus einem Byte-Array
data
- Serialisiertes Objekt.null
im Fehlerfall oder falls keine Daten zu deserialisieren waren.public static void insertArray(Data.Array dest, byte[] source, int length)
Fügt einen Byte-Array in den Datensatz ein. Kann normalerweise durch Data.NumberArray#set(byte...)
ersetzt werden.
dest
- Datensatz, in den der Byte-Array kopiert wird.source
- Byte-Array mit den Quelldaten. Falls source null
ist, wird ein leerer Datensatz (d.h. ein Feld mit Länge 0) gesendet.length
- Anzahl der zu kopierenden Bytes. Muss <= source.length
sein.public static byte[] serializeId(long longValue) throws FailureException
Serialisiert einen Long Wert in einen Byte-Array
longValue
- Zu serialisierender Long-Wert.FailureException
- Objekt konnte nicht serialisiert werdenpublic static java.lang.Long deserializeId(byte[] data)
Deserialisiert einen long
Wert aus einem Byte-Array
data
- Serialisierter long.null
im Fehlerfall.private static void writeInt(int input, byte[] ba)
private static int readInt(byte[] ba)