Search in sources :

Example 11 with Ebms3Property

use of com.helger.phase4.ebms3header.Ebms3Property in project phase4 by phax.

the class Ebms3MessagingTest method testSendReceipt.

@Test
public void testSendReceipt() throws Exception {
    // Fake an incoming message
    final ICommonsList<Ebms3Property> aEbms3Properties = AS4TestConstants.getEBMSProperties();
    final Node aPayload = DOMReader.readXMLDOM(new ClassPathResource(AS4TestConstants.TEST_SOAP_BODY_PAYLOAD_XML));
    final Ebms3PayloadInfo aEbms3PayloadInfo = MessageHelperMethods.createEbms3PayloadInfo(aPayload != null, null);
    final Ebms3CollaborationInfo aEbms3CollaborationInfo;
    final String sPModeID = SOAP_12_PARTY_ID + "-" + SOAP_12_PARTY_ID;
    aEbms3CollaborationInfo = MessageHelperMethods.createEbms3CollaborationInfo(sPModeID, DEFAULT_AGREEMENT, AS4TestConstants.TEST_SERVICE_TYPE, AS4TestConstants.TEST_SERVICE, AS4TestConstants.TEST_ACTION, AS4TestConstants.TEST_CONVERSATION_ID);
    final Ebms3PartyInfo aEbms3PartyInfo = MessageHelperMethods.createEbms3PartyInfo(CAS4.DEFAULT_INITIATOR_URL, SOAP_12_PARTY_ID, CAS4.DEFAULT_RESPONDER_URL, SOAP_12_PARTY_ID);
    final Ebms3MessageProperties aEbms3MessageProperties = MessageHelperMethods.createEbms3MessageProperties(aEbms3Properties);
    final Ebms3UserMessage aEbms3UserMessage = new Ebms3UserMessage();
    aEbms3UserMessage.setPartyInfo(aEbms3PartyInfo);
    aEbms3UserMessage.setPayloadInfo(aEbms3PayloadInfo);
    aEbms3UserMessage.setCollaborationInfo(aEbms3CollaborationInfo);
    aEbms3UserMessage.setMessageProperties(aEbms3MessageProperties);
    aEbms3UserMessage.setMessageInfo(MessageHelperMethods.createEbms3MessageInfo());
    // Now send receipt
    final Document aDoc = MockMessages.createReceiptMessage(ESoapVersion.AS4_DEFAULT, aEbms3UserMessage, null).getAsSoapDocument();
    // We've got our response
    sendPlainMessage(new HttpXMLEntity(aDoc, SOAP_VERSION.getMimeType()), true, null);
}
Also used : Ebms3MessageProperties(com.helger.phase4.ebms3header.Ebms3MessageProperties) Ebms3PayloadInfo(com.helger.phase4.ebms3header.Ebms3PayloadInfo) Ebms3CollaborationInfo(com.helger.phase4.ebms3header.Ebms3CollaborationInfo) Node(org.w3c.dom.Node) Ebms3UserMessage(com.helger.phase4.ebms3header.Ebms3UserMessage) HttpXMLEntity(com.helger.phase4.http.HttpXMLEntity) Document(org.w3c.dom.Document) ClassPathResource(com.helger.commons.io.resource.ClassPathResource) Ebms3PartyInfo(com.helger.phase4.ebms3header.Ebms3PartyInfo) Ebms3Property(com.helger.phase4.ebms3header.Ebms3Property) Test(org.junit.Test)

Example 12 with Ebms3Property

use of com.helger.phase4.ebms3header.Ebms3Property in project phase4 by phax.

the class Ebms3MessagingTest method testUserMessageWithTooManyPartyIds.

