AMETAS.data
Class AMETASSCContainer

java.lang.Object
  extended byAMETAS.data.AMETASSCContainer
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable
Direct Known Subclasses:
AMETASSPUContainer

public class AMETASSCContainer
extends java.lang.Object
implements java.io.Externalizable

Beinhaltet Klassendefinitionen und eine Signatur über diese Klassen. Dieser Container ist dazu gedacht, eine Möglichkeit zu schaffen, zur Erstellungszeit der Anwendung unbekannte Klassen nachträglich in das System zu integrieren. Der Aufbau ist ähnlich wie der des häufiger benutzten AMETASSPUContainer, der seinerseits Stellennutzer beinhaltet.

See Also:
Serialized Form

Constructor Summary
AMETASSCContainer()
          Initialisierung des Signed-Class-Containers.
 
Method Summary
 void addClass(java.lang.String sClassname, byte[] abyClassBytes)
          Hinzufügen einer Klasse.
 void addFile(java.lang.String sFilename, byte[] abyFileBytes)
          Hinzufügen einer Datei.
 void addSignature(AMETASSignature signature)
          Hinzufügen einer Signatur.
 void checkValid()
          Überprüfung der Integrität des Containers.
 boolean containsClass(java.lang.String sClassname)
          Abfrage, ob eine bestimmte Klasse enthalten ist.
 byte[] createHash(byte[] abyClassBytes)
          Klassenabdruck erzeugen.
 java.lang.String[] getAllClassNames()
          Liefert alle enthaltenen Klassen.
 java.lang.String[] getAllComponents()
          Liefert alle enthaltenen Komponenten.
protected  byte[] getBytesFromStream(java.io.InputStream is, int nNumber)
          Holt eine Menge von Bytes aus einem Strom.
 byte[] getClass(java.lang.String sClassName)
          Liefert die Klassenbytes der angegebenen Klasse.
 byte[] getClassAt(int nIndex)
          Liefert die Klassenbytes der angegebenen Klasse.
 java.lang.String getDigestAlgorithm()
          Liefert den Digest-Algorithmus.
 byte[] getHashValue(java.lang.String sClassName)
          Liefert den MD5-Hashwert der Klasse.
 byte[] getHashValueAt(int nIndex)
          Liefert den MD5-Hashwert der Klasse.
 short getIndexOfClass(java.lang.String sClassName)
          Liefert den Index der Klasse.
 short getIndexOfComponent(java.lang.String sComponentName)
          Liefert den Index der Komponente.
protected  java.lang.Object getNextEntryData(java.util.zip.ZipInputStream zi, int nLength)
          Liefert den nächsten Eintrag in der Zip-Datei.
 byte[] getSignableData(boolean bUseHashes)
          Liefert ein Bytefeld, das zu signieren ist.
 AMETASSignature[] getSignatures(int nIndex)
          Liefert die Liste von Signaturen.
 void readExternal(java.io.ObjectInput in)
          Deserialisationsmethode.
 boolean removeSignature(AMETASIdentityID iidSigner)
          Entfernt eine Signatur.
 void removeSignatures()
          Entfernt alle Signaturen.
protected  byte[] serializeObject(java.lang.Object data, int[] anLength, int nPos)
          Serialisiert ein Objekt.
 void setCompressionLevel(short nCompression)
          Setzt den Komprimierungsgrad.
 void setDigestAlgorithm(java.lang.String sDigest)
          Setzt den Digest-Algorithmus.
 int size()
          Liefert die Anzahl der enthaltenen Klassen.
 java.lang.String toString()
          Liefert eine Stringrepräsentation des SC-Containers.
 java.lang.String toString(boolean bDetailed)
          Gibt detailliert den Inhalt des SCC aus.
 void writeExternal(java.io.ObjectOutput out)
          Serialisierungsmethode.
protected  void writeToZip(java.util.zip.ZipOutputStream zo, java.lang.String sPart, byte[] abyData, boolean bDeflated)
          Schreibt die Daten in den Zip-Strom.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AMETASSCContainer

public AMETASSCContainer()
Initialisierung des Signed-Class-Containers. Er besitzt aber noch keinen Inhalt.

Method Detail

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Deserialisationsmethode.

