[ 
https://issues.apache.org/jira/browse/CAMEL-19870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Isakkirajan Perumal updated CAMEL-19870:
----------------------------------------
    Description: 
The third party AS2 server that we are calling is returning the MDN response in 
which the disposition field is like 

Ex: "Disposition: automatic-action/MDN-Sent-automatically; processed"

As per the AS2 spec (https://www.ietf.org/rfc/rfc4130.txt) this field can be 
case insensitive, but camel as2 validates this field with case sensitive hence 
it fails.

For reproducing the issue, please use the attached 
"DispositionNotificationContentUtilsTest.java" file.
{code:java}
Failed to parse entity content
        at 
org.apache.camel.support.component.ApiMethodHelper.invokeMethod(ApiMethodHelper.java:531)
        at 
org.apache.camel.support.component.AbstractApiProducer.doInvokeMethod(AbstractApiProducer.java:122)
        at 
org.apache.camel.support.component.AbstractApiProducer$1.run(AbstractApiProducer.java:89)
        at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:836)
Caused by: org.apache.http.HttpException: Failed to parse entity content
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntity(EntityParser.java:365)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseAS2MessageEntity(EntityParser.java:472)
        at 
org.apache.camel.component.as2.api.io.AS2BHttpClientConnection.receiveResponseEntity(AS2BHttpClientConnection.java:55)
        at 
org.apache.http.impl.conn.CPoolProxy.receiveResponseEntity(CPoolProxy.java:162)
        at 
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
        at 
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
        at 
org.apache.camel.component.as2.api.AS2ClientConnection.send(AS2ClientConnection.java:192)
        at 
org.apache.camel.component.as2.api.AS2ClientManager.send(AS2ClientManager.java:391)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
org.apache.camel.support.component.ApiMethodHelper.invokeMethod(ApiMethodHelper.java:523)
        ... 8 more
Caused by: org.apache.http.ParseException: failed to parse text entity
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntityBody(EntityParser.java:602)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntity(EntityParser.java:357)
        ... 20 more
Caused by: org.apache.http.ParseException: failed to parse EDI entity
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseEntityBody(EntityParser.java:858)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntityBody(EntityParser.java:548)
        ... 21 more
Caused by: org.apache.http.ParseException: failed to parse text entity
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartReportEntityBody(EntityParser.java:710)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseEntityBody(EntityParser.java:826)
        ... 22 more
Caused by: org.apache.http.ParseException: failed to parse MDN entity
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMessageDispositionNotificationEntityBody(EntityParser.java:777)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartReportEntityBody(EntityParser.java:699)
        ... 23 more
Caused by: org.apache.http.ParseException: Invalid 'Disposition' field: invalid 
disposition mode 'automatic-action/MDN-Sent-automatically'
        at 
org.apache.camel.component.as2.api.util.DispositionNotificationContentUtils.parseDispositionNotification(DispositionNotificationContentUtils.java:197)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMessageDispositionNotificationEntityBody(EntityParser.java:772)
        ... 24 more {code}

  was:
The third party AS2 server that we are calling is returning the MDN response in 
which the disposition field is like 

Ex: "Disposition: automatic-action/MDN-Sent-automatically; processed"

As per the AS2 spec 
({color:#0747a6}[https://www.ietf.org/rfc/rfc4130.txt|https://www.ietf.org/rfc/rfc4130.txt+]{color})
 this field can be case insensitive, but camel as2 validates this field with 
case sensitive hence it fails.

For reproducing the issue, please use the attached 
"DispositionNotificationContentUtilsTest.java" file.
{code:java}
Failed to parse entity content
        at 
org.apache.camel.support.component.ApiMethodHelper.invokeMethod(ApiMethodHelper.java:531)
        at 
org.apache.camel.support.component.AbstractApiProducer.doInvokeMethod(AbstractApiProducer.java:122)
        at 
org.apache.camel.support.component.AbstractApiProducer$1.run(AbstractApiProducer.java:89)
        at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:836)
Caused by: org.apache.http.HttpException: Failed to parse entity content
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntity(EntityParser.java:365)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseAS2MessageEntity(EntityParser.java:472)
        at 
org.apache.camel.component.as2.api.io.AS2BHttpClientConnection.receiveResponseEntity(AS2BHttpClientConnection.java:55)
        at 
org.apache.http.impl.conn.CPoolProxy.receiveResponseEntity(CPoolProxy.java:162)
        at 
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
        at 
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
        at 
org.apache.camel.component.as2.api.AS2ClientConnection.send(AS2ClientConnection.java:192)
        at 
org.apache.camel.component.as2.api.AS2ClientManager.send(AS2ClientManager.java:391)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
org.apache.camel.support.component.ApiMethodHelper.invokeMethod(ApiMethodHelper.java:523)
        ... 8 more
Caused by: org.apache.http.ParseException: failed to parse text entity
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntityBody(EntityParser.java:602)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntity(EntityParser.java:357)
        ... 20 more
Caused by: org.apache.http.ParseException: failed to parse EDI entity
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseEntityBody(EntityParser.java:858)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntityBody(EntityParser.java:548)
        ... 21 more
Caused by: org.apache.http.ParseException: failed to parse text entity
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartReportEntityBody(EntityParser.java:710)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseEntityBody(EntityParser.java:826)
        ... 22 more
Caused by: org.apache.http.ParseException: failed to parse MDN entity
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMessageDispositionNotificationEntityBody(EntityParser.java:777)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartReportEntityBody(EntityParser.java:699)
        ... 23 more
Caused by: org.apache.http.ParseException: Invalid 'Disposition' field: invalid 
disposition mode 'automatic-action/MDN-Sent-automatically'
        at 
org.apache.camel.component.as2.api.util.DispositionNotificationContentUtils.parseDispositionNotification(DispositionNotificationContentUtils.java:197)
        at 
org.apache.camel.component.as2.api.entity.EntityParser.parseMessageDispositionNotificationEntityBody(EntityParser.java:772)
        ... 24 more {code}


> Camel AS2: Should accept MDN field name Disposition as case insensitive
> -----------------------------------------------------------------------
>
>                 Key: CAMEL-19870
>                 URL: https://issues.apache.org/jira/browse/CAMEL-19870
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-as2
>    Affects Versions: 3.21.0
>            Reporter: Isakkirajan Perumal
>            Priority: Major
>             Fix For: 3.21.1, 3.22.0, 4.0.1, 4.1.0
>
>         Attachments: DispositionNotificationContentUtilsTest.java, 
> as2-disposition-case-insensitive.png, invalid-disposition-mode-error-01.png, 
> invalid-disposition-mode-error-02.png
>
>
> The third party AS2 server that we are calling is returning the MDN response 
> in which the disposition field is like 
> Ex: "Disposition: automatic-action/MDN-Sent-automatically; processed"
> As per the AS2 spec (https://www.ietf.org/rfc/rfc4130.txt) this field can be 
> case insensitive, but camel as2 validates this field with case sensitive 
> hence it fails.
> For reproducing the issue, please use the attached 
> "DispositionNotificationContentUtilsTest.java" file.
> {code:java}
> Failed to parse entity content
>         at 
> org.apache.camel.support.component.ApiMethodHelper.invokeMethod(ApiMethodHelper.java:531)
>         at 
> org.apache.camel.support.component.AbstractApiProducer.doInvokeMethod(AbstractApiProducer.java:122)
>         at 
> org.apache.camel.support.component.AbstractApiProducer$1.run(AbstractApiProducer.java:89)
>         at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>         at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
>         at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>         at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>         at java.base/java.lang.Thread.run(Thread.java:836)
> Caused by: org.apache.http.HttpException: Failed to parse entity content
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntity(EntityParser.java:365)
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseAS2MessageEntity(EntityParser.java:472)
>         at 
> org.apache.camel.component.as2.api.io.AS2BHttpClientConnection.receiveResponseEntity(AS2BHttpClientConnection.java:55)
>         at 
> org.apache.http.impl.conn.CPoolProxy.receiveResponseEntity(CPoolProxy.java:162)
>         at 
> org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
>         at 
> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
>         at 
> org.apache.camel.component.as2.api.AS2ClientConnection.send(AS2ClientConnection.java:192)
>         at 
> org.apache.camel.component.as2.api.AS2ClientManager.send(AS2ClientManager.java:391)
>         at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>         at 
> org.apache.camel.support.component.ApiMethodHelper.invokeMethod(ApiMethodHelper.java:523)
>         ... 8 more
> Caused by: org.apache.http.ParseException: failed to parse text entity
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntityBody(EntityParser.java:602)
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntity(EntityParser.java:357)
>         ... 20 more
> Caused by: org.apache.http.ParseException: failed to parse EDI entity
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseEntityBody(EntityParser.java:858)
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartSignedEntityBody(EntityParser.java:548)
>         ... 21 more
> Caused by: org.apache.http.ParseException: failed to parse text entity
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartReportEntityBody(EntityParser.java:710)
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseEntityBody(EntityParser.java:826)
>         ... 22 more
> Caused by: org.apache.http.ParseException: failed to parse MDN entity
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseMessageDispositionNotificationEntityBody(EntityParser.java:777)
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseMultipartReportEntityBody(EntityParser.java:699)
>         ... 23 more
> Caused by: org.apache.http.ParseException: Invalid 'Disposition' field: 
> invalid disposition mode 'automatic-action/MDN-Sent-automatically'
>         at 
> org.apache.camel.component.as2.api.util.DispositionNotificationContentUtils.parseDispositionNotification(DispositionNotificationContentUtils.java:197)
>         at 
> org.apache.camel.component.as2.api.entity.EntityParser.parseMessageDispositionNotificationEntityBody(EntityParser.java:772)
>         ... 24 more {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to