@Test
public void testUserMessageWithTooManyPartyIds() throws Exception {
    final Ebms3Messaging aEbms3Messaging = new Ebms3Messaging();
    final Ebms3UserMessage aEbms3UserMessage = new Ebms3UserMessage();
    // Message Info
    // Add properties
    final ICommonsList<Ebms3Property> aEbms3Properties = AS4TestConstants.getEBMSProperties();
    final Node aPayload = DOMReader.readXMLDOM(new ClassPathResource(AS4TestConstants.TEST_SOAP_BODY_PAYLOAD_XML));
    final String sPModeID = SOAP_12_PARTY_ID + "-" + SOAP_12_PARTY_ID;
    final Ebms3PayloadInfo aEbms3PayloadInfo = MessageHelperMethods.createEbms3PayloadInfo(aPayload != null, null);
    final Ebms3CollaborationInfo aEbms3CollaborationInfo;
    aEbms3CollaborationInfo = MessageHelperMethods.createEbms3CollaborationInfo(sPModeID, DEFAULT_AGREEMENT, AS4TestConstants.TEST_SERVICE_TYPE, AS4TestConstants.TEST_SERVICE, AS4TestConstants.TEST_ACTION, AS4TestConstants.TEST_CONVERSATION_ID);
    final Ebms3PartyInfo aEbms3PartyInfo = new Ebms3PartyInfo();
    // From => Sender
    final Ebms3From aEbms3From = new Ebms3From();
    aEbms3From.setRole(CAS4.DEFAULT_INITIATOR_URL);
    aEbms3From.addPartyId(MessageHelperMethods.createEbms3PartyId(SOAP_12_PARTY_ID));
    aEbms3From.addPartyId(MessageHelperMethods.createEbms3PartyId(SOAP_12_PARTY_ID));
    aEbms3PartyInfo.setFrom(aEbms3From);
    // To => Receiver
    final Ebms3To aEbms3To = new Ebms3To();
    aEbms3To.setRole(CAS4.DEFAULT_RESPONDER_URL);
    aEbms3To.addPartyId(MessageHelperMethods.createEbms3PartyId(SOAP_12_PARTY_ID));
    aEbms3PartyInfo.setTo(aEbms3To);
    final Ebms3MessageProperties aEbms3MessageProperties = MessageHelperMethods.createEbms3MessageProperties(aEbms3Properties);
    aEbms3UserMessage.setPartyInfo(aEbms3PartyInfo);
    aEbms3UserMessage.setPayloadInfo(aEbms3PayloadInfo);
    aEbms3UserMessage.setCollaborationInfo(aEbms3CollaborationInfo);
    aEbms3UserMessage.setMessageProperties(aEbms3MessageProperties);
    aEbms3UserMessage.setMessageInfo(MessageHelperMethods.createEbms3MessageInfo());
    aEbms3Messaging.addUserMessage(aEbms3UserMessage);
    final HttpEntity aEntity = new HttpXMLEntity(_getMessagingAsSoapDocument(aEbms3Messaging), SOAP_VERSION.getMimeType());
    sendPlainMessage(aEntity, false, EEbmsError.EBMS_VALUE_INCONSISTENT.getErrorCode());
}
Also used : Ebms3MessageProperties(com.helger.phase4.ebms3header.Ebms3MessageProperties) Ebms3From(com.helger.phase4.ebms3header.Ebms3From) HttpEntity(org.apache.http.HttpEntity) Node(org.w3c.dom.Node) HttpXMLEntity(com.helger.phase4.http.HttpXMLEntity) ClassPathResource(com.helger.commons.io.resource.ClassPathResource) Ebms3PartyInfo(com.helger.phase4.ebms3header.Ebms3PartyInfo) Ebms3PayloadInfo(com.helger.phase4.ebms3header.Ebms3PayloadInfo) Ebms3CollaborationInfo(com.helger.phase4.ebms3header.Ebms3CollaborationInfo) Ebms3To(com.helger.phase4.ebms3header.Ebms3To) Ebms3UserMessage(com.helger.phase4.ebms3header.Ebms3UserMessage) Ebms3Messaging(com.helger.phase4.ebms3header.Ebms3Messaging) Ebms3Property(com.helger.phase4.ebms3header.Ebms3Property) Test(org.junit.Test)

Example 13 with Ebms3Property

use of com.helger.phase4.ebms3header.Ebms3Property in project phase4 by phax.

the class MockMessages method createUserMessageNotSigned.