Specified by:
readExternal in interface java.io.Externalizable
Parameters:
in - Datenstrom, aus dem der SCC ausgelesen wird.
Throws:
java.io.IOException - wenn der Container nicht lesbar oder ungültig definiert ist.
java.lang.ClassNotFoundException

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Serialisierungsmethode.

Specified by:
writeExternal in interface java.io.Externalizable
Parameters:
out - Ausgabestrom.
Throws:
java.io.IOException - wenn Probleme beim Speichern auftreten.

getAllComponents

public java.lang.String[] getAllComponents()
Liefert alle enthaltenen Komponenten.

Returns:
Aufzählung aller enthaltenen Komponenten.

getAllClassNames

public java.lang.String[] getAllClassNames()
Liefert alle enthaltenen Klassen.

Returns:
Aufzählung aller enthaltenen Klassen.

setCompressionLevel

public void setCompressionLevel(short nCompression)
Setzt den Komprimierungsgrad. Dies wirkt sich auf das nächste Speichern aus.

Parameters:
nCompression - Komprimierungsgrad.

getIndexOfComponent

public short getIndexOfComponent(java.lang.String sComponentName)
Liefert den Index der Komponente.

Parameters:
sComponentName - Name der Komponente. Bei SCCs immer "AllClasses". Wenn null, wird der Index der Hauptkomponente gesucht.
Returns:
Index der Komponente oder -1, wenn nicht gefunden.

getIndexOfClass

public short getIndexOfClass(java.lang.String sClassName)
Liefert den Index der Klasse.

Parameters:
sClassName - Klassenname.
Returns:
Index der Klasse oder -1, wenn nicht gefunden.

getClass

public byte[] getClass(java.lang.String sClassName)
Liefert die Klassenbytes der angegebenen Klasse.

Returns:
Bytes der Klasse.

getClassAt

public byte[] getClassAt(int nIndex)
Liefert die Klassenbytes der angegebenen Klasse.

Parameters:
nIndex - Index des Klassennamens.
Returns:
Bytes der Klasse.

getHashValue

public byte[] getHashValue(java.lang.String sClassName)
Liefert den MD5-Hashwert der Klasse.

Parameters:
sClassName - Klassenname.
Returns:
MD5-Abdruck.

getHashValueAt

public byte[] getHashValueAt(int nIndex)
Liefert den MD5-Hashwert der Klasse.

Parameters:
nIndex - Index des Klassennamens.
Returns:
MD5-Abdruck.

containsClass

public boolean containsClass(java.lang.String sClassname)
Abfrage, ob eine bestimmte Klasse enthalten ist.

Parameters:
sClassname - Klassenname.
Returns:
true, wenn die Klasse enthalten ist, sonst false.

size

public int size()
Liefert die Anzahl der enthaltenen Klassen.

Returns:
Anzahl der enthaltenen Klassen.

setDigestAlgorithm

public void setDigestAlgorithm(java.lang.String sDigest)
Setzt den Digest-Algorithmus. Dabei werden alle Hash-Werte gelöscht.

Parameters:
sDigest - Digest-Algorithmus.

getDigestAlgorithm

public java.lang.String getDigestAlgorithm()
Liefert den Digest-Algorithmus.

Returns:
Digest-Algorithmus.

addClass

public void addClass(java.lang.String sClassname,
                     byte[] abyClassBytes)
Hinzufügen einer Klasse. Ist der Name schon vorhanden, überschreibt der neue Eintrag den alten. Der Klassenname wird automatisch in die Liste aller enthaltenen Klassen eingetragen. Der Abdruck wird automatisch bestimmt.

Parameters:
sClassname - Klassenname.
abyClassBytes - Klassenbytes.

addFile

public void addFile(java.lang.String sFilename,
                    byte[] abyFileBytes)
Hinzufügen einer Datei. Ist der Name schon vorhanden, überschreibt der neue Eintrag den alten. Der Dateiname wird automatisch in die Liste aller enthaltenen Klassen eingetragen; dabei wird dem Namen ein "/" vorangestellt. Der Abdruck wird automatisch bestimmt.

Parameters:
sFilename - Dateiname.
abyFileBytes - Dateiinhalt.

