au.gov.nehta.vendorlibrary.smd
Class SealedMessageDeliveryClient

java.lang.Object
  extended by au.gov.nehta.vendorlibrary.smd.SealedMessageDeliveryClient

public class SealedMessageDeliveryClient
extends java.lang.Object

An implementation of a Sealed Message Delivery client.


Nested Class Summary
static class SealedMessageDeliveryClient.ArgumentValidator
          Validates parameters are correct for the various operations.
 
Constructor Summary
SealedMessageDeliveryClient(javax.net.ssl.SSLSocketFactory sslSocketFactory)
          Default constructor.
 
Method Summary
 au.net.electronichealth.ns.smd.tls.v2010.DeliverStatusType deliver(au.net.electronichealth.ns.smd.types.sealedmessage.V2010.SealedMessageType sealedMessage, java.lang.String endpoint)
          Performs the Sealed Message Delivery deliver operation.
 java.lang.String getLastSoapRequest()
          Getter for lastSoapRequest.
 java.lang.String getLastSoapResponse()
          Getter for lastSoapResponse.
static au.net.electronichealth.ns.smd.types.sealedmessage.V2010.SealedMessageType getSealedMessage(byte[] unencryptedNonXmlPayload, au.net.electronichealth.ns.smd.types.sealedmessage.V2010.MessageMetadataType metadata, java.util.List<javax.security.auth.x500.X500PrivateCredential> privateCredentials, java.security.cert.X509Certificate encryptionCertificate)
          Creates a valid Sealed Message with an unencrypted non-XML payload.
static au.net.electronichealth.ns.smd.types.sealedmessage.V2010.SealedMessageType getSealedMessage(org.w3c.dom.Element unencryptedXmlPayload, au.net.electronichealth.ns.smd.types.sealedmessage.V2010.MessageMetadataType metadata, java.util.List<javax.security.auth.x500.X500PrivateCredential> privateCredentials, java.security.cert.X509Certificate encryptionCertificate)
          Creates a valid Sealed Message with an unencrypted non-XML payload.
static au.net.electronichealth.ns.smd.types.sealedmessage.V2010.SealedMessageType getSealedMessage(java.lang.String unencryptedXmlPayload, au.net.electronichealth.ns.smd.types.sealedmessage.V2010.MessageMetadataType metadata, java.util.List<javax.security.auth.x500.X500PrivateCredential> privateCredentials, java.security.cert.X509Certificate encryptionCertificate)
          Creates a valid Sealed Message with an unencrypted XML payload.
static void verifyMetadata(au.net.electronichealth.ns.smd.types.sealedmessage.V2010.MessageMetadataType metadata)
          Verifies a sealed message's metadata for Sealed Message Delivery.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SealedMessageDeliveryClient

public SealedMessageDeliveryClient(javax.net.ssl.SSLSocketFactory sslSocketFactory)
Default constructor.

Parameters:
sslSocketFactory - the SSL Socket Factory to be used when connecting to the Web Service provider (Mandatory)
Method Detail

deliver

public final au.net.electronichealth.ns.smd.tls.v2010.DeliverStatusType deliver(au.net.electronichealth.ns.smd.types.sealedmessage.V2010.SealedMessageType sealedMessage,
                                                                                java.lang.String endpoint)
                                                                         throws au.net.electronichealth.ns.smd.tls.v2010.StandardErrorMsg,
                                                                                au.net.electronichealth.ns.smd.tls.v2010.DeliverErrorMsg
Performs the Sealed Message Delivery deliver operation.

Parameters:
sealedMessage - the sealed message to be delivered (Mandatory)
endpoint - the Sealed Message Delivery (SMD) endpoint URL (Mandatory)
Returns:
DeliverStatusType the delivery status of the method invocation.
Throws:
au.net.electronichealth.ns.smd.tls.v2010.StandardErrorMsg - if the web service invocation fails due to a standard error
au.net.electronichealth.ns.smd.tls.v2010.DeliverErrorMsg - if the web service invocation fails due to a deliver error