@Nonnull
public static AS4UserMessage createUserMessageNotSigned(@Nonnull final ESoapVersion eSOAPVersion, @Nullable final Node aPayload, @Nullable final ICommonsList<WSS4JAttachment> aAttachments) {
    // Add properties
    final ICommonsList<Ebms3Property> aEbms3Properties = AS4TestConstants.getEBMSProperties();
    final String sPModeID;
    final Ebms3MessageInfo aEbms3MessageInfo = MessageHelperMethods.createEbms3MessageInfo();
    final Ebms3PayloadInfo aEbms3PayloadInfo = MessageHelperMethods.createEbms3PayloadInfo(aPayload != null, aAttachments);
    final Ebms3CollaborationInfo aEbms3CollaborationInfo;
    final Ebms3PartyInfo aEbms3PartyInfo;
    if (eSOAPVersion.equals(ESoapVersion.SOAP_11)) {
        sPModeID = SOAP_11_PARTY_ID + "-" + SOAP_11_PARTY_ID;
        aEbms3CollaborationInfo = MessageHelperMethods.createEbms3CollaborationInfo(sPModeID, DEFAULT_AGREEMENT, AS4TestConstants.TEST_SERVICE_TYPE, MockPModeGenerator.SOAP11_SERVICE, AS4TestConstants.TEST_ACTION, AS4TestConstants.TEST_CONVERSATION_ID);
        aEbms3PartyInfo = MessageHelperMethods.createEbms3PartyInfo(CAS4.DEFAULT_INITIATOR_URL, SOAP_11_PARTY_ID, CAS4.DEFAULT_RESPONDER_URL, SOAP_11_PARTY_ID);
    } else {
        sPModeID = SOAP_12_PARTY_ID + "-" + SOAP_12_PARTY_ID;
        aEbms3CollaborationInfo = MessageHelperMethods.createEbms3CollaborationInfo(sPModeID, DEFAULT_AGREEMENT, AS4TestConstants.TEST_SERVICE_TYPE, AS4TestConstants.TEST_SERVICE, AS4TestConstants.TEST_ACTION, AS4TestConstants.TEST_CONVERSATION_ID);
        aEbms3PartyInfo = MessageHelperMethods.createEbms3PartyInfo(CAS4.DEFAULT_INITIATOR_URL, SOAP_12_PARTY_ID, CAS4.DEFAULT_RESPONDER_URL, SOAP_12_PARTY_ID);
    }
    final Ebms3MessageProperties aEbms3MessageProperties = MessageHelperMethods.createEbms3MessageProperties(aEbms3Properties);
    return AS4UserMessage.create(aEbms3MessageInfo, aEbms3PayloadInfo, aEbms3CollaborationInfo, aEbms3PartyInfo, aEbms3MessageProperties, eSOAPVersion).setMustUnderstand(true);
}
Also used : Ebms3MessageProperties(com.helger.phase4.ebms3header.Ebms3MessageProperties) Ebms3PayloadInfo(com.helger.phase4.ebms3header.Ebms3PayloadInfo) Ebms3CollaborationInfo(com.helger.phase4.ebms3header.Ebms3CollaborationInfo) Ebms3MessageInfo(com.helger.phase4.ebms3header.Ebms3MessageInfo) Ebms3PartyInfo(com.helger.phase4.ebms3header.Ebms3PartyInfo) Ebms3Property(com.helger.phase4.ebms3header.Ebms3Property) Nonnull(javax.annotation.Nonnull)

Example 14 with Ebms3Property

use of com.helger.phase4.ebms3header.Ebms3Property in project phase4 by phax.

the class AS4RequestHandler method _createReversedUserMessage.

/**
 * Takes an UserMessage and switches properties to reverse the direction. So
 * previously it was C1 => C4, now its C4 => C1 Also adds attachments if there
 * are some that should be added.
 *
 * @param eSoapVersion
 *        of the message
 * @param sResponseMessageID
 *        The AS4 message ID of the response
 * @param aUserMessage
 *        the message that should be reversed
 * @param aResponseAttachments
 *        attachment that should be added
 * @return the reversed usermessage in document form
 */
