de.osci.osci12.messagetypes
Class StoredMessage

java.lang.Object
  extended byde.osci.osci12.messagetypes.OSCIMessage
      extended byde.osci.osci12.messagetypes.OSCIResponseTo
          extended byde.osci.osci12.messagetypes.StoredMessage
All Implemented Interfaces:
ContentPackageI

public class StoredMessage
extends OSCIResponseTo
implements ContentPackageI

Eine Instanz dieser Klasse wird beim Einlesen einer serialisierten OSCI-Nachricht beliebigen Typs (Nachrichten mit Inhaltsdaten) angelegt.

Die Klasse dient folgenden Zwecken:

Leser können ihre Inhaltsdaten in Nachrichten beliebigen Typs ablegen, diese speichern und z.B. als Datei weiterreichen. Absender können eine solche Datei mit der Methode loadMessage(InputStream) laden, die Inhaltdatencontainer entnehmen und anderen Nachrichten hinzufügen.

Ein generelles Problem ist, dass in verschlüsselten Inhaltsdaten einer OSCI-Nachricht die Informationen über die enthaltenen Referenzen auf Zertifikate und Attachments ohne Entschlüsselung nicht verfügbar sind. Im Zweifel müssen daher alle Zertifikate (z.B. mit den Methoden OSCIMessage.getOtherAuthors(), OSCIMessage.getOtherReaders() und OSCIMessage.addRole(Role)) und Attachments (Methoden exportAttachment(OSCIMessage, Attachment) und exportAttachments(OSCIMessage)) entnommen und der neuen Nachricht hinzugefügt werden.

Anwendungen sollten dies berücksichtigen und für den Inhaltsdatenaustausch möglichst mehrere einzelne Nachrichten statt einer komplexen verwenden. Besonders problematisch ist in diesem Zusammenhang die Signatur durch Originator- bzw. Verschlüsselung für Addressee-Rollenobjekte, weil diese i.d.R. nicht in eine neue Nachricht übernommen werden können. Hier sollten grundsätzlich Author- und Reader-Objekte verwendet werden.

Weiter ist zu beachten, dass es beim Zusammensetzen einer neuen Nachricht aus Inhaltdatencontainern, die anderen Nachrichten entnommen wurden, zu Konflikten mit den Ref-Ids der Content-Einträge kommen kann. Da die Bibliothek wegen der ggf. vorhandenen Signatur diese Ids nicht selbst anpassen kann, sollten Anwendungen eindeutige Ref-Ids setzen. Diese können z.B. aus Message-Ids und laufenden Nummern oder Zertfikats-Ids (z.B. IssuerDN und SerialNumber) und Datum/Uhrzeit generiert werden.

Copyright © 2004 Freie Hansestadt Bremen

Erstellt von bremen online services Entwicklungs- und Betriebsgesellschaft GmbH & Co. KG

Diese Bibliothek kann von jedermann nach Maßgabe der Bremer Lizenz für freie Softwarebibliotheken genutzt werden.

Die Lizenzbestimmungen können unter der URL www.osci.de abgerufen oder bei der OSCI-Leitstelle, Senator für Finanzen, Freie Hansestadt Bremen, Postfach 10 15 40, 28015 Bremen schriftlich angefordert werden.

Version:
1.2.1

Field Summary
 