getLastSoapResponse

public final java.lang.String getLastSoapResponse()
Getter for lastSoapResponse.

Returns:
lastSoapResponse the lastSoapResponse instance variable

getLastSoapRequest

public final java.lang.String getLastSoapRequest()
Getter for lastSoapRequest.

Returns:
lastSoapRequest the lastSoapRequest instance variable

verifyMetadata

public static void verifyMetadata(au.net.electronichealth.ns.smd.types.sealedmessage.V2010.MessageMetadataType metadata)
Verifies a sealed message's metadata for Sealed Message Delivery.

Parameters:
metadata - The Sealed Message metadata to be checked (Mandatory)

getSealedMessage

public static au.net.electronichealth.ns.smd.types.sealedmessage.V2010.SealedMessageType getSealedMessage(java.lang.String unencryptedXmlPayload,
                                                                                                          au.net.electronichealth.ns.smd.types.sealedmessage.V2010.MessageMetadataType metadata,
                                                                                                          java.util.List<javax.security.auth.x500.X500PrivateCredential> privateCredentials,
                                                                                                          java.security.cert.X509Certificate encryptionCertificate)
Creates a valid Sealed Message with an unencrypted XML payload.

Parameters:
unencryptedXmlPayload - the unencrypted XML payload as a String (NOTE: the string should include the XML prolog) (Mandatory)
metadata - the Sealed Message metadata (Mandatory)
privateCredentials - the sender's private key and certificate (Mandatory)
encryptionCertificate - the receiver's certificate (Mandatory)
Returns:
sealedMessage a valid sealed message.

getSealedMessage

public static au.net.electronichealth.ns.smd.types.sealedmessage.V2010.SealedMessageType getSealedMessage(byte[] unencryptedNonXmlPayload,
                                                                                                          au.net.electronichealth.ns.smd.types.sealedmessage.V2010.MessageMetadataType metadata,
                                                                                                          java.util.List<javax.security.auth.x500.X500PrivateCredential> privateCredentials,
                                                                                                          java.security.cert.X509Certificate encryptionCertificate)
                                                                                                   throws javax.xml.bind.JAXBException
Creates a valid Sealed Message with an unencrypted non-XML payload.

Parameters:
unencryptedNonXmlPayload - the unencrypted non-XML payload as a byte array (Mandatory)
metadata - the Sealed Message metadata (Mandatory)
privateCredentials - the sender's private key and certificate (Mandatory)
encryptionCertificate - the receiver's certificate (Mandatory)
Returns:
sealedMessage a valid sealed message.
Throws:
javax.xml.bind.JAXBException - if the non-XML payload cannot be serialised into XML.

getSealedMessage

public static au.net.electronichealth.ns.smd.types.sealedmessage.V2010.SealedMessageType getSealedMessage(org.w3c.dom.Element unencryptedXmlPayload,
                                                                                                          au.net.electronichealth.ns.smd.types.sealedmessage.V2010.MessageMetadataType metadata,
                                                                                                          java.util.List<javax.security.auth.x500.X500PrivateCredential> privateCredentials,
                                                                                                          java.security.cert.X509Certificate encryptionCertificate)
                                                                                                   throws java.io.IOException,
                                                                                                          javax.xml.transform.TransformerException
Creates a valid Sealed Message with an unencrypted non-XML payload.

Parameters:
unencryptedXmlPayload - the unencrypted XML payload as an Element (Mandatory)
metadata - the Sealed Message metadata (Mandatory)
privateCredentials - the sender's private key and certificate (Mandatory)
encryptionCertificate - the receiver's certificate (Mandatory)
Returns:
sealedMessage a valid sealed message.
Throws:
java.io.IOException - if the XML payload cannot be serialised into a String due to an I/O error.
javax.xml.transform.TransformerException - if the XML payload cannot be serialised into a String due to an XML Transformation error..