@Nonnull
private static AS4UserMessage _createReversedUserMessage(@Nonnull final ESoapVersion eSoapVersion, @Nonnull @Nonempty final String sResponseMessageID, @Nonnull final Ebms3UserMessage aUserMessage, @Nonnull final ICommonsList<WSS4JAttachment> aResponseAttachments) {
    // Use current time
    final Ebms3MessageInfo aEbms3MessageInfo = MessageHelperMethods.createEbms3MessageInfo(sResponseMessageID, aUserMessage.getMessageInfo().getMessageId());
    final Ebms3PayloadInfo aEbms3PayloadInfo = MessageHelperMethods.createEbms3PayloadInfo(false, aResponseAttachments);
    // Invert from and to role from original user message
    final Ebms3PartyInfo aEbms3PartyInfo = MessageHelperMethods.createEbms3ReversePartyInfo(aUserMessage.getPartyInfo());
    // Should be exactly the same as incoming message
    final Ebms3CollaborationInfo aEbms3CollaborationInfo = aUserMessage.getCollaborationInfo();
    // Need to switch C1 and C4 around from the original usermessage
    // TODO make customizable via profile
    final Ebms3MessageProperties aEbms3MessageProperties = new Ebms3MessageProperties();
    {
        Ebms3Property aFinalRecipient = null;
        Ebms3Property aOriginalSender = null;
        for (final Ebms3Property aProp : aUserMessage.getMessageProperties().getProperty()) {
            if (aProp.getName().equals(CAS4.ORIGINAL_SENDER))
                aOriginalSender = aProp;
            else if (aProp.getName().equals(CAS4.FINAL_RECIPIENT))
                aFinalRecipient = aProp;
        }
        if (aOriginalSender == null)
            throw new IllegalStateException("Failed to determine new OriginalSender");
        if (aFinalRecipient == null)
            throw new IllegalStateException("Failed to determine new FinalRecipient");
        aFinalRecipient.setName(CAS4.ORIGINAL_SENDER);
        aOriginalSender.setName(CAS4.FINAL_RECIPIENT);
        aEbms3MessageProperties.addProperty(aFinalRecipient);
        aEbms3MessageProperties.addProperty(aOriginalSender);
    }
    return AS4UserMessage.create(aEbms3MessageInfo, aEbms3PayloadInfo, aEbms3CollaborationInfo, aEbms3PartyInfo, aEbms3MessageProperties, eSoapVersion);
}
Also used : Ebms3MessageProperties(com.helger.phase4.ebms3header.Ebms3MessageProperties) Ebms3PayloadInfo(com.helger.phase4.ebms3header.Ebms3PayloadInfo) Ebms3CollaborationInfo(com.helger.phase4.ebms3header.Ebms3CollaborationInfo) Ebms3MessageInfo(com.helger.phase4.ebms3header.Ebms3MessageInfo) Ebms3PartyInfo(com.helger.phase4.ebms3header.Ebms3PartyInfo) Ebms3Property(com.helger.phase4.ebms3header.Ebms3Property) Nonnull(javax.annotation.Nonnull)

Example 15 with Ebms3Property

use of com.helger.phase4.ebms3header.Ebms3Property in project phase4 by phax.

the class AS4IncomingHandler method _decompressAttachments.

