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 © 2017 Freie Hansestadt Bremen
Erstellt von Governikus 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 Koordinierungsstelle für IT-Standards (KoSIT), Schillerstr. 1, 28195 Bremen schriftlich angefordert werden.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, osci2017NSPrefix, osciNSPrefix, parsedMsgPartsIds, PARTIAL_FETCH_DELIVERY, PARTIAL_STORE_DELIVERY, 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_PARTIAL_FETCH_DELIVERY, RESPONSE_TO_PARTIAL_STORE_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
Modifier and Type | Method and Description |
---|---|
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.
|
Content |
getContentByRefID(java.lang.String refID)
Durchsucht die unverschlüsselten ContentContainer nach dem Content
mit der übergebenen RefID.
|
ContentContainer[] |
getContentContainer()
Liefert die in die Nachricht eingestellten (unverschlüsselten) Inhaltsdaten als ContentContainer-Objekte.
|
ContentContainer |
getContentContainerByRefID(java.lang.String refID)
Durchsucht die unverschlüsselten Inhaltsdaten nach dem ContentContainer
mit der übergebenen RefID.
|
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 StoredMessage |
loadMessageCheckingSignature(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.
|
getFeedback, getFeedbackObjects
addCustomHeader, addRole, formatISO8601, getAddressee, getBase64Encoding, getCustomHeaders, getDialogHandler, getFeatureDescription, getMessageType, getOriginator, getOtherAuthors, getOtherReaders, getRoleForRefID, hasWeakSignature, isSigned, parseISO8601, setBase64Encoding, setDigestAlgorithm, setFeatureDescription, toString
public static void storeMessage(OSCIMessage msg, java.io.OutputStream output) throws java.io.IOException, OSCIException, java.security.NoSuchAlgorithmException
msg
- zu speichernde Nachricht; z.Zt. können StoredMessage-Objekte selbst nicht
gespeichert werden. Der Stream wird von der Methode nicht geschlossen.output
- Ausgabestreamjava.io.IOException
- bei SchreibfehlernOSCIException
- bei Problemen beim Aufbau der Nachrichtjava.security.NoSuchAlgorithmException
- wenn der installierte Security-Provider einen
benötigten Algorithmus nicht unterstütztloadMessage(InputStream)
public static StoredMessage loadMessage(java.io.InputStream input) throws java.io.IOException, OSCIException, java.security.NoSuchAlgorithmException
input
- zu lesender Streamjava.io.IOException
- bei SchreibfehlernOSCIException
- bei Problemen beim Aufbau der Nachrichtjava.security.NoSuchAlgorithmException
- wenn der installierte Security-Provider einen
benötigten Algorithmus nicht unterstütztstoreMessage(OSCIMessage, OutputStream)
,
loadMessageCheckingSignature(InputStream)
public static StoredMessage loadMessageCheckingSignature(java.io.InputStream input) throws java.io.IOException, OSCIException, java.security.NoSuchAlgorithmException
input
- zu lesender Streamjava.io.IOException
- bei SchreibfehlernOSCIException
- bei Problemen beim Aufbau der Nachricht oder ungültiger Nachrichtensignaturjava.security.NoSuchAlgorithmException
- wenn der installierte Security-Provider einen
benötigten Algorithmus nicht unterstütztstoreMessage(OSCIMessage, OutputStream)
,
loadMessage(InputStream)
public void exportAttachments(OSCIMessage destinationMessage)
destinationMessage
- ZielnachrichtexportAttachment(OSCIMessage, Attachment)
public void exportAttachment(OSCIMessage destinationMessage, Attachment att)
destinationMessage
- Zielnachrichtatt
- zu exportierendes AttachmentexportAttachments(OSCIMessage)
public ProcessCardBundle getProcessCardBundle()
getProcessCardBundleReply()
,
ResponseToMediateDelivery.getProcessCardBundleRequest()
public ProcessCardBundle[] getProcessCardBundles()
java.lang.UnsupportedOperationException
- wenn die Nachricht nicht vom Typ
ResponseToFetchProcessCard istgetProcessCardBundle()
,
ResponseToFetchProcessCard.getProcessCardBundles()
public ProcessCardBundle getProcessCardBundleReply()
java.lang.UnsupportedOperationException
- wenn die Nachricht nicht vom Typ
ResponseToMediateDelivery ist.getProcessCardBundle()
public java.lang.String getMessageId()
getMessageId
in interface ContentPackageI
public Intermed getIntermediary()
public ContentContainer[] getContentContainer()
getContentContainer
in interface ContentPackageI
ContentContainer
public EncryptedDataOSCI[] getEncryptedData()
getEncryptedData
in interface ContentPackageI
EncryptedDataOSCI
public ContentContainer getContentContainerByRefID(java.lang.String refID)
getContentContainerByRefID
in interface ContentPackageI
refID
- zu suchende RefIDpublic Content getContentByRefID(java.lang.String refID)
getContentByRefID
in interface ContentPackageI
getContentByRefID
in class OSCIMessage
refID
- zu suchende RefIDpublic java.lang.String getSubject()
getSubject
in interface ContentPackageI
public java.net.URI getUriReceiver()
public boolean getQualityOfTimeStampCreation()
java.lang.UnsupportedOperationException
- wenn der repräsentierte Nachrichtentyp
keine Zeitstempelanforderung enthältgetQualityOfTimeStampReception()
public boolean getQualityOfTimeStampReception()
java.lang.UnsupportedOperationException
- wenn der repräsentierte Nachrichtentyp
keine Zeitstempelanforderung enthältgetQualityOfTimeStampCreation()
public int getSelectionMode()
java.lang.UnsupportedOperationException
- wenn der repräsentierte Nachrichtentyp
keine Auswahlmöglichkeit enthältgetSelectionRule()
public java.lang.String getSelectionRule()
java.lang.UnsupportedOperationException
- wenn der repräsentierte Nachrichtentyp
keine Auswahlmöglichkeit enthältgetSelectionMode()
public long getQuantityLimit()
java.lang.UnsupportedOperationException
- wenn die repräsentierte Nachricht
kein Laufzettelabholauftrag oder -antwort ist.Copyright © 2017. All Rights Reserved.