createHash

public byte[] createHash(byte[] abyClassBytes)
Klassenabdruck erzeugen. Es wird der eingestellte Algorithmus verwendet.

Parameters:
abyClassBytes - Bytes der Klasse oder null, wenn der Algorithmus unbekannt ist.
Returns:
Abdruck der Klasse.

addSignature

public void addSignature(AMETASSignature signature)
Hinzufügen einer Signatur. Man kann nur die Hauptkomponente signieren.


getSignableData

public byte[] getSignableData(boolean bUseHashes)
Liefert ein Bytefeld, das zu signieren ist.

Parameters:
bUseHashes - wenn true, werden die Abdrücke herangezogen.
Returns:
Bytefeld der relevanten Daten.

removeSignatures

public void removeSignatures()
Entfernt alle Signaturen. Bei SPUs betrifft dies jedoch nur den äußeren SPU.


removeSignature

public boolean removeSignature(AMETASIdentityID iidSigner)
Entfernt eine Signatur.

Parameters:
iidSigner - ID des Unterzeichners, dessen Signatur entfernt werden soll.
Returns:
true, wenn die Aktion erfolgreich durchgeführt werden konnte, sonst false.

getSignatures

public AMETASSignature[] getSignatures(int nIndex)
Liefert die Liste von Signaturen.

Parameters:
nIndex - Index der Komponente. Bei SCCs immer 0.
Returns:
Feld mit den Signaturen oder null, wenn keine Signaturen vorhanden sind.

checkValid

public void checkValid()
                throws InvalidContainerException
Überprüfung der Integrität des Containers. Der Container ist genau dann gültig, wenn die Liste der Klassenreferenzen nicht leer ist, die Hashcodes jeder enthaltenen Klasse vorhanden sind und zu jeder enthaltenen Komponente die Signaturen vorhanden sind.

Throws:
InvalidContainerException - wenn der Container ungültig ist.

writeToZip

protected void writeToZip(java.util.zip.ZipOutputStream zo,
                          java.lang.String sPart,
                          byte[] abyData,
                          boolean bDeflated)
                   throws java.util.zip.ZipException,
                          java.io.IOException
Schreibt die Daten in den Zip-Strom.

Parameters:
zo - Zip-Ausgabe-Strom.
sPart - Eintragsname.
abyData - Zu schreibende Daten.
bDeflated - wenn true, werden die Daten komprimiert.
Throws:
java.util.zip.ZipException - bei Problemen mit der Speicherung in der Zip-Datei.
java.io.IOException - bei sonstigen Problemen bei der Speicherung.

getBytesFromStream

protected byte[] getBytesFromStream(java.io.InputStream is,
                                    int nNumber)
                             throws java.io.IOException
Holt eine Menge von Bytes aus einem Strom.

Parameters:
is - Eingabestrom
nNumber - Anzahl zu ladender Bytes.
Returns:
Feld, das die Bytes beinhaltet.
Throws:
java.io.IOException - bei Lesefehlern.

serializeObject

protected byte[] serializeObject(java.lang.Object data,
                                 int[] anLength,
                                 int nPos)
Serialisiert ein Objekt.

Parameters:
data - Zu serialisierendes Objekt.
anLength - Feld, in welches die erhaltene Länge einzutragen ist.
nPos - Position im Feld.
Returns:
Bytefeld, welches das Objekt enthält oder null, wenn das Objekt nicht serialisiert werden konnte.

getNextEntryData

protected java.lang.Object getNextEntryData(java.util.zip.ZipInputStream zi,
                                            int nLength)
                                     throws java.io.IOException
Liefert den nächsten Eintrag in der Zip-Datei.

Parameters:
zi - Quelle.
nLength - Größe des Feldes (unkomprimiert).
Returns:
Objekt, das in diesem Eintrag steckt.
Throws:
java.io.IOException - wenn es zu Problemen beim Lesen kommt.

toString

public java.lang.String toString()
Liefert eine Stringrepräsentation des SC-Containers.

Returns:
Stringrepräsentation.

toString

public java.lang.String toString(boolean bDetailed)
Gibt detailliert den Inhalt des SCC aus.

Returns:
Stringrepräsentation.