Fields inherited from class de.osci.osci12.messagetypes.OSCIMessage
ACCEPT_DELIVERY, attachments, contentContainer, contentID, controlBlock, desiredLanguagesH, dialogHandler, dsNSPrefix, encryptedData, EXIT_DIALOG, FETCH_DELIVERY, FETCH_PROCESS_CARD, FORWARD_DELIVERY, GET_MESSAGE_ID, hashableMsgPart, INIT_DIALOG, intermediaryCertificatesH, MEDIATE_DELIVERY, NO_SELECTION_RULE, nonIntermediaryCertificatesH, ns, osciNSPrefix, PROCESS_DELIVERY, qualityOfTimestampTypeCreation, qualityOfTimestampTypeReception, RESPONSE_TO_ACCEPT_DELIVERY, RESPONSE_TO_EXIT_DIALOG, RESPONSE_TO_FETCH_DELIVERY, RESPONSE_TO_FETCH_PROCESS_CARD, RESPONSE_TO_FORWARD_DELIVERY, RESPONSE_TO_GET_MESSAGE_ID, RESPONSE_TO_INIT_DIALOG, RESPONSE_TO_MEDIATE_DELIVERY, RESPONSE_TO_PROCESS_DELIVERY, RESPONSE_TO_STORE_DELIVERY, SELECT_ADDRESSEE, SELECT_ALL, SELECT_BY_DATE_OF_RECEPTION, SELECT_BY_MESSAGE_ID, SELECT_BY_RECENT_MODIFICATION, SELECT_ORIGINATOR, signatureHeader, SOAP_FAULT_MESSAGE, SOAP_MESSAGE_ENCRYPTED, soapNSPrefix, STORE_DELIVERY, TYPE_UNDEFINED, xencNSPrefix, xsiNSPrefix
 
Method Summary
 void exportAttachment(OSCIMessage destinationMessage, Attachment att)
          Diese Methode exportiert ein Attachment der Nachricht in eine andere OSCI-Nachricht beliebigen Typs.
 void exportAttachments(OSCIMessage destinationMessage)
          Diese Methode exportiert alle Attachments der Nachricht in eine andere OSCI-Nachricht beliebigen Typs.
 ContentContainer[] getContentContainer()
          Liefert die in die Nachricht eingestellten (unverschlüsselten) Inhaltsdaten als ContentContainer-Objekte.
 EncryptedDataOSCI[] getEncryptedData()
          Liefert die in die Nachricht eingestellten verschlüsselten Inhaltsdaten als EncryptedData-Objekte.
 Intermed getIntermediary()
          Liefert das Intermediärsobjekt oder null, wenn keine Zertifikate in der Nachricht enthalten sind.
 java.lang.String getMessageId()
          Liefert die Message-Id der Nachricht.
 ProcessCardBundle getProcessCardBundle()
          Diese Methode liefert den Laufzettel der Nachricht zurück.
 ProcessCardBundle getProcessCardBundleReply()
          Diese Methode liefert den Antwort-Laufzettel einer Abwicklungsantwort zurück.
 ProcessCardBundle[] getProcessCardBundles()
          Diese Methode liefert die Laufzettel einer Laufzettelabholantwort zurück.
 boolean getQualityOfTimeStampCreation()
          Liefert die Qualität des Zeitstempels, mit dem der Intermediär den Eingang des Auftrags im Laufzettel protokolliert.
 boolean getQualityOfTimeStampReception()
          Liefert die geforderte Qualität des Zeitstempels, mit dem der Intermediär den Empfang der Annahmeantwort im Laufzettel protokolliert.
 long getQuantityLimit()
          Liefert die maximale Anzahl zurückzugebender Laufzettel.
 int getSelectionMode()
          Liefert den gesetzten Auswahlmodus für Nachrichten oder Laufzettel.
 java.lang.String getSelectionRule()
          Liefert die gesetzte Auswahlregel für Nachrichten oder Laufzettel.
 java.lang.String getSubject()
          Liefert den Betreff der Nachricht oder null, wenn kein Betreff in der Nachricht enthalten ist.
 java.net.URI getUriReceiver()
          Liefert die URI des Nachrichtenempfängers oder null, wenn keine Empfänger-URI in der Nachricht enthalten ist.
static StoredMessage loadMessage(java.io.InputStream input)
          Liest eine (unverschlüsselte) Nachricht aus dem übergebenen Stream.
static void storeMessage(OSCIMessage msg, java.io.OutputStream output)
          Serialisiert die übergebene Nachricht und schreibt die Daten in den übergebenen Stream.
 
Methods inherited from class de.osci.osci12.messagetypes.OSCIResponseTo
getFeedback, getFeedbackObjects
 