private static void _decompressAttachments(@Nonnull final ICommonsList<WSS4JAttachment> aIncomingDecryptedAttachments, @Nonnull final Ebms3UserMessage aUserMessage, @Nonnull final IAS4MessageState aState) {
    // For all incoming attachments
    for (final WSS4JAttachment aIncomingAttachment : aIncomingDecryptedAttachments.getClone()) {
        final EAS4CompressionMode eCompressionMode = aState.getAttachmentCompressionMode(aIncomingAttachment.getId());
        if (eCompressionMode != null) {
            final IHasInputStream aOldISP = aIncomingAttachment.getInputStreamProvider();
            aIncomingAttachment.setSourceStreamProvider(new HasInputStream(() -> {
                try {
                    final InputStream aSrcIS = aOldISP.getInputStream();
                    if (aSrcIS == null)
                        throw new IllegalStateException("Failed to create InputStream from " + aOldISP);
                    if (LOGGER.isDebugEnabled())
                        LOGGER.debug("Decompressing attachment with ID '" + aIncomingAttachment.getId() + "' using " + eCompressionMode);
                    return eCompressionMode.getDecompressStream(aSrcIS);
                } catch (final IOException ex) {
                    // invalid payload
                    throw new AS4DecompressException(ex);
                }
            }, aOldISP.isReadMultiple()));
            // Remember the compression mode
            aIncomingAttachment.setCompressionMode(eCompressionMode);
            final String sAttachmentContentID = StringHelper.trimStart(aIncomingAttachment.getId(), "attachment=");
            // x.getHref() != null needed since, if a message contains a payload and
            // an attachment, it would throw a NullPointerException since a payload
            // does not have anything written in its partinfo therefore also now
            // href
            final Ebms3PartInfo aPartInfo = CollectionHelper.findFirst(aUserMessage.getPayloadInfo().getPartInfo(), x -> x.getHref() != null && x.getHref().contains(sAttachmentContentID));
            if (aPartInfo != null && aPartInfo.getPartProperties() != null) {
                // Find MimeType property
                final Ebms3Property aProperty = CollectionHelper.findFirst(aPartInfo.getPartProperties().getProperty(), x -> x.getName().equalsIgnoreCase(MessageHelperMethods.PART_PROPERTY_MIME_TYPE));
                if (aProperty != null) {
                    final String sMimeType = aProperty.getValue();
                    if (MimeTypeParser.safeParseMimeType(sMimeType) == null)
                        LOGGER.warn("Value '" + sMimeType + "' of property '" + MessageHelperMethods.PART_PROPERTY_MIME_TYPE + "' is not a valid MIME type");
                    aIncomingAttachment.overwriteMimeType(sMimeType);
                }
            }
        }
    }
}
Also used : HasInputStream(com.helger.commons.io.stream.HasInputStream) IHasInputStream(com.helger.commons.io.IHasInputStream) AS4DecompressException(com.helger.phase4.attachment.AS4DecompressException) MultipartItemInputStream(com.helger.web.multipart.MultipartStream.MultipartItemInputStream) NonBlockingByteArrayInputStream(com.helger.commons.io.stream.NonBlockingByteArrayInputStream) HasInputStream(com.helger.commons.io.stream.HasInputStream) IHasInputStream(com.helger.commons.io.IHasInputStream) InputStream(java.io.InputStream) IHasInputStream(com.helger.commons.io.IHasInputStream) EAS4CompressionMode(com.helger.phase4.attachment.EAS4CompressionMode) IOException(java.io.IOException) Ebms3PartInfo(com.helger.phase4.ebms3header.Ebms3PartInfo) WSS4JAttachment(com.helger.phase4.attachment.WSS4JAttachment) Ebms3Property(com.helger.phase4.ebms3header.Ebms3Property)

Aggregations

Ebms3Property (com.helger.phase4.ebms3header.Ebms3Property)29 Ebms3MessageProperties (com.helger.phase4.ebms3header.Ebms3MessageProperties)24 Ebms3CollaborationInfo (com.helger.phase4.ebms3header.Ebms3CollaborationInfo)19 Ebms3PayloadInfo (com.helger.phase4.ebms3header.Ebms3PayloadInfo)19 Ebms3PartyInfo (com.helger.phase4.ebms3header.Ebms3PartyInfo)18 Ebms3MessageInfo (com.helger.phase4.ebms3header.Ebms3MessageInfo)17 Nonnull (javax.annotation.Nonnull)16 AS4UserMessage (com.helger.phase4.messaging.domain.AS4UserMessage)10 Test (org.junit.Test)10 Document (org.w3c.dom.Document)9 CommonsArrayList (com.helger.commons.collection.impl.CommonsArrayList)8 HttpXMLEntity (com.helger.phase4.http.HttpXMLEntity)8 Ebms3UserMessage (com.helger.phase4.ebms3header.Ebms3UserMessage)7 WSS4JAttachment (com.helger.phase4.attachment.WSS4JAttachment)5 ClassPathResource (com.helger.commons.io.resource.ClassPathResource)4 Node (org.w3c.dom.Node)4 ErrorList (com.helger.commons.error.list.ErrorList)3 Ebms3PullRequest (com.helger.phase4.ebms3header.Ebms3PullRequest)3 IOException (java.io.IOException)3 Locale (java.util.Locale)3