/// <summary> /// Validate a MessageMetadataType object. /// </summary> /// <param name="metadata">The object to be validated.</param> public static void ValidateMetadata(MessageMetadataType metadata) { // Validate metadata Validation.ValidateArgumentRequired("metadata", metadata); Validation.ValidateDateTime("metadata.creationTime", metadata.creationTime); Validation.ValidateArgumentRequired("metadata.invocationId", metadata.invocationId); Validation.ValidateArgumentRequired("metadata.receiverOrganisation", metadata.receiverOrganisation); Validation.ValidateArgumentRequired("metadata.senderOrganisation", metadata.senderOrganisation); Validation.ValidateArgumentRequired("metadata.serviceCategory", metadata.serviceCategory); Validation.ValidateArgumentRequired("metadata.serviceInterface", metadata.serviceInterface); Validation.ValidateStringMatch("metadata.serviceInterface", metadata.serviceInterface, ServiceInterfaces.SimdServiceInterface); // Validate that route record hasn't been specified Validation.ValidateArgumentNotAllowed("metadata.routeRecord", metadata.routeRecord); // Other transport metadata if (metadata.otherTransportMetadata != null && metadata.otherTransportMetadata.Length > 0) { for (int x = 0; x < metadata.otherTransportMetadata.Length; x++) { OtherTransportMetadataEntryType omt = metadata.otherTransportMetadata[x]; Validation.ValidateArgumentRequired(string.Format("metadata.otherTransportMetadata[{0}].metadataType", x), omt.metadataType); Validation.ValidateArgumentRequired(string.Format("metadata.otherTransportMetadata[{0}].metadataValue", x), omt.metadataValue); } } }
/// <summary> /// Deliver one or more Transport Responses to a Sender, Sender Intermediary or Receiver Intermediary. /// </summary> /// <param name="responses">The list of Transport Responses to deliver.</param> /// <param name="endpointUrl">The endpoint of the TRD service.</param> /// <returns>A value indicating if the operation is successful.</returns> public deliverResponse Deliver(List <TransportResponseType> responses, Uri endpointUrl) { Validation.ValidateArgumentRequired("responses", responses); Validation.ValidateArgumentRequired("endpointUrl", endpointUrl); Validation.ValidateArgumentRequired("responses", responses); for (int x = 0; x < responses.Count; x++) { Validation.ValidateArgumentRequired(string.Format("responses[{0}].deliveryResponse", x), responses[x].deliveryResponse); Validation.ValidateArgumentRequired(string.Format("responses[{0}].deliveryResponse.message", x), responses[x].deliveryResponse.message); Validation.ValidateArgumentRequired(string.Format("responses[{0}].deliveryResponse.responseCode", x), responses[x].deliveryResponse.responseCode); if (responses[x].deliveryResponse.responseClass == ResponseClassType.Success) { Validation.ValidateArgumentRequired(string.Format("responses[{0}].deliveryResponse.digestValue", x), responses[x].deliveryResponse.digestValue); } // Validate metadata Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata", x), responses[x].metadata); Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata.invocationId", x), responses[x].metadata.invocationId); Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata.responseId", x), responses[x].metadata.responseId); Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata.receiverOrganisation", x), responses[x].metadata.receiverOrganisation); Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata.senderOrganisation", x), responses[x].metadata.senderOrganisation); Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata.serviceCategory", x), responses[x].metadata.serviceCategory); Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata.sourceOrganisation", x), responses[x].metadata.sourceOrganisation); Validation.ValidateDateTime(string.Format("responses[{0}].metadata.transportResponseTime", x), responses[x].metadata.transportResponseTime); // Other transport metadata if (responses[x].metadata.otherTransportMetadata != null && responses[x].metadata.otherTransportMetadata.Length > 0) { for (int y = 0; y < responses[x].metadata.otherTransportMetadata.Length; y++) { OtherTransportMetadataEntryType omt = responses[x].metadata.otherTransportMetadata[y]; Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata.otherTransportMetadata[{1}].metadataType", x, y), omt.metadataType); Validation.ValidateArgumentRequired(string.Format("responses[{0}].metadata.otherTransportMetadata[{1}].metadataValue", x, y), omt.metadataValue); } } } if (trdClient is Nehta.SMD2010.TRD.TransportResponseDeliveryClient) { Nehta.SMD2010.TRD.TransportResponseDeliveryClient client = (Nehta.SMD2010.TRD.TransportResponseDeliveryClient)trdClient; client.Endpoint.Address = new EndpointAddress(endpointUrl.ToString()); } deliverRequest request = new deliverRequest(); request.deliver = responses.ToArray(); deliverResponse1 response = trdClient.deliver(request); if (response != null && response.deliverResponse != null) { return(response.deliverResponse); } else { throw new ApplicationException(Properties.Resources.UnexpectedServiceResponse); } }
/// <summary> /// Validate a MessageMetadataType object. /// </summary> /// <param name="metadata">The object to be validated.</param> public static void ValidateMetadata(MessageMetadataType metadata) { // Validate metadata Validation.ValidateArgumentRequired("metadata", metadata); Validation.ValidateDateTime("metadata.creationTime", metadata.creationTime); Validation.ValidateArgumentRequired("metadata.invocationId", metadata.invocationId); Validation.ValidateArgumentRequired("metadata.receiverOrganisation", metadata.receiverOrganisation); Validation.ValidateArgumentRequired("metadata.senderOrganisation", metadata.senderOrganisation); Validation.ValidateArgumentRequired("metadata.serviceCategory", metadata.serviceCategory); Validation.ValidateArgumentRequired("metadata.serviceInterface", metadata.serviceInterface); Validation.ValidateStringMatch("metadata.serviceInterface", metadata.serviceInterface, ServiceInterfaces.SmdServiceInterface); if (metadata.routeRecord != null && metadata.routeRecord.Length > 0) { for (int x = 0; x < metadata.routeRecord.Length; x++) { // Validate interaction type InteractionType it = metadata.routeRecord[x].interaction; Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction", x), it); Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.serviceCategory", x), it.serviceCategory); Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.serviceEndpoint", x), it.serviceEndpoint); Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.serviceInterface", x), it.serviceInterface); Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.serviceProvider", x), it.serviceProvider); Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.target", x), it.target); Validation.ValidateStringMatch(string.Format("metadata.routeRecord[{0}].interaction.serviceInterface", x), it.serviceInterface, ServiceInterfaces.TrdServiceInterface); // Validate cert refs if available if (it.certRef != null && it.certRef.Length > 0) { for (int y = 0; y < it.certRef.Length; y++) { Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.certRef[{1}].useQualifier", x, y), it.certRef[y].useQualifier); Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.certRef[{1}].qualifiedCertRef", x, y), it.certRef[y].qualifiedCertRef); Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.certRef[{1}].qualifiedCertRef.type", x, y), it.certRef[y].qualifiedCertRef.type); Validation.ValidateArgumentRequired(string.Format("metadata.routeRecord[{0}].interaction.certRef[{1}].qualifiedCertRef.value", x, y), it.certRef[y].qualifiedCertRef.value); } } } } // Other transport metadata if (metadata.otherTransportMetadata != null && metadata.otherTransportMetadata.Length > 0) { for (int x = 0; x < metadata.otherTransportMetadata.Length; x++) { OtherTransportMetadataEntryType omt = metadata.otherTransportMetadata[x]; Validation.ValidateArgumentRequired(string.Format("metadata.otherTransportMetadata[{0}].metadataType", x), omt.metadataType); Validation.ValidateArgumentRequired(string.Format("metadata.otherTransportMetadata[{0}].metadataValue", x), omt.metadataValue); } } }