Methods inherited from class de.osci.osci12.messagetypes.OSCIMessage
addCustomHeader, addRole, formatISO8601, getAddressee, getBase64Encoding, getCustomHeaders, getDialogHandler, getMessageType, getOriginator, getOtherAuthors, getOtherReaders, getRoleForRefID, isSigned, parseISO8601, setBase64Encoding, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

storeMessage

public static void storeMessage(OSCIMessage msg,
                                java.io.OutputStream output)
                         throws java.io.IOException,
                                OSCIException,
                                java.security.NoSuchAlgorithmException
Serialisiert die übergebene Nachricht und schreibt die Daten in den übergebenen Stream.

Parameters:
msg - zu speichernde Nachricht; z.Zt. können StoredMessage-Objekte selbst nicht gespeichert werden. Der Stream wird von der Methode nicht geschlossen.
output - Ausgabestream
Throws:
java.io.IOException - bei Schreibfehlern
OSCIException - bei Problemen beim Aufbau der Nachricht
java.security.NoSuchAlgorithmException - wenn der installierte Security-Provider einen benötigten Algorithmus nicht unterstützt
See Also:
loadMessage(InputStream)

loadMessage

public static StoredMessage loadMessage(java.io.InputStream input)
                                 throws java.io.IOException,
                                        OSCIException,
                                        java.security.NoSuchAlgorithmException
Liest eine (unverschlüsselte) Nachricht aus dem übergebenen Stream. Die in der Nachricht enthaltenen Inhalte können dem zurückgegebenen Nachrichtenobjekt entnommen werden.

Parameters:
input - zu lesender Stream
Returns:
StoredMessage-Instanz
Throws:
java.io.IOException - bei Schreibfehlern
OSCIException - bei Problemen beim Aufbau der Nachricht
java.security.NoSuchAlgorithmException - wenn der installierte Security-Provider einen benötigten Algorithmus nicht unterstützt
See Also:
storeMessage(OSCIMessage, OutputStream)

exportAttachments

public void exportAttachments(OSCIMessage destinationMessage)
Diese Methode exportiert alle Attachments der Nachricht in eine andere OSCI-Nachricht beliebigen Typs.

Parameters:
destinationMessage - Zielnachricht
See Also:
exportAttachment(OSCIMessage, Attachment)

exportAttachment

public void exportAttachment(OSCIMessage destinationMessage,
                             Attachment att)
Diese Methode exportiert ein Attachment der Nachricht in eine andere OSCI-Nachricht beliebigen Typs.

Parameters:
destinationMessage - Zielnachricht
See Also:
exportAttachments(OSCIMessage)

getProcessCardBundle

public ProcessCardBundle getProcessCardBundle()
Diese Methode liefert den Laufzettel der Nachricht zurück. Im Falle einer Abwicklungsantwort wird der Laufzettel des Requests zurückgegeben.

Returns:
den Laufzettel des Auftrags als ProcessCardBundle-Objekt oder null, wenn der Nachrichtentyp keinen Laufzettel enthält
See Also:
getProcessCardBundleReply(), ResponseToMediateDelivery.getProcessCardBundleRequest()

getProcessCardBundles

public ProcessCardBundle[] getProcessCardBundles()
Diese Methode liefert die Laufzettel einer Laufzettelabholantwort zurück.

Returns:
den Laufzettel des Auftrags als ProcessCardBundle-Objekt
Throws:
java.lang.UnsupportedOperationException - wenn die Nachricht nicht vom Typ ResponseToFetchProcessCard ist
See Also:
getProcessCardBundle(), ResponseToFetchProcessCard.getProcessCardBundles()

getProcessCardBundleReply

public ProcessCardBundle getProcessCardBundleReply()
Diese Methode liefert den Antwort-Laufzettel einer Abwicklungsantwort zurück.

Returns:
den Laufzettel der Nachricht als ProcessCardBundle-Objekt
Throws:
java.lang.UnsupportedOperationException - wenn die Nachricht nicht vom Typ ResponseToMediateDelivery ist.
See Also:
getProcessCardBundle()

getMessageId

public java.lang.String getMessageId()
Liefert die Message-Id der Nachricht. Im Falle einer Abwicklungsantwort wird die Message-Id des Requests zurückgegeben.

