Rule dispositionField() { return Sequence( push(Disposition.builder()), "Disposition", ":", ows(), dispositionMode(), ows(), ";", ows(), dispositionType(), Optional( Sequence( ows(), "/", ows(), dispositionModifier(), ACTION(addDispositionModifier()), ZeroOrMore( Sequence( ows(), ",", dispositionModifier(), ACTION(addDispositionModifier()))))), ows(), ACTION(buildDispositionField())); }
Rule dispositionType() { return FirstOf( Sequence("displayed", ACTION(setDispositionType(DispositionType.Displayed))), Sequence("deleted", ACTION(setDispositionType(DispositionType.Deleted))), Sequence("dispatched", ACTION(setDispositionType(DispositionType.Dispatched))), Sequence("processed", ACTION(setDispositionType(DispositionType.Processed)))); }
Rule dispositionNotificationContent() { return Sequence( push(MDNReport.builder()), Optional(Sequence(reportingUaField(), ACTION(setReportingUaField()), crlf())), Optional(Sequence(mdnGatewayField(), ACTION(setMdnGatewayField()), crlf())), Optional(Sequence(originalRecipientField(), ACTION(setOriginalRecipientField()), crlf())), Sequence(finalRecipientField(), ACTION(setFinalRecipientField()), crlf()), Optional(Sequence(originalMessageIdField(), ACTION(setOriginalMessageIdField()), crlf())), Sequence(dispositionField(), ACTION(setDispositionField()), crlf()), ZeroOrMore(Sequence(errorField(), ACTION(addErrorField()), crlf())), ZeroOrMore(Sequence(extentionField(), ACTION(addExtensionField()), crlf())), ACTION(buildMDNReport())); }