Specified by:
getMessageId in interface ContentPackageI
Returns:
Message-ID

getIntermediary

public Intermed getIntermediary()
Liefert das Intermediärsobjekt oder null, wenn keine Zertifikate in der Nachricht enthalten sind.

Returns:
Intermediär

getContentContainer

public ContentContainer[] getContentContainer()
Liefert die in die Nachricht eingestellten (unverschlüsselten) Inhaltsdaten als ContentContainer-Objekte.

Specified by:
getContentContainer in interface ContentPackageI
Returns:
enthaltene ContentContainer mit Inhaltsdaten
See Also:
ContentContainer

getEncryptedData

public EncryptedDataOSCI[] getEncryptedData()
Liefert die in die Nachricht eingestellten verschlüsselten Inhaltsdaten als EncryptedData-Objekte.

Specified by:
getEncryptedData in interface ContentPackageI
Returns:
enthaltene EncryptedData-Objekt mit verschlüsselten Inhaltsdaten
See Also:
EncryptedDataOSCI

getSubject

public java.lang.String getSubject()
Liefert den Betreff der Nachricht oder null, wenn kein Betreff in der Nachricht enthalten ist.

Specified by:
getSubject in interface ContentPackageI
Returns:
den Betreff

getUriReceiver

public java.net.URI getUriReceiver()
Liefert die URI des Nachrichtenempfängers oder null, wenn keine Empfänger-URI in der Nachricht enthalten ist.

Returns:
URI

getQualityOfTimeStampCreation

public boolean getQualityOfTimeStampCreation()
Liefert die Qualität des Zeitstempels, mit dem der Intermediär den Eingang des Auftrags im Laufzettel protokolliert.

Returns:
Qualität des Zeitstempels: true - kryptographischer Zeitstempel von einem akkreditierten Zeitstempeldienst
false - Einfacher Zeitstempel (lokale Rechnerzeit des Intermediärs)
Throws:
java.lang.UnsupportedOperationException - wenn der repräsentierte Nachrichtentyp keine Zeitstempelanforderung enthält
See Also:
getQualityOfTimeStampReception()

getQualityOfTimeStampReception

public boolean getQualityOfTimeStampReception()
Liefert die geforderte Qualität des Zeitstempels, mit dem der Intermediär den Empfang der Annahmeantwort im Laufzettel protokolliert.

Returns:
Qualität des Zeitstempels: true - kryptographischer Zeitstempel von einem akkreditierten Zeitstempeldienst
false - Einfacher Zeitstempel (lokale Rechnerzeit des Intermediärs)
Throws:
java.lang.UnsupportedOperationException - wenn der repräsentierte Nachrichtentyp keine Zeitstempelanforderung enthält
See Also:
getQualityOfTimeStampCreation()

getSelectionMode

public int getSelectionMode()
Liefert den gesetzten Auswahlmodus für Nachrichten oder Laufzettel.

Returns:
den Auswahlmodus SELECT_BY_MESSAGE_ID, SELECT_BY_DATE_OF_RECEPTION oder NO_SELECTION_RULE
Throws:
java.lang.UnsupportedOperationException - wenn der repräsentierte Nachrichtentyp keine Auswahlmöglichkeit enthält
See Also:
getSelectionRule()

getSelectionRule

public java.lang.String getSelectionRule()
Liefert die gesetzte Auswahlregel für Nachrichten oder Laufzettel. Wurde keine Regel gesetzt, wird als default null zurückgegeben.

Returns:
Auswahlregel (Message-Id oder Datum)
Throws:
java.lang.UnsupportedOperationException - wenn der repräsentierte Nachrichtentyp keine Auswahlmöglichkeit enthält
See Also:
getSelectionMode()

getQuantityLimit

public long getQuantityLimit()
Liefert die maximale Anzahl zurückzugebender Laufzettel.

Returns:
gesetzte maximale Anzahl
Throws:
java.lang.UnsupportedOperationException - wenn die repräsentierte Nachricht kein Laufzettelabholauftrag oder -antwort ist.


Copyright © 2004. All Rights Reserved.