diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/as2.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/as2.json
index c1bdb573241c4..9d279ce2cdcc0 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/as2.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/as2.json
@@ -41,7 +41,7 @@
"compressionAlgorithm": { "index": 8, "kind": "parameter", "displayName": "Compression Algorithm", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2CompressionAlgorithm", "enum": [ "ZLIB" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The algorithm used to compress EDI message." },
"dispositionNotificationTo": { "index": 9, "kind": "parameter", "displayName": "Disposition Notification To", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The value of the Disposition-Notification-To header. Assigning a value to this parameter requests a message disposition notification (MDN) for the AS2 message." },
"ediMessageTransferEncoding": { "index": 10, "kind": "parameter", "displayName": "Edi Message Transfer Encoding", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The transfer encoding of EDI message." },
- "ediMessageType": { "index": 11, "kind": "parameter", "displayName": "Edi Message Type", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.http.entity.ContentType", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The content type of EDI message. One of application\/edifact, application\/edi-x12, application\/edi-consent, application\/xml" },
+ "ediMessageType": { "index": 11, "kind": "parameter", "displayName": "Edi Message Type", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.hc.core5.http.ContentType", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The content type of EDI message. One of application\/edifact, application\/edi-x12, application\/edi-consent, application\/xml" },
"from": { "index": 12, "kind": "parameter", "displayName": "From", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The value of the From header of AS2 message." },
"hostnameVerifier": { "index": 13, "kind": "parameter", "displayName": "Hostname Verifier", "group": "common", "label": "", "required": false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "Set hostname verifier for SSL session." },
"httpConnectionPoolSize": { "index": 14, "kind": "parameter", "displayName": "Http Connection Pool Size", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5", "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The maximum size of the connection pool for http connections (client only)" },
@@ -72,11 +72,11 @@
"validateSigningCertificateChain": { "index": 39, "kind": "parameter", "displayName": "Validate Signing Certificate Chain", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "Certificates to validate the message's signature against. If not supplied, validation will not take place. Server: validates the received message. Client: not yet implemented, should validate the MDN" }
},
"apis": {
- "client": { "consumerOnly": false, "producerOnly": true, "description": "Sends EDI Messages over HTTP", "methods": { "send": { "description": "Send ediMessage to trading partner", "signatures": [ "org.apache.http.protocol.HttpCoreContext send(String ediMessage, String requestUri, String subject, String from, String as2From, String as2To, org.apache.camel.component.as2.api.AS2MessageStructure as2MessageStructure, org.apache.http.entity.ContentType ediMessageContentType, String ediMessageTransferEncoding, org.apache.camel.component.as2.api.AS2SignatureAlgorithm signingAlgorithm, java.security.cert.Certificate[] signingCertificateChain, java.security.PrivateKey signingPrivateKey, org.apache.camel.component.as2.api.AS2CompressionAlgorithm compressionAlgorithm, String dispositionNotificationTo, String[] signedReceiptMicAlgorithms, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm encryptingAlgorithm, java.security.cert.Certificate[] encryptingCertificateChain, String attachedFileName)" ] } } },
- "server": { "consumerOnly": true, "producerOnly": false, "description": "Receives EDI Messages over HTTP", "methods": { "listen": { "description": "", "signatures": [ "void listen(String requestUriPattern, org.apache.http.protocol.HttpRequestHandler handler)" ] } } }
+ "client": { "consumerOnly": false, "producerOnly": true, "description": "Sends EDI Messages over HTTP", "methods": { "send": { "description": "Send ediMessage to trading partner", "signatures": [ "org.apache.hc.core5.http.protocol.HttpCoreContext send(String ediMessage, String requestUri, String subject, String from, String as2From, String as2To, org.apache.camel.component.as2.api.AS2MessageStructure as2MessageStructure, org.apache.hc.core5.http.ContentType ediMessageContentType, String ediMessageTransferEncoding, org.apache.camel.component.as2.api.AS2SignatureAlgorithm signingAlgorithm, java.security.cert.Certificate[] signingCertificateChain, java.security.PrivateKey signingPrivateKey, org.apache.camel.component.as2.api.AS2CompressionAlgorithm compressionAlgorithm, String dispositionNotificationTo, String[] signedReceiptMicAlgorithms, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm encryptingAlgorithm, java.security.cert.Certificate[] encryptingCertificateChain, String attachedFileName)" ] } } },
+ "server": { "consumerOnly": true, "producerOnly": false, "description": "Receives EDI Messages over HTTP", "methods": { "listen": { "description": "", "signatures": [ "void listen(String requestUriPattern, org.apache.hc.core5.http.io.HttpRequestHandler handler)" ] } } }
},
"apiProperties": {
- "client": { "methods": { "send": { "properties": { "as2From": { "index": 0, "kind": "parameter", "displayName": "As2 From", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "AS2 name of sender", "optional": false }, "as2MessageStructure": { "index": 1, "kind": "parameter", "displayName": "As2 Message Structure", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2MessageStructure", "enum": [ "PLAIN", "SIGNED", "ENCRYPTED", "SIGNED_ENCRYPTED", "PLAIN_COMPRESSED", "SIGNED_COMPRESSED", "ENCRYPTED_COMPRESSED", "ENCRYPTED_COMPRESSED_SIGNED" ], "deprecated": false, "autowired": false, "secret": false, "description": "The structure of AS2 to send; see AS2MessageStructure", "optional": false }, "as2To": { "index": 2, "kind": "parameter", "displayName": "As2 To", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "AS2 name of recipient", "optional": false }, "attachedFileName": { "index": 3, "kind": "parameter", "displayName": "Attached File Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The name of the attached file or null if user doesn't want to specify it", "optional": true }, "compressionAlgorithm": { "index": 4, "kind": "parameter", "displayName": "Compression Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2CompressionAlgorithm", "enum": [ "ZLIB" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to compress the message or null if sending EDI message uncompressed", "optional": true }, "dispositionNotificationTo": { "index": 5, "kind": "parameter", "displayName": "Disposition Notification To", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "An RFC2822 address to request a receipt or null if no receipt requested", "optional": true }, "ediMessage": { "index": 6, "kind": "parameter", "displayName": "Edi Message", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "EDI message to transport", "optional": false }, "ediMessageContentType": { "index": 7, "kind": "parameter", "displayName": "Edi Message Content Type", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.http.entity.ContentType", "deprecated": false, "autowired": false, "secret": false, "description": "The content type of EDI message", "optional": false }, "ediMessageTransferEncoding": { "index": 8, "kind": "parameter", "displayName": "Edi Message Transfer Encoding", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The transfer encoding used to transport EDI message", "optional": true }, "encryptingAlgorithm": { "index": 9, "kind": "parameter", "displayName": "Encrypting Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2EncryptionAlgorithm", "enum": [ "AES128_CBC", "AES192_CBC", "AES256_CBC", "AES128_CCM", "AES192_CCM", "AES256_CCM", "AES128_GCM", "AES192_GCM", "AES256_GCM", "CAMELLIA128_CBC", "CAMELLIA192_CBC", "CAMELLIA256_CBC", "CAST5_CBC", "DES_CBC", "DES_EDE3_CBC", "GOST28147_GCFB", "IDEA_CBC", "RC2_CBC", "RC4", "SEED_CBC" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to encrypt the message or null if sending EDI message unencrypted", "optional": true }, "encryptingCertificateChain": { "index": 10, "kind": "parameter", "displayName": "Encrypting Certificate Chain", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "description": "The chain of certificates used to encrypt the message or null if sending EDI message unencrypted", "optional": true }, "from": { "index": 11, "kind": "parameter", "displayName": "From", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "RFC2822 address of sender", "optional": false }, "requestUri": { "index": 12, "kind": "parameter", "displayName": "Request Uri", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Resource location to deliver message", "optional": false }, "signedReceiptMicAlgorithms": { "index": 13, "kind": "parameter", "displayName": "Signed Receipt Mic Algorithms", "group": "producer", "label": "", "required": false, "type": "array", "javaType": "java.lang.String[]", "deprecated": false, "autowired": false, "secret": false, "description": "The senders list of signing algorithms for signing receipt, in preferred order, or null if requesting an unsigned receipt.", "optional": true }, "signingAlgorithm": { "index": 14, "kind": "parameter", "displayName": "Signing Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2SignatureAlgorithm", "enum": [ "SHA3_224WITHRSA", "SHA3_256WITHRSA", "SHA3_384withRSA", "SHA3_512WITHRSA", "MD5WITHRSA", "SHA1WITHRSA", "MD2WITHRSA", "SHA224WITHRSA", "SHA256WITHRSA", "SHA384WITHRSA", "SHA512WITHRSA", "RIPEMD128WITHRSA", "RIPEMD160WITHRSA", "RIPEMD256WITHRSA", "SHA224WITHDSA", "SHA256WITHDSA", "SHA384WITHDSA", "SHA512WITHDSA", "SHA3_224WITHDSA", "SHA3_256WITHDSA", "SHA3_384WITHDSA", "SHA3_512WITHDSA", "SHA1WITHDSA", "SHA3_224WITHECDSA", "SHA3_256WITHECDSA", "SHA3_384WITHECDSA", "SHA3_512WITHECDSA", "SHA1WITHECDSA", "SHA224WITHECDSA", "SHA256WITHECDSA", "SHA384WITHECDSA", "SHA512WITHECDSA", "SHA1WITHPLAIN_ECDSA", "SHA224WITHPLAIN_ECDSA", "SHA256WITHPLAIN_ECDSA", "SHA384WITHPLAIN_ECDSA", "SHA512WITHPLAIN_ECDSA", "RIPEMD160WITHPLAIN_ECDSA", "SHA1WITHRSAANDMGF1", "SHA224WITHRSAANDMGF1", "SHA256WITHRSAANDMGF1", "SHA384WITHRSAANDMGF1", "SHA512WITHRSAANDMGF1", "SHA3_224WITHRSAANDMGF1", "SHA3_256WITHRSAANDMGF1", "SHA3_384WITHRSAANDMGF1", "SHA3_512WITHRSAANDMGF1" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to sign the message or null if sending EDI message unsigned", "optional": true }, "signingCertificateChain": { "index": 15, "kind": "parameter", "displayName": "Signing Certificate Chain", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "description": "The chain of certificates used to sign the message or null if sending EDI message unsigned", "optional": true }, "signingPrivateKey": { "index": 16, "kind": "parameter", "displayName": "Signing Private Key", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": false, "description": "The private key used to sign EDI message", "optional": true }, "subject": { "index": 17, "kind": "parameter", "displayName": "Subject", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Message subject", "optional": false } } } } },
+ "client": { "methods": { "send": { "properties": { "as2From": { "index": 0, "kind": "parameter", "displayName": "As2 From", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "AS2 name of sender", "optional": false }, "as2MessageStructure": { "index": 1, "kind": "parameter", "displayName": "As2 Message Structure", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2MessageStructure", "enum": [ "PLAIN", "SIGNED", "ENCRYPTED", "SIGNED_ENCRYPTED", "PLAIN_COMPRESSED", "SIGNED_COMPRESSED", "ENCRYPTED_COMPRESSED", "ENCRYPTED_COMPRESSED_SIGNED" ], "deprecated": false, "autowired": false, "secret": false, "description": "The structure of AS2 to send; see AS2MessageStructure", "optional": false }, "as2To": { "index": 2, "kind": "parameter", "displayName": "As2 To", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "AS2 name of recipient", "optional": false }, "attachedFileName": { "index": 3, "kind": "parameter", "displayName": "Attached File Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The name of the attached file or null if user doesn't want to specify it", "optional": true }, "compressionAlgorithm": { "index": 4, "kind": "parameter", "displayName": "Compression Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2CompressionAlgorithm", "enum": [ "ZLIB" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to compress the message or null if sending EDI message uncompressed", "optional": true }, "dispositionNotificationTo": { "index": 5, "kind": "parameter", "displayName": "Disposition Notification To", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "An RFC2822 address to request a receipt or null if no receipt requested", "optional": true }, "ediMessage": { "index": 6, "kind": "parameter", "displayName": "Edi Message", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "EDI message to transport", "optional": false }, "ediMessageContentType": { "index": 7, "kind": "parameter", "displayName": "Edi Message Content Type", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.hc.core5.http.ContentType", "deprecated": false, "autowired": false, "secret": false, "description": "The content type of EDI message", "optional": false }, "ediMessageTransferEncoding": { "index": 8, "kind": "parameter", "displayName": "Edi Message Transfer Encoding", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The transfer encoding used to transport EDI message", "optional": true }, "encryptingAlgorithm": { "index": 9, "kind": "parameter", "displayName": "Encrypting Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2EncryptionAlgorithm", "enum": [ "AES128_CBC", "AES192_CBC", "AES256_CBC", "AES128_CCM", "AES192_CCM", "AES256_CCM", "AES128_GCM", "AES192_GCM", "AES256_GCM", "CAMELLIA128_CBC", "CAMELLIA192_CBC", "CAMELLIA256_CBC", "CAST5_CBC", "DES_CBC", "DES_EDE3_CBC", "GOST28147_GCFB", "IDEA_CBC", "RC2_CBC", "RC4", "SEED_CBC" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to encrypt the message or null if sending EDI message unencrypted", "optional": true }, "encryptingCertificateChain": { "index": 10, "kind": "parameter", "displayName": "Encrypting Certificate Chain", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "description": "The chain of certificates used to encrypt the message or null if sending EDI message unencrypted", "optional": true }, "from": { "index": 11, "kind": "parameter", "displayName": "From", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "RFC2822 address of sender", "optional": false }, "requestUri": { "index": 12, "kind": "parameter", "displayName": "Request Uri", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Resource location to deliver message", "optional": false }, "signedReceiptMicAlgorithms": { "index": 13, "kind": "parameter", "displayName": "Signed Receipt Mic Algorithms", "group": "producer", "label": "", "required": false, "type": "array", "javaType": "java.lang.String[]", "deprecated": false, "autowired": false, "secret": false, "description": "The senders list of signing algorithms for signing receipt, in preferred order, or null if requesting an unsigned receipt.", "optional": true }, "signingAlgorithm": { "index": 14, "kind": "parameter", "displayName": "Signing Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2SignatureAlgorithm", "enum": [ "SHA3_224WITHRSA", "SHA3_256WITHRSA", "SHA3_384withRSA", "SHA3_512WITHRSA", "MD5WITHRSA", "SHA1WITHRSA", "MD2WITHRSA", "SHA224WITHRSA", "SHA256WITHRSA", "SHA384WITHRSA", "SHA512WITHRSA", "RIPEMD128WITHRSA", "RIPEMD160WITHRSA", "RIPEMD256WITHRSA", "SHA224WITHDSA", "SHA256WITHDSA", "SHA384WITHDSA", "SHA512WITHDSA", "SHA3_224WITHDSA", "SHA3_256WITHDSA", "SHA3_384WITHDSA", "SHA3_512WITHDSA", "SHA1WITHDSA", "SHA3_224WITHECDSA", "SHA3_256WITHECDSA", "SHA3_384WITHECDSA", "SHA3_512WITHECDSA", "SHA1WITHECDSA", "SHA224WITHECDSA", "SHA256WITHECDSA", "SHA384WITHECDSA", "SHA512WITHECDSA", "SHA1WITHPLAIN_ECDSA", "SHA224WITHPLAIN_ECDSA", "SHA256WITHPLAIN_ECDSA", "SHA384WITHPLAIN_ECDSA", "SHA512WITHPLAIN_ECDSA", "RIPEMD160WITHPLAIN_ECDSA", "SHA1WITHRSAANDMGF1", "SHA224WITHRSAANDMGF1", "SHA256WITHRSAANDMGF1", "SHA384WITHRSAANDMGF1", "SHA512WITHRSAANDMGF1", "SHA3_224WITHRSAANDMGF1", "SHA3_256WITHRSAANDMGF1", "SHA3_384WITHRSAANDMGF1", "SHA3_512WITHRSAANDMGF1" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to sign the message or null if sending EDI message unsigned", "optional": true }, "signingCertificateChain": { "index": 15, "kind": "parameter", "displayName": "Signing Certificate Chain", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "description": "The chain of certificates used to sign the message or null if sending EDI message unsigned", "optional": true }, "signingPrivateKey": { "index": 16, "kind": "parameter", "displayName": "Signing Private Key", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": false, "description": "The private key used to sign EDI message", "optional": true }, "subject": { "index": 17, "kind": "parameter", "displayName": "Subject", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Message subject", "optional": false } } } } },
"server": { "methods": { "listen": { "properties": { "requestUriPattern": { "index": 0, "kind": "parameter", "displayName": "Request Uri Pattern", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "", "optional": false } } } } }
}
}
diff --git a/components/camel-as2/camel-as2-api/pom.xml b/components/camel-as2/camel-as2-api/pom.xml
index 68ac95a6b1d66..7c573613d9d9a 100644
--- a/components/camel-as2/camel-as2-api/pom.xml
+++ b/components/camel-as2/camel-as2-api/pom.xml
@@ -69,14 +69,9 @@
- org.apache.httpcomponents
- httpcore
- ${httpcore4-version}
-
-
- org.apache.httpcomponents
- httpmime
- ${httpclient4-version}
+ org.apache.httpcomponents.client5
+ httpclient5
+ ${httpclient-version}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsynchronousMDNManager.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsynchronousMDNManager.java
index 6b4addf8f612c..f7d8d2ff62a5f 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsynchronousMDNManager.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsynchronousMDNManager.java
@@ -19,7 +19,6 @@
import java.io.IOException;
import java.net.Socket;
import java.net.URI;
-import java.net.URISyntaxException;
import java.security.PrivateKey;
import java.security.cert.Certificate;
@@ -27,23 +26,26 @@
import org.apache.camel.component.as2.api.protocol.RequestAsynchronousMDN;
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.impl.DefaultBHttpClientConnection;
-import org.apache.http.message.BasicHttpEntityEnclosingRequest;
-import org.apache.http.protocol.HttpCoreContext;
-import org.apache.http.protocol.HttpProcessor;
-import org.apache.http.protocol.HttpProcessorBuilder;
-import org.apache.http.protocol.HttpRequestExecutor;
-import org.apache.http.protocol.RequestConnControl;
-import org.apache.http.protocol.RequestContent;
-import org.apache.http.protocol.RequestDate;
-import org.apache.http.protocol.RequestExpectContinue;
-import org.apache.http.protocol.RequestTargetHost;
-import org.apache.http.protocol.RequestUserAgent;
+import org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory;
+import org.apache.hc.client5.http.io.ManagedHttpClientConnection;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.config.Http1Config;
+import org.apache.hc.core5.http.impl.io.HttpRequestExecutor;
+import org.apache.hc.core5.http.io.HttpClientConnection;
+import org.apache.hc.core5.http.io.HttpConnectionFactory;
+import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.protocol.HttpProcessor;
+import org.apache.hc.core5.http.protocol.HttpProcessorBuilder;
+import org.apache.hc.core5.http.protocol.RequestConnControl;
+import org.apache.hc.core5.http.protocol.RequestContent;
+import org.apache.hc.core5.http.protocol.RequestDate;
+import org.apache.hc.core5.http.protocol.RequestExpectContinue;
+import org.apache.hc.core5.http.protocol.RequestTargetHost;
+import org.apache.hc.core5.http.protocol.RequestUserAgent;
public class AS2AsynchronousMDNManager {
@@ -99,7 +101,7 @@ public AS2AsynchronousMDNManager(String as2Version,
// Build Processor
httpProcessor = HttpProcessorBuilder.create().add(new RequestAsynchronousMDN(as2Version, senderFQDN))
.add(new RequestTargetHost()).add(new RequestUserAgent(userAgent)).add(new RequestDate())
- .add(new RequestContent(true)).add(new RequestConnControl()).add(new RequestExpectContinue(true))
+ .add(new RequestContent(true)).add(new RequestConnControl()).add(new RequestExpectContinue())
.build();
}
@@ -110,33 +112,21 @@ public HttpCoreContext send(
ObjectHelper.notNull(mdn, "mdn");
ObjectHelper.notNull(recipientDeliveryAddress, "recipientDeliveryAddress");
- URI uri = null;
- try {
- URIBuilder uriBuilder = new URIBuilder(recipientDeliveryAddress);
- uri = uriBuilder.build();
-
- } catch (URISyntaxException e) {
- throw new HttpException("Invalid recipient delivery address URL", e);
- }
-
- String requestUri = buildRequestURI(uri);
+ URI uri = URI.create(recipientDeliveryAddress);
int buffSize = 8 * 1024;
- try (DefaultBHttpClientConnection httpConnection = new DefaultBHttpClientConnection(buffSize)) {
-
- HttpHost targetHost = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
+ Http1Config h1Config = Http1Config.custom().setBufferSize(buffSize).build();
+ HttpConnectionFactory connFactory
+ = ManagedHttpClientConnectionFactory.builder().http1Config(h1Config).build();
- // Create socket and bind to connection;
- Socket socket = new Socket(targetHost.getHostName(), targetHost.getPort());
- httpConnection.bind(socket);
+ try (HttpClientConnection httpConnection = connFactory.createConnection(new Socket(uri.getHost(), uri.getPort()))) {
// Add Context attributes
HttpCoreContext httpContext = HttpCoreContext.create();
- httpContext.setTargetHost(targetHost);
httpContext.setAttribute(RECIPIENT_ADDRESS, recipientDeliveryAddress);
- BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", requestUri);
+ ClassicHttpRequest request = new BasicClassicHttpRequest("POST", uri);
request.setHeader(AS2Header.CONTENT_TYPE, mdn.getMainMessageContentType());
httpContext.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
mdn.setMainBody(true);
@@ -157,31 +147,16 @@ public HttpCoreContext send(
}
}
- private HttpResponse send(DefaultBHttpClientConnection httpConnection, HttpRequest request, HttpCoreContext httpContext)
+ private HttpResponse send(HttpClientConnection httpConnection, ClassicHttpRequest request, HttpCoreContext httpContext)
throws HttpException, IOException {
// Execute Request
- HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
- httpexecutor.preProcess(request, httpProcessor, httpContext);
- HttpResponse response = httpexecutor.execute(request, httpConnection, httpContext);
- httpexecutor.postProcess(response, httpProcessor, httpContext);
+ HttpRequestExecutor httpExecutor = new HttpRequestExecutor();
+ httpExecutor.preProcess(request, httpProcessor, httpContext);
+ ClassicHttpResponse response = httpExecutor.execute(request, httpConnection, httpContext);
+ httpExecutor.postProcess(response, httpProcessor, httpContext);
return response;
}
- private String buildRequestURI(URI uri) {
- StringBuilder sb = new StringBuilder();
- if (uri.getPath() != null) {
- sb.append(uri.getPath());
- }
- if (uri.getQuery() != null) {
- sb.append('?');
- sb.append(uri.getQuery());
- }
- if (uri.getFragment() != null) {
- sb.append('#');
- sb.append(uri.getFragment());
- }
- return sb.toString();
- }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientConnection.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientConnection.java
index e3ea423a36a56..7cbf23c6b97df 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientConnection.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientConnection.java
@@ -21,7 +21,7 @@
import java.time.Duration;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
@@ -31,39 +31,48 @@
import org.apache.camel.component.as2.api.protocol.RequestAS2;
import org.apache.camel.component.as2.api.protocol.RequestMDN;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.HttpClientConnection;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.config.Registry;
-import org.apache.http.config.RegistryBuilder;
-import org.apache.http.config.SocketConfig;
-import org.apache.http.conn.ConnectionKeepAliveStrategy;
-import org.apache.http.conn.HttpConnectionFactory;
-import org.apache.http.conn.ManagedHttpClientConnection;
-import org.apache.http.conn.routing.HttpRoute;
-import org.apache.http.conn.socket.ConnectionSocketFactory;
-import org.apache.http.conn.socket.PlainConnectionSocketFactory;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpCoreContext;
-import org.apache.http.protocol.HttpProcessor;
-import org.apache.http.protocol.HttpProcessorBuilder;
-import org.apache.http.protocol.HttpRequestExecutor;
-import org.apache.http.protocol.RequestConnControl;
-import org.apache.http.protocol.RequestContent;
-import org.apache.http.protocol.RequestDate;
-import org.apache.http.protocol.RequestExpectContinue;
-import org.apache.http.protocol.RequestTargetHost;
-import org.apache.http.protocol.RequestUserAgent;
+import org.apache.hc.client5.http.ConnectionKeepAliveStrategy;
+import org.apache.hc.client5.http.HttpRoute;
+import org.apache.hc.client5.http.config.ConnectionConfig;
+import org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
+import org.apache.hc.client5.http.io.ConnectionEndpoint;
+import org.apache.hc.client5.http.io.LeaseRequest;
+import org.apache.hc.client5.http.io.ManagedHttpClientConnection;
+import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
+import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory;
+import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
+import org.apache.hc.core5.http.*;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.config.Http1Config;
+import org.apache.hc.core5.http.config.Registry;
+import org.apache.hc.core5.http.config.RegistryBuilder;
+import org.apache.hc.core5.http.impl.io.HttpRequestExecutor;
+import org.apache.hc.core5.http.io.HttpClientConnection;
+import org.apache.hc.core5.http.io.HttpConnectionFactory;
+import org.apache.hc.core5.http.io.SocketConfig;
+import org.apache.hc.core5.http.message.MessageSupport;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.protocol.HttpProcessor;
+import org.apache.hc.core5.http.protocol.HttpProcessorBuilder;
+import org.apache.hc.core5.http.protocol.RequestConnControl;
+import org.apache.hc.core5.http.protocol.RequestContent;
+import org.apache.hc.core5.http.protocol.RequestDate;
+import org.apache.hc.core5.http.protocol.RequestExpectContinue;
+import org.apache.hc.core5.http.protocol.RequestTargetHost;
+import org.apache.hc.core5.http.protocol.RequestUserAgent;
+import org.apache.hc.core5.net.URIAuthority;
+import org.apache.hc.core5.util.TimeValue;
+import org.apache.hc.core5.util.Timeout;
public class AS2ClientConnection {
- private static final int RETRIEVE_FROM_CONNECTION_POOL_TIMEOUT_SECONDS = 5;
+ private static final int RETRIEVE_CONNECTION_TIMEOUT_SECONDS = 5;
private HttpHost targetHost;
private HttpProcessor httpProcessor;
@@ -83,9 +92,9 @@ public AS2ClientConnection(String as2Version, String userAgent, String clientFqd
this.userAgent = ObjectHelper.notNull(userAgent, "userAgent");
this.clientFqdn = ObjectHelper.notNull(clientFqdn, "clientFqdn");
this.targetHost = new HttpHost(
+ sslContext != null ? "https" : "http",
ObjectHelper.notNull(targetHostName, "targetHostName"),
- ObjectHelper.notNull(targetPortNumber, "targetPortNumber"),
- sslContext != null ? "https" : "http");
+ ObjectHelper.notNull(targetPortNumber, "targetPortNumber"));
ObjectHelper.notNull(socketTimeout, "socketTimeout");
this.connectionTimeoutMilliseconds = (int) ObjectHelper.notNull(connectionTimeout, "connectionTimeout").toMillis();
ObjectHelper.notNull(connectionPoolMaxSize, "connectionPoolMaxSize");
@@ -100,13 +109,22 @@ public AS2ClientConnection(String as2Version, String userAgent, String clientFqd
.add(new RequestDate())
.add(new RequestContent(true))
.add(new RequestConnControl())
- .add(new RequestExpectContinue(true)).build();
+ .add(new RequestExpectContinue()).build();
- HttpConnectionFactory connFactory
- = (route, config) -> new AS2BHttpClientConnection(UUID.randomUUID().toString(), 8 * 1024);
+ final Http1Config h1Config = Http1Config.custom().setBufferSize(8 * 1024).build();
+
+ HttpConnectionFactory connFactory
+ = new ManagedHttpClientConnectionFactory(h1Config, null, null) {
+ @Override
+ public ManagedHttpClientConnection createConnection(final Socket socket) throws IOException {
+ ManagedHttpClientConnection mc = super.createConnection(socket);
+ return new AS2BHttpClientConnection(mc);
+ }
+ };
if (sslContext == null) {
- connectionPoolManager = new PoolingHttpClientConnectionManager(connFactory);
+ connectionPoolManager = PoolingHttpClientConnectionManagerBuilder.create()
+ .setConnectionFactory(connFactory).build();
} else {
SSLConnectionSocketFactory sslConnectionSocketFactory;
if (hostnameVerifier == null) {
@@ -121,23 +139,27 @@ public AS2ClientConnection(String as2Version, String userAgent, String clientFqd
connectionPoolManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry, connFactory);
}
connectionPoolManager.setMaxTotal(connectionPoolMaxSize);
- connectionPoolManager.setSocketConfig(targetHost,
+ connectionPoolManager.setDefaultSocketConfig(
SocketConfig.copy(SocketConfig.DEFAULT)
- .setSoTimeout((int) socketTimeout.toMillis())
+ .setSoTimeout(Timeout.ofSeconds(socketTimeout.getSeconds()))
+ .build());
+ connectionPoolManager.setDefaultConnectionConfig(
+ ConnectionConfig.custom()
+ .setConnectTimeout(Timeout.ofMilliseconds(connectionTimeoutMilliseconds))
.build());
connectionKeepAliveStrategy = (response, context) -> {
- int ttl = (int) connectionPoolTtl.toMillis();
- for (Header h : response.getAllHeaders()) {
- if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(h.getName())) {
- if (HTTP.CONN_CLOSE.equalsIgnoreCase(h.getValue())) {
- ttl = -1;
+ TimeValue ttl = TimeValue.of(connectionPoolTtl);
+ for (Header h : response.getHeaders()) {
+ if (AS2Header.CONNECTION.equalsIgnoreCase(h.getName())) {
+ if (AS2Header.CLOSE.equalsIgnoreCase(h.getValue())) {
+ ttl = TimeValue.NEG_ONE_MILLISECOND;
}
}
- if (HTTP.CONN_KEEP_ALIVE.equalsIgnoreCase(h.getName())) {
- HeaderElement headerElement = h.getElements()[0];
+ if (AS2Header.KEEP_ALIVE.equalsIgnoreCase(h.getName())) {
+ HeaderElement headerElement = MessageSupport.parse(h)[0];
if (headerElement.getValue() != null && "timeout".equalsIgnoreCase(headerElement.getName())) {
- ttl = Integer.parseInt(headerElement.getValue()) * 1000;
+ ttl = TimeValue.ofSeconds(Long.parseLong(headerElement.getValue()));
}
}
}
@@ -145,14 +167,7 @@ public AS2ClientConnection(String as2Version, String userAgent, String clientFqd
};
// Check if a connection can be established
- try (AS2BHttpClientConnection testConnection = new AS2BHttpClientConnection("test", 8 * 1024)) {
- if (sslContext == null) {
- testConnection.bind(new Socket(targetHost.getHostName(), targetHost.getPort()));
- } else {
- SSLSocketFactory factory = sslContext.getSocketFactory();
- testConnection.bind(factory.createSocket(targetHost.getHostName(), targetHost.getPort()));
- }
- }
+ createTestConnection(sslContext, connFactory).close();
}
@@ -168,29 +183,46 @@ public String getClientFqdn() {
return clientFqdn;
}
- public HttpResponse send(HttpRequest request, HttpCoreContext httpContext)
- throws HttpException, IOException, InterruptedException, ExecutionException {
+ public HttpResponse send(ClassicHttpRequest request, HttpCoreContext httpContext)
+ throws HttpException, IOException, InterruptedException, ExecutionException, TimeoutException {
HttpRoute route = new HttpRoute(targetHost);
- httpContext.setTargetHost(targetHost);
+ request.setAuthority(new URIAuthority(targetHost));
- HttpClientConnection httpConnection = connectionPoolManager.requestConnection(route, null)
- .get(RETRIEVE_FROM_CONNECTION_POOL_TIMEOUT_SECONDS, TimeUnit.SECONDS);
- if (!httpConnection.isOpen()) {
- connectionPoolManager.connect(httpConnection, route, connectionTimeoutMilliseconds, httpContext);
+ LeaseRequest leaseRequest = connectionPoolManager.lease(UUID.randomUUID().toString(), route, null);
+ ConnectionEndpoint endpoint = leaseRequest.get(Timeout.ofSeconds(RETRIEVE_CONNECTION_TIMEOUT_SECONDS));
+ if (!endpoint.isConnected()) {
+ connectionPoolManager.connect(endpoint, TimeValue.ofMilliseconds(connectionTimeoutMilliseconds), httpContext);
}
// Execute Request
- HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
- httpexecutor.preProcess(request, httpProcessor, httpContext);
- HttpResponse response = httpexecutor.execute(request, httpConnection, httpContext);
- httpexecutor.postProcess(response, httpProcessor, httpContext);
- connectionPoolManager.routeComplete(httpConnection, route, httpContext);
- connectionPoolManager.releaseConnection(httpConnection, null,
- connectionKeepAliveStrategy.getKeepAliveDuration(response, httpContext), TimeUnit.MILLISECONDS);
+ HttpRequestExecutor httpExecutor = new HttpRequestExecutor() {
+ @Override
+ public ClassicHttpResponse execute(ClassicHttpRequest request, HttpClientConnection conn, HttpContext context)
+ throws IOException, HttpException {
+ super.preProcess(request, httpProcessor, context);
+ ClassicHttpResponse response = super.execute(request, conn, context);
+ super.postProcess(response, httpProcessor, context);
+ return response;
+ }
+ };
+
+ HttpResponse response = endpoint.execute(UUID.randomUUID().toString(), request, httpExecutor, httpContext);
+ connectionPoolManager.release(endpoint, null,
+ connectionKeepAliveStrategy.getKeepAliveDuration(response, httpContext));
return response;
}
+ private HttpConnection createTestConnection(
+ SSLContext sslContext, HttpConnectionFactory connFactory)
+ throws IOException {
+ if (sslContext == null) {
+ return connFactory.createConnection(new Socket(targetHost.getHostName(), targetHost.getPort()));
+ } else {
+ SSLSocketFactory factory = sslContext.getSocketFactory();
+ return connFactory.createConnection(factory.createSocket(targetHost.getHostName(), targetHost.getPort()));
+ }
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientManager.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientManager.java
index 9ae7c8d919588..e407c301284f9 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientManager.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ClientManager.java
@@ -21,6 +21,7 @@
import java.security.PrivateKey;
import java.security.cert.Certificate;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
import org.apache.camel.component.as2.api.entity.ApplicationEntity;
import org.apache.camel.component.as2.api.entity.ApplicationPkcs7MimeCompressedDataEntity;
@@ -32,11 +33,12 @@
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.component.as2.api.util.SigningUtils;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.HttpException;
-import org.apache.http.HttpResponse;
-import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicHttpEntityEnclosingRequest;
-import org.apache.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.ProtocolVersion;
+import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
import org.bouncycastle.cms.CMSCompressedDataGenerator;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.operator.OutputCompressor;
@@ -245,7 +247,8 @@ public HttpCoreContext send(
httpContext.setAttribute(AS2ClientManager.ENCRYPTING_ALGORITHM, encryptingAlgorithm);
httpContext.setAttribute(AS2ClientManager.ENCRYPTING_CERTIFICATE_CHAIN, encryptingCertificateChain);
- BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", requestUri);
+ BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", requestUri);
+ request.setVersion(new ProtocolVersion("HTTP", 1, 1));
httpContext.setAttribute(HTTP_REQUEST, request);
// Create Message Body
@@ -390,6 +393,8 @@ public HttpCoreContext send(
httpContext.setAttribute(AS2_CONNECTION, as2ClientConnection);
response = as2ClientConnection.send(request, httpContext);
EntityParser.parseAS2MessageEntity(response);
+ } catch (TimeoutException e) {
+ throw new HttpException("Send operation timed out", e);
} catch (IOException e) {
throw new HttpException("Failed to send http request message", e);
} catch (InterruptedException e) {
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2Constants.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2Constants.java
index 7bcea3c0eb763..dbac3cb098e83 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2Constants.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2Constants.java
@@ -16,7 +16,7 @@
*/
package org.apache.camel.component.as2.api;
-import org.apache.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
/**
* Constants for AS2 component.
@@ -50,7 +50,7 @@ public interface AS2Constants {
/**
* HTTP Context Attribute Name for HTTP Client Connection object stored in context.
*/
- String HTTP_CLIENT_CONNECTION = HttpCoreContext.HTTP_CONNECTION;
+ String HTTP_CLIENT_CONNECTION = HttpCoreContext.CONNECTION_ENDPOINT;
/**
* HTTP Context Attribute Name for HTTP Client Processor object stored in context.
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2Header.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2Header.java
index 059b7395279c7..bbe8a3f1d7537 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2Header.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2Header.java
@@ -16,8 +16,6 @@
*/
package org.apache.camel.component.as2.api;
-import org.apache.http.protocol.HTTP;
-
public interface AS2Header {
/**
@@ -55,31 +53,39 @@ public interface AS2Header {
/**
* Message Header Name for Target Host
*/
- String TARGET_HOST = HTTP.TARGET_HOST;
+ String TARGET_HOST = "Host";
/**
* Message Header Name for User Agent
*/
- String USER_AGENT = HTTP.USER_AGENT;
+ String USER_AGENT = "User-Agent";
/**
* Message Header Name for Server Name
*/
- String SERVER = HTTP.SERVER_HEADER;
+ String SERVER = "Server";
/**
* Message Header Name for Date
*/
- String DATE = HTTP.DATE_HEADER;
+ String DATE = "Date";
/**
* Message Header Name for Content Length
*/
- String CONTENT_LENGTH = HTTP.CONTENT_LEN;
+ String CONTENT_LENGTH = "Content-Length";
/**
* Message Header Name for Connection
*/
- String CONNECTION = HTTP.CONN_DIRECTIVE;
+ String CONNECTION = "Connection";
/**
* Message Header Name for Expect
*/
- String EXPECT = HTTP.EXPECT_DIRECTIVE;
+ String EXPECT = "Expect";
+ /**
+ * Message Header Name for Close;
+ */
+ String CLOSE = "Close";
+ /**
+ * Message Header for Keep Alive;
+ */
+ String KEEP_ALIVE = "Keep-Alive";
/**
* Message Header name for Content Transfer Encoding
*/
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
index ea743fa09b143..acb3034f9d41c 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
@@ -31,22 +31,24 @@
import org.apache.camel.component.as2.api.io.AS2BHttpServerConnection;
import org.apache.camel.component.as2.api.protocol.ResponseMDN;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.ConnectionClosedException;
-import org.apache.http.HttpException;
-import org.apache.http.HttpInetConnection;
-import org.apache.http.HttpServerConnection;
-import org.apache.http.protocol.BasicHttpContext;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
-import org.apache.http.protocol.HttpProcessor;
-import org.apache.http.protocol.HttpProcessorBuilder;
-import org.apache.http.protocol.HttpRequestHandler;
-import org.apache.http.protocol.HttpService;
-import org.apache.http.protocol.ResponseConnControl;
-import org.apache.http.protocol.ResponseContent;
-import org.apache.http.protocol.ResponseDate;
-import org.apache.http.protocol.ResponseServer;
-import org.apache.http.protocol.UriHttpRequestHandlerMapper;
+import org.apache.hc.core5.http.ConnectionClosedException;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.config.Http1Config;
+import org.apache.hc.core5.http.impl.io.HttpService;
+import org.apache.hc.core5.http.io.HttpRequestHandler;
+import org.apache.hc.core5.http.io.HttpServerConnection;
+import org.apache.hc.core5.http.io.HttpServerRequestHandler;
+import org.apache.hc.core5.http.io.support.BasicHttpServerRequestHandler;
+import org.apache.hc.core5.http.protocol.BasicHttpContext;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.protocol.HttpProcessor;
+import org.apache.hc.core5.http.protocol.HttpProcessorBuilder;
+import org.apache.hc.core5.http.protocol.RequestHandlerRegistry;
+import org.apache.hc.core5.http.protocol.ResponseConnControl;
+import org.apache.hc.core5.http.protocol.ResponseContent;
+import org.apache.hc.core5.http.protocol.ResponseDate;
+import org.apache.hc.core5.http.protocol.ResponseServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -61,7 +63,8 @@ class RequestListenerThread extends Thread {
private final ServerSocket serversocket;
private final HttpService httpService;
- private final UriHttpRequestHandlerMapper reqistry;
+ private final RequestHandlerRegistry registry;
+ private final HttpServerRequestHandler handler;
public RequestListenerThread(String as2Version,
String originServer,
@@ -89,10 +92,11 @@ public RequestListenerThread(String as2Version,
signatureAlgorithm, signingCertificateChain, signingPrivateKey, decryptingPrivateKey, mdnMessageTemplate,
validateSigningCertificateChain);
- reqistry = new UriHttpRequestHandlerMapper();
+ registry = new RequestHandlerRegistry<>();
+ handler = new BasicHttpServerRequestHandler(registry);
// Set up the HTTP service
- httpService = new HttpService(inhttpproc, reqistry);
+ httpService = new HttpService(inhttpproc, handler);
}
@Override
@@ -119,13 +123,8 @@ public void run() {
}
void registerHandler(String requestUriPattern, HttpRequestHandler httpRequestHandler) {
- reqistry.register(requestUriPattern, httpRequestHandler);
+ registry.register(null, requestUriPattern, httpRequestHandler);
}
-
- void unregisterHandler(String requestUri) {
- reqistry.unregister(requestUri);
- }
-
}
class RequestHandlerThread extends Thread {
@@ -134,24 +133,17 @@ class RequestHandlerThread extends Thread {
public RequestHandlerThread(HttpService httpService, Socket inSocket) throws IOException {
final int bufSize = 8 * 1024;
- final AS2BHttpServerConnection inConn = new AS2BHttpServerConnection(bufSize);
+ Http1Config cfg = Http1Config.custom().setBufferSize(bufSize).build();
+ final AS2BHttpServerConnection inConn = new AS2BHttpServerConnection(cfg);
LOG.info("Incoming connection from {}", inSocket.getInetAddress());
inConn.bind(inSocket);
- setThreadName(inConn);
+ setName(REQUEST_HANDLER_THREAD_NAME_PREFIX + getId());
this.httpService = httpService;
this.serverConnection = inConn;
}
- private void setThreadName(HttpServerConnection serverConnection) {
- if (serverConnection instanceof HttpInetConnection inetConnection) {
- setName(REQUEST_HANDLER_THREAD_NAME_PREFIX + inetConnection.getLocalPort());
- } else {
- setName(REQUEST_HANDLER_THREAD_NAME_PREFIX + getId());
- }
- }
-
@Override
public void run() {
LOG.info("Processing new AS2 request");
@@ -186,7 +178,6 @@ public void run() {
} finally {
try {
this.serverConnection.close();
- this.serverConnection.shutdown();
} catch (final IOException ignore) {
}
}
@@ -267,12 +258,6 @@ public void listen(String requestUri, HttpRequestHandler handler) {
}
}
- public void stopListening(String requestUri) {
- if (listenerThread != null) {
- listenerThread.unregisterHandler(requestUri);
- }
- }
-
protected HttpProcessor initProtocolProcessor(
String as2Version,
String originServer,
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerManager.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerManager.java
index 4b9cebd63844f..9836e9b63dd90 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerManager.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerManager.java
@@ -16,8 +16,8 @@
*/
package org.apache.camel.component.as2.api;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpRequestHandler;
+import org.apache.hc.core5.http.io.HttpRequestHandler;
+import org.apache.hc.core5.http.protocol.HttpContext;
/**
* Receives EDI Messages over HTTP
@@ -53,10 +53,6 @@ public void listen(String requestUriPattern, HttpRequestHandler handler) {
as2ServerConnection.listen(requestUriPattern, handler);
}
- public void stopListening(String requestUri) {
- as2ServerConnection.stopListening(requestUri);
- }
-
public void handleMDNResponse(
HttpContext httpContext, String subject, String from) {
// Add Context attributes for Response
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2SignedDataGenerator.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2SignedDataGenerator.java
index 138b46a852ecb..bfdd706f6aa16 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2SignedDataGenerator.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2SignedDataGenerator.java
@@ -24,7 +24,7 @@
import java.util.Map;
import java.util.Set;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.cms.CMSAlgorithm;
import org.bouncycastle.cms.CMSSignedDataGenerator;
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/AS2MessageDispositionNotificationEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/AS2MessageDispositionNotificationEntity.java
index 24591a849f69e..4f2c64679192a 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/AS2MessageDispositionNotificationEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/AS2MessageDispositionNotificationEntity.java
@@ -32,13 +32,12 @@
import org.apache.camel.component.as2.api.util.MicUtils;
import org.apache.camel.component.as2.api.util.MicUtils.ReceivedContentMic;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpResponse;
-import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicHeader;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.message.BasicHeader;
public class AS2MessageDispositionNotificationEntity extends MimeEntity {
@@ -68,7 +67,7 @@ public class AS2MessageDispositionNotificationEntity extends MimeEntity {
private Map extensionFields = new HashMap<>();
private ReceivedContentMic receivedContentMic;
- public AS2MessageDispositionNotificationEntity(HttpEntityEnclosingRequest request,
+ public AS2MessageDispositionNotificationEntity(ClassicHttpRequest request,
HttpResponse response,
DispositionMode dispositionMode,
AS2DispositionType dispositionType,
@@ -81,8 +80,8 @@ public AS2MessageDispositionNotificationEntity(HttpEntityEnclosingRequest reques
boolean isMainBody,
PrivateKey decryptingPrivateKey,
Certificate[] validateSigningCertificateChain) throws HttpException {
+ super(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, charset), null);
setMainBody(isMainBody);
- setContentType(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, charset));
this.finalRecipient = HttpMessageUtils.getHeaderValue(request, AS2Header.AS2_TO);
if (this.finalRecipient == null) {
@@ -121,6 +120,7 @@ public AS2MessageDispositionNotificationEntity(String reportingUA,
String[] warningFields,
Map extensionFields,
ReceivedContentMic receivedContentMic) {
+ super(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION), null);
this.reportingUA = reportingUA;
this.mtnName = mtnName;
this.finalRecipient = finalRecipient;
@@ -191,9 +191,7 @@ public void writeTo(OutputStream outstream) throws IOException {
// Write out mime part headers if this is not the main body of
// message.
if (!isMainBody()) {
- HeaderIterator it = headerIterator();
- while (it.hasNext()) {
- Header header = it.nextHeader();
+ for (Header header : getAllHeaders()) {
canonicalOutstream.writeln(header.toString());
}
canonicalOutstream.writeln(); // ensure empty line between
@@ -263,4 +261,8 @@ public void writeTo(OutputStream outstream) throws IOException {
}
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIConsentEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIConsentEntity.java
index 58d6422de1be4..bc6d92acd07c7 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIConsentEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIConsentEntity.java
@@ -16,8 +16,10 @@
*/
package org.apache.camel.component.as2.api.entity;
+import java.io.IOException;
+
import org.apache.camel.component.as2.api.AS2MediaType;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
public class ApplicationEDIConsentEntity extends ApplicationEntity {
@@ -26,4 +28,9 @@ public ApplicationEDIConsentEntity(String content, String charset, String conten
super(content, ContentType.create(AS2MediaType.APPLICATION_EDI_CONSENT, charset), contentTransferEncoding, isMainBody,
fileName);
}
+
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIFACTEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIFACTEntity.java
index e3011cee2bbd7..776991f33a055 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIFACTEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIFACTEntity.java
@@ -16,8 +16,10 @@
*/
package org.apache.camel.component.as2.api.entity;
+import java.io.IOException;
+
import org.apache.camel.component.as2.api.AS2MediaType;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
public class ApplicationEDIFACTEntity extends ApplicationEntity {
@@ -27,4 +29,8 @@ public ApplicationEDIFACTEntity(String content, String charset, String contentTr
filename);
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIX12Entity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIX12Entity.java
index cebd717737cd8..e549e1c4f4784 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIX12Entity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEDIX12Entity.java
@@ -16,8 +16,10 @@
*/
package org.apache.camel.component.as2.api.entity;
+import java.io.IOException;
+
import org.apache.camel.component.as2.api.AS2MediaType;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
public class ApplicationEDIX12Entity extends ApplicationEntity {
@@ -27,4 +29,8 @@ public ApplicationEDIX12Entity(String content, String charset, String contentTra
filename);
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEntity.java
index 67d09c2fe2ac8..e8c081a3901c2 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationEntity.java
@@ -25,9 +25,8 @@
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.util.ObjectHelper;
import org.apache.commons.lang3.StringUtils;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
import org.slf4j.helpers.MessageFormatter;
public abstract class ApplicationEntity extends MimeEntity {
@@ -38,9 +37,8 @@ public abstract class ApplicationEntity extends MimeEntity {
protected ApplicationEntity(String ediMessage, ContentType contentType, String contentTransferEncoding,
boolean isMainBody, String filename) {
+ super(contentType, contentTransferEncoding);
this.ediMessage = ObjectHelper.notNull(ediMessage, "EDI Message");
- setContentType(ObjectHelper.notNull(contentType, "Content Type").toString());
- setContentTransferEncoding(contentTransferEncoding);
setMainBody(isMainBody);
if (StringUtils.isNotBlank(filename)) {
addHeader(AS2Header.CONTENT_DISPOSITION,
@@ -60,9 +58,7 @@ public void writeTo(OutputStream outstream) throws IOException {
// Write out mime part headers if this is not the main body of message.
if (!isMainBody()) {
- HeaderIterator it = headerIterator();
- while (it.hasNext()) {
- Header header = it.nextHeader();
+ for (Header header : getAllHeaders()) {
canonicalOutstream.writeln(header.toString());
}
canonicalOutstream.writeln(); // ensure empty line between headers and body; RFC2046 - 5.1.1
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeCompressedDataEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeCompressedDataEntity.java
index 75f7af008ba63..195103d4351c6 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeCompressedDataEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeCompressedDataEntity.java
@@ -25,11 +25,10 @@
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpException;
-import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicNameValuePair;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.message.BasicNameValuePair;
import org.bouncycastle.cms.CMSCompressedData;
import org.bouncycastle.cms.CMSCompressedDataGenerator;
import org.bouncycastle.cms.CMSException;
@@ -50,9 +49,9 @@ public ApplicationPkcs7MimeCompressedDataEntity(MimeEntity entity2Encrypt,
String compressedContentTransferEncoding,
boolean isMainBody)
throws HttpException {
- setContentType(ContentType.create("application/pkcs7-mime", new BasicNameValuePair("smime-type", "compressed-data"),
- new BasicNameValuePair("name", "smime.p7z")));
- setContentTransferEncoding(compressedContentTransferEncoding);
+ super(ContentType.create("application/pkcs7-mime", new BasicNameValuePair("smime-type", "compressed-data"),
+ new BasicNameValuePair("name", "smime.p7z")),
+ compressedContentTransferEncoding);
addHeader(AS2Header.CONTENT_DISPOSITION, CONTENT_DISPOSITION);
setMainBody(isMainBody);
try {
@@ -64,11 +63,11 @@ public ApplicationPkcs7MimeCompressedDataEntity(MimeEntity entity2Encrypt,
public ApplicationPkcs7MimeCompressedDataEntity(byte[] compressedData, String compressedContentTransferEncoding,
boolean isMainBody) {
+ super(ContentType.create("application/pkcs7-mime", new BasicNameValuePair("smime-type", "compressed-data"),
+ new BasicNameValuePair("name", "smime.p7z")),
+ compressedContentTransferEncoding);
this.compressedData = ObjectHelper.notNull(compressedData, "encryptedData");
- setContentType(ContentType.create("application/pkcs7-mime", new BasicNameValuePair("smime-type", "compressed-data"),
- new BasicNameValuePair("name", "smime.p7z")));
- setContentTransferEncoding(compressedContentTransferEncoding);
addHeader(AS2Header.CONTENT_DISPOSITION, CONTENT_DISPOSITION);
setMainBody(isMainBody);
}
@@ -81,9 +80,7 @@ public void writeTo(OutputStream outstream) throws IOException {
if (!isMainBody()) {
try (CanonicalOutputStream canonicalOutstream = new CanonicalOutputStream(ncos, StandardCharsets.US_ASCII.name())) {
- HeaderIterator it = headerIterator();
- while (it.hasNext()) {
- Header header = it.nextHeader();
+ for (Header header : getAllHeaders()) {
canonicalOutstream.writeln(header.toString());
}
canonicalOutstream.writeln(); // ensure empty line between
@@ -119,4 +116,8 @@ private byte[] createCompressedData(
}
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeEnvelopedDataEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeEnvelopedDataEntity.java
index e2ef7b4352b8b..405a622670452 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeEnvelopedDataEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7MimeEnvelopedDataEntity.java
@@ -26,11 +26,10 @@
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpException;
-import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicNameValuePair;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.message.BasicNameValuePair;
import org.bouncycastle.cms.CMSEnvelopedData;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.cms.CMSException;
@@ -50,9 +49,9 @@ public ApplicationPkcs7MimeEnvelopedDataEntity(MimeEntity entity2Encrypt,
String encryptedContentTransferEncoding,
boolean isMainBody)
throws HttpException {
- setContentType(ContentType.create("application/pkcs7-mime", new BasicNameValuePair("smime-type", "enveloped-data"),
- new BasicNameValuePair("name", "smime.p7m")));
- setContentTransferEncoding(encryptedContentTransferEncoding);
+ super(ContentType.create("application/pkcs7-mime", new BasicNameValuePair("smime-type", "enveloped-data"),
+ new BasicNameValuePair("name", "smime.p7m")),
+ encryptedContentTransferEncoding);
addHeader(AS2Header.CONTENT_DISPOSITION, CONTENT_DISPOSITION);
setMainBody(isMainBody);
try {
@@ -64,11 +63,11 @@ public ApplicationPkcs7MimeEnvelopedDataEntity(MimeEntity entity2Encrypt,
public ApplicationPkcs7MimeEnvelopedDataEntity(byte[] encryptedData, String encryptedContentTransferEncoding,
boolean isMainBody) {
+ super(ContentType.create("application/pkcs7-mime", new BasicNameValuePair("smime-type", "enveloped-data"),
+ new BasicNameValuePair("name", "smime.p7m")),
+ encryptedContentTransferEncoding);
this.encryptedData = ObjectHelper.notNull(encryptedData, "encryptedData");
- setContentType(ContentType.create("application/pkcs7-mime", new BasicNameValuePair("smime-type", "enveloped-data"),
- new BasicNameValuePair("name", "smime.p7m")));
- setContentTransferEncoding(encryptedContentTransferEncoding);
addHeader(AS2Header.CONTENT_DISPOSITION, CONTENT_DISPOSITION);
setMainBody(isMainBody);
}
@@ -81,9 +80,7 @@ public void writeTo(OutputStream outstream) throws IOException {
if (!isMainBody()) {
try (CanonicalOutputStream canonicalOutstream = new CanonicalOutputStream(ncos, StandardCharsets.US_ASCII.name())) {
- HeaderIterator it = headerIterator();
- while (it.hasNext()) {
- Header header = it.nextHeader();
+ for (Header header : getAllHeaders()) {
canonicalOutstream.writeln(header.toString());
}
canonicalOutstream.writeln(); // ensure empty line between
@@ -119,4 +116,8 @@ private byte[] createEncryptedData(
}
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7SignatureEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7SignatureEntity.java
index 686bdaa8b2d1d..47da812eae40d 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7SignatureEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationPkcs7SignatureEntity.java
@@ -26,10 +26,9 @@
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpException;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpException;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.CMSProcessableByteArray;
import org.bouncycastle.cms.CMSSignedData;
@@ -46,13 +45,13 @@ public class ApplicationPkcs7SignatureEntity extends MimeEntity {
public ApplicationPkcs7SignatureEntity(MimeEntity data, CMSSignedDataGenerator signer, String charset,
String contentTransferEncoding, boolean isMainBody) throws HttpException {
+ super(ContentType
+ .parse(EntityUtils.appendParameter(AS2MediaType.APPLICATION_PKCS7_SIGNATURE, "charset", charset)),
+ contentTransferEncoding);
+
ObjectHelper.notNull(data, "Data");
ObjectHelper.notNull(signer, "Signer");
- ContentType contentType
- = ContentType.parse(EntityUtils.appendParameter(AS2MediaType.APPLICATION_PKCS7_SIGNATURE, "charset", charset));
- setContentType(contentType.toString());
- setContentTransferEncoding(contentTransferEncoding);
addHeader(AS2Header.CONTENT_DISPOSITION, CONTENT_DISPOSITION);
addHeader(AS2Header.CONTENT_DESCRIPTION, CONTENT_DESCRIPTION);
setMainBody(isMainBody);
@@ -67,12 +66,12 @@ public ApplicationPkcs7SignatureEntity(byte[] signature,
String charset,
String contentTransferEncoding,
boolean isMainBody) {
+ super(ContentType
+ .parse(EntityUtils.appendParameter(AS2MediaType.APPLICATION_PKCS7_SIGNATURE, "charset", charset)),
+ contentTransferEncoding);
+
this.signature = ObjectHelper.notNull(signature, "signature");
- ContentType contentType = ContentType
- .parse(EntityUtils.appendParameter(AS2MediaType.APPLICATION_PKCS7_SIGNATURE, "charset", charset));
- setContentType(contentType.toString());
- setContentTransferEncoding(contentTransferEncoding);
addHeader(AS2Header.CONTENT_DISPOSITION, CONTENT_DISPOSITION);
addHeader(AS2Header.CONTENT_DESCRIPTION, CONTENT_DESCRIPTION);
setMainBody(isMainBody);
@@ -90,9 +89,7 @@ public void writeTo(OutputStream outstream) throws IOException {
if (!isMainBody()) {
try (CanonicalOutputStream canonicalOutstream = new CanonicalOutputStream(ncos, StandardCharsets.US_ASCII.name())) {
- HeaderIterator it = headerIterator();
- while (it.hasNext()) {
- Header header = it.nextHeader();
+ for (Header header : getAllHeaders()) {
canonicalOutstream.writeln(header.toString());
}
canonicalOutstream.writeln(); // ensure empty line between
@@ -123,4 +120,8 @@ private byte[] createSignature(MimeEntity data, CMSSignedDataGenerator signer) t
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationXMLEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationXMLEntity.java
index 4c5feb5ea70c6..f29731cb26ca2 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationXMLEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/ApplicationXMLEntity.java
@@ -16,8 +16,10 @@
*/
package org.apache.camel.component.as2.api.entity;
+import java.io.IOException;
+
import org.apache.camel.component.as2.api.AS2MediaType;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
public class ApplicationXMLEntity extends ApplicationEntity {
@@ -27,4 +29,8 @@ public ApplicationXMLEntity(String content, String charset, String contentTransf
filename);
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationMultipartReportEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationMultipartReportEntity.java
index 9da207edf9450..cf07c66ea3302 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationMultipartReportEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationMultipartReportEntity.java
@@ -21,25 +21,23 @@
import java.security.cert.Certificate;
import java.util.Map;
-import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.AS2MimeType;
import org.apache.camel.component.as2.api.AS2TransferEncoding;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpResponse;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpResponse;
public class DispositionNotificationMultipartReportEntity extends MultipartReportEntity {
protected DispositionNotificationMultipartReportEntity(String boundary, boolean isMainBody) {
- this.boundary = boundary;
- this.isMainBody = isMainBody;
- removeHeaders(AS2Header.CONTENT_TYPE);
- setContentType(getContentTypeValue(boundary));
+ super(ContentType.parse(AS2MimeType.MULTIPART_REPORT + ";"
+ + "report-type=disposition-notification; boundary=\"" + boundary + "\""),
+ null, isMainBody, boundary);
}
- public DispositionNotificationMultipartReportEntity(HttpEntityEnclosingRequest request,
+ public DispositionNotificationMultipartReportEntity(ClassicHttpRequest request,
HttpResponse response,
DispositionMode dispositionMode,
AS2DispositionType dispositionType,
@@ -55,9 +53,9 @@ public DispositionNotificationMultipartReportEntity(HttpEntityEnclosingRequest r
String mdnMessage,
Certificate[] validateSigningCertificateChain)
throws HttpException {
- super(charset, isMainBody, boundary);
- removeHeaders(AS2Header.CONTENT_TYPE);
- setContentType(getContentTypeValue(boundary));
+ super(ContentType.parse(AS2MimeType.MULTIPART_REPORT + ";"
+ + "report-type=disposition-notification; boundary=\"" + boundary + "\""),
+ null, isMainBody, boundary);
ObjectHelper.notNull(dispositionMode, "dispositionMode");
ObjectHelper.notNull(dispositionType, "dispositionType");
ObjectHelper.notNull(mdnMessage, "mdnMessageTemplate");
@@ -77,10 +75,4 @@ protected TextPlainEntity buildPlainTextReport(String mdnMessage) {
return new TextPlainEntity(mdnMessage, StandardCharsets.US_ASCII.name(), AS2TransferEncoding.SEVENBIT, false);
}
- protected String getContentTypeValue(String boundary) {
- ContentType contentType = ContentType.parse(AS2MimeType.MULTIPART_REPORT + ";"
- + "report-type=disposition-notification; boundary=\"" + boundary + "\"");
- return contentType.toString();
- }
-
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParser.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParser.java
index f9c4fdd50f03f..a812bee44f919 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParser.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParser.java
@@ -22,9 +22,9 @@
import org.apache.camel.component.as2.api.util.AS2HeaderUtils;
import org.apache.camel.component.as2.api.util.AS2HeaderUtils.Parameter;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.ParseException;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.ParseException;
+import org.apache.hc.core5.http.message.ParserCursor;
+import org.apache.hc.core5.util.CharArrayBuffer;
public class DispositionNotificationOptionsParser {
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/EntityParser.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/EntityParser.java
index 782637b5e2de9..e274b6c21fc73 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/EntityParser.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/EntityParser.java
@@ -40,22 +40,21 @@
import org.apache.camel.component.as2.api.util.HttpMessageUtils;
import org.apache.camel.util.ObjectHelper;
import org.apache.commons.codec.DecoderException;
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.NameValuePair;
-import org.apache.http.ParseException;
-import org.apache.http.entity.ContentType;
-import org.apache.http.impl.io.AbstractMessageParser;
-import org.apache.http.impl.io.HttpTransportMetricsImpl;
-import org.apache.http.message.BasicLineParser;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.message.LineParser;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.Args;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpMessage;
+import org.apache.hc.core5.http.NameValuePair;
+import org.apache.hc.core5.http.ParseException;
+import org.apache.hc.core5.http.impl.BasicHttpTransportMetrics;
+import org.apache.hc.core5.http.impl.io.AbstractMessageParser;
+import org.apache.hc.core5.http.message.BasicLineParser;
+import org.apache.hc.core5.http.message.BasicNameValuePair;
+import org.apache.hc.core5.http.message.LineParser;
+import org.apache.hc.core5.http.message.ParserCursor;
+import org.apache.hc.core5.util.Args;
+import org.apache.hc.core5.util.CharArrayBuffer;
import org.bouncycastle.cms.CMSCompressedData;
import org.bouncycastle.cms.CMSEnvelopedData;
import org.bouncycastle.cms.CMSException;
@@ -67,6 +66,9 @@
public final class EntityParser {
+ private static final int CR = 13; //
+ private static final int LF = 10; //
+
private static final int DEFAULT_BUFFER_SIZE = 8 * 1024;
private EntityParser() {
@@ -128,14 +130,14 @@ public static boolean isBoundaryDelimiter(final CharArrayBuffer buffer, ParserCu
return true;
}
- public static void skipPreambleAndStartBoundary(AS2SessionInputBuffer inbuffer, String boundary)
+ public static void skipPreambleAndStartBoundary(AS2SessionInputBuffer inbuffer, InputStream is, String boundary)
throws HttpException {
boolean foundStartBoundary;
try {
foundStartBoundary = false;
CharArrayBuffer lineBuffer = new CharArrayBuffer(1024);
- while (inbuffer.readLine(lineBuffer) != -1) {
+ while (inbuffer.readLine(lineBuffer, is) != -1) {
final ParserCursor cursor = new ParserCursor(0, lineBuffer.length());
if (isBoundaryDelimiter(lineBuffer, cursor, boundary)) {
foundStartBoundary = true;
@@ -153,14 +155,14 @@ public static void skipPreambleAndStartBoundary(AS2SessionInputBuffer inbuffer,
}
- public static void skipToBoundary(AS2SessionInputBuffer inbuffer, String boundary)
+ public static void skipToBoundary(AS2SessionInputBuffer inbuffer, InputStream is, String boundary)
throws HttpException {
boolean foundEndBoundary;
try {
foundEndBoundary = false;
CharArrayBuffer lineBuffer = new CharArrayBuffer(1024);
- while (inbuffer.readLine(lineBuffer) != -1) {
+ while (inbuffer.readLine(lineBuffer, is) != -1) {
final ParserCursor cursor = new ParserCursor(0, lineBuffer.length());
if (isBoundaryDelimiter(lineBuffer, cursor, boundary)) {
foundEndBoundary = true;
@@ -197,11 +199,10 @@ public static MimeEntity parseEntity(byte[] content) throws HttpException {
try {
InputStream is = new ByteArrayInputStream(content);
- AS2SessionInputBuffer inbuffer = new AS2SessionInputBuffer(new HttpTransportMetricsImpl(), DEFAULT_BUFFER_SIZE);
- inbuffer.bind(is);
+ AS2SessionInputBuffer inbuffer = new AS2SessionInputBuffer(new BasicHttpTransportMetrics(), DEFAULT_BUFFER_SIZE);
// Read Text Report Body Part Headers
- Header[] headers = AbstractMessageParser.parseHeaders(inbuffer, -1, -1, BasicLineParser.INSTANCE,
+ Header[] headers = AbstractMessageParser.parseHeaders(inbuffer, is, -1, -1, BasicLineParser.INSTANCE,
new ArrayList<>());
// Get Content-Type and Content-Transfer-Encoding
@@ -218,7 +219,8 @@ public static MimeEntity parseEntity(byte[] content) throws HttpException {
throw new HttpException("Failed to find Content-Type header in enveloped entity");
}
- MimeEntity entity = parseEntityBody(inbuffer, null, entityContentType, entityContentTransferEncoding, "", headers);
+ MimeEntity entity
+ = parseEntityBody(inbuffer, is, null, entityContentType, entityContentTransferEncoding, "", headers);
Objects.requireNonNull(entity, "Trying to parse entity body resulted in a null MimeEntity");
entity.removeAllHeaders();
entity.setHeaders(headers);
@@ -266,7 +268,8 @@ public static byte[] decryptData(byte[] encryptedData, PrivateKey privateKey) th
}
private static void parseApplicationPkcs7MimeCompressedEntity(
- HttpMessage message, AS2SessionInputBuffer inBuffer, ContentType contentType, String contentTransferEncoding)
+ HttpMessage message, InputStream is, AS2SessionInputBuffer inBuffer, ContentType contentType,
+ String contentTransferEncoding)
throws HttpException {
ApplicationPkcs7MimeCompressedDataEntity applicationPkcs7MimeCompressedDataEntity = null;
@@ -285,7 +288,8 @@ private static void parseApplicationPkcs7MimeCompressedEntity(
try {
applicationPkcs7MimeCompressedDataEntity
- = parseApplicationPkcs7MimeCompressedDataEntityBody(inBuffer, null, contentType, contentTransferEncoding);
+ = parseApplicationPkcs7MimeCompressedDataEntityBody(inBuffer, is, null, contentType,
+ contentTransferEncoding);
applicationPkcs7MimeCompressedDataEntity.setMainBody(true);
EntityUtils.setMessageEntity(message, applicationPkcs7MimeCompressedDataEntity);
@@ -296,7 +300,8 @@ private static void parseApplicationPkcs7MimeCompressedEntity(
}
private static void parseApplicationPkcs7MimeEnvelopedEntity(
- HttpMessage message, AS2SessionInputBuffer inBuffer, ContentType contentType, String contentTransferEncoding)
+ HttpMessage message, InputStream is, AS2SessionInputBuffer inBuffer, ContentType contentType,
+ String contentTransferEncoding)
throws HttpException {
ApplicationPkcs7MimeEnvelopedDataEntity applicationPkcs7MimeEnvelopedDataEntity = null;
@@ -315,7 +320,8 @@ private static void parseApplicationPkcs7MimeEnvelopedEntity(
try {
applicationPkcs7MimeEnvelopedDataEntity
- = parseApplicationPkcs7MimeEnvelopedDataEntityBody(inBuffer, null, contentType, contentTransferEncoding);
+ = parseApplicationPkcs7MimeEnvelopedDataEntityBody(inBuffer, is, null, contentType,
+ contentTransferEncoding);
applicationPkcs7MimeEnvelopedDataEntity.setMainBody(true);
EntityUtils.setMessageEntity(message, applicationPkcs7MimeEnvelopedDataEntity);
@@ -326,7 +332,7 @@ private static void parseApplicationPkcs7MimeEnvelopedEntity(
}
private static void parseMultipartSignedEntity(
- HttpMessage message, AS2SessionInputBuffer inBuffer, String boundary, String charsetName,
+ HttpMessage message, InputStream is, AS2SessionInputBuffer inBuffer, String boundary, String charsetName,
String contentTransferEncoding)
throws HttpException {
MultipartSignedEntity multipartSignedEntity = null;
@@ -354,7 +360,7 @@ private static void parseMultipartSignedEntity(
}
multipartSignedEntity
- = parseMultipartSignedEntityBody(inBuffer, boundary, micalg, charsetName, contentTransferEncoding);
+ = parseMultipartSignedEntityBody(inBuffer, is, boundary, micalg, charsetName, contentTransferEncoding);
multipartSignedEntity.setMainBody(true);
EntityUtils.setMessageEntity(message, multipartSignedEntity);
@@ -367,7 +373,8 @@ private static void parseMultipartSignedEntity(
}
private static void parseApplicationEDIEntity(
- HttpMessage message, AS2SessionInputBuffer inBuffer, ContentType contentType, String contentTransferEncoding)
+ HttpMessage message, InputStream is, AS2SessionInputBuffer inBuffer, ContentType contentType,
+ String contentTransferEncoding)
throws HttpException {
ApplicationEntity applicationEntity = null;
@@ -385,7 +392,7 @@ private static void parseApplicationEDIEntity(
try {
- applicationEntity = parseEDIEntityBody(inBuffer, null, contentType, contentTransferEncoding, "");
+ applicationEntity = parseEDIEntityBody(inBuffer, is, null, contentType, contentTransferEncoding, "");
applicationEntity.setMainBody(true);
EntityUtils.setMessageEntity(message, applicationEntity);
@@ -396,7 +403,7 @@ private static void parseApplicationEDIEntity(
}
private static void parseMessageDispositionNotificationReportEntity(
- HttpMessage message, AS2SessionInputBuffer inBuffer, String boundary, String charsetName,
+ HttpMessage message, InputStream is, AS2SessionInputBuffer inBuffer, String boundary, String charsetName,
String contentTransferEncoding)
throws HttpException {
DispositionNotificationMultipartReportEntity dispositionNotificationMultipartReportEntity = null;
@@ -417,7 +424,7 @@ private static void parseMessageDispositionNotificationReportEntity(
try {
dispositionNotificationMultipartReportEntity
- = parseMultipartReportEntityBody(inBuffer, boundary, charsetName, contentTransferEncoding);
+ = parseMultipartReportEntityBody(inBuffer, is, boundary, charsetName, contentTransferEncoding);
EntityUtils.setMessageEntity(message, dispositionNotificationMultipartReportEntity);
@@ -464,33 +471,35 @@ public static void parseAS2MessageEntity(HttpMessage message) throws HttpExcepti
String contentTransferEncoding
= HttpMessageUtils.getHeaderValue(message, AS2Header.CONTENT_TRANSFER_ENCODING);
- AS2SessionInputBuffer inBuffer = new AS2SessionInputBuffer(new HttpTransportMetricsImpl(), 8 * 1024);
- inBuffer.bind(entity.getContent());
+ AS2SessionInputBuffer inBuffer = new AS2SessionInputBuffer(
+ new BasicHttpTransportMetrics(), 8 * 1024);
switch (contentType.getMimeType().toLowerCase()) {
case AS2MimeType.APPLICATION_EDIFACT:
case AS2MimeType.APPLICATION_EDI_X12:
case AS2MimeType.APPLICATION_EDI_CONSENT:
- parseApplicationEDIEntity(message, inBuffer, contentType, contentTransferEncoding);
+ parseApplicationEDIEntity(message, entity.getContent(), inBuffer, contentType, contentTransferEncoding);
break;
case AS2MimeType.MULTIPART_SIGNED:
- parseMultipartSignedEntity(message, inBuffer, boundary, charsetName, contentTransferEncoding);
+ parseMultipartSignedEntity(message, entity.getContent(), inBuffer, boundary, charsetName,
+ contentTransferEncoding);
break;
case AS2MimeType.APPLICATION_PKCS7_MIME:
switch (contentType.getParameter("smime-type")) {
case "compressed-data":
- parseApplicationPkcs7MimeCompressedEntity(message, inBuffer, contentType,
+ parseApplicationPkcs7MimeCompressedEntity(message, entity.getContent(), inBuffer, contentType,
contentTransferEncoding);
break;
case "enveloped-data":
- parseApplicationPkcs7MimeEnvelopedEntity(message, inBuffer, contentType,
+ parseApplicationPkcs7MimeEnvelopedEntity(message, entity.getContent(), inBuffer, contentType,
contentTransferEncoding);
break;
default:
}
break;
case AS2MimeType.MULTIPART_REPORT:
- parseMessageDispositionNotificationReportEntity(message, inBuffer, boundary, charsetName,
+ parseMessageDispositionNotificationReportEntity(message, entity.getContent(), inBuffer, boundary,
+ charsetName,
contentTransferEncoding);
break;
default:
@@ -507,6 +516,7 @@ public static void parseAS2MessageEntity(HttpMessage message) throws HttpExcepti
public static MultipartSignedEntity parseMultipartSignedEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
String micalg,
String charsetName,
@@ -524,17 +534,23 @@ public static MultipartSignedEntity parseMultipartSignedEntityBody(
inbuffer.setCharsetDecoder(charsetDecoder);
- MultipartSignedEntity multipartSignedEntity = new MultipartSignedEntity(boundary, false);
+ NameValuePair[] parameters = new NameValuePair[] {
+ new BasicNameValuePair("protocol", AS2MimeType.APPLICATION_PKCS7_SIGNATURE),
+ new BasicNameValuePair("boundary", boundary), new BasicNameValuePair("micalg", micalg),
+ new BasicNameValuePair("charset", charsetName) };
+ ContentType contentType = ContentType.create(AS2MimeType.MULTIPART_SIGNED, parameters);
+ MultipartSignedEntity multipartSignedEntity
+ = new MultipartSignedEntity(contentType, contentTransferEncoding, boundary, false);
// Skip Preamble and Start Boundary line
- skipPreambleAndStartBoundary(inbuffer, boundary);
+ skipPreambleAndStartBoundary(inbuffer, is, boundary);
//
// Parse Signed Entity Part
//
// Read Text Report Body Part Headers
- Header[] headers = AbstractMessageParser.parseHeaders(inbuffer, -1, -1, BasicLineParser.INSTANCE,
+ Header[] headers = AbstractMessageParser.parseHeaders(inbuffer, is, -1, -1, BasicLineParser.INSTANCE,
new ArrayList<>());
// Get Content-Type and Content-Transfer-Encoding
@@ -551,7 +567,7 @@ public static MultipartSignedEntity parseMultipartSignedEntityBody(
throw new HttpException("Failed to find Content-Type header in signed entity body part");
}
- MimeEntity signedEntity = parseEntityBody(inbuffer, boundary, signedEntityContentType,
+ MimeEntity signedEntity = parseEntityBody(inbuffer, is, boundary, signedEntityContentType,
signedEntityContentTransferEncoding, "", headers);
signedEntity.removeAllHeaders();
signedEntity.setHeaders(headers);
@@ -565,7 +581,7 @@ public static MultipartSignedEntity parseMultipartSignedEntityBody(
//
// Read Signature Body Part Headers
- headers = AbstractMessageParser.parseHeaders(inbuffer, -1, -1, BasicLineParser.INSTANCE,
+ headers = AbstractMessageParser.parseHeaders(inbuffer, is, -1, -1, BasicLineParser.INSTANCE,
new ArrayList<>());
// Get Content-Type and Content-Transfer-Encoding
@@ -587,7 +603,7 @@ public static MultipartSignedEntity parseMultipartSignedEntityBody(
}
ApplicationPkcs7SignatureEntity applicationPkcs7SignatureEntity = parseApplicationPkcs7SignatureEntityBody(inbuffer,
- boundary, signatureContentType, signatureContentTransferEncoding);
+ is, boundary, signatureContentType, signatureContentTransferEncoding);
applicationPkcs7SignatureEntity.removeAllHeaders();
applicationPkcs7SignatureEntity.setHeaders(headers);
multipartSignedEntity.addPart(applicationPkcs7SignatureEntity);
@@ -595,13 +611,6 @@ public static MultipartSignedEntity parseMultipartSignedEntityBody(
//
// End Signature Body Part
- NameValuePair[] parameters = new NameValuePair[] {
- new BasicNameValuePair("protocol", AS2MimeType.APPLICATION_PKCS7_SIGNATURE),
- new BasicNameValuePair("boundary", boundary), new BasicNameValuePair("micalg", micalg),
- new BasicNameValuePair("charset", charsetName) };
- ContentType contentType = ContentType.create(AS2MimeType.MULTIPART_SIGNED, parameters);
- multipartSignedEntity.setContentType(contentType);
- multipartSignedEntity.setContentTransferEncoding(contentTransferEncoding);
return multipartSignedEntity;
} catch (Exception e) {
@@ -615,6 +624,7 @@ public static MultipartSignedEntity parseMultipartSignedEntityBody(
public static DispositionNotificationMultipartReportEntity parseMultipartReportEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
String charsetName,
String contentTransferEncoding)
@@ -635,14 +645,14 @@ public static DispositionNotificationMultipartReportEntity parseMultipartReportE
= new DispositionNotificationMultipartReportEntity(boundary, false);
// Skip Preamble and Start Boundary line
- skipPreambleAndStartBoundary(inbuffer, boundary);
+ skipPreambleAndStartBoundary(inbuffer, is, boundary);
//
// Parse Text Report Body Part
//
// Read Text Report Body Part Headers
- Header[] headers = AbstractMessageParser.parseHeaders(inbuffer, -1, -1, BasicLineParser.INSTANCE,
+ Header[] headers = AbstractMessageParser.parseHeaders(inbuffer, is, -1, -1, BasicLineParser.INSTANCE,
new ArrayList<>());
// Get Content-Type and Content-Transfer-Encoding
@@ -667,7 +677,8 @@ public static DispositionNotificationMultipartReportEntity parseMultipartReportE
String textReportCharsetName = textReportContentType.getCharset() == null
? StandardCharsets.US_ASCII.name() : textReportContentType.getCharset().name();
TextPlainEntity textReportEntity
- = parseTextPlainEntityBody(inbuffer, boundary, textReportCharsetName, textReportContentTransferEncoding);
+ = parseTextPlainEntityBody(inbuffer, is, boundary, textReportCharsetName,
+ textReportContentTransferEncoding);
textReportEntity.setHeaders(headers);
dispositionNotificationMultipartReportEntity.addPart(textReportEntity);
@@ -679,7 +690,7 @@ public static DispositionNotificationMultipartReportEntity parseMultipartReportE
//
// Read Disposition Notification Body Part Headers
- headers = AbstractMessageParser.parseHeaders(inbuffer, -1, -1, BasicLineParser.INSTANCE,
+ headers = AbstractMessageParser.parseHeaders(inbuffer, is, -1, -1, BasicLineParser.INSTANCE,
new ArrayList<>());
// Get Content-Type and Content-Transfer-Encoding
@@ -703,14 +714,13 @@ public static DispositionNotificationMultipartReportEntity parseMultipartReportE
? StandardCharsets.US_ASCII.name() : dispositionNotificationContentType.getCharset().name();
AS2MessageDispositionNotificationEntity messageDispositionNotificationEntity
= parseMessageDispositionNotificationEntityBody(
- inbuffer, boundary, dispositionNotificationCharsetName);
+ inbuffer, is, boundary, dispositionNotificationCharsetName);
messageDispositionNotificationEntity.setHeaders(headers);
dispositionNotificationMultipartReportEntity.addPart(messageDispositionNotificationEntity);
//
// End Disposition Notification Body Part
- dispositionNotificationMultipartReportEntity.setContentTransferEncoding(contentTransferEncoding);
return dispositionNotificationMultipartReportEntity;
} catch (Exception e) {
ParseException parseException = new ParseException("failed to parse text entity");
@@ -724,6 +734,7 @@ public static DispositionNotificationMultipartReportEntity parseMultipartReportE
public static TextPlainEntity parseTextPlainEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
String charsetName,
String contentTransferEncoding)
@@ -740,7 +751,7 @@ public static TextPlainEntity parseTextPlainEntityBody(
inbuffer.setCharsetDecoder(charsetDecoder);
- String text = parseBodyPartText(inbuffer, boundary);
+ String text = parseBodyPartText(inbuffer, is, boundary);
if (contentTransferEncoding != null) {
text = EntityUtils.decode(text, charset, contentTransferEncoding);
}
@@ -756,6 +767,7 @@ public static TextPlainEntity parseTextPlainEntityBody(
public static AS2MessageDispositionNotificationEntity parseMessageDispositionNotificationEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
String charsetName)
throws ParseException {
@@ -771,13 +783,11 @@ public static AS2MessageDispositionNotificationEntity parseMessageDispositionNot
inbuffer.setCharsetDecoder(charsetDecoder);
- List dispositionNotificationFields = parseBodyPartFields(inbuffer, boundary,
+ List dispositionNotificationFields = parseBodyPartFields(inbuffer, is, boundary,
BasicLineParser.INSTANCE, new ArrayList<>());
AS2MessageDispositionNotificationEntity as2MessageDispositionNotificationEntity
= DispositionNotificationContentUtils.parseDispositionNotification(dispositionNotificationFields);
- ContentType contentType = ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, charset);
- as2MessageDispositionNotificationEntity.setContentType(contentType);
return as2MessageDispositionNotificationEntity;
} catch (Exception e) {
ParseException parseException = new ParseException("failed to parse MDN entity");
@@ -790,6 +800,7 @@ public static AS2MessageDispositionNotificationEntity parseMessageDispositionNot
public static MimeEntity parseEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
ContentType entityContentType,
String contentTransferEncoding,
@@ -813,41 +824,42 @@ public static MimeEntity parseEntityBody(
case AS2MimeType.APPLICATION_EDI_X12:
case AS2MimeType.APPLICATION_EDI_CONSENT:
case AS2MimeType.APPLICATION_XML:
- entity = parseEDIEntityBody(inbuffer, boundary, entityContentType, contentTransferEncoding, filename);
+ entity = parseEDIEntityBody(inbuffer, is, boundary, entityContentType, contentTransferEncoding, filename);
break;
case AS2MimeType.MULTIPART_SIGNED:
String multipartSignedBoundary = AS2HeaderUtils.getParameterValue(headers,
AS2Header.CONTENT_TYPE, "boundary");
String micalg = AS2HeaderUtils.getParameterValue(headers, AS2Header.CONTENT_TYPE, "micalg");
- entity = parseMultipartSignedEntityBody(inbuffer, multipartSignedBoundary, micalg, charset.name(),
+ entity = parseMultipartSignedEntityBody(inbuffer, is, multipartSignedBoundary, micalg, charset.name(),
contentTransferEncoding);
- skipToBoundary(inbuffer, boundary);
+ skipToBoundary(inbuffer, is, boundary);
break;
case AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION:
- entity = parseMessageDispositionNotificationEntityBody(inbuffer, boundary, charset.name());
+ entity = parseMessageDispositionNotificationEntityBody(inbuffer, is, boundary, charset.name());
break;
case AS2MimeType.MULTIPART_REPORT:
String multipartReportBoundary = AS2HeaderUtils.getParameterValue(headers,
AS2Header.CONTENT_TYPE, "boundary");
- entity = parseMultipartReportEntityBody(inbuffer, multipartReportBoundary, charset.name(),
+ entity = parseMultipartReportEntityBody(inbuffer, is, multipartReportBoundary, charset.name(),
contentTransferEncoding);
- skipToBoundary(inbuffer, boundary);
+ skipToBoundary(inbuffer, is, boundary);
break;
case AS2MimeType.TEXT_PLAIN:
- entity = parseTextPlainEntityBody(inbuffer, boundary, charset.name(), contentTransferEncoding);
+ entity = parseTextPlainEntityBody(inbuffer, is, boundary, charset.name(), contentTransferEncoding);
break;
case AS2MimeType.APPLICATION_PKCS7_SIGNATURE:
- entity = parseApplicationPkcs7SignatureEntityBody(inbuffer, boundary, entityContentType,
+ entity = parseApplicationPkcs7SignatureEntityBody(inbuffer, is, boundary, entityContentType,
contentTransferEncoding);
break;
case AS2MimeType.APPLICATION_PKCS7_MIME:
switch (entityContentType.getParameter("smime-type")) {
case "compressed-data":
- entity = parseApplicationPkcs7MimeCompressedDataEntityBody(inbuffer, boundary, entityContentType,
+ entity = parseApplicationPkcs7MimeCompressedDataEntityBody(inbuffer, is, boundary,
+ entityContentType,
contentTransferEncoding);
break;
case "enveloped-data":
- entity = parseApplicationPkcs7MimeEnvelopedDataEntityBody(inbuffer, boundary, entityContentType,
+ entity = parseApplicationPkcs7MimeEnvelopedDataEntityBody(inbuffer, is, boundary, entityContentType,
contentTransferEncoding);
break;
default:
@@ -872,6 +884,7 @@ public static MimeEntity parseEntityBody(
public static ApplicationEntity parseEDIEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
ContentType ediMessageContentType,
String contentTransferEncoding,
@@ -888,7 +901,7 @@ public static ApplicationEntity parseEDIEntityBody(
inbuffer.setCharsetDecoder(charsetDecoder);
- String ediMessageBodyPartContent = parseBodyPartText(inbuffer, boundary);
+ String ediMessageBodyPartContent = parseBodyPartText(inbuffer, is, boundary);
if (contentTransferEncoding != null) {
ediMessageBodyPartContent = EntityUtils.decode(ediMessageBodyPartContent, charset, contentTransferEncoding);
}
@@ -906,6 +919,7 @@ public static ApplicationEntity parseEDIEntityBody(
public static ApplicationPkcs7SignatureEntity parseApplicationPkcs7SignatureEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
ContentType contentType,
String contentTransferEncoding)
@@ -914,7 +928,7 @@ public static ApplicationPkcs7SignatureEntity parseApplicationPkcs7SignatureEnti
CharsetDecoder previousDecoder = inbuffer.getCharsetDecoder();
try {
- byte[] signature = parseBodyPartBytes(inbuffer, boundary, contentType, contentTransferEncoding);
+ byte[] signature = parseBodyPartBytes(inbuffer, is, boundary, contentType, contentTransferEncoding);
Charset charset = contentType.getCharset();
if (charset == null) {
@@ -933,6 +947,7 @@ public static ApplicationPkcs7SignatureEntity parseApplicationPkcs7SignatureEnti
public static ApplicationPkcs7MimeEnvelopedDataEntity parseApplicationPkcs7MimeEnvelopedDataEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
ContentType contentType,
String contentTransferEncoding)
@@ -941,7 +956,7 @@ public static ApplicationPkcs7MimeEnvelopedDataEntity parseApplicationPkcs7MimeE
CharsetDecoder previousDecoder = inbuffer.getCharsetDecoder();
try {
- byte[] encryptedContent = parseBodyPartBytes(inbuffer, boundary, contentType, contentTransferEncoding);
+ byte[] encryptedContent = parseBodyPartBytes(inbuffer, is, boundary, contentType, contentTransferEncoding);
return new ApplicationPkcs7MimeEnvelopedDataEntity(encryptedContent, contentTransferEncoding, false);
} catch (Exception e) {
ParseException parseException = new ParseException("failed to parse PKCS7 Mime entity");
@@ -954,6 +969,7 @@ public static ApplicationPkcs7MimeEnvelopedDataEntity parseApplicationPkcs7MimeE
public static ApplicationPkcs7MimeCompressedDataEntity parseApplicationPkcs7MimeCompressedDataEntityBody(
AS2SessionInputBuffer inbuffer,
+ InputStream is,
String boundary,
ContentType contentType,
String contentTransferEncoding)
@@ -962,7 +978,7 @@ public static ApplicationPkcs7MimeCompressedDataEntity parseApplicationPkcs7Mime
CharsetDecoder previousDecoder = inbuffer.getCharsetDecoder();
try {
- byte[] compressedContent = parseBodyPartBytes(inbuffer, boundary, contentType, contentTransferEncoding);
+ byte[] compressedContent = parseBodyPartBytes(inbuffer, is, boundary, contentType, contentTransferEncoding);
return new ApplicationPkcs7MimeCompressedDataEntity(compressedContent, contentTransferEncoding, false);
} catch (Exception e) {
ParseException parseException = new ParseException("failed to parse PKCS7 Mime entity");
@@ -975,6 +991,7 @@ public static ApplicationPkcs7MimeCompressedDataEntity parseApplicationPkcs7Mime
public static byte[] parseBodyPartBytes(
final AS2SessionInputBuffer inbuffer,
+ InputStream is,
final String boundary,
ContentType contentType,
String contentTransferEncoding)
@@ -988,7 +1005,7 @@ public static byte[] parseBodyPartBytes(
inbuffer.setCharsetDecoder(null);
}
- String bodyContent = parseBodyPartText(inbuffer, boundary);
+ String bodyContent = parseBodyPartText(inbuffer, is, boundary);
byte[] bodyContentBytes;
if (charset != null) {
@@ -1005,12 +1022,13 @@ public static byte[] parseBodyPartBytes(
public static String parseBodyPartText(
final AS2SessionInputBuffer inbuffer,
+ InputStream is,
final String boundary)
throws IOException {
CharArrayBuffer buffer = new CharArrayBuffer(DEFAULT_BUFFER_SIZE);
CharArrayBuffer line = new CharArrayBuffer(DEFAULT_BUFFER_SIZE);
while (true) {
- final int l = inbuffer.readLine(line);
+ final int l = inbuffer.readLine(line, is);
if (l == -1) {
break;
}
@@ -1024,10 +1042,10 @@ public static String parseBodyPartText(
buffer.append(line);
if (inbuffer.isLastLineReadEnrichedByCarriageReturn()) {
- buffer.append((char) HTTP.CR);
+ buffer.append((char) CR);
}
if (inbuffer.isLastLineReadTerminatedByLineFeed()) {
- buffer.append((char) HTTP.LF);
+ buffer.append((char) LF);
}
line.clear();
}
@@ -1037,6 +1055,7 @@ public static String parseBodyPartText(
public static List parseBodyPartFields(
final AS2SessionInputBuffer inbuffer,
+ final InputStream is,
final String boundary,
final LineParser parser,
final List fields)
@@ -1051,7 +1070,7 @@ public static List parseBodyPartFields(
current = new CharArrayBuffer(64);
}
- final int l = inbuffer.readLine(current);
+ final int l = inbuffer.readLine(current, is);
if (l == -1 || current.length() < 1) {
break;
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MimeEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MimeEntity.java
index eecca6784bfea..5b6f4153a44a2 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MimeEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MimeEntity.java
@@ -27,13 +27,11 @@
import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.entity.AbstractHttpEntity;
-import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.message.HeaderGroup;
-import org.apache.http.protocol.HTTP;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.io.entity.AbstractHttpEntity;
+import org.apache.hc.core5.http.message.BasicHeader;
+import org.apache.hc.core5.http.message.HeaderGroup;
public abstract class MimeEntity extends AbstractHttpEntity {
@@ -61,13 +59,19 @@ public void close() {
protected boolean isMainBody;
- protected Header contentTransferEncoding;
-
protected long contentLength = RECALCULATE_CONTENT_LENGTH;
private final HeaderGroup headergroup = new HeaderGroup();
- protected MimeEntity() {
+ protected MimeEntity(ContentType contentType, String contentTransferEncoding) {
+ super(contentType, contentTransferEncoding);
+ if (contentType != null) {
+ this.headergroup.addHeader(new BasicHeader(AS2Header.CONTENT_TYPE, contentType));
+ }
+ if (contentTransferEncoding != null) {
+ BasicHeader encoding = new BasicHeader(AS2Header.CONTENT_TRANSFER_ENCODING, contentTransferEncoding);
+ this.headergroup.addHeader(encoding);
+ }
}
public boolean isMainBody() {
@@ -78,46 +82,6 @@ public void setMainBody(boolean isMainBody) {
this.isMainBody = isMainBody;
}
- public String getContentTypeValue() {
- Header contentTypeHeader = getContentType();
- if (contentTypeHeader != null) {
- return contentTypeHeader.getValue();
- }
- return null;
- }
-
- public void setContentType(ContentType contentType) {
- super.setContentType(contentType == null ? null : contentType.toString());
- }
-
- @Override
- public void setContentType(Header contentType) {
- super.setContentType(contentType);
- if (contentType != null) {
- addHeader(contentType);
- } else {
- removeHeaders(AS2Header.CONTENT_TYPE);
- }
- }
-
- public String getContentEncodingValue() {
- Header contentEncodingHeader = getContentEncoding();
- if (contentEncodingHeader != null) {
- return contentEncodingHeader.getValue();
- }
- return null;
- }
-
- @Override
- public void setContentEncoding(Header contentEncoding) {
- super.setContentEncoding(contentEncoding);
- if (contentEncoding != null) {
- addHeader(contentEncoding);
- } else {
- removeHeaders(HTTP.CONTENT_ENCODING);
- }
- }
-
public String getContentTransferEncodingValue() {
Header contentTransferEncodingHeader = getContentTransferEncoding();
if (contentTransferEncodingHeader != null) {
@@ -127,42 +91,13 @@ public String getContentTransferEncodingValue() {
}
/**
- * Obtains the Content-Transfer-Encoding header. The default implementation returns the value of the
- * {@link #contentEncoding contentEncoding} attribute.
+ * Obtains the Content-Transfer-Encoding header.
*
* @return the Content-Transfer-Encoding header, or {@code null}
*/
public Header getContentTransferEncoding() {
- return this.contentTransferEncoding;
- }
-
- /**
- * Specifies the Content-Transfer-Encoding header. The default implementation sets the value of the
- * {@link #contentTransferEncoding contentTransferEncoding} attribute.
- *
- * @param contentTransferEncoding the new Content-Transfer-Encoding header, or {@code null} to unset
- */
- public void setContentTransferEncoding(final Header contentTransferEncoding) {
- this.contentTransferEncoding = contentTransferEncoding;
- if (contentTransferEncoding != null) {
- addHeader(contentTransferEncoding);
- } else {
- removeHeaders(AS2Header.CONTENT_TRANSFER_ENCODING);
- }
- }
-
- /**
- * Specifies the Content-Transfer-Encoding header, as a string. The default implementation calls
- * {@link #setContentTransferEncoding(Header) setContentTransferEncoding(Header)}.
- *
- * @param contentTranserEncoding - the new Content-Transfer-Encoding header, or {@code null} to unset
- */
- public void setContentTransferEncoding(final String contentTranserEncoding) {
- Header h = null;
- if (contentTranserEncoding != null) {
- h = new BasicHeader(AS2Header.CONTENT_TRANSFER_ENCODING, contentTranserEncoding);
- }
- setContentTransferEncoding(h);
+ return (super.getContentEncoding() == null)
+ ? null : new BasicHeader(AS2Header.CONTENT_TRANSFER_ENCODING, super.getContentEncoding());
}
public boolean containsHeader(final String name) {
@@ -182,7 +117,7 @@ public Header getLastHeader(final String name) {
}
public Header[] getAllHeaders() {
- return this.headergroup.getAllHeaders();
+ return this.headergroup.getHeaders();
}
public void addHeader(final Header header) {
@@ -195,12 +130,12 @@ public void addHeader(final String name, final String value) {
}
public void setHeader(final Header header) {
- this.headergroup.updateHeader(header);
+ this.headergroup.setHeader(header);
}
public void setHeader(final String name, final String value) {
ObjectHelper.notNull(name, "Header name");
- this.headergroup.updateHeader(new BasicHeader(name, value));
+ this.headergroup.setHeader(new BasicHeader(name, value));
}
public void setHeaders(final Header[] headers) {
@@ -215,26 +150,13 @@ public void removeHeaders(final String name) {
if (name == null) {
return;
}
- for (final HeaderIterator i = this.headergroup.iterator(); i.hasNext();) {
- final Header header = i.nextHeader();
- if (name.equalsIgnoreCase(header.getName())) {
- i.remove();
- }
- }
+ this.headergroup.removeHeaders(name);
}
public void removeAllHeaders() {
this.headergroup.clear();
}
- public HeaderIterator headerIterator() {
- return this.headergroup.iterator();
- }
-
- public HeaderIterator headerIterator(final String name) {
- return this.headergroup.iterator(name);
- }
-
@Override
public boolean isRepeatable() {
return true;
@@ -272,7 +194,7 @@ public String getCharset() {
if (getContentType() == null) {
return StandardCharsets.US_ASCII.name();
}
- ContentType contentType = ContentType.parse(getContentType().getValue());
+ ContentType contentType = ContentType.parse(getContentType());
Charset charset = contentType.getCharset();
if (charset != null) {
return charset.name();
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartMimeEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartMimeEntity.java
index aa7d0936c93d9..dfd301e0e54a0 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartMimeEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartMimeEntity.java
@@ -21,11 +21,11 @@
import java.util.ArrayList;
import java.util.List;
+import org.apache.camel.component.as2.api.AS2SignedDataGenerator;
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.component.as2.api.util.EntityUtils;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
public abstract class MultipartMimeEntity extends MimeEntity {
@@ -33,16 +33,17 @@ public abstract class MultipartMimeEntity extends MimeEntity {
private final List parts = new ArrayList<>();
- protected MultipartMimeEntity(ContentType contentType) {
- this(contentType, false, null);
+ protected MultipartMimeEntity(ContentType contentType, String contentTransferEncoding) {
+ super(contentType, contentTransferEncoding);
}
- protected MultipartMimeEntity(ContentType contentType, boolean isMainBody) {
- this(contentType, isMainBody, null);
+ protected MultipartMimeEntity(AS2SignedDataGenerator signer, boolean isMainBody, String boundary) {
+ this(signer.createMultipartSignedContentType(boundary), null, isMainBody, boundary);
}
- protected MultipartMimeEntity(ContentType contentType, boolean isMainBody, String boundary) {
- setContentType(contentType);
+ protected MultipartMimeEntity(ContentType contentType, String contentTransferEncoding, boolean isMainBody,
+ String boundary) {
+ super(contentType, contentTransferEncoding);
setMainBody(isMainBody);
if (boundary != null) {
@@ -53,9 +54,6 @@ protected MultipartMimeEntity(ContentType contentType, boolean isMainBody, Strin
}
- protected MultipartMimeEntity() {
- }
-
public String getBoundary() {
return boundary;
}
@@ -99,9 +97,7 @@ public void writeTo(OutputStream outstream) throws IOException {
// Write out mime part headers if this is not the main body of message.
if (!isMainBody()) {
- HeaderIterator it = headerIterator();
- while (it.hasNext()) {
- Header header = it.nextHeader();
+ for (Header header : getAllHeaders()) {
canonicalOutstream.writeln(header.toString());
}
canonicalOutstream.writeln(); // ensure empty line between headers and body; RFC2046 - 5.1.1
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartReportEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartReportEntity.java
index 5dd57285f2919..8a3dac17fca72 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartReportEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartReportEntity.java
@@ -16,21 +16,24 @@
*/
package org.apache.camel.component.as2.api.entity;
-import org.apache.camel.component.as2.api.AS2MimeType;
-import org.apache.http.entity.ContentType;
+import java.io.IOException;
+
+import org.apache.hc.core5.http.ContentType;
public class MultipartReportEntity extends MultipartMimeEntity {
- public MultipartReportEntity(String charset,
+ public MultipartReportEntity(ContentType contentType,
+ String contentTransferEncoding,
boolean isMainBody,
String boundary) {
- super(ContentType.create(AS2MimeType.MULTIPART_REPORT, charset), isMainBody, boundary);
+ super(contentType, contentTransferEncoding, isMainBody, boundary);
}
- protected MultipartReportEntity() {
-
+ @Override
+ public void close() throws IOException {
+ // do nothing
}
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartSignedEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartSignedEntity.java
index 0b38996dd7ff0..21b361dc9d31f 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartSignedEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/MultipartSignedEntity.java
@@ -16,22 +16,27 @@
*/
package org.apache.camel.component.as2.api.entity;
+import java.io.IOException;
+
import org.apache.camel.component.as2.api.AS2SignedDataGenerator;
-import org.apache.http.HttpException;
+import org.apache.camel.component.as2.api.util.EntityUtils;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpException;
public class MultipartSignedEntity extends MultipartMimeEntity {
public MultipartSignedEntity(MimeEntity data, AS2SignedDataGenerator signer, String signatureCharSet,
String signatureTransferEncoding, boolean isMainBody, String boundary) throws HttpException {
- super(null, isMainBody, boundary);
- setContentType(signer.createMultipartSignedContentType(this.boundary));
+ super(signer, isMainBody, (boundary == null) ? EntityUtils.createBoundaryValue() : boundary);
addPart(data);
ApplicationPkcs7SignatureEntity signature
= new ApplicationPkcs7SignatureEntity(data, signer, signatureCharSet, signatureTransferEncoding, false);
addPart(signature);
}
- protected MultipartSignedEntity(String boundary, boolean isMainBody) {
+ protected MultipartSignedEntity(ContentType contentType, String contentTransferEncoding, String boundary,
+ boolean isMainBody) {
+ super(contentType, contentTransferEncoding);
this.boundary = boundary;
this.isMainBody = isMainBody;
}
@@ -52,4 +57,8 @@ public ApplicationPkcs7SignatureEntity getSignatureEntity() {
return null;
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/TextPlainEntity.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/TextPlainEntity.java
index 877e643b93aa6..00f5659fb6839 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/TextPlainEntity.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/entity/TextPlainEntity.java
@@ -23,18 +23,16 @@
import org.apache.camel.component.as2.api.AS2MediaType;
import org.apache.camel.component.as2.api.CanonicalOutputStream;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
public class TextPlainEntity extends MimeEntity {
private String content;
public TextPlainEntity(String content, String charset, String contentTransferEncoding, boolean isMainBody) {
+ super(ContentType.create(AS2MediaType.TEXT_PLAIN, charset), contentTransferEncoding);
this.content = ObjectHelper.notNull(content, "Content");
- setContentType(ContentType.create(AS2MediaType.TEXT_PLAIN, charset));
- setContentTransferEncoding(contentTransferEncoding);
setMainBody(isMainBody);
}
@@ -49,9 +47,7 @@ public void writeTo(OutputStream outstream) throws IOException {
// Write out mime part headers if this is not the main body of message.
if (!isMainBody()) {
- HeaderIterator it = headerIterator();
- while (it.hasNext()) {
- Header header = it.nextHeader();
+ for (Header header : getAllHeaders()) {
canonicalOutstream.writeln(header.toString());
}
canonicalOutstream.writeln(); // ensure empty line between headers and body; RFC2046 - 5.1.1
@@ -62,4 +58,8 @@ public void writeTo(OutputStream outstream) throws IOException {
}
}
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpClientConnection.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpClientConnection.java
index 88712ec2bfcf3..8fde77dfe681c 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpClientConnection.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpClientConnection.java
@@ -17,41 +17,142 @@
package org.apache.camel.component.as2.api.io;
import java.io.IOException;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
+import java.net.Socket;
+import java.net.SocketAddress;
+
+import javax.net.ssl.SSLSession;
import org.apache.camel.component.as2.api.entity.EntityParser;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.config.MessageConstraints;
-import org.apache.http.entity.ContentLengthStrategy;
-import org.apache.http.impl.conn.DefaultManagedHttpClientConnection;
-import org.apache.http.io.HttpMessageParserFactory;
-import org.apache.http.io.HttpMessageWriterFactory;
+import org.apache.hc.client5.http.io.ManagedHttpClientConnection;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.EndpointDetails;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.ProtocolVersion;
+import org.apache.hc.core5.io.CloseMode;
+import org.apache.hc.core5.util.Timeout;
+
+public class AS2BHttpClientConnection implements ManagedHttpClientConnection {
+
+ private ManagedHttpClientConnection mc;
+
+ public AS2BHttpClientConnection(ManagedHttpClientConnection mc) {
+ this.mc = mc;
+ }
+
+ @Override
+ public void bind(Socket socket) throws IOException {
+ mc.bind(socket);
+ }
+
+ @Override
+ public Socket getSocket() {
+ return mc.getSocket();
+ }
+
+ @Override
+ public void close() throws IOException {
+ mc.close();
+ }
+
+ @Override
+ public EndpointDetails getEndpointDetails() {
+ return mc.getEndpointDetails();
+ }
+
+ @Override
+ public SocketAddress getLocalAddress() {
+ return mc.getLocalAddress();
+ }
+
+ @Override
+ public SocketAddress getRemoteAddress() {
+ return mc.getRemoteAddress();
+ }
+
+ @Override
+ public ProtocolVersion getProtocolVersion() {
+ return mc.getProtocolVersion();
+ }
+
+ @Override
+ public SSLSession getSSLSession() {
+ return mc.getSSLSession();
+ }
+
+ @Override
+ public boolean isOpen() {
+ return mc.isOpen();
+ }
+
+ @Override
+ public void passivate() {
+ mc.passivate();
+ }
-public class AS2BHttpClientConnection extends DefaultManagedHttpClientConnection {
+ @Override
+ public void activate() {
+ mc.activate();
+ }
- public AS2BHttpClientConnection(String id, int buffersize,
- int fragmentSizeHint,
- CharsetDecoder chardecoder,
- CharsetEncoder charencoder,
- MessageConstraints constraints,
- ContentLengthStrategy incomingContentStrategy,
- ContentLengthStrategy outgoingContentStrategy,
- HttpMessageWriterFactory requestWriterFactory,
- HttpMessageParserFactory responseParserFactory) {
- super(id, buffersize, fragmentSizeHint, chardecoder, charencoder, constraints, incomingContentStrategy,
- outgoingContentStrategy, requestWriterFactory, responseParserFactory);
+ @Override
+ public boolean isConsistent() {
+ return mc.isConsistent();
}
- public AS2BHttpClientConnection(String id, int buffersize) {
- super(id, buffersize);
+ @Override
+ public void sendRequestHeader(ClassicHttpRequest request) throws HttpException, IOException {
+ mc.sendRequestHeader(request);
+ }
+
+ @Override
+ public void terminateRequest(ClassicHttpRequest request) throws HttpException, IOException {
+ mc.terminateRequest(request);
}
@Override
- public void receiveResponseEntity(HttpResponse response) throws HttpException, IOException {
- super.receiveResponseEntity(response);
+ public void sendRequestEntity(ClassicHttpRequest request) throws HttpException, IOException {
+ mc.sendRequestEntity(request);
+ }
+
+ @Override
+ public ClassicHttpResponse receiveResponseHeader() throws HttpException, IOException {
+ return mc.receiveResponseHeader();
+ }
+
+ @Override
+ public void receiveResponseEntity(ClassicHttpResponse response) throws HttpException, IOException {
+ mc.receiveResponseEntity(response);
EntityParser.parseAS2MessageEntity(response);
}
+
+ @Override
+ public boolean isDataAvailable(Timeout timeout) throws IOException {
+ return mc.isDataAvailable(timeout);
+ }
+
+ @Override
+ public boolean isStale() throws IOException {
+ return mc.isStale();
+ }
+
+ @Override
+ public void flush() throws IOException {
+ mc.flush();
+ }
+
+ @Override
+ public Timeout getSocketTimeout() {
+ return mc.getSocketTimeout();
+ }
+
+ @Override
+ public void setSocketTimeout(Timeout timeout) {
+ mc.setSocketTimeout(timeout);
+ }
+
+ @Override
+ public void close(CloseMode closeMode) {
+ mc.close(closeMode);
+ }
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpServerConnection.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpServerConnection.java
index 303159e09355d..8da0903c6979b 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpServerConnection.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2BHttpServerConnection.java
@@ -21,44 +21,40 @@
import java.nio.charset.CharsetEncoder;
import org.apache.camel.component.as2.api.entity.EntityParser;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.config.MessageConstraints;
-import org.apache.http.entity.ContentLengthStrategy;
-import org.apache.http.impl.DefaultBHttpServerConnection;
-import org.apache.http.io.HttpMessageParserFactory;
-import org.apache.http.io.HttpMessageWriterFactory;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentLengthStrategy;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.config.Http1Config;
+import org.apache.hc.core5.http.impl.io.DefaultBHttpServerConnection;
+import org.apache.hc.core5.http.io.HttpMessageParserFactory;
+import org.apache.hc.core5.http.io.HttpMessageWriterFactory;
public class AS2BHttpServerConnection extends DefaultBHttpServerConnection {
- public AS2BHttpServerConnection(int buffersize) {
- super(buffersize);
+ public AS2BHttpServerConnection(Http1Config http1Config) {
+ this(http1Config, null, null);
}
- public AS2BHttpServerConnection(int buffersize,
+ public AS2BHttpServerConnection(Http1Config http1Config,
CharsetDecoder chardecoder,
- CharsetEncoder charencoder,
- MessageConstraints constraints) {
- super(buffersize, chardecoder, charencoder, constraints);
+ CharsetEncoder charencoder) {
+ this(http1Config, chardecoder, charencoder, null, null, null, null);
}
- public AS2BHttpServerConnection(int buffersize,
- int fragmentSizeHint,
+ public AS2BHttpServerConnection(Http1Config http1Config,
CharsetDecoder chardecoder,
CharsetEncoder charencoder,
- MessageConstraints constraints,
ContentLengthStrategy incomingContentStrategy,
ContentLengthStrategy outgoingContentStrategy,
- HttpMessageParserFactory requestParserFactory,
- HttpMessageWriterFactory responseWriterFactory) {
- super(buffersize, fragmentSizeHint, chardecoder, charencoder, constraints, incomingContentStrategy,
+ HttpMessageParserFactory requestParserFactory,
+ HttpMessageWriterFactory responseWriterFactory) {
+ super(null, http1Config, chardecoder, charencoder, incomingContentStrategy,
outgoingContentStrategy, requestParserFactory, responseWriterFactory);
}
@Override
- public void receiveRequestEntity(HttpEntityEnclosingRequest request) throws HttpException, IOException {
+ public void receiveRequestEntity(ClassicHttpRequest request) throws HttpException, IOException {
super.receiveRequestEntity(request);
EntityParser.parseAS2MessageEntity(request);
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2SessionInputBuffer.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2SessionInputBuffer.java
index a523c720a086f..5463898201d2b 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2SessionInputBuffer.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/io/AS2SessionInputBuffer.java
@@ -24,31 +24,27 @@
import java.nio.charset.CoderResult;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.MessageConstraintException;
-import org.apache.http.config.MessageConstraints;
-import org.apache.http.impl.io.HttpTransportMetricsImpl;
-import org.apache.http.io.BufferInfo;
-import org.apache.http.io.HttpTransportMetrics;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.Args;
-import org.apache.http.util.Asserts;
-import org.apache.http.util.ByteArrayBuffer;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.impl.BasicHttpTransportMetrics;
+import org.apache.hc.core5.http.io.HttpTransportMetrics;
+import org.apache.hc.core5.http.io.SessionInputBuffer;
+import org.apache.hc.core5.util.Args;
+import org.apache.hc.core5.util.ByteArrayBuffer;
+import org.apache.hc.core5.util.CharArrayBuffer;
import static org.apache.camel.util.BufferCaster.cast;
-public class AS2SessionInputBuffer implements SessionInputBuffer, BufferInfo {
+public class AS2SessionInputBuffer implements SessionInputBuffer {
- private final HttpTransportMetricsImpl metrics;
+ private static final int CR = 13; //
+ private static final int LF = 10; //
+
+ private final BasicHttpTransportMetrics metrics;
private final byte[] buffer;
private final ByteArrayBuffer linebuffer;
private final int minChunkLimit;
- private final MessageConstraints constraints;
private CharsetDecoder decoder;
- private InputStream instream;
private int bufferpos;
private int bufferlen;
private CharBuffer cbuf;
@@ -56,22 +52,20 @@ public class AS2SessionInputBuffer implements SessionInputBuffer, BufferInfo {
private boolean lastLineReadEnrichedByCarriageReturn;
private boolean lastLineReadTerminatedByLineFeed;
- public AS2SessionInputBuffer(final HttpTransportMetricsImpl metrics,
+ public AS2SessionInputBuffer(final BasicHttpTransportMetrics metrics,
final int buffersize,
- final int minChunkLimit,
- MessageConstraints constraints) {
+ final int minChunkLimit) {
this.metrics = ObjectHelper.notNull(metrics, "metrics");
Args.positive(buffersize, "buffersize");
this.buffer = new byte[buffersize];
this.bufferpos = 0;
this.bufferlen = 0;
this.minChunkLimit = minChunkLimit >= 0 ? minChunkLimit : 512;
- this.constraints = constraints != null ? constraints : MessageConstraints.DEFAULT;
this.linebuffer = new ByteArrayBuffer(buffersize);
}
- public AS2SessionInputBuffer(final HttpTransportMetricsImpl metrics, final int buffersize) {
- this(metrics, buffersize, buffersize, null);
+ public AS2SessionInputBuffer(BasicHttpTransportMetrics metrics, int buffersize) {
+ this(metrics, buffersize, buffersize);
}
public CharsetDecoder getCharsetDecoder() {
@@ -82,14 +76,6 @@ public void setCharsetDecoder(CharsetDecoder chardecoder) {
this.decoder = chardecoder;
}
- public void bind(final InputStream instream) {
- this.instream = instream;
- }
-
- public boolean isBound() {
- return this.instream != null;
- }
-
@Override
public int length() {
return this.bufferlen - this.bufferpos;
@@ -105,7 +91,7 @@ public int available() {
return capacity() - length();
}
- public int fillBuffer() throws IOException {
+ public int fillBuffer(InputStream inputStream) throws IOException {
// compact the buffer if necessary
if (this.bufferpos > 0) {
final int len = this.bufferlen - this.bufferpos;
@@ -118,7 +104,7 @@ public int fillBuffer() throws IOException {
final int l;
final int off = this.bufferlen;
final int len = this.buffer.length - off;
- l = streamRead(this.buffer, off, len);
+ l = inputStream.read(this.buffer, off, len);
if (l == -1) {
return -1;
} else {
@@ -133,7 +119,7 @@ public boolean hasBufferedData() {
}
@Override
- public int read(byte[] b, int off, int len) throws IOException {
+ public int read(byte[] b, int off, int len, InputStream inputStream) throws IOException {
if (b == null) {
return 0;
}
@@ -146,7 +132,7 @@ public int read(byte[] b, int off, int len) throws IOException {
// If the remaining capacity is big enough, read directly from the
// underlying input stream bypassing the buffer.
if (len > this.minChunkLimit) {
- final int read = streamRead(b, off, len);
+ final int read = inputStream.read(b, off, len);
if (read > 0) {
this.metrics.incrementBytesTransferred(read);
}
@@ -154,7 +140,7 @@ public int read(byte[] b, int off, int len) throws IOException {
} else {
// otherwise read to the buffer first
while (!hasBufferedData()) {
- final int noRead = fillBuffer();
+ final int noRead = fillBuffer(inputStream);
if (noRead == -1) {
return -1;
}
@@ -167,18 +153,18 @@ public int read(byte[] b, int off, int len) throws IOException {
}
@Override
- public int read(byte[] b) throws IOException {
+ public int read(byte[] b, InputStream inputStream) throws IOException {
if (b == null) {
return 0;
}
- return read(b, 0, b.length);
+ return inputStream.read(b, 0, b.length);
}
@Override
- public int read() throws IOException {
+ public int read(InputStream inputStream) throws IOException {
int noRead;
while (!hasBufferedData()) {
- noRead = fillBuffer();
+ noRead = fillBuffer(inputStream);
if (noRead == -1) {
return -1;
}
@@ -187,9 +173,8 @@ public int read() throws IOException {
}
@Override
- public int readLine(CharArrayBuffer charbuffer) throws IOException {
+ public int readLine(CharArrayBuffer charbuffer, InputStream inputStream) throws IOException {
ObjectHelper.notNull(charbuffer, "Char array buffer");
- final int maxLineLen = this.constraints.getMaxLineLength();
int noRead = 0;
boolean retry = true;
this.lastLineReadEnrichedByCarriageReturn = false;
@@ -198,23 +183,16 @@ public int readLine(CharArrayBuffer charbuffer) throws IOException {
// attempt to find end of line (LF)
int pos = -1;
for (int i = this.bufferpos; i < this.bufferlen; i++) {
- if (this.buffer[i] == HTTP.LF) {
+ if (this.buffer[i] == LF) {
pos = i;
this.lastLineReadTerminatedByLineFeed = true;
- if (i > 0 && this.buffer[i - 1] == HTTP.CR) {
+ if (i > 0 && this.buffer[i - 1] == CR) {
this.lastLineReadEnrichedByCarriageReturn = true;
}
break;
}
}
- if (maxLineLen > 0) {
- final int currentLen = this.linebuffer.length() + (pos > 0 ? pos : this.bufferlen) - this.bufferpos;
- if (currentLen >= maxLineLen) {
- throw new MessageConstraintException("Maximum line length limit exceeded");
- }
- }
-
if (pos != -1) {
// end of line found.
if (this.linebuffer.isEmpty()) {
@@ -228,7 +206,7 @@ public int readLine(CharArrayBuffer charbuffer) throws IOException {
if (hasBufferedData()) {
addBytesToLinebuffer(pos);
}
- noRead = fillBuffer();
+ noRead = fillBuffer(inputStream);
if (noRead == -1) {
// end of stream reached.
retry = false;
@@ -243,17 +221,6 @@ public int readLine(CharArrayBuffer charbuffer) throws IOException {
return lineFromLineBuffer(charbuffer);
}
- @Override
- public String readLine() throws IOException {
- final CharArrayBuffer charbuffer = new CharArrayBuffer(64);
- final int l = readLine(charbuffer);
- if (l != -1) {
- return charbuffer.toString();
- } else {
- return null;
- }
- }
-
public boolean isLastLineReadTerminatedByLineFeed() {
return lastLineReadTerminatedByLineFeed;
}
@@ -262,31 +229,21 @@ public boolean isLastLineReadEnrichedByCarriageReturn() {
return lastLineReadEnrichedByCarriageReturn;
}
- @Override
- public boolean isDataAvailable(int timeout) throws IOException {
- return hasBufferedData();
- }
-
@Override
public HttpTransportMetrics getMetrics() {
return this.metrics;
}
- private int streamRead(final byte[] b, final int off, final int len) throws IOException {
- Asserts.notNull(this.instream, "Input stream");
- return this.instream.read(b, off, len);
- }
-
private int lineFromLineBuffer(final CharArrayBuffer charbuffer) throws IOException {
// discard LF if found
int len = this.linebuffer.length();
if (len > 0) {
- if (this.linebuffer.byteAt(len - 1) == HTTP.LF) {
+ if (this.linebuffer.byteAt(len - 1) == LF) {
len--;
}
// discard CR if found
if (len > 0) {
- if (this.linebuffer.byteAt(len - 1) == HTTP.CR) {
+ if (this.linebuffer.byteAt(len - 1) == CR) {
len--;
}
}
@@ -295,7 +252,7 @@ private int lineFromLineBuffer(final CharArrayBuffer charbuffer) throws IOExcept
if (this.decoder == null) {
charbuffer.append(this.linebuffer, 0, len);
} else {
- final ByteBuffer bbuf = ByteBuffer.wrap(this.linebuffer.buffer(), 0, len);
+ final ByteBuffer bbuf = ByteBuffer.wrap(linebuffer.toByteArray(), 0, len);
len = appendDecoded(charbuffer, bbuf);
}
this.linebuffer.clear();
@@ -308,7 +265,7 @@ private int lineFromReadBuffer(final CharArrayBuffer charbuffer, final int posit
final int off = this.bufferpos;
int len;
this.bufferpos = pos + 1;
- if (pos > off && this.buffer[pos - 1] == HTTP.CR) {
+ if (pos > off && this.buffer[pos - 1] == CR) {
// skip CR if found
pos--;
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestAS2.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestAS2.java
index 39aabc18b8bf9..90500ba4775a7 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestAS2.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestAS2.java
@@ -23,11 +23,12 @@
import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.InvalidAS2NameException;
import org.apache.camel.component.as2.api.util.AS2Utils;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.EntityDetails;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpRequestInterceptor;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
public class RequestAS2 implements HttpRequestInterceptor {
@@ -40,7 +41,7 @@ public RequestAS2(String as2Version, String clientFQDN) {
}
@Override
- public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
+ public void process(HttpRequest request, EntityDetails entity, HttpContext context) throws HttpException, IOException {
HttpCoreContext coreContext = HttpCoreContext.adapt(context);
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestAsynchronousMDN.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestAsynchronousMDN.java
index 74cc1a1df0296..f4dd44ddc2c44 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestAsynchronousMDN.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestAsynchronousMDN.java
@@ -22,11 +22,12 @@
import org.apache.camel.component.as2.api.AS2Constants;
import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.util.AS2Utils;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.EntityDetails;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpRequestInterceptor;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
public class RequestAsynchronousMDN implements HttpRequestInterceptor {
@@ -39,7 +40,7 @@ public RequestAsynchronousMDN(String as2Version, String senderFQDN) {
}
@Override
- public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
+ public void process(HttpRequest request, EntityDetails entity, HttpContext context) throws HttpException, IOException {
HttpCoreContext coreContext = HttpCoreContext.adapt(context);
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestMDN.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestMDN.java
index b517e8cc556cb..a63f0c8141ac1 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestMDN.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/RequestMDN.java
@@ -20,12 +20,13 @@
import org.apache.camel.component.as2.api.AS2ClientManager;
import org.apache.camel.component.as2.api.AS2Header;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.EntityDetails;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpRequestInterceptor;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.util.CharArrayBuffer;
public class RequestMDN implements HttpRequestInterceptor {
@@ -33,7 +34,7 @@ public class RequestMDN implements HttpRequestInterceptor {
= "signed-receipt-protocol=optional, pkcs7-signature; signed-receipt-micalg=optional";
@Override
- public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
+ public void process(HttpRequest request, EntityDetails entity, HttpContext context) throws HttpException, IOException {
HttpCoreContext coreContext = HttpCoreContext.adapt(context);
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/ResponseMDN.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/ResponseMDN.java
index 2faa0354f2d69..9a8d03de6087d 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/ResponseMDN.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/protocol/ResponseMDN.java
@@ -45,14 +45,15 @@
import org.apache.camel.component.as2.api.util.HttpMessageUtils;
import org.apache.camel.component.as2.api.util.SigningUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.http.Header;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.EntityDetails;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.HttpResponseInterceptor;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.context.Context;
@@ -107,9 +108,9 @@ public ResponseMDN(String as2Version, String serverFQDN, AS2SignatureAlgorithm s
}
@Override
- public void process(HttpResponse response, HttpContext context) throws HttpException, IOException {
+ public void process(HttpResponse response, EntityDetails entity, HttpContext context) throws HttpException, IOException {
- int statusCode = response.getStatusLine().getStatusCode();
+ int statusCode = response.getCode();
if (statusCode < 200 || statusCode >= 300) {
// RFC4130 - 7.6 - Status codes in the 200 range SHOULD also be used when an entity is returned
// (a signed receipt in a multipart/signed content type or an unsigned
@@ -121,7 +122,7 @@ public void process(HttpResponse response, HttpContext context) throws HttpExcep
HttpCoreContext coreContext = HttpCoreContext.adapt(context);
HttpRequest request = coreContext.getAttribute(HttpCoreContext.HTTP_REQUEST, HttpRequest.class);
- if (request == null || !(request instanceof HttpEntityEnclosingRequest httpEntityEnclosingRequest)) {
+ if (request == null || !(request instanceof ClassicHttpRequest httpEntityEnclosingRequest)) {
// Not an enclosing request so nothing to do.
return;
}
@@ -232,14 +233,14 @@ public void process(HttpResponse response, HttpContext context) throws HttpExcep
MultipartSignedEntity multipartSignedEntity = new MultipartSignedEntity(
multipartReportEntity, gen,
StandardCharsets.US_ASCII.name(), AS2TransferEncoding.BASE64, false, null);
- response.setHeader(multipartSignedEntity.getContentType());
+ response.setHeader(AS2Header.CONTENT_TYPE, multipartSignedEntity.getContentType());
EntityUtils.setMessageEntity(response, multipartSignedEntity);
} catch (Exception e) {
LOG.warn("failed to sign receipt");
}
} else {
// Create unsigned receipt
- response.setHeader(multipartReportEntity.getContentType());
+ response.setHeader(AS2Header.CONTENT_TYPE, multipartReportEntity.getContentType());
EntityUtils.setMessageEntity(response, multipartReportEntity);
}
}
@@ -250,7 +251,7 @@ public void process(HttpResponse response, HttpContext context) throws HttpExcep
}
private String createMdnDescription(
- HttpEntityEnclosingRequest request,
+ ClassicHttpRequest request,
HttpResponse response,
DispositionMode dispositionMode,
AS2DispositionType dispositionType,
@@ -266,13 +267,13 @@ private String createMdnDescription(
Context context = new VelocityContext();
context.put("request", request);
Map requestHeaders = new HashMap<>();
- for (Header header : request.getAllHeaders()) {
+ for (Header header : request.getHeaders()) {
requestHeaders.put(header.getName(), header.getValue());
}
context.put("requestHeaders", requestHeaders);
Map responseHeaders = new HashMap<>();
- for (Header header : response.getAllHeaders()) {
+ for (Header header : response.getHeaders()) {
responseHeaders.put(header.getName(), header.getValue());
}
context.put("responseHeaders", responseHeaders);
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2HeaderUtils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2HeaderUtils.java
index 89e3b3b9909ac..93342dc3739b9 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2HeaderUtils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2HeaderUtils.java
@@ -22,13 +22,14 @@
import org.apache.camel.component.as2.api.entity.Importance;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.message.TokenParser;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HeaderElement;
+import org.apache.hc.core5.http.NameValuePair;
+import org.apache.hc.core5.http.message.BasicHeader;
+import org.apache.hc.core5.http.message.MessageSupport;
+import org.apache.hc.core5.http.message.ParserCursor;
+import org.apache.hc.core5.http.message.TokenParser;
+import org.apache.hc.core5.util.CharArrayBuffer;
public final class AS2HeaderUtils {
@@ -149,7 +150,7 @@ public static String getParameterValue(Header[] headers, String headerName, Stri
ObjectHelper.notNull(headerName, "headerName");
for (Header header : headers) {
if (header.getName().equalsIgnoreCase(headerName)) {
- for (HeaderElement headerElement : header.getElements()) {
+ for (HeaderElement headerElement : MessageSupport.parse(header)) {
for (NameValuePair nameValuePair : headerElement.getParameters()) {
if (nameValuePair.getName().equalsIgnoreCase(parameterName)) {
return nameValuePair.getValue();
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2Utils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2Utils.java
index 249c7302cb1e4..a4fb208dc73c2 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2Utils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/AS2Utils.java
@@ -22,19 +22,20 @@
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
+import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.camel.component.as2.api.InvalidAS2NameException;
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.RequestLine;
-import org.apache.http.StatusLine;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpMessage;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
+import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
+import org.apache.hc.core5.http.message.RequestLine;
+import org.apache.hc.core5.http.message.StatusLine;
/**
* Utility Methods used in AS2 Component
@@ -128,19 +129,17 @@ public static String printMessage(HttpMessage message) throws IOException {
*/
public static void printRequest(PrintStream out, HttpRequest request) throws IOException {
// Print request line
- RequestLine requestLine = request.getRequestLine();
- out.println(requestLine.getMethod() + ' ' + requestLine.getUri() + ' ' + requestLine.getProtocolVersion());
-
+ out.println(new RequestLine(request));
// Write headers
- for (final HeaderIterator it = request.headerIterator(); it.hasNext();) {
- Header header = it.nextHeader();
+ for (final Iterator it = request.headerIterator(); it.hasNext();) {
+ Header header = it.next();
out.println(header.getName() + ": " + (header.getValue() == null ? "" : header.getValue()));
}
out.println(); // write empty line separating header from body.
- if (request instanceof HttpEntityEnclosingRequest) {
+ if (request instanceof BasicClassicHttpRequest) {
// Write entity
- HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
+ HttpEntity entity = ((BasicClassicHttpRequest) request).getEntity();
entity.writeTo(out);
}
}
@@ -155,28 +154,26 @@ public static void printRequest(PrintStream out, HttpRequest request) throws IOE
public static void printMessage(PrintStream out, HttpMessage message) throws IOException {
// Print request line
if (message instanceof HttpRequest) {
- RequestLine requestLine = ((HttpRequest) message).getRequestLine();
- out.println(requestLine.getMethod() + ' ' + requestLine.getUri() + ' ' + requestLine.getProtocolVersion());
+ out.println(new RequestLine((HttpRequest) message));
} else { // HttpResponse
- StatusLine statusLine = ((HttpResponse) message).getStatusLine();
- out.println(statusLine.toString());
+ out.println(new StatusLine((HttpResponse) message));
}
// Write headers
- for (final HeaderIterator it = message.headerIterator(); it.hasNext();) {
- Header header = it.nextHeader();
+ for (final Iterator it = message.headerIterator(); it.hasNext();) {
+ Header header = it.next();
out.println(header.getName() + ": " + (header.getValue() == null ? "" : header.getValue()));
}
out.println(); // write empty line separating header from body.
- if (message instanceof HttpEntityEnclosingRequest) {
+ if (message instanceof BasicClassicHttpRequest) {
// Write entity
- HttpEntity entity = ((HttpEntityEnclosingRequest) message).getEntity();
+ HttpEntity entity = ((BasicClassicHttpRequest) message).getEntity();
if (entity != null) {
entity.writeTo(out);
}
- } else if (message instanceof HttpResponse) {
+ } else if (message instanceof BasicClassicHttpResponse) {
// Write entity
- HttpEntity entity = ((HttpResponse) message).getEntity();
+ HttpEntity entity = ((BasicClassicHttpResponse) message).getEntity();
if (entity != null) {
entity.writeTo(out);
}
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/ContentTypeUtils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/ContentTypeUtils.java
index f14d29f2163cd..4ad32bce91a08 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/ContentTypeUtils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/ContentTypeUtils.java
@@ -18,7 +18,7 @@
import org.apache.camel.component.as2.api.AS2MediaType;
import org.apache.camel.component.as2.api.AS2MimeType;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
public final class ContentTypeUtils {
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtils.java
index 7350d0af7fcf7..36cddc5c437f8 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtils.java
@@ -30,10 +30,10 @@
import org.apache.camel.component.as2.api.util.DispositionNotificationContentUtils.Field.Element;
import org.apache.camel.component.as2.api.util.MicUtils.ReceivedContentMic;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.ParseException;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.message.TokenParser;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.ParseException;
+import org.apache.hc.core5.http.message.ParserCursor;
+import org.apache.hc.core5.http.message.TokenParser;
+import org.apache.hc.core5.util.CharArrayBuffer;
public final class DispositionNotificationContentUtils {
@@ -253,7 +253,7 @@ public static AS2MessageDispositionNotificationEntity parseDispositionNotificati
receivedContentMic);
}
- public static Field parseDispositionField(CharArrayBuffer fieldLine) {
+ public static Field parseDispositionField(CharArrayBuffer fieldLine) throws ParseException {
final int colon = fieldLine.indexOf(':');
if (colon == -1) {
throw new ParseException("Invalid field: " + fieldLine.toString());
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EncryptingUtils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EncryptingUtils.java
index 7d01eb3c75a59..1302076f49fa8 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EncryptingUtils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EncryptingUtils.java
@@ -22,7 +22,7 @@
import org.apache.camel.component.as2.api.AS2EncryptionAlgorithm;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.HttpException;
+import org.apache.hc.core5.http.HttpException;
import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.jcajce.JceCMSContentEncryptorBuilder;
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EntityUtils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EntityUtils.java
index 7f93bf581b1ec..ca817abfb905b 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EntityUtils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/EntityUtils.java
@@ -39,12 +39,12 @@
import org.apache.commons.codec.binary.Base64InputStream;
import org.apache.commons.codec.binary.Base64OutputStream;
import org.apache.commons.codec.net.QuotedPrintableCodec;
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpResponse;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpMessage;
import org.bouncycastle.util.encoders.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -220,32 +220,32 @@ public static byte[] getContent(HttpEntity entity) {
public static boolean hasEntity(HttpMessage message) {
boolean hasEntity = false;
- if (message instanceof HttpEntityEnclosingRequest httpEntityEnclosingRequest) {
+ if (message instanceof ClassicHttpRequest httpEntityEnclosingRequest) {
hasEntity = httpEntityEnclosingRequest.getEntity() != null;
- } else if (message instanceof HttpResponse httpResponse) {
+ } else if (message instanceof ClassicHttpResponse httpResponse) {
hasEntity = httpResponse.getEntity() != null;
}
return hasEntity;
}
public static HttpEntity getMessageEntity(HttpMessage message) {
- if (message instanceof HttpEntityEnclosingRequest httpEntityEnclosingRequest) {
+ if (message instanceof ClassicHttpRequest httpEntityEnclosingRequest) {
return httpEntityEnclosingRequest.getEntity();
- } else if (message instanceof HttpResponse httpResponse) {
+ } else if (message instanceof ClassicHttpResponse httpResponse) {
return httpResponse.getEntity();
}
return null;
}
public static void setMessageEntity(HttpMessage message, HttpEntity entity) {
- if (message instanceof HttpEntityEnclosingRequest httpEntityEnclosingRequest) {
+ if (message instanceof ClassicHttpRequest httpEntityEnclosingRequest) {
httpEntityEnclosingRequest.setEntity(entity);
- } else if (message instanceof HttpResponse httpResponse) {
+ } else if (message instanceof ClassicHttpResponse httpResponse) {
httpResponse.setEntity(entity);
}
- Header contentTypeHeader = entity.getContentType();
- if (contentTypeHeader != null) {
- message.setHeader(contentTypeHeader);
+ String contentType = entity.getContentType();
+ if (contentType != null) {
+ message.setHeader(AS2Header.CONTENT_TYPE, contentType);
}
if (entity instanceof MimeEntity mimeEntity) {
Header contentTransferEncodingHeader = mimeEntity.getContentTransferEncoding();
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/HttpMessageUtils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/HttpMessageUtils.java
index 507056dbd049d..cda8cfe6a002b 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/HttpMessageUtils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/HttpMessageUtils.java
@@ -29,17 +29,16 @@
import org.apache.camel.component.as2.api.entity.MimeEntity;
import org.apache.camel.component.as2.api.entity.MultipartSignedEntity;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpMessage;
-import org.apache.http.HttpResponse;
-import org.apache.http.NameValuePair;
-import org.apache.http.entity.ContentType;
-import org.apache.http.io.SessionInputBuffer;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HeaderElement;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpMessage;
+import org.apache.hc.core5.http.NameValuePair;
+import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
+import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
+import org.apache.hc.core5.http.message.MessageSupport;
import org.bouncycastle.cms.jcajce.ZlibExpanderProvider;
public final class HttpMessageUtils {
@@ -65,12 +64,12 @@ public static void setHeaderValue(HttpMessage message, String headerName, String
public static T getEntity(HttpMessage message, Class type) {
ObjectHelper.notNull(message, "message");
ObjectHelper.notNull(type, "type");
- if (message instanceof HttpEntityEnclosingRequest httpEntityEnclosingRequest) {
+ if (message instanceof BasicClassicHttpRequest httpEntityEnclosingRequest) {
HttpEntity entity = httpEntityEnclosingRequest.getEntity();
if (entity != null && type.isInstance(entity)) {
return type.cast(entity);
}
- } else if (message instanceof HttpResponse httpResponse) {
+ } else if (message instanceof BasicClassicHttpResponse httpResponse) {
HttpEntity entity = httpResponse.getEntity();
if (entity != null && type.isInstance(entity)) {
type.cast(entity);
@@ -79,36 +78,6 @@ public static T getEntity(HttpMessage message, Class type) {
return null;
}
- public static String parseBodyPartContent(SessionInputBuffer inBuffer, String boundary) throws HttpException {
- try {
- CharArrayBuffer bodyPartContentBuffer = new CharArrayBuffer(1024);
- CharArrayBuffer lineBuffer = new CharArrayBuffer(1024);
- boolean foundMultipartEndBoundary = false;
- while (inBuffer.readLine(lineBuffer) != -1) {
- if (EntityParser.isBoundaryDelimiter(lineBuffer, null, boundary)) {
- foundMultipartEndBoundary = true;
- // Remove previous line ending: this is associated with
- // boundary
- bodyPartContentBuffer.setLength(bodyPartContentBuffer.length() - 2);
- lineBuffer.clear();
- break;
- }
- lineBuffer.append("\r\n"); // add line delimiter
- bodyPartContentBuffer.append(lineBuffer);
- lineBuffer.clear();
- }
- if (!foundMultipartEndBoundary) {
- throw new HttpException("Failed to find end boundary delimiter for body part");
- }
-
- return bodyPartContentBuffer.toString();
- } catch (HttpException e) {
- throw e;
- } catch (Exception e) {
- throw new HttpException("Failed to parse body part content", e);
- }
- }
-
public static String getParameterValue(HttpMessage message, String headerName, String parameterName) {
ObjectHelper.notNull(message, "message");
ObjectHelper.notNull(headerName, "headerName");
@@ -117,7 +86,7 @@ public static String getParameterValue(HttpMessage message, String headerName, S
if (header == null) {
return null;
}
- for (HeaderElement headerElement : header.getElements()) {
+ for (HeaderElement headerElement : MessageSupport.parse(header)) {
for (NameValuePair nameValuePair : headerElement.getParameters()) {
if (nameValuePair.getName().equalsIgnoreCase(parameterName)) {
return nameValuePair.getValue();
@@ -229,7 +198,7 @@ private static ApplicationEntity extractMultipartSigned(
ediEntity = extractEdiPayloadFromCompressedEntity(compressedDataEntity, decrpytingAndSigningInfo);
} else {
throw new HttpException(
- "Failed to extract EDI payload: invalid content type '" + mimeEntity.getContentTypeValue()
+ "Failed to extract EDI payload: invalid content type '" + mimeEntity.getContentType()
+ "' for AS2 compressed and signed message");
}
return ediEntity;
@@ -241,7 +210,7 @@ private static ApplicationEntity extractEdiPayloadFromEnvelopedEntity(
ApplicationEntity ediEntity;
MimeEntity entity = envelopedDataEntity.getEncryptedEntity(decrpytingAndSigningInfo.getDecryptingPrivateKey());
- String contentTypeString = entity.getContentTypeValue();
+ String contentTypeString = entity.getContentType();
if (contentTypeString == null) {
throw new HttpException("Failed to extract EDI message: content type missing from encrypted entity");
}
@@ -269,7 +238,7 @@ private static ApplicationEntity extractEdiPayloadFromEnvelopedEntity(
} else {
throw new HttpException(
- "Failed to extract EDI payload: invalid content type '" + mimeEntity.getContentTypeValue()
+ "Failed to extract EDI payload: invalid content type '" + mimeEntity.getContentType()
+ "' for AS2 compressed and signed entity");
}
break;
@@ -300,7 +269,7 @@ public static ApplicationEntity extractEdiPayloadFromCompressedEntity(
ApplicationEntity ediEntity;
MimeEntity entity = compressedDataEntity.getCompressedEntity(new ZlibExpanderProvider());
- String contentTypeString = entity.getContentTypeValue();
+ String contentTypeString = entity.getContentType();
if (contentTypeString == null) {
throw new HttpException("Failed to extract EDI payload: content type missing from compressed entity");
}
@@ -326,7 +295,7 @@ public static ApplicationEntity extractEdiPayloadFromCompressedEntity(
} else {
throw new HttpException(
- "Failed to extract EDI payload: invalid content type '" + mimeEntity.getContentTypeValue()
+ "Failed to extract EDI payload: invalid content type '" + mimeEntity.getContentType()
+ "' for AS2 compressed and signed entity");
}
break;
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/MicUtils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/MicUtils.java
index 87f42229fa134..b1699058d8a95 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/MicUtils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/MicUtils.java
@@ -27,9 +27,9 @@
import org.apache.camel.component.as2.api.AS2MicAlgorithm;
import org.apache.camel.component.as2.api.entity.DispositionNotificationOptions;
import org.apache.camel.component.as2.api.entity.DispositionNotificationOptionsParser;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,7 +80,7 @@ public static byte[] createMic(byte[] content, String algorithmId) {
}
public static ReceivedContentMic createReceivedContentMic(
- HttpEntityEnclosingRequest request, Certificate[] validateSigningCertificateChain, PrivateKey decryptingPrivateKey)
+ ClassicHttpRequest request, Certificate[] validateSigningCertificateChain, PrivateKey decryptingPrivateKey)
throws HttpException {
String dispositionNotificationOptionsString
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/SigningUtils.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/SigningUtils.java
index f2cdf8f44c0ca..9ea451a5e1c39 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/SigningUtils.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/util/SigningUtils.java
@@ -31,7 +31,7 @@
import org.apache.camel.component.as2.api.entity.MimeEntity;
import org.apache.camel.component.as2.api.entity.MultipartSignedEntity;
import org.apache.camel.util.ObjectHelper;
-import org.apache.http.HttpException;
+import org.apache.hc.core5.http.HttpException;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.cms.AttributeTable;
import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
index 95faa06bfc5b8..74f0f39b84319 100644
--- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
+++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
@@ -29,7 +29,11 @@
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import java.time.Duration;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import com.helger.as2lib.client.AS2Client;
import com.helger.as2lib.client.AS2ClientRequest;
@@ -60,21 +64,23 @@
import org.apache.camel.component.as2.api.util.MicUtils.ReceivedContentMic;
import org.apache.camel.component.as2.api.util.SigningUtils;
import org.apache.camel.test.AvailablePortFinder;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.entity.ContentType;
-import org.apache.http.impl.EnglishReasonPhraseCatalog;
-import org.apache.http.message.BasicHttpEntityEnclosingRequest;
-import org.apache.http.message.BasicHttpResponse;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
-import org.apache.http.protocol.HttpDateGenerator;
-import org.apache.http.protocol.HttpRequestHandler;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.ProtocolVersion;
+import org.apache.hc.core5.http.impl.EnglishReasonPhraseCatalog;
+import org.apache.hc.core5.http.io.HttpRequestHandler;
+import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
+import org.apache.hc.core5.http.message.BasicHttpResponse;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.protocol.HttpDateGenerator;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.cms.AttributeTable;
import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
@@ -158,7 +164,7 @@ public class AS2MessageTest {
private static final String[] SIGNED_RECEIPT_MIC_ALGORITHMS = new String[] { "sha1", "md5" };
private static final String MDN_MESSAGE_TEMPLATE = "TBD";
- private static final HttpDateGenerator DATE_GENERATOR = new HttpDateGenerator();
+ private static final HttpDateGenerator DATE_GENERATOR = HttpDateGenerator.INSTANCE;
private static AS2ServerConnection testServer;
private static KeyPair issueKP;
@@ -220,7 +226,7 @@ public static void setUpOnce() throws Exception {
VALIDATE_SIGNING_CERTIFICATE_CHAIN, null);
testServer.listen("*", new HttpRequestHandler() {
@Override
- public void handle(HttpRequest request, HttpResponse response, HttpContext context)
+ public void handle(ClassicHttpRequest request, ClassicHttpResponse response, HttpContext context)
throws HttpException, IOException {
try {
org.apache.camel.component.as2.api.entity.EntityParser.parseAS2MessageEntity(request);
@@ -291,9 +297,9 @@ public void plainEDIMessageTest() throws Exception {
"file.txt");
HttpRequest request = httpContext.getRequest();
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -310,12 +316,12 @@ public void plainEDIMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationEDIFACTEntity, "Unexpected request entity type");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) entity;
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for entity");
assertTrue(ediEntity.isMainBody(), "Entity not set as main body of request");
}
@@ -376,9 +382,9 @@ public void multipartSignedMessageTest() throws Exception {
null, DISPOSITION_NOTIFICATION_TO, SIGNED_RECEIPT_MIC_ALGORITHMS, null, null, "file.txt");
HttpRequest request = httpContext.getRequest();
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -395,8 +401,8 @@ public void multipartSignedMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MediaType.MULTIPART_SIGNED),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof MultipartSignedEntity, "Unexpected request entity type");
MultipartSignedEntity signedEntity = (MultipartSignedEntity) entity;
@@ -406,14 +412,14 @@ public void multipartSignedMessageTest() throws Exception {
// Validated first mime part.
assertTrue(signedEntity.getPart(0) instanceof ApplicationEDIFACTEntity, "First mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) signedEntity.getPart(0);
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for first mime part");
assertFalse(ediEntity.isMainBody(), "First mime type set as main body of request");
// Validate second mime part.
assertTrue(signedEntity.getPart(1) instanceof ApplicationPkcs7SignatureEntity, "Second mime part incorrect type ");
ApplicationPkcs7SignatureEntity signatureEntity = (ApplicationPkcs7SignatureEntity) signedEntity.getPart(1);
- assertTrue(signatureEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
+ assertTrue(signatureEntity.getContentType().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
"Unexpected content type for second mime part");
assertFalse(signatureEntity.isMainBody(), "First mime type set as main body of request");
}
@@ -531,9 +537,9 @@ public void envelopedMessageTest(AS2EncryptionAlgorithm encryptionAlgorithm) thr
certList.toArray(new Certificate[0]), "file.txt");
HttpRequest request = httpContext.getRequest();
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -550,8 +556,8 @@ public void envelopedMessageTest(AS2EncryptionAlgorithm encryptionAlgorithm) thr
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationPkcs7MimeEnvelopedDataEntity, "Unexpected request entity type");
ApplicationPkcs7MimeEnvelopedDataEntity envelopedEntity = (ApplicationPkcs7MimeEnvelopedDataEntity) entity;
@@ -561,7 +567,7 @@ public void envelopedMessageTest(AS2EncryptionAlgorithm encryptionAlgorithm) thr
MimeEntity encryptedEntity = envelopedEntity.getEncryptedEntity(signingKP.getPrivate());
assertTrue(encryptedEntity instanceof ApplicationEDIFACTEntity, "Enveloped mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) encryptedEntity;
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for enveloped mime part");
assertFalse(ediEntity.isMainBody(), "Enveloped mime type set as main body of request");
assertEquals(EDI_MESSAGE.replaceAll("[\n\r]", ""), ediEntity.getEdiMessage().replaceAll("[\n\r]", ""),
@@ -586,9 +592,9 @@ public void envelopedAndSignedMessageTest(AS2EncryptionAlgorithm encryptionAlgor
certList.toArray(new Certificate[0]), "file.txt");
HttpRequest request = httpContext.getRequest();
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -606,8 +612,8 @@ public void envelopedAndSignedMessageTest(AS2EncryptionAlgorithm encryptionAlgor
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationPkcs7MimeEnvelopedDataEntity, "Unexpected request entity type");
ApplicationPkcs7MimeEnvelopedDataEntity envelopedEntity = (ApplicationPkcs7MimeEnvelopedDataEntity) entity;
@@ -617,7 +623,7 @@ public void envelopedAndSignedMessageTest(AS2EncryptionAlgorithm encryptionAlgor
MimeEntity encryptedEntity = envelopedEntity.getEncryptedEntity(signingKP.getPrivate());
assertTrue(encryptedEntity instanceof MultipartSignedEntity, "Enveloped mime part incorrect type ");
MultipartSignedEntity multipartSignedEntity = (MultipartSignedEntity) encryptedEntity;
- assertTrue(multipartSignedEntity.getContentType().getValue().startsWith(AS2MediaType.MULTIPART_SIGNED),
+ assertTrue(multipartSignedEntity.getContentType().startsWith(AS2MediaType.MULTIPART_SIGNED),
"Unexpected content type for enveloped mime part");
assertFalse(multipartSignedEntity.isMainBody(), "Enveloped mime type set as main body of request");
assertEquals(2, multipartSignedEntity.getPartCount(), "Request contains invalid number of mime parts");
@@ -625,7 +631,7 @@ public void envelopedAndSignedMessageTest(AS2EncryptionAlgorithm encryptionAlgor
// Validated first mime part.
assertTrue(multipartSignedEntity.getPart(0) instanceof ApplicationEDIFACTEntity, "First mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) multipartSignedEntity.getPart(0);
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for first mime part");
assertFalse(ediEntity.isMainBody(), "First mime type set as main body of request");
@@ -633,7 +639,7 @@ public void envelopedAndSignedMessageTest(AS2EncryptionAlgorithm encryptionAlgor
assertTrue(multipartSignedEntity.getPart(1) instanceof ApplicationPkcs7SignatureEntity,
"Second mime part incorrect type ");
ApplicationPkcs7SignatureEntity signatureEntity = (ApplicationPkcs7SignatureEntity) multipartSignedEntity.getPart(1);
- assertTrue(signatureEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
+ assertTrue(signatureEntity.getContentType().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
"Unexpected content type for second mime part");
assertFalse(signatureEntity.isMainBody(), "First mime type set as main body of request");
@@ -649,8 +655,8 @@ public void signatureVerificationTest() throws Exception {
null, DISPOSITION_NOTIFICATION_TO, SIGNED_RECEIPT_MIC_ALGORITHMS, null, null, "file.txt");
HttpRequest request = httpContext.getRequest();
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof MultipartSignedEntity, "Unexpected request entity type");
MultipartSignedEntity multipartSignedEntity = (MultipartSignedEntity) entity;
@@ -676,12 +682,13 @@ public void mdnMessageTest() throws Exception {
"file.txt");
HttpResponse response = httpContext.getResponse();
- assertEquals(HttpVersion.HTTP_1_1, response.getStatusLine().getProtocolVersion(), "Unexpected method value");
- assertEquals(HttpStatus.SC_OK, response.getStatusLine().getStatusCode(), "Unexpected method value");
- assertEquals(EnglishReasonPhraseCatalog.INSTANCE.getReason(200, null), response.getStatusLine().getReasonPhrase(),
+ assertEquals(HttpVersion.HTTP_1_1, response.getVersion(), "Unexpected method value");
+ assertEquals(HttpStatus.SC_OK, response.getCode(), "Unexpected method value");
+ assertEquals(EnglishReasonPhraseCatalog.INSTANCE.getReason(200, null), response.getReasonPhrase(),
"Unexpected method value");
- HttpEntity responseEntity = response.getEntity();
+ assertTrue(response instanceof ClassicHttpResponse);
+ HttpEntity responseEntity = ((ClassicHttpResponse) response).getEntity();
assertNotNull(responseEntity, "Response entity");
assertTrue(responseEntity instanceof MultipartSignedEntity, "Unexpected response entity type");
MultipartSignedEntity responseSignedEntity = (MultipartSignedEntity) responseEntity;
@@ -693,11 +700,11 @@ public void mdnMessageTest() throws Exception {
assertEquals(2, reportEntity.getPartCount(), "Unexpected number of body parts in report");
MimeEntity firstPart = reportEntity.getPart(0);
assertEquals(ContentType.create(AS2MimeType.TEXT_PLAIN, StandardCharsets.US_ASCII).toString(),
- firstPart.getContentTypeValue(),
+ firstPart.getContentType(),
"Unexpected content type in first body part of report");
MimeEntity secondPart = reportEntity.getPart(1);
- assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, StandardCharsets.US_ASCII).toString(),
- secondPart.getContentTypeValue(),
+ assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION).toString(),
+ secondPart.getContentType(),
"Unexpected content type in second body part of report");
ApplicationPkcs7SignatureEntity signatureEntity = responseSignedEntity.getSignatureEntity();
assertNotNull(signatureEntity, "Signature Entity");
@@ -716,7 +723,7 @@ public void asynchronousMdnMessageTest() throws Exception {
// Create plain edi request message to acknowledge
ApplicationEntity ediEntity = EntityUtils.createEDIEntity(EDI_MESSAGE,
ContentType.create(AS2MediaType.APPLICATION_EDIFACT, StandardCharsets.US_ASCII), null, false, "filename.txt");
- HttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", REQUEST_URI);
+ BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", REQUEST_URI);
HttpMessageUtils.setHeaderValue(request, AS2Header.SUBJECT, SUBJECT);
String httpdate = DATE_GENERATOR.getCurrentDate();
HttpMessageUtils.setHeaderValue(request, AS2Header.DATE, httpdate);
@@ -729,7 +736,8 @@ public void asynchronousMdnMessageTest() throws Exception {
EntityUtils.setMessageEntity(request, ediEntity);
// Create response for MDN creation.
- HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
+ HttpResponse response = new BasicHttpResponse(200, "OK");
+ response.setVersion(new ProtocolVersion("HTTP", 1, 1));
httpdate = DATE_GENERATOR.getCurrentDate();
response.setHeader(AS2Header.DATE, httpdate);
response.setHeader(AS2Header.SERVER, REPORTING_UA);
@@ -791,9 +799,9 @@ public void compressedMessageTest() throws Exception {
null, "file.txt");
HttpRequest request = httpContext.getRequest();
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -810,8 +818,8 @@ public void compressedMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationPkcs7MimeCompressedDataEntity, "Unexpected request entity type");
ApplicationPkcs7MimeCompressedDataEntity compressedDataEntity = (ApplicationPkcs7MimeCompressedDataEntity) entity;
@@ -821,7 +829,7 @@ public void compressedMessageTest() throws Exception {
MimeEntity compressedEntity = compressedDataEntity.getCompressedEntity(new ZlibExpanderProvider());
assertTrue(compressedEntity instanceof ApplicationEDIFACTEntity, "Enveloped mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) compressedEntity;
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for compressed entity");
assertFalse(ediEntity.isMainBody(), "Compressed entity set as main body of request");
@@ -842,9 +850,9 @@ public void compressedAndSignedMessageTest() throws Exception {
null, "file.txt");
HttpRequest request = httpContext.getRequest();
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -861,8 +869,8 @@ public void compressedAndSignedMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationPkcs7MimeCompressedDataEntity, "Unexpected request entity type");
ApplicationPkcs7MimeCompressedDataEntity compressedDataEntity = (ApplicationPkcs7MimeCompressedDataEntity) entity;
@@ -872,7 +880,7 @@ public void compressedAndSignedMessageTest() throws Exception {
MimeEntity compressedEntity = compressedDataEntity.getCompressedEntity(new ZlibExpanderProvider());
assertTrue(compressedEntity instanceof MultipartSignedEntity, "Enveloped mime part incorrect type ");
MultipartSignedEntity multipartSignedEntity = (MultipartSignedEntity) compressedEntity;
- assertTrue(multipartSignedEntity.getContentType().getValue().startsWith(AS2MediaType.MULTIPART_SIGNED),
+ assertTrue(multipartSignedEntity.getContentType().startsWith(AS2MediaType.MULTIPART_SIGNED),
"Unexpected content type for compressed entity");
assertFalse(multipartSignedEntity.isMainBody(), "Multipart signed entity set as main body of request");
assertEquals(2, multipartSignedEntity.getPartCount(), "Multipart signed entity contains invalid number of mime parts");
@@ -880,7 +888,7 @@ public void compressedAndSignedMessageTest() throws Exception {
// Validated first mime part.
assertTrue(multipartSignedEntity.getPart(0) instanceof ApplicationEDIFACTEntity, "First mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) multipartSignedEntity.getPart(0);
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for first mime part");
assertFalse(ediEntity.isMainBody(), "First mime type set as main body of request");
@@ -888,7 +896,7 @@ public void compressedAndSignedMessageTest() throws Exception {
assertTrue(multipartSignedEntity.getPart(1) instanceof ApplicationPkcs7SignatureEntity,
"Second mime part incorrect type ");
ApplicationPkcs7SignatureEntity signatureEntity = (ApplicationPkcs7SignatureEntity) multipartSignedEntity.getPart(1);
- assertTrue(signatureEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
+ assertTrue(signatureEntity.getContentType().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
"Unexpected content type for second mime part");
assertFalse(signatureEntity.isMainBody(), "First mime type set as main body of request");
}
@@ -906,9 +914,9 @@ public void envelopedAndCompressedMessageTest() throws Exception {
AS2EncryptionAlgorithm.AES128_CBC, certList.toArray(new Certificate[0]), "file.txt");
HttpRequest request = httpContext.getRequest();
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -925,8 +933,8 @@ public void envelopedAndCompressedMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationPkcs7MimeEnvelopedDataEntity, "Unexpected request entity type");
ApplicationPkcs7MimeEnvelopedDataEntity envelopedEntity = (ApplicationPkcs7MimeEnvelopedDataEntity) entity;
@@ -937,7 +945,7 @@ public void envelopedAndCompressedMessageTest() throws Exception {
assertTrue(encryptedEntity instanceof ApplicationPkcs7MimeCompressedDataEntity, "Enveloped mime part incorrect type ");
ApplicationPkcs7MimeCompressedDataEntity compressedDataEntity
= (ApplicationPkcs7MimeCompressedDataEntity) encryptedEntity;
- assertTrue(compressedDataEntity.getContentType().getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
+ assertTrue(compressedDataEntity.getContentType().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for compressed mime part");
assertFalse(compressedDataEntity.isMainBody(), "Enveloped mime type set as main body of request");
@@ -945,7 +953,7 @@ public void envelopedAndCompressedMessageTest() throws Exception {
MimeEntity compressedEntity = compressedDataEntity.getCompressedEntity(new ZlibExpanderProvider());
assertTrue(compressedEntity instanceof ApplicationEDIFACTEntity, "Enveloped mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) compressedEntity;
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for compressed entity");
assertFalse(ediEntity.isMainBody(), "Compressed entity set as main body of request");
assertEquals(EDI_MESSAGE.replaceAll("[\n\r]", ""), ediEntity.getEdiMessage().replaceAll("[\n\r]", ""),
@@ -966,9 +974,9 @@ public void envelopedCompressedAndSignedMessageTest() throws Exception {
AS2EncryptionAlgorithm.AES128_CBC, certList.toArray(new Certificate[0]), "file.txt");
HttpRequest request = httpContext.getRequest();
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -985,8 +993,8 @@ public void envelopedCompressedAndSignedMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationPkcs7MimeEnvelopedDataEntity, "Unexpected request entity type");
ApplicationPkcs7MimeEnvelopedDataEntity envelopedEntity = (ApplicationPkcs7MimeEnvelopedDataEntity) entity;
@@ -997,7 +1005,7 @@ public void envelopedCompressedAndSignedMessageTest() throws Exception {
assertTrue(encryptedEntity instanceof ApplicationPkcs7MimeCompressedDataEntity, "Enveloped mime part incorrect type ");
ApplicationPkcs7MimeCompressedDataEntity compressedDataEntity
= (ApplicationPkcs7MimeCompressedDataEntity) encryptedEntity;
- assertTrue(compressedDataEntity.getContentType().getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
+ assertTrue(compressedDataEntity.getContentType().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for compressed mime part");
assertFalse(compressedDataEntity.isMainBody(), "Enveloped mime type set as main body of request");
@@ -1005,7 +1013,7 @@ public void envelopedCompressedAndSignedMessageTest() throws Exception {
MimeEntity compressedEntity = compressedDataEntity.getCompressedEntity(new ZlibExpanderProvider());
assertTrue(compressedEntity instanceof MultipartSignedEntity, "Enveloped mime part incorrect type ");
MultipartSignedEntity multipartSignedEntity = (MultipartSignedEntity) compressedEntity;
- assertTrue(multipartSignedEntity.getContentType().getValue().startsWith(AS2MediaType.MULTIPART_SIGNED),
+ assertTrue(multipartSignedEntity.getContentType().startsWith(AS2MediaType.MULTIPART_SIGNED),
"Unexpected content type for compressed entity");
assertFalse(multipartSignedEntity.isMainBody(), "Multipart signed entity set as main body of request");
assertEquals(2, multipartSignedEntity.getPartCount(), "Multipart signed entity contains invalid number of mime parts");
@@ -1013,7 +1021,7 @@ public void envelopedCompressedAndSignedMessageTest() throws Exception {
// Validated first mime part.
assertTrue(multipartSignedEntity.getPart(0) instanceof ApplicationEDIFACTEntity, "First mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) multipartSignedEntity.getPart(0);
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for first mime part");
assertFalse(ediEntity.isMainBody(), "First mime type set as main body of request");
@@ -1021,7 +1029,7 @@ public void envelopedCompressedAndSignedMessageTest() throws Exception {
assertTrue(multipartSignedEntity.getPart(1) instanceof ApplicationPkcs7SignatureEntity,
"Second mime part incorrect type ");
ApplicationPkcs7SignatureEntity signatureEntity = (ApplicationPkcs7SignatureEntity) multipartSignedEntity.getPart(1);
- assertTrue(signatureEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
+ assertTrue(signatureEntity.getContentType().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
"Unexpected content type for second mime part");
assertFalse(signatureEntity.isMainBody(), "First mime type set as main body of request");
}
diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParserTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParserTest.java
index b7a0baf226213..b27af6b994569 100644
--- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParserTest.java
+++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/entity/DispositionNotificationOptionsParserTest.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.as2.api.entity;
import org.apache.camel.component.as2.api.util.AS2HeaderUtils.Parameter;
+import org.apache.hc.core5.http.ParseException;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
@@ -35,7 +36,7 @@ public class DispositionNotificationOptionsParserTest {
private static final String[] SIGNED_RECEIPT_MICALG_VALUES = { "sha1" };
@Test
- public void parseDispositionNotificationOptionsTest() {
+ public void parseDispositionNotificationOptionsTest() throws ParseException {
DispositionNotificationOptions dispositionNotificationOptions
= DispositionNotificationOptionsParser.parseDispositionNotificationOptions(TEST_NAME_VALUES, null);
diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/entity/EntityParserTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/entity/EntityParserTest.java
index 1033e8cb8e20e..aa7997790ddd6 100644
--- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/entity/EntityParserTest.java
+++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/entity/EntityParserTest.java
@@ -36,14 +36,15 @@
import org.apache.camel.component.as2.api.io.AS2SessionInputBuffer;
import org.apache.camel.component.as2.api.util.EntityUtils;
import org.apache.camel.component.as2.api.util.HttpMessageUtils;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.entity.BasicHttpEntity;
-import org.apache.http.impl.EnglishReasonPhraseCatalog;
-import org.apache.http.impl.io.HttpTransportMetricsImpl;
-import org.apache.http.message.BasicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.ProtocolVersion;
+import org.apache.hc.core5.http.impl.BasicHttpTransportMetrics;
+import org.apache.hc.core5.http.impl.EnglishReasonPhraseCatalog;
+import org.apache.hc.core5.http.io.entity.BasicHttpEntity;
+import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
import org.bouncycastle.asn1.x509.Extension;
@@ -192,16 +193,15 @@ public void tearDown() throws Exception {
@Test
public void parseMessageDispositionNotificationReportMessageTest() throws Exception {
- HttpResponse response = new BasicHttpResponse(
- HttpVersion.HTTP_1_1, HttpStatus.SC_OK, EnglishReasonPhraseCatalog.INSTANCE.getReason(HttpStatus.SC_OK, null));
+ HttpResponse response = new BasicClassicHttpResponse(
+ HttpStatus.SC_OK, EnglishReasonPhraseCatalog.INSTANCE.getReason(HttpStatus.SC_OK, null));
+ response.setVersion(new ProtocolVersion("HTTP", 1, 1));
HttpMessageUtils.setHeaderValue(response, AS2Header.CONTENT_TRANSFER_ENCODING,
DISPOSITION_NOTIFICATION_CONTENT_TRANSFER_ENCODING);
- BasicHttpEntity entity = new BasicHttpEntity();
- entity.setContentType(REPORT_CONTENT_TYPE_VALUE);
InputStream is = new ByteArrayInputStream(
DISPOSITION_NOTIFICATION_REPORT_CONTENT.getBytes(DISPOSITION_NOTIFICATION_REPORT_CONTENT_CHARSET_NAME));
- entity.setContent(is);
+ BasicHttpEntity entity = new BasicHttpEntity(is, ContentType.parse(REPORT_CONTENT_TYPE_VALUE));
EntityUtils.setMessageEntity(response, entity);
EntityParser.parseAS2MessageEntity(response);
@@ -217,11 +217,10 @@ public void parseMessageDispositionNotificationReportBodyTest() throws Exception
InputStream is = new ByteArrayInputStream(
DISPOSITION_NOTIFICATION_REPORT_CONTENT.getBytes(DISPOSITION_NOTIFICATION_REPORT_CONTENT_CHARSET_NAME));
AS2SessionInputBuffer inbuffer
- = new AS2SessionInputBuffer(new HttpTransportMetricsImpl(), DEFAULT_BUFFER_SIZE, DEFAULT_BUFFER_SIZE, null);
- inbuffer.bind(is);
+ = new AS2SessionInputBuffer(new BasicHttpTransportMetrics(), DEFAULT_BUFFER_SIZE, DEFAULT_BUFFER_SIZE);
DispositionNotificationMultipartReportEntity dispositionNotificationMultipartReportEntity = EntityParser
- .parseMultipartReportEntityBody(inbuffer, DISPOSITION_NOTIFICATION_REPORT_CONTENT_BOUNDARY,
+ .parseMultipartReportEntityBody(inbuffer, is, DISPOSITION_NOTIFICATION_REPORT_CONTENT_BOUNDARY,
DISPOSITION_NOTIFICATION_REPORT_CONTENT_CHARSET_NAME,
DISPOSITION_NOTIFICATION_REPORT_CONTENT_TRANSFER_ENCODING);
@@ -240,10 +239,9 @@ public void parseTextPlainBodyTest() throws Exception {
InputStream is = new ByteArrayInputStream(TEXT_PLAIN_CONTENT.getBytes(TEXT_PLAIN_CONTENT_CHARSET_NAME));
AS2SessionInputBuffer inbuffer
- = new AS2SessionInputBuffer(new HttpTransportMetricsImpl(), DEFAULT_BUFFER_SIZE, DEFAULT_BUFFER_SIZE, null);
- inbuffer.bind(is);
+ = new AS2SessionInputBuffer(new BasicHttpTransportMetrics(), DEFAULT_BUFFER_SIZE, DEFAULT_BUFFER_SIZE);
- TextPlainEntity textPlainEntity = EntityParser.parseTextPlainEntityBody(inbuffer, TEXT_PLAIN_CONTENT_BOUNDARY,
+ TextPlainEntity textPlainEntity = EntityParser.parseTextPlainEntityBody(inbuffer, is, TEXT_PLAIN_CONTENT_BOUNDARY,
TEXT_PLAIN_CONTENT_CHARSET_NAME, TEXT_PLAIN_CONTENT_TRANSFER_ENCODING);
String text = textPlainEntity.getText();
@@ -257,11 +255,10 @@ public void parseMessageDispositionNotificationBodyTest() throws Exception {
InputStream is = new ByteArrayInputStream(
DISPOSITION_NOTIFICATION_CONTENT.getBytes(DISPOSITION_NOTIFICATION_CONTENT_CHARSET_NAME));
AS2SessionInputBuffer inbuffer
- = new AS2SessionInputBuffer(new HttpTransportMetricsImpl(), DEFAULT_BUFFER_SIZE, DEFAULT_BUFFER_SIZE, null);
- inbuffer.bind(is);
+ = new AS2SessionInputBuffer(new BasicHttpTransportMetrics(), DEFAULT_BUFFER_SIZE, DEFAULT_BUFFER_SIZE);
AS2MessageDispositionNotificationEntity messageDispositionNotificationEntity = EntityParser
- .parseMessageDispositionNotificationEntityBody(inbuffer, DISPOSITION_NOTIFICATION_CONTENT_BOUNDARY,
+ .parseMessageDispositionNotificationEntityBody(inbuffer, is, DISPOSITION_NOTIFICATION_CONTENT_BOUNDARY,
DISPOSITION_NOTIFICATION_CONTENT_CHARSET_NAME);
assertEquals(EXPECTED_REPORTING_UA, messageDispositionNotificationEntity.getReportingUA(),
@@ -345,7 +342,7 @@ public void parseEnvelopedBodyTest() throws Exception {
textEntity, cmsEnvelopeDataGenerator, contentEncryptor, "binary", true);
MimeEntity decryptedMimeEntity = applicationPkcs7MimeEntity.getEncryptedEntity(encryptKP.getPrivate());
- assertEquals("text/plain; charset=US-ASCII", decryptedMimeEntity.getContentTypeValue(),
+ assertEquals("text/plain; charset=US-ASCII", decryptedMimeEntity.getContentType(),
"Decrypted entity has unexpected content type");
assertEquals("This is a super secret messatge!", ((TextPlainEntity) decryptedMimeEntity).getText(),
"Decrypted entity has unexpected content");
diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/AS2HeaderUtilsTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/AS2HeaderUtilsTest.java
index 103ba087b3428..aa26051a06996 100644
--- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/AS2HeaderUtilsTest.java
+++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/AS2HeaderUtilsTest.java
@@ -17,8 +17,8 @@
package org.apache.camel.component.as2.api.util;
import org.apache.camel.component.as2.api.util.AS2HeaderUtils.Parameter;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.message.ParserCursor;
+import org.apache.hc.core5.util.CharArrayBuffer;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtilsTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtilsTest.java
index e5f7b483c74b2..d4d3698cae436 100644
--- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtilsTest.java
+++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/DispositionNotificationContentUtilsTest.java
@@ -26,9 +26,9 @@
import org.apache.camel.component.as2.api.entity.DispositionMode;
import org.apache.camel.component.as2.api.entity.EntityParser;
import org.apache.camel.component.as2.api.io.AS2SessionInputBuffer;
-import org.apache.http.impl.io.HttpTransportMetricsImpl;
-import org.apache.http.message.BasicLineParser;
-import org.apache.http.util.CharArrayBuffer;
+import org.apache.hc.core5.http.impl.BasicHttpTransportMetrics;
+import org.apache.hc.core5.http.message.BasicLineParser;
+import org.apache.hc.core5.util.CharArrayBuffer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -78,11 +78,11 @@ public void test() throws Exception {
InputStream is = new ByteArrayInputStream(DISPOSITION_NOTIFICATION_CONTENT.getBytes());
- AS2SessionInputBuffer inbuffer = new AS2SessionInputBuffer(new HttpTransportMetricsImpl(), 8 * 1024);
- inbuffer.bind(is);
+ AS2SessionInputBuffer inbuffer = new AS2SessionInputBuffer(new BasicHttpTransportMetrics(), 8 * 1024);
List dispositionNotificationFields
- = EntityParser.parseBodyPartFields(inbuffer, null, BasicLineParser.INSTANCE, new ArrayList());
+ = EntityParser.parseBodyPartFields(inbuffer, is, null, BasicLineParser.INSTANCE,
+ new ArrayList());
AS2MessageDispositionNotificationEntity messageDispositionNotificationEntity
= DispositionNotificationContentUtils.parseDispositionNotification(dispositionNotificationFields);
diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/EntityUtilsTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/EntityUtilsTest.java
index 9a3f992a3859d..5b88f94bbe054 100644
--- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/EntityUtilsTest.java
+++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/EntityUtilsTest.java
@@ -21,8 +21,8 @@
import org.apache.camel.component.as2.api.AS2Header;
import org.apache.camel.component.as2.api.AS2MediaType;
import org.apache.camel.component.as2.api.entity.ApplicationEntity;
-import org.apache.http.Header;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.Header;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -34,7 +34,7 @@ public void testCreateEDIEntityContentTypeWithoutEncoding() throws Exception {
String ediMessage = "whatever";
ApplicationEntity applicationEntity
= EntityUtils.createEDIEntity(ediMessage, ediMessageContentType, null, false, "sample.txt");
- String actualContentType = applicationEntity.getContentTypeValue();
+ String actualContentType = applicationEntity.getContentType();
Assertions.assertEquals("application/edifact", actualContentType, "content type matches");
Header[] actualContentDisposition = applicationEntity.getHeaders(AS2Header.CONTENT_DISPOSITION);
Assertions.assertEquals(1, actualContentDisposition.length, "exactly one Content-Disposition header found");
@@ -48,7 +48,7 @@ public void testCreateEDIEntityContentTypeWithEncoding() throws Exception {
String ediMessage = "whatever";
ApplicationEntity applicationEntity
= EntityUtils.createEDIEntity(ediMessage, ediMessageContentType, null, false, "sample.txt");
- String actualContentType = applicationEntity.getContentTypeValue();
+ String actualContentType = applicationEntity.getContentType();
Assertions.assertEquals("application/edifact; charset=US-ASCII", actualContentType, "content type matches");
Header[] actualContentDisposition = applicationEntity.getHeaders(AS2Header.CONTENT_DISPOSITION);
Assertions.assertEquals(1, actualContentDisposition.length, "exactly one Content-Disposition header found");
@@ -62,7 +62,7 @@ public void testCreateEDIEntityContentTypeWithoutContentDisposition() throws Exc
String ediMessage = "whatever";
ApplicationEntity applicationEntity
= EntityUtils.createEDIEntity(ediMessage, ediMessageContentType, null, false, "");
- String actualContentType = applicationEntity.getContentTypeValue();
+ String actualContentType = applicationEntity.getContentType();
Assertions.assertEquals("application/edifact", actualContentType, "content type matches");
Header[] actualContentDisposition = applicationEntity.getHeaders(AS2Header.CONTENT_DISPOSITION);
Assertions.assertEquals(0, actualContentDisposition.length, "no Content-Disposition headers found");
diff --git a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/MicUtilsTest.java b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/MicUtilsTest.java
index 3ab269da4e7e9..e16abdc3f5fbc 100644
--- a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/MicUtilsTest.java
+++ b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/util/MicUtilsTest.java
@@ -25,10 +25,9 @@
import org.apache.camel.component.as2.api.AS2TransferEncoding;
import org.apache.camel.component.as2.api.entity.ApplicationEDIFACTEntity;
import org.apache.camel.component.as2.api.util.MicUtils.ReceivedContentMic;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpVersion;
-import org.apache.http.entity.BasicHttpEntity;
-import org.apache.http.message.BasicHttpEntityEnclosingRequest;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.io.entity.BasicHttpEntity;
+import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -88,7 +87,7 @@ public void tearDown() throws Exception {
@Test
public void createReceivedContentMicTest() throws Exception {
- HttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/", HttpVersion.HTTP_1_1);
+ BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
request.addHeader(AS2Header.DISPOSITION_NOTIFICATION_OPTIONS, DISPOSITION_NOTIFICATION_OPTIONS_VALUE);
request.addHeader(AS2Header.CONTENT_TYPE, CONTENT_TYPE_VALUE);
@@ -96,9 +95,7 @@ public void createReceivedContentMicTest() throws Exception {
= new ApplicationEDIFACTEntity(
EDI_MESSAGE, StandardCharsets.US_ASCII.name(), AS2TransferEncoding.NONE, true, "filename.txt");
InputStream is = edifactEntity.getContent();
- BasicHttpEntity basicEntity = new BasicHttpEntity();
- basicEntity.setContent(is);
- basicEntity.setContentType(CONTENT_TYPE_VALUE);
+ BasicHttpEntity basicEntity = new BasicHttpEntity(is, ContentType.create(CONTENT_TYPE_VALUE));
request.setEntity(basicEntity);
ReceivedContentMic receivedContentMic = MicUtils.createReceivedContentMic(request, null, null);
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfiguration.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfiguration.java
index 06906f6ae24a5..4fe8098dce65e 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfiguration.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfiguration.java
@@ -15,7 +15,7 @@
*/
@ApiParams(apiName = "client", producerOnly = true,
description = "Sends EDI Messages over HTTP",
- apiMethods = {@ApiMethod(methodName = "send", description="Send ediMessage to trading partner", signatures={"org.apache.http.protocol.HttpCoreContext send(String ediMessage, String requestUri, String subject, String from, String as2From, String as2To, org.apache.camel.component.as2.api.AS2MessageStructure as2MessageStructure, org.apache.http.entity.ContentType ediMessageContentType, String ediMessageTransferEncoding, org.apache.camel.component.as2.api.AS2SignatureAlgorithm signingAlgorithm, java.security.cert.Certificate[] signingCertificateChain, java.security.PrivateKey signingPrivateKey, org.apache.camel.component.as2.api.AS2CompressionAlgorithm compressionAlgorithm, String dispositionNotificationTo, String[] signedReceiptMicAlgorithms, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm encryptingAlgorithm, java.security.cert.Certificate[] encryptingCertificateChain, String attachedFileName)"})}, aliases = {})
+ apiMethods = {@ApiMethod(methodName = "send", description="Send ediMessage to trading partner", signatures={"org.apache.hc.core5.http.protocol.HttpCoreContext send(String ediMessage, String requestUri, String subject, String from, String as2From, String as2To, org.apache.camel.component.as2.api.AS2MessageStructure as2MessageStructure, org.apache.hc.core5.http.ContentType ediMessageContentType, String ediMessageTransferEncoding, org.apache.camel.component.as2.api.AS2SignatureAlgorithm signingAlgorithm, java.security.cert.Certificate[] signingCertificateChain, java.security.PrivateKey signingPrivateKey, org.apache.camel.component.as2.api.AS2CompressionAlgorithm compressionAlgorithm, String dispositionNotificationTo, String[] signedReceiptMicAlgorithms, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm encryptingAlgorithm, java.security.cert.Certificate[] encryptingCertificateChain, String attachedFileName)"})}, aliases = {})
@UriParams
@Configurer(extended = true)
public final class AS2ClientManagerEndpointConfiguration extends AS2Configuration {
@@ -42,7 +42,7 @@ public final class AS2ClientManagerEndpointConfiguration extends AS2Configuratio
private String ediMessage;
@UriParam
@ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "send", description="The content type of EDI message")})
- private org.apache.http.entity.ContentType ediMessageContentType;
+ private org.apache.hc.core5.http.ContentType ediMessageContentType;
@UriParam
@ApiParam(optional = true, apiMethods = {@ApiMethod(methodName = "send", description="The transfer encoding used to transport EDI message")})
private String ediMessageTransferEncoding;
@@ -130,11 +130,11 @@ public void setEdiMessage(String ediMessage) {
this.ediMessage = ediMessage;
}
- public org.apache.http.entity.ContentType getEdiMessageContentType() {
+ public org.apache.hc.core5.http.ContentType getEdiMessageContentType() {
return ediMessageContentType;
}
- public void setEdiMessageContentType(org.apache.http.entity.ContentType ediMessageContentType) {
+ public void setEdiMessageContentType(org.apache.hc.core5.http.ContentType ediMessageContentType) {
this.ediMessageContentType = ediMessageContentType;
}
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfigurationConfigurer.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfigurationConfigurer.java
index c4a46be58d39e..df2eaaee281df 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfigurationConfigurer.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ClientManagerEndpointConfigurationConfigurer.java
@@ -31,9 +31,9 @@ public class AS2ClientManagerEndpointConfigurationConfigurer extends org.apache.
map.put("DecryptingPrivateKey", java.security.PrivateKey.class);
map.put("DispositionNotificationTo", java.lang.String.class);
map.put("EdiMessage", java.lang.String.class);
- map.put("EdiMessageContentType", org.apache.http.entity.ContentType.class);
+ map.put("EdiMessageContentType", org.apache.hc.core5.http.ContentType.class);
map.put("EdiMessageTransferEncoding", java.lang.String.class);
- map.put("EdiMessageType", org.apache.http.entity.ContentType.class);
+ map.put("EdiMessageType", org.apache.hc.core5.http.ContentType.class);
map.put("EncryptingAlgorithm", org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class);
map.put("EncryptingCertificateChain", java.security.cert.Certificate[].class);
map.put("From", java.lang.String.class);
@@ -88,11 +88,11 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj
case "edimessage":
case "ediMessage": target.setEdiMessage(property(camelContext, java.lang.String.class, value)); return true;
case "edimessagecontenttype":
- case "ediMessageContentType": target.setEdiMessageContentType(property(camelContext, org.apache.http.entity.ContentType.class, value)); return true;
+ case "ediMessageContentType": target.setEdiMessageContentType(property(camelContext, org.apache.hc.core5.http.ContentType.class, value)); return true;
case "edimessagetransferencoding":
case "ediMessageTransferEncoding": target.setEdiMessageTransferEncoding(property(camelContext, java.lang.String.class, value)); return true;
case "edimessagetype":
- case "ediMessageType": target.setEdiMessageType(property(camelContext, org.apache.http.entity.ContentType.class, value)); return true;
+ case "ediMessageType": target.setEdiMessageType(property(camelContext, org.apache.hc.core5.http.ContentType.class, value)); return true;
case "encryptingalgorithm":
case "encryptingAlgorithm": target.setEncryptingAlgorithm(property(camelContext, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class, value)); return true;
case "encryptingcertificatechain":
@@ -173,11 +173,11 @@ public Class> getOptionType(String name, boolean ignoreCase) {
case "edimessage":
case "ediMessage": return java.lang.String.class;
case "edimessagecontenttype":
- case "ediMessageContentType": return org.apache.http.entity.ContentType.class;
+ case "ediMessageContentType": return org.apache.hc.core5.http.ContentType.class;
case "edimessagetransferencoding":
case "ediMessageTransferEncoding": return java.lang.String.class;
case "edimessagetype":
- case "ediMessageType": return org.apache.http.entity.ContentType.class;
+ case "ediMessageType": return org.apache.hc.core5.http.ContentType.class;
case "encryptingalgorithm":
case "encryptingAlgorithm": return org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class;
case "encryptingcertificatechain":
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ConfigurationConfigurer.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ConfigurationConfigurer.java
index c9bc936f0eaff..1363228a518dc 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ConfigurationConfigurer.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ConfigurationConfigurer.java
@@ -31,7 +31,7 @@ public class AS2ConfigurationConfigurer extends org.apache.camel.support.compone
map.put("DecryptingPrivateKey", java.security.PrivateKey.class);
map.put("DispositionNotificationTo", java.lang.String.class);
map.put("EdiMessageTransferEncoding", java.lang.String.class);
- map.put("EdiMessageType", org.apache.http.entity.ContentType.class);
+ map.put("EdiMessageType", org.apache.hc.core5.http.ContentType.class);
map.put("EncryptingAlgorithm", org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class);
map.put("EncryptingCertificateChain", java.security.cert.Certificate[].class);
map.put("From", java.lang.String.class);
@@ -86,7 +86,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj
case "edimessagetransferencoding":
case "ediMessageTransferEncoding": target.setEdiMessageTransferEncoding(property(camelContext, java.lang.String.class, value)); return true;
case "edimessagetype":
- case "ediMessageType": target.setEdiMessageType(property(camelContext, org.apache.http.entity.ContentType.class, value)); return true;
+ case "ediMessageType": target.setEdiMessageType(property(camelContext, org.apache.hc.core5.http.ContentType.class, value)); return true;
case "encryptingalgorithm":
case "encryptingAlgorithm": target.setEncryptingAlgorithm(property(camelContext, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class, value)); return true;
case "encryptingcertificatechain":
@@ -167,7 +167,7 @@ public Class> getOptionType(String name, boolean ignoreCase) {
case "edimessagetransferencoding":
case "ediMessageTransferEncoding": return java.lang.String.class;
case "edimessagetype":
- case "ediMessageType": return org.apache.http.entity.ContentType.class;
+ case "ediMessageType": return org.apache.hc.core5.http.ContentType.class;
case "encryptingalgorithm":
case "encryptingAlgorithm": return org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class;
case "encryptingcertificatechain":
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointConfigurer.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointConfigurer.java
index 1a2331fad378d..6d7b47c971456 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointConfigurer.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2EndpointConfigurer.java
@@ -31,7 +31,7 @@ public class AS2EndpointConfigurer extends PropertyConfigurerSupport implements
map.put("compressionAlgorithm", org.apache.camel.component.as2.api.AS2CompressionAlgorithm.class);
map.put("dispositionNotificationTo", java.lang.String.class);
map.put("ediMessageTransferEncoding", java.lang.String.class);
- map.put("ediMessageType", org.apache.http.entity.ContentType.class);
+ map.put("ediMessageType", org.apache.hc.core5.http.ContentType.class);
map.put("from", java.lang.String.class);
map.put("hostnameVerifier", javax.net.ssl.HostnameVerifier.class);
map.put("httpConnectionPoolSize", java.lang.Integer.class);
@@ -88,7 +88,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj
case "edimessagetransferencoding":
case "ediMessageTransferEncoding": target.getConfiguration().setEdiMessageTransferEncoding(property(camelContext, java.lang.String.class, value)); return true;
case "edimessagetype":
- case "ediMessageType": target.getConfiguration().setEdiMessageType(property(camelContext, org.apache.http.entity.ContentType.class, value)); return true;
+ case "ediMessageType": target.getConfiguration().setEdiMessageType(property(camelContext, org.apache.hc.core5.http.ContentType.class, value)); return true;
case "encryptingalgorithm":
case "encryptingAlgorithm": target.getConfiguration().setEncryptingAlgorithm(property(camelContext, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class, value)); return true;
case "encryptingcertificatechain":
@@ -173,7 +173,7 @@ public Class> getOptionType(String name, boolean ignoreCase) {
case "edimessagetransferencoding":
case "ediMessageTransferEncoding": return java.lang.String.class;
case "edimessagetype":
- case "ediMessageType": return org.apache.http.entity.ContentType.class;
+ case "ediMessageType": return org.apache.hc.core5.http.ContentType.class;
case "encryptingalgorithm":
case "encryptingAlgorithm": return org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class;
case "encryptingcertificatechain":
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfiguration.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfiguration.java
index c504a4753c7eb..1cf291da0ec4e 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfiguration.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfiguration.java
@@ -15,7 +15,7 @@
*/
@ApiParams(apiName = "server", consumerOnly = true,
description = "Receives EDI Messages over HTTP",
- apiMethods = {@ApiMethod(methodName = "listen", signatures={"void listen(String requestUriPattern, org.apache.http.protocol.HttpRequestHandler handler)"})}, aliases = {})
+ apiMethods = {@ApiMethod(methodName = "listen", signatures={"void listen(String requestUriPattern, org.apache.hc.core5.http.io.HttpRequestHandler handler)"})}, aliases = {})
@UriParams
@Configurer(extended = true)
public final class AS2ServerManagerEndpointConfiguration extends AS2Configuration {
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfigurationConfigurer.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfigurationConfigurer.java
index c0d199d058e0a..d7e0b88590a09 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfigurationConfigurer.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/AS2ServerManagerEndpointConfigurationConfigurer.java
@@ -31,7 +31,7 @@ public class AS2ServerManagerEndpointConfigurationConfigurer extends org.apache.
map.put("DecryptingPrivateKey", java.security.PrivateKey.class);
map.put("DispositionNotificationTo", java.lang.String.class);
map.put("EdiMessageTransferEncoding", java.lang.String.class);
- map.put("EdiMessageType", org.apache.http.entity.ContentType.class);
+ map.put("EdiMessageType", org.apache.hc.core5.http.ContentType.class);
map.put("EncryptingAlgorithm", org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class);
map.put("EncryptingCertificateChain", java.security.cert.Certificate[].class);
map.put("From", java.lang.String.class);
@@ -87,7 +87,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj
case "edimessagetransferencoding":
case "ediMessageTransferEncoding": target.setEdiMessageTransferEncoding(property(camelContext, java.lang.String.class, value)); return true;
case "edimessagetype":
- case "ediMessageType": target.setEdiMessageType(property(camelContext, org.apache.http.entity.ContentType.class, value)); return true;
+ case "ediMessageType": target.setEdiMessageType(property(camelContext, org.apache.hc.core5.http.ContentType.class, value)); return true;
case "encryptingalgorithm":
case "encryptingAlgorithm": target.setEncryptingAlgorithm(property(camelContext, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class, value)); return true;
case "encryptingcertificatechain":
@@ -170,7 +170,7 @@ public Class> getOptionType(String name, boolean ignoreCase) {
case "edimessagetransferencoding":
case "ediMessageTransferEncoding": return java.lang.String.class;
case "edimessagetype":
- case "ediMessageType": return org.apache.http.entity.ContentType.class;
+ case "ediMessageType": return org.apache.hc.core5.http.ContentType.class;
case "encryptingalgorithm":
case "encryptingAlgorithm": return org.apache.camel.component.as2.api.AS2EncryptionAlgorithm.class;
case "encryptingcertificatechain":
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/converter/ContentTypeConverterLoader.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/converter/ContentTypeConverterLoader.java
index 6fd83fbaad0eb..eb58e70f081b4 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/converter/ContentTypeConverterLoader.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/converter/ContentTypeConverterLoader.java
@@ -41,7 +41,7 @@ public void load(TypeConverterRegistry registry) throws TypeConverterLoaderExcep
}
private void registerConverters(TypeConverterRegistry registry) {
- addTypeConverter(registry, org.apache.http.entity.ContentType.class, java.lang.String.class, false,
+ addTypeConverter(registry, org.apache.hc.core5.http.ContentType.class, java.lang.String.class, false,
(type, exchange, value) -> org.apache.camel.component.as2.converter.ContentTypeConverter.toContentType((java.lang.String) value));
}
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/internal/AS2ClientManagerApiMethod.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/internal/AS2ClientManagerApiMethod.java
index c23d6f81c163d..ba4f782638b24 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/internal/AS2ClientManagerApiMethod.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/internal/AS2ClientManagerApiMethod.java
@@ -20,7 +20,7 @@
public enum AS2ClientManagerApiMethod implements ApiMethod {
SEND(
- org.apache.http.protocol.HttpCoreContext.class,
+ org.apache.hc.core5.http.protocol.HttpCoreContext.class,
"send",
arg("ediMessage", String.class),
arg("requestUri", String.class),
@@ -29,7 +29,7 @@ public enum AS2ClientManagerApiMethod implements ApiMethod {
arg("as2From", String.class),
arg("as2To", String.class),
arg("as2MessageStructure", org.apache.camel.component.as2.api.AS2MessageStructure.class),
- arg("ediMessageContentType", org.apache.http.entity.ContentType.class),
+ arg("ediMessageContentType", org.apache.hc.core5.http.ContentType.class),
arg("ediMessageTransferEncoding", String.class),
arg("signingAlgorithm", org.apache.camel.component.as2.api.AS2SignatureAlgorithm.class),
arg("signingCertificateChain", new java.security.cert.Certificate[0].getClass()),
diff --git a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/internal/AS2ServerManagerApiMethod.java b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/internal/AS2ServerManagerApiMethod.java
index 7ee9b7ff256df..60f918922ab5a 100644
--- a/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/internal/AS2ServerManagerApiMethod.java
+++ b/components/camel-as2/camel-as2-component/src/generated/java/org/apache/camel/component/as2/internal/AS2ServerManagerApiMethod.java
@@ -23,7 +23,7 @@ public enum AS2ServerManagerApiMethod implements ApiMethod {
void.class,
"listen",
arg("requestUriPattern", String.class),
- arg("handler", org.apache.http.protocol.HttpRequestHandler.class));
+ arg("handler", org.apache.hc.core5.http.io.HttpRequestHandler.class));
private final ApiMethod apiMethod;
diff --git a/components/camel-as2/camel-as2-component/src/generated/resources/META-INF/org/apache/camel/component/as2/as2.json b/components/camel-as2/camel-as2-component/src/generated/resources/META-INF/org/apache/camel/component/as2/as2.json
index c1bdb573241c4..9d279ce2cdcc0 100644
--- a/components/camel-as2/camel-as2-component/src/generated/resources/META-INF/org/apache/camel/component/as2/as2.json
+++ b/components/camel-as2/camel-as2-component/src/generated/resources/META-INF/org/apache/camel/component/as2/as2.json
@@ -41,7 +41,7 @@
"compressionAlgorithm": { "index": 8, "kind": "parameter", "displayName": "Compression Algorithm", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2CompressionAlgorithm", "enum": [ "ZLIB" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The algorithm used to compress EDI message." },
"dispositionNotificationTo": { "index": 9, "kind": "parameter", "displayName": "Disposition Notification To", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The value of the Disposition-Notification-To header. Assigning a value to this parameter requests a message disposition notification (MDN) for the AS2 message." },
"ediMessageTransferEncoding": { "index": 10, "kind": "parameter", "displayName": "Edi Message Transfer Encoding", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The transfer encoding of EDI message." },
- "ediMessageType": { "index": 11, "kind": "parameter", "displayName": "Edi Message Type", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.http.entity.ContentType", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The content type of EDI message. One of application\/edifact, application\/edi-x12, application\/edi-consent, application\/xml" },
+ "ediMessageType": { "index": 11, "kind": "parameter", "displayName": "Edi Message Type", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.hc.core5.http.ContentType", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The content type of EDI message. One of application\/edifact, application\/edi-x12, application\/edi-consent, application\/xml" },
"from": { "index": 12, "kind": "parameter", "displayName": "From", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The value of the From header of AS2 message." },
"hostnameVerifier": { "index": 13, "kind": "parameter", "displayName": "Hostname Verifier", "group": "common", "label": "", "required": false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "Set hostname verifier for SSL session." },
"httpConnectionPoolSize": { "index": 14, "kind": "parameter", "displayName": "Http Connection Pool Size", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5", "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "The maximum size of the connection pool for http connections (client only)" },
@@ -72,11 +72,11 @@
"validateSigningCertificateChain": { "index": 39, "kind": "parameter", "displayName": "Validate Signing Certificate Chain", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.as2.AS2Configuration", "configurationField": "configuration", "description": "Certificates to validate the message's signature against. If not supplied, validation will not take place. Server: validates the received message. Client: not yet implemented, should validate the MDN" }
},
"apis": {
- "client": { "consumerOnly": false, "producerOnly": true, "description": "Sends EDI Messages over HTTP", "methods": { "send": { "description": "Send ediMessage to trading partner", "signatures": [ "org.apache.http.protocol.HttpCoreContext send(String ediMessage, String requestUri, String subject, String from, String as2From, String as2To, org.apache.camel.component.as2.api.AS2MessageStructure as2MessageStructure, org.apache.http.entity.ContentType ediMessageContentType, String ediMessageTransferEncoding, org.apache.camel.component.as2.api.AS2SignatureAlgorithm signingAlgorithm, java.security.cert.Certificate[] signingCertificateChain, java.security.PrivateKey signingPrivateKey, org.apache.camel.component.as2.api.AS2CompressionAlgorithm compressionAlgorithm, String dispositionNotificationTo, String[] signedReceiptMicAlgorithms, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm encryptingAlgorithm, java.security.cert.Certificate[] encryptingCertificateChain, String attachedFileName)" ] } } },
- "server": { "consumerOnly": true, "producerOnly": false, "description": "Receives EDI Messages over HTTP", "methods": { "listen": { "description": "", "signatures": [ "void listen(String requestUriPattern, org.apache.http.protocol.HttpRequestHandler handler)" ] } } }
+ "client": { "consumerOnly": false, "producerOnly": true, "description": "Sends EDI Messages over HTTP", "methods": { "send": { "description": "Send ediMessage to trading partner", "signatures": [ "org.apache.hc.core5.http.protocol.HttpCoreContext send(String ediMessage, String requestUri, String subject, String from, String as2From, String as2To, org.apache.camel.component.as2.api.AS2MessageStructure as2MessageStructure, org.apache.hc.core5.http.ContentType ediMessageContentType, String ediMessageTransferEncoding, org.apache.camel.component.as2.api.AS2SignatureAlgorithm signingAlgorithm, java.security.cert.Certificate[] signingCertificateChain, java.security.PrivateKey signingPrivateKey, org.apache.camel.component.as2.api.AS2CompressionAlgorithm compressionAlgorithm, String dispositionNotificationTo, String[] signedReceiptMicAlgorithms, org.apache.camel.component.as2.api.AS2EncryptionAlgorithm encryptingAlgorithm, java.security.cert.Certificate[] encryptingCertificateChain, String attachedFileName)" ] } } },
+ "server": { "consumerOnly": true, "producerOnly": false, "description": "Receives EDI Messages over HTTP", "methods": { "listen": { "description": "", "signatures": [ "void listen(String requestUriPattern, org.apache.hc.core5.http.io.HttpRequestHandler handler)" ] } } }
},
"apiProperties": {
- "client": { "methods": { "send": { "properties": { "as2From": { "index": 0, "kind": "parameter", "displayName": "As2 From", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "AS2 name of sender", "optional": false }, "as2MessageStructure": { "index": 1, "kind": "parameter", "displayName": "As2 Message Structure", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2MessageStructure", "enum": [ "PLAIN", "SIGNED", "ENCRYPTED", "SIGNED_ENCRYPTED", "PLAIN_COMPRESSED", "SIGNED_COMPRESSED", "ENCRYPTED_COMPRESSED", "ENCRYPTED_COMPRESSED_SIGNED" ], "deprecated": false, "autowired": false, "secret": false, "description": "The structure of AS2 to send; see AS2MessageStructure", "optional": false }, "as2To": { "index": 2, "kind": "parameter", "displayName": "As2 To", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "AS2 name of recipient", "optional": false }, "attachedFileName": { "index": 3, "kind": "parameter", "displayName": "Attached File Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The name of the attached file or null if user doesn't want to specify it", "optional": true }, "compressionAlgorithm": { "index": 4, "kind": "parameter", "displayName": "Compression Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2CompressionAlgorithm", "enum": [ "ZLIB" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to compress the message or null if sending EDI message uncompressed", "optional": true }, "dispositionNotificationTo": { "index": 5, "kind": "parameter", "displayName": "Disposition Notification To", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "An RFC2822 address to request a receipt or null if no receipt requested", "optional": true }, "ediMessage": { "index": 6, "kind": "parameter", "displayName": "Edi Message", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "EDI message to transport", "optional": false }, "ediMessageContentType": { "index": 7, "kind": "parameter", "displayName": "Edi Message Content Type", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.http.entity.ContentType", "deprecated": false, "autowired": false, "secret": false, "description": "The content type of EDI message", "optional": false }, "ediMessageTransferEncoding": { "index": 8, "kind": "parameter", "displayName": "Edi Message Transfer Encoding", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The transfer encoding used to transport EDI message", "optional": true }, "encryptingAlgorithm": { "index": 9, "kind": "parameter", "displayName": "Encrypting Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2EncryptionAlgorithm", "enum": [ "AES128_CBC", "AES192_CBC", "AES256_CBC", "AES128_CCM", "AES192_CCM", "AES256_CCM", "AES128_GCM", "AES192_GCM", "AES256_GCM", "CAMELLIA128_CBC", "CAMELLIA192_CBC", "CAMELLIA256_CBC", "CAST5_CBC", "DES_CBC", "DES_EDE3_CBC", "GOST28147_GCFB", "IDEA_CBC", "RC2_CBC", "RC4", "SEED_CBC" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to encrypt the message or null if sending EDI message unencrypted", "optional": true }, "encryptingCertificateChain": { "index": 10, "kind": "parameter", "displayName": "Encrypting Certificate Chain", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "description": "The chain of certificates used to encrypt the message or null if sending EDI message unencrypted", "optional": true }, "from": { "index": 11, "kind": "parameter", "displayName": "From", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "RFC2822 address of sender", "optional": false }, "requestUri": { "index": 12, "kind": "parameter", "displayName": "Request Uri", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Resource location to deliver message", "optional": false }, "signedReceiptMicAlgorithms": { "index": 13, "kind": "parameter", "displayName": "Signed Receipt Mic Algorithms", "group": "producer", "label": "", "required": false, "type": "array", "javaType": "java.lang.String[]", "deprecated": false, "autowired": false, "secret": false, "description": "The senders list of signing algorithms for signing receipt, in preferred order, or null if requesting an unsigned receipt.", "optional": true }, "signingAlgorithm": { "index": 14, "kind": "parameter", "displayName": "Signing Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2SignatureAlgorithm", "enum": [ "SHA3_224WITHRSA", "SHA3_256WITHRSA", "SHA3_384withRSA", "SHA3_512WITHRSA", "MD5WITHRSA", "SHA1WITHRSA", "MD2WITHRSA", "SHA224WITHRSA", "SHA256WITHRSA", "SHA384WITHRSA", "SHA512WITHRSA", "RIPEMD128WITHRSA", "RIPEMD160WITHRSA", "RIPEMD256WITHRSA", "SHA224WITHDSA", "SHA256WITHDSA", "SHA384WITHDSA", "SHA512WITHDSA", "SHA3_224WITHDSA", "SHA3_256WITHDSA", "SHA3_384WITHDSA", "SHA3_512WITHDSA", "SHA1WITHDSA", "SHA3_224WITHECDSA", "SHA3_256WITHECDSA", "SHA3_384WITHECDSA", "SHA3_512WITHECDSA", "SHA1WITHECDSA", "SHA224WITHECDSA", "SHA256WITHECDSA", "SHA384WITHECDSA", "SHA512WITHECDSA", "SHA1WITHPLAIN_ECDSA", "SHA224WITHPLAIN_ECDSA", "SHA256WITHPLAIN_ECDSA", "SHA384WITHPLAIN_ECDSA", "SHA512WITHPLAIN_ECDSA", "RIPEMD160WITHPLAIN_ECDSA", "SHA1WITHRSAANDMGF1", "SHA224WITHRSAANDMGF1", "SHA256WITHRSAANDMGF1", "SHA384WITHRSAANDMGF1", "SHA512WITHRSAANDMGF1", "SHA3_224WITHRSAANDMGF1", "SHA3_256WITHRSAANDMGF1", "SHA3_384WITHRSAANDMGF1", "SHA3_512WITHRSAANDMGF1" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to sign the message or null if sending EDI message unsigned", "optional": true }, "signingCertificateChain": { "index": 15, "kind": "parameter", "displayName": "Signing Certificate Chain", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "description": "The chain of certificates used to sign the message or null if sending EDI message unsigned", "optional": true }, "signingPrivateKey": { "index": 16, "kind": "parameter", "displayName": "Signing Private Key", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": false, "description": "The private key used to sign EDI message", "optional": true }, "subject": { "index": 17, "kind": "parameter", "displayName": "Subject", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Message subject", "optional": false } } } } },
+ "client": { "methods": { "send": { "properties": { "as2From": { "index": 0, "kind": "parameter", "displayName": "As2 From", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "AS2 name of sender", "optional": false }, "as2MessageStructure": { "index": 1, "kind": "parameter", "displayName": "As2 Message Structure", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2MessageStructure", "enum": [ "PLAIN", "SIGNED", "ENCRYPTED", "SIGNED_ENCRYPTED", "PLAIN_COMPRESSED", "SIGNED_COMPRESSED", "ENCRYPTED_COMPRESSED", "ENCRYPTED_COMPRESSED_SIGNED" ], "deprecated": false, "autowired": false, "secret": false, "description": "The structure of AS2 to send; see AS2MessageStructure", "optional": false }, "as2To": { "index": 2, "kind": "parameter", "displayName": "As2 To", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "AS2 name of recipient", "optional": false }, "attachedFileName": { "index": 3, "kind": "parameter", "displayName": "Attached File Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The name of the attached file or null if user doesn't want to specify it", "optional": true }, "compressionAlgorithm": { "index": 4, "kind": "parameter", "displayName": "Compression Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2CompressionAlgorithm", "enum": [ "ZLIB" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to compress the message or null if sending EDI message uncompressed", "optional": true }, "dispositionNotificationTo": { "index": 5, "kind": "parameter", "displayName": "Disposition Notification To", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "An RFC2822 address to request a receipt or null if no receipt requested", "optional": true }, "ediMessage": { "index": 6, "kind": "parameter", "displayName": "Edi Message", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "EDI message to transport", "optional": false }, "ediMessageContentType": { "index": 7, "kind": "parameter", "displayName": "Edi Message Content Type", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.hc.core5.http.ContentType", "deprecated": false, "autowired": false, "secret": false, "description": "The content type of EDI message", "optional": false }, "ediMessageTransferEncoding": { "index": 8, "kind": "parameter", "displayName": "Edi Message Transfer Encoding", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The transfer encoding used to transport EDI message", "optional": true }, "encryptingAlgorithm": { "index": 9, "kind": "parameter", "displayName": "Encrypting Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2EncryptionAlgorithm", "enum": [ "AES128_CBC", "AES192_CBC", "AES256_CBC", "AES128_CCM", "AES192_CCM", "AES256_CCM", "AES128_GCM", "AES192_GCM", "AES256_GCM", "CAMELLIA128_CBC", "CAMELLIA192_CBC", "CAMELLIA256_CBC", "CAST5_CBC", "DES_CBC", "DES_EDE3_CBC", "GOST28147_GCFB", "IDEA_CBC", "RC2_CBC", "RC4", "SEED_CBC" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to encrypt the message or null if sending EDI message unencrypted", "optional": true }, "encryptingCertificateChain": { "index": 10, "kind": "parameter", "displayName": "Encrypting Certificate Chain", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "description": "The chain of certificates used to encrypt the message or null if sending EDI message unencrypted", "optional": true }, "from": { "index": 11, "kind": "parameter", "displayName": "From", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "RFC2822 address of sender", "optional": false }, "requestUri": { "index": 12, "kind": "parameter", "displayName": "Request Uri", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Resource location to deliver message", "optional": false }, "signedReceiptMicAlgorithms": { "index": 13, "kind": "parameter", "displayName": "Signed Receipt Mic Algorithms", "group": "producer", "label": "", "required": false, "type": "array", "javaType": "java.lang.String[]", "deprecated": false, "autowired": false, "secret": false, "description": "The senders list of signing algorithms for signing receipt, in preferred order, or null if requesting an unsigned receipt.", "optional": true }, "signingAlgorithm": { "index": 14, "kind": "parameter", "displayName": "Signing Algorithm", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.as2.api.AS2SignatureAlgorithm", "enum": [ "SHA3_224WITHRSA", "SHA3_256WITHRSA", "SHA3_384withRSA", "SHA3_512WITHRSA", "MD5WITHRSA", "SHA1WITHRSA", "MD2WITHRSA", "SHA224WITHRSA", "SHA256WITHRSA", "SHA384WITHRSA", "SHA512WITHRSA", "RIPEMD128WITHRSA", "RIPEMD160WITHRSA", "RIPEMD256WITHRSA", "SHA224WITHDSA", "SHA256WITHDSA", "SHA384WITHDSA", "SHA512WITHDSA", "SHA3_224WITHDSA", "SHA3_256WITHDSA", "SHA3_384WITHDSA", "SHA3_512WITHDSA", "SHA1WITHDSA", "SHA3_224WITHECDSA", "SHA3_256WITHECDSA", "SHA3_384WITHECDSA", "SHA3_512WITHECDSA", "SHA1WITHECDSA", "SHA224WITHECDSA", "SHA256WITHECDSA", "SHA384WITHECDSA", "SHA512WITHECDSA", "SHA1WITHPLAIN_ECDSA", "SHA224WITHPLAIN_ECDSA", "SHA256WITHPLAIN_ECDSA", "SHA384WITHPLAIN_ECDSA", "SHA512WITHPLAIN_ECDSA", "RIPEMD160WITHPLAIN_ECDSA", "SHA1WITHRSAANDMGF1", "SHA224WITHRSAANDMGF1", "SHA256WITHRSAANDMGF1", "SHA384WITHRSAANDMGF1", "SHA512WITHRSAANDMGF1", "SHA3_224WITHRSAANDMGF1", "SHA3_256WITHRSAANDMGF1", "SHA3_384WITHRSAANDMGF1", "SHA3_512WITHRSAANDMGF1" ], "deprecated": false, "autowired": false, "secret": false, "description": "The algorithm used to sign the message or null if sending EDI message unsigned", "optional": true }, "signingCertificateChain": { "index": 15, "kind": "parameter", "displayName": "Signing Certificate Chain", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.cert.Certificate[]", "deprecated": false, "autowired": false, "secret": false, "description": "The chain of certificates used to sign the message or null if sending EDI message unsigned", "optional": true }, "signingPrivateKey": { "index": 16, "kind": "parameter", "displayName": "Signing Private Key", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "java.security.PrivateKey", "deprecated": false, "autowired": false, "secret": false, "description": "The private key used to sign EDI message", "optional": true }, "subject": { "index": 17, "kind": "parameter", "displayName": "Subject", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Message subject", "optional": false } } } } },
"server": { "methods": { "listen": { "properties": { "requestUriPattern": { "index": 0, "kind": "parameter", "displayName": "Request Uri Pattern", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "", "optional": false } } } } }
}
}
diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Configuration.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Configuration.java
index f9916915dfd15..7b19618d3e802 100644
--- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Configuration.java
+++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Configuration.java
@@ -34,7 +34,7 @@
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
import org.apache.camel.spi.UriPath;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
/**
* Component configuration for AS2 component.
diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Consumer.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Consumer.java
index 92d39d0f0381e..a71af284dd0ed 100644
--- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Consumer.java
+++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Consumer.java
@@ -33,13 +33,13 @@
import org.apache.camel.support.component.ApiConsumerHelper;
import org.apache.camel.support.component.ApiMethod;
import org.apache.camel.support.component.ApiMethodHelper;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
-import org.apache.http.protocol.HttpRequestHandler;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpEntityContainer;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.io.HttpRequestHandler;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -102,20 +102,15 @@ protected void doStart() throws Exception {
@Override
protected void doStop() throws Exception {
- if (apiProxy != null) {
- String requestUri = (String) properties.get(REQUEST_URI_PROPERTY);
- apiProxy.stopListening(requestUri);
- }
-
super.doStop();
}
@Override
- public void handle(HttpRequest request, HttpResponse response, HttpContext context)
+ public void handle(ClassicHttpRequest request, ClassicHttpResponse response, HttpContext context)
throws HttpException {
Exception exception;
try {
- if (request instanceof HttpEntityEnclosingRequest) {
+ if (request instanceof HttpEntityContainer) {
EntityParser.parseAS2MessageEntity(request);
apiProxy.handleMDNResponse(context, getEndpoint().getSubject(),
ofNullable(getEndpoint().getFrom()).orElse(getEndpoint().getConfiguration().getServer()));
diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Endpoint.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Endpoint.java
index 42134cf3a02ee..70aa0e4c61025 100644
--- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Endpoint.java
+++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Endpoint.java
@@ -48,7 +48,7 @@
import org.apache.camel.support.component.AbstractApiEndpoint;
import org.apache.camel.support.component.ApiMethod;
import org.apache.camel.support.component.ApiMethodPropertiesHelper;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
/**
* Transfer data securely and reliably using the AS2 protocol (RFC4130).
diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Producer.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Producer.java
index fece60f46145e..b3c389ba8c968 100644
--- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Producer.java
+++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Producer.java
@@ -23,9 +23,10 @@
import org.apache.camel.component.as2.internal.AS2Constants;
import org.apache.camel.component.as2.internal.AS2PropertiesHelper;
import org.apache.camel.support.component.AbstractApiProducer;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
/**
* The AS2 producer.
@@ -41,11 +42,13 @@ public void interceptResult(Object methodResult, Exchange resultExchange) {
HttpCoreContext context = (HttpCoreContext) methodResult;
resultExchange.setProperty(AS2Constants.AS2_INTERCHANGE, context);
HttpResponse response = context.getResponse();
- HttpEntity entity = response.getEntity();
- if (entity instanceof DispositionNotificationMultipartReportEntity || entity instanceof MultipartSignedEntity) {
- resultExchange.getMessage().setBody(entity);
- } else {
- resultExchange.getMessage().setBody(null);
+ if (response instanceof ClassicHttpResponse classicResponse) {
+ HttpEntity entity = classicResponse.getEntity();
+ if (entity instanceof DispositionNotificationMultipartReportEntity || entity instanceof MultipartSignedEntity) {
+ resultExchange.getMessage().setBody(entity);
+ } else {
+ resultExchange.getMessage().setBody(null);
+ }
}
}
}
diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/converter/ContentTypeConverter.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/converter/ContentTypeConverter.java
index 3662b981276a1..88c5b8f1586f9 100644
--- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/converter/ContentTypeConverter.java
+++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/converter/ContentTypeConverter.java
@@ -18,7 +18,7 @@
import org.apache.camel.CamelException;
import org.apache.camel.Converter;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ContentType;
/**
* Content type related converters.
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ClientManagerIT.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ClientManagerIT.java
index 3f45a164e12ca..7431f1837a789 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ClientManagerIT.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ClientManagerIT.java
@@ -64,19 +64,19 @@
import org.apache.camel.test.AvailablePortFinder;
import org.apache.commons.lang3.tuple.ImmutableTriple;
import org.apache.commons.lang3.tuple.Triple;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpVersion;
-import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicHttpEntityEnclosingRequest;
-import org.apache.http.message.BasicHttpResponse;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
-import org.apache.http.protocol.HttpDateGenerator;
-import org.apache.http.protocol.HttpRequestHandler;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.io.HttpRequestHandler;
+import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
+import org.apache.hc.core5.http.message.BasicHttpResponse;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.protocol.HttpDateGenerator;
import org.bouncycastle.cms.jcajce.ZlibExpanderProvider;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.junit.jupiter.api.AfterAll;
@@ -156,7 +156,7 @@ public class AS2ClientManagerIT extends AbstractAS2ITSupport {
private static X509Certificate serverCert;
private static RequestHandler requestHandler;
- private static final HttpDateGenerator DATE_GENERATOR = new HttpDateGenerator();
+ private static final HttpDateGenerator DATE_GENERATOR = HttpDateGenerator.INSTANCE;
private static KeyPair clientKeyPair;
private static X509Certificate clientCert;
@@ -194,8 +194,8 @@ public void plainMessageSendTest() throws Exception {
assertNotNull(result, "send result");
LOG.debug("send: {}", result);
assertNotNull(request, "Request");
- assertTrue(request instanceof HttpEntityEnclosingRequest, "Request does not contain body");
- HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain body");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request body");
assertTrue(entity instanceof ApplicationEntity, "Request body does not contain EDI entity");
String ediMessage = ((ApplicationEntity) entity).getEdiMessage();
@@ -222,10 +222,10 @@ public void plainMessageSendTest() throws Exception {
assertEquals(2, reportEntity.getPartCount(), "Unexpected number of body parts in report");
MimeEntity firstPart = reportEntity.getPart(0);
assertEquals(ContentType.create(AS2MimeType.TEXT_PLAIN, StandardCharsets.US_ASCII).toString(),
- firstPart.getContentTypeValue(), "Unexpected content type in first body part of report");
+ firstPart.getContentType(), "Unexpected content type in first body part of report");
MimeEntity secondPart = reportEntity.getPart(1);
- assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, StandardCharsets.US_ASCII).toString(),
- secondPart.getContentTypeValue(),
+ assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION).toString(),
+ secondPart.getContentType(),
"Unexpected content type in second body part of report");
assertTrue(secondPart instanceof AS2MessageDispositionNotificationEntity, "");
@@ -275,8 +275,8 @@ public void plainMessageSendTestWhenDispositionNotificationToNotSet() throws Exc
assertNotNull(result, "send result");
LOG.debug("send: {}", result);
assertNotNull(request, "Request");
- assertTrue(request instanceof HttpEntityEnclosingRequest, "Request does not contain body");
- HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain body");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request body");
assertTrue(entity instanceof ApplicationEntity, "Request body does not contain EDI entity");
String ediMessage = ((ApplicationEntity) entity).getEdiMessage();
@@ -328,8 +328,8 @@ public void plainMessageSend2Test() throws Exception {
assertNotNull(result, "send result");
LOG.debug("send: {}", result);
assertNotNull(request, "Request");
- assertTrue(request instanceof HttpEntityEnclosingRequest, "Request does not contain body");
- HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain body");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request body");
assertTrue(entity instanceof ApplicationEntity, "Request body does not contain EDI entity");
String ediMessage = ((ApplicationEntity) entity).getEdiMessage();
@@ -356,10 +356,10 @@ public void plainMessageSend2Test() throws Exception {
assertEquals(2, reportEntity.getPartCount(), "Unexpected number of body parts in report");
MimeEntity firstPart = reportEntity.getPart(0);
assertEquals(ContentType.create(AS2MimeType.TEXT_PLAIN, StandardCharsets.US_ASCII).toString(),
- firstPart.getContentTypeValue(), "Unexpected content type in first body part of report");
+ firstPart.getContentType(), "Unexpected content type in first body part of report");
MimeEntity secondPart = reportEntity.getPart(1);
- assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, StandardCharsets.US_ASCII).toString(),
- secondPart.getContentTypeValue(),
+ assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION).toString(),
+ secondPart.getContentType(),
"Unexpected content type in second body part of report");
assertTrue(secondPart instanceof AS2MessageDispositionNotificationEntity, "");
@@ -416,8 +416,8 @@ public void envelopedMessageSendTest() throws Exception {
LOG.debug("send: {}", result);
assertNotNull(request, "Request");
- assertTrue(request instanceof HttpEntityEnclosingRequest, "Request does not contain body");
- HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain body");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request body");
assertTrue(entity instanceof ApplicationPkcs7MimeEnvelopedDataEntity,
"Request body does not contain ApplicationPkcs7Mime entity");
@@ -448,10 +448,10 @@ public void envelopedMessageSendTest() throws Exception {
assertEquals(2, reportEntity.getPartCount(), "Unexpected number of body parts in report");
MimeEntity firstPart = reportEntity.getPart(0);
assertEquals(ContentType.create(AS2MimeType.TEXT_PLAIN, StandardCharsets.US_ASCII).toString(),
- firstPart.getContentTypeValue(), "Unexpected content type in first body part of report");
+ firstPart.getContentType(), "Unexpected content type in first body part of report");
MimeEntity secondPart = reportEntity.getPart(1);
- assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, StandardCharsets.US_ASCII).toString(),
- secondPart.getContentTypeValue(),
+ assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION).toString(),
+ secondPart.getContentType(),
"Unexpected content type in second body part of report");
assertTrue(secondPart instanceof AS2MessageDispositionNotificationEntity, "");
@@ -511,8 +511,8 @@ public void multipartSignedMessageTest() throws Exception {
assertNotNull(result, "send result");
LOG.debug("send: {}", result);
assertNotNull(request, "Request");
- assertTrue(request instanceof HttpEntityEnclosingRequest, "Request does not contain body");
- HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain body");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request body");
assertTrue(entity instanceof MultipartSignedEntity, "Request body does not contain EDI entity");
@@ -550,10 +550,10 @@ public void multipartSignedMessageTest() throws Exception {
assertEquals(2, reportEntity.getPartCount(), "Unexpected number of body parts in report");
MimeEntity firstPart = reportEntity.getPart(0);
assertEquals(ContentType.create(AS2MimeType.TEXT_PLAIN, StandardCharsets.US_ASCII).toString(),
- firstPart.getContentTypeValue(), "Unexpected content type in first body part of report");
+ firstPart.getContentType(), "Unexpected content type in first body part of report");
MimeEntity secondPart = reportEntity.getPart(1);
- assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, StandardCharsets.US_ASCII).toString(),
- secondPart.getContentTypeValue(),
+ assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION).toString(),
+ secondPart.getContentType(),
"Unexpected content type in second body part of report");
ApplicationPkcs7SignatureEntity signatureEntity = responseSignedEntity.getSignatureEntity();
assertNotNull(signatureEntity, "Signature Entity");
@@ -574,7 +574,7 @@ public void multipartSignedMessageTest() throws Exception {
ReceivedContentMic receivedContentMic = messageDispositionNotificationEntity.getReceivedContentMic();
ReceivedContentMic computedContentMic
- = MicUtils.createReceivedContentMic((HttpEntityEnclosingRequest) request, new Certificate[] { clientCert },
+ = MicUtils.createReceivedContentMic((ClassicHttpRequest) request, new Certificate[] { clientCert },
clientKeyPair.getPrivate());
assertEquals(computedContentMic.getEncodedMessageDigest(), receivedContentMic.getEncodedMessageDigest(),
"Received content MIC does not match computed");
@@ -621,8 +621,8 @@ public void multipartSignedXMLMessageTest() throws Exception {
assertNotNull(result, "send result");
LOG.debug("send: {}", result);
assertNotNull(request, "Request");
- assertTrue(request instanceof HttpEntityEnclosingRequest, "Request does not contain body");
- HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain body");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request body");
assertTrue(entity instanceof MultipartSignedEntity, "Request body does not contain EDI entity");
@@ -660,10 +660,10 @@ public void multipartSignedXMLMessageTest() throws Exception {
assertEquals(2, reportEntity.getPartCount(), "Unexpected number of body parts in report");
MimeEntity firstPart = reportEntity.getPart(0);
assertEquals(ContentType.create(AS2MimeType.TEXT_PLAIN, StandardCharsets.US_ASCII).toString(),
- firstPart.getContentTypeValue(), "Unexpected content type in first body part of report");
+ firstPart.getContentType(), "Unexpected content type in first body part of report");
MimeEntity secondPart = reportEntity.getPart(1);
- assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, StandardCharsets.US_ASCII).toString(),
- secondPart.getContentTypeValue(),
+ assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION).toString(),
+ secondPart.getContentType(),
"Unexpected content type in second body part of report");
ApplicationPkcs7SignatureEntity signatureEntity = responseSignedEntity.getSignatureEntity();
assertNotNull(signatureEntity, "Signature Entity");
@@ -684,7 +684,7 @@ public void multipartSignedXMLMessageTest() throws Exception {
ReceivedContentMic receivedContentMic = messageDispositionNotificationEntity.getReceivedContentMic();
ReceivedContentMic computedContentMic
- = MicUtils.createReceivedContentMic((HttpEntityEnclosingRequest) request, new Certificate[] { clientCert },
+ = MicUtils.createReceivedContentMic((ClassicHttpRequest) request, new Certificate[] { clientCert },
clientKeyPair.getPrivate());
assertEquals(computedContentMic.getEncodedMessageDigest(), receivedContentMic.getEncodedMessageDigest(),
"Received content MIC does not match computed");
@@ -727,8 +727,8 @@ public void compressedMessageTest() throws Exception {
assertNotNull(result, "send result");
LOG.debug("send: {}", result);
assertNotNull(request, "Request");
- assertTrue(request instanceof HttpEntityEnclosingRequest, "Request does not contain body");
- HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain body");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request body");
assertTrue(entity instanceof ApplicationPkcs7MimeCompressedDataEntity, "Request body does not contain EDI entity");
@@ -767,10 +767,10 @@ public void compressedMessageTest() throws Exception {
assertEquals(2, reportEntity.getPartCount(), "Unexpected number of body parts in report");
MimeEntity firstPart = reportEntity.getPart(0);
assertEquals(ContentType.create(AS2MimeType.TEXT_PLAIN, StandardCharsets.US_ASCII).toString(),
- firstPart.getContentTypeValue(), "Unexpected content type in first body part of report");
+ firstPart.getContentType(), "Unexpected content type in first body part of report");
MimeEntity secondPart = reportEntity.getPart(1);
- assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION, StandardCharsets.US_ASCII).toString(),
- secondPart.getContentTypeValue(),
+ assertEquals(ContentType.create(AS2MimeType.MESSAGE_DISPOSITION_NOTIFICATION).toString(),
+ secondPart.getContentType(),
"Unexpected content type in second body part of report");
ApplicationPkcs7SignatureEntity signatureEntity = responseSignedEntity.getSignatureEntity();
assertNotNull(signatureEntity, "Signature Entity");
@@ -791,7 +791,7 @@ public void compressedMessageTest() throws Exception {
ReceivedContentMic receivedContentMic = messageDispositionNotificationEntity.getReceivedContentMic();
ReceivedContentMic computedContentMic
- = MicUtils.createReceivedContentMic((HttpEntityEnclosingRequest) request, new Certificate[] { clientCert },
+ = MicUtils.createReceivedContentMic((ClassicHttpRequest) request, new Certificate[] { clientCert },
clientKeyPair.getPrivate());
assertEquals(computedContentMic.getEncodedMessageDigest(), receivedContentMic.getEncodedMessageDigest(),
"Received content MIC does not match computed");
@@ -812,7 +812,7 @@ private void runAsyncMDNTest() throws CamelException, HttpException {
ApplicationEntity ediEntity = EntityUtils.createEDIEntity(EDI_MESSAGE,
ContentType.create(AS2MediaType.APPLICATION_EDIFACT, StandardCharsets.US_ASCII), null, false,
ATTACHED_FILE_NAME);
- HttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", REQUEST_URI);
+ BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", REQUEST_URI);
HttpMessageUtils.setHeaderValue(request, AS2Header.SUBJECT, SUBJECT);
String httpdate = DATE_GENERATOR.getCurrentDate();
HttpMessageUtils.setHeaderValue(request, AS2Header.DATE, httpdate);
@@ -825,7 +825,7 @@ private void runAsyncMDNTest() throws CamelException, HttpException {
EntityUtils.setMessageEntity(request, ediEntity);
// Create response for MDN creation.
- HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
+ HttpResponse response = new BasicHttpResponse(200, "OK");
httpdate = DATE_GENERATOR.getCurrentDate();
response.setHeader(AS2Header.DATE, httpdate);
response.setHeader(AS2Header.SERVER, REPORTING_UA);
@@ -858,7 +858,6 @@ public static void setupTest() throws Exception {
@AfterAll
public static void teardownTest() throws Exception {
if (serverConnection != null) {
- serverConnection.stopListening("/");
serverConnection.close();
}
}
@@ -869,7 +868,7 @@ public static class RequestHandler implements HttpRequestHandler {
private HttpResponse response;
@Override
- public void handle(HttpRequest request, HttpResponse response, HttpContext context)
+ public void handle(ClassicHttpRequest request, ClassicHttpResponse response, HttpContext context)
throws HttpException, IOException {
LOG.info("Received test message: {}", request);
context.setAttribute(AS2ServerManager.FROM, MDN_FROM);
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
index 9b2618ccb7bd9..8a5dbb4a9f99e 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
@@ -60,14 +60,15 @@
import org.apache.camel.support.jsse.SSLContextParameters;
import org.apache.camel.support.jsse.SSLContextServerParameters;
import org.apache.camel.support.jsse.TrustManagersParameters;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.entity.ContentType;
-import org.apache.http.message.BasicHttpEntityEnclosingRequest;
-import org.apache.http.protocol.HttpCoreContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
import org.bouncycastle.asn1.smime.SMIMECapabilitiesAttribute;
@@ -193,9 +194,9 @@ public void receivePlainEDIMessageTest() throws Exception {
assertNotNull(coreContext, "context");
HttpRequest request = coreContext.getRequest();
assertNotNull(request, "request");
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
assertEquals(AS2_VERSION, request.getFirstHeader(AS2Header.AS2_VERSION).getValue(), "Unexpected AS2 version value");
@@ -211,12 +212,12 @@ public void receivePlainEDIMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationEDIFACTEntity, "Unexpected request entity type");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) entity;
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for entity");
assertTrue(ediEntity.isMainBody(), "Entity not set as main body of request");
String rcvdMessage = ediEntity.getEdiMessage().replaceAll("\r", "");
@@ -260,9 +261,9 @@ public void receiveMultipartSignedMessageTest() throws Exception {
assertNotNull(coreContext, "context");
HttpRequest request = coreContext.getRequest();
assertNotNull(request, "request");
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -279,8 +280,8 @@ public void receiveMultipartSignedMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MediaType.MULTIPART_SIGNED),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof MultipartSignedEntity, "Unexpected request entity type");
MultipartSignedEntity signedEntity = (MultipartSignedEntity) entity;
@@ -290,14 +291,14 @@ public void receiveMultipartSignedMessageTest() throws Exception {
// Validated first mime part.
assertTrue(signedEntity.getPart(0) instanceof ApplicationEDIFACTEntity, "First mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) signedEntity.getPart(0);
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for first mime part");
assertFalse(ediEntity.isMainBody(), "First mime type set as main body of request");
// Validate second mime part.
assertTrue(signedEntity.getPart(1) instanceof ApplicationPkcs7SignatureEntity, "Second mime part incorrect type ");
ApplicationPkcs7SignatureEntity signatureEntity = (ApplicationPkcs7SignatureEntity) signedEntity.getPart(1);
- assertTrue(signatureEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
+ assertTrue(signatureEntity.getContentType().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
"Unexpected content type for second mime part");
assertFalse(signatureEntity.isMainBody(), "First mime type set as main body of request");
@@ -342,9 +343,9 @@ public void receiveMultipartSignedXMLMessageTest() throws Exception {
assertNotNull(coreContext, "context");
HttpRequest request = coreContext.getRequest();
assertNotNull(request, "request");
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -361,8 +362,8 @@ public void receiveMultipartSignedXMLMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MediaType.MULTIPART_SIGNED),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof MultipartSignedEntity, "Unexpected request entity type");
MultipartSignedEntity signedEntity = (MultipartSignedEntity) entity;
@@ -372,14 +373,14 @@ public void receiveMultipartSignedXMLMessageTest() throws Exception {
// Validated first mime part.
assertTrue(signedEntity.getPart(0) instanceof ApplicationXMLEntity, "First mime part incorrect type ");
ApplicationXMLEntity xmlEntity = (ApplicationXMLEntity) signedEntity.getPart(0);
- assertTrue(xmlEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_XML),
+ assertTrue(xmlEntity.getContentType().startsWith(AS2MediaType.APPLICATION_XML),
"Unexpected content type for first mime part");
assertFalse(xmlEntity.isMainBody(), "First mime type set as main body of request");
// Validate second mime part.
assertTrue(signedEntity.getPart(1) instanceof ApplicationPkcs7SignatureEntity, "Second mime part incorrect type ");
ApplicationPkcs7SignatureEntity signatureEntity = (ApplicationPkcs7SignatureEntity) signedEntity.getPart(1);
- assertTrue(signatureEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
+ assertTrue(signatureEntity.getContentType().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
"Unexpected content type for second mime part");
assertFalse(signatureEntity.isMainBody(), "First mime type set as main body of request");
@@ -436,9 +437,9 @@ public void receiveMultipartInvalidSignedMessageTest() throws Exception {
assertNotNull(coreContext, "context");
HttpRequest request = coreContext.getRequest();
assertNotNull(request, "request");
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
@@ -455,8 +456,8 @@ public void receiveMultipartInvalidSignedMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MediaType.MULTIPART_SIGNED),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof MultipartSignedEntity, "Unexpected request entity type");
MultipartSignedEntity signedEntity = (MultipartSignedEntity) entity;
@@ -466,14 +467,14 @@ public void receiveMultipartInvalidSignedMessageTest() throws Exception {
// Validated first mime part.
assertTrue(signedEntity.getPart(0) instanceof ApplicationEDIFACTEntity, "First mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) signedEntity.getPart(0);
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for first mime part");
assertFalse(ediEntity.isMainBody(), "First mime type set as main body of request");
// Validate second mime part.
assertTrue(signedEntity.getPart(1) instanceof ApplicationPkcs7SignatureEntity, "Second mime part incorrect type ");
ApplicationPkcs7SignatureEntity signatureEntity = (ApplicationPkcs7SignatureEntity) signedEntity.getPart(1);
- assertTrue(signatureEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
+ assertTrue(signatureEntity.getContentType().startsWith(AS2MediaType.APPLICATION_PKCS7_SIGNATURE),
"Unexpected content type for second mime part");
assertFalse(signatureEntity.isMainBody(), "First mime type set as main body of request");
@@ -516,9 +517,9 @@ public void receiveEnvelopedMessageTest() throws Exception {
assertNotNull(coreContext, "context");
HttpRequest request = coreContext.getRequest();
assertNotNull(request, "request");
- assertEquals(METHOD, request.getRequestLine().getMethod(), "Unexpected method value");
- assertEquals(REQUEST_URI, request.getRequestLine().getUri(), "Unexpected request URI value");
- assertEquals(HttpVersion.HTTP_1_1, request.getRequestLine().getProtocolVersion(), "Unexpected HTTP version value");
+ assertEquals(METHOD, request.getMethod(), "Unexpected method value");
+ assertEquals(REQUEST_URI, request.getUri().getPath(), "Unexpected request URI value");
+ assertEquals(HttpVersion.HTTP_1_1, request.getVersion(), "Unexpected HTTP version value");
assertEquals(SUBJECT, request.getFirstHeader(AS2Header.SUBJECT).getValue(), "Unexpected subject value");
assertEquals(FROM, request.getFirstHeader(AS2Header.FROM).getValue(), "Unexpected from value");
assertEquals(AS2_VERSION, request.getFirstHeader(AS2Header.AS2_VERSION).getValue(), "Unexpected AS2 version value");
@@ -534,8 +535,8 @@ public void receiveEnvelopedMessageTest() throws Exception {
assertTrue(request.getFirstHeader(AS2Header.CONTENT_TYPE).getValue().startsWith(AS2MimeType.APPLICATION_PKCS7_MIME),
"Unexpected content type for message");
- assertTrue(request instanceof BasicHttpEntityEnclosingRequest, "Request does not contain entity");
- HttpEntity entity = ((BasicHttpEntityEnclosingRequest) request).getEntity();
+ assertTrue(request instanceof ClassicHttpRequest, "Request does not contain entity");
+ HttpEntity entity = ((ClassicHttpRequest) request).getEntity();
assertNotNull(entity, "Request does not contain entity");
assertTrue(entity instanceof ApplicationPkcs7MimeEnvelopedDataEntity, "Unexpected request entity type");
ApplicationPkcs7MimeEnvelopedDataEntity envelopedEntity = (ApplicationPkcs7MimeEnvelopedDataEntity) entity;
@@ -545,7 +546,7 @@ public void receiveEnvelopedMessageTest() throws Exception {
MimeEntity encryptedEntity = envelopedEntity.getEncryptedEntity(signingKP.getPrivate());
assertTrue(encryptedEntity instanceof ApplicationEDIFACTEntity, "Enveloped mime part incorrect type ");
ApplicationEDIFACTEntity ediEntity = (ApplicationEDIFACTEntity) encryptedEntity;
- assertTrue(ediEntity.getContentType().getValue().startsWith(AS2MediaType.APPLICATION_EDIFACT),
+ assertTrue(ediEntity.getContentType().startsWith(AS2MediaType.APPLICATION_EDIFACT),
"Unexpected content type for enveloped mime part");
assertFalse(ediEntity.isMainBody(), "Enveloped mime type set as main body of request");
assertEquals(EDI_MESSAGE.replaceAll("[\n\r]", ""), ediEntity.getEdiMessage().replaceAll("[\n\r]", ""),
@@ -576,9 +577,10 @@ public void sendEditMessageToFailingProcessorTest() throws Exception {
mockEndpoint.assertIsSatisfied();
HttpResponse response = context.getResponse();
- assertEquals(HttpStatus.SC_INTERNAL_SERVER_ERROR, response.getStatusLine().getStatusCode(),
+ assertTrue(response instanceof ClassicHttpResponse, "Request does not contain entity");
+ HttpEntity responseEntity = ((ClassicHttpResponse) response).getEntity();
+ assertEquals(HttpStatus.SC_INTERNAL_SERVER_ERROR, response.getCode(),
"Unexpected status code for response");
- HttpEntity responseEntity = response.getEntity();
String errorMessage = new String(Streams.readAll(responseEntity.getContent()));
assertEquals(EXPECTED_EXCEPTION_MSG, errorMessage, "");
}
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/CreateEndpointManualIssueTest.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/CreateEndpointManualIssueTest.java
index 86c0dc13f0356..731ea1b2bf985 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/CreateEndpointManualIssueTest.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/CreateEndpointManualIssueTest.java
@@ -37,8 +37,8 @@ public void testCreateEndpoint() throws Exception {
CamelContext camelContext = new DefaultCamelContext();
camelContext.start();
- org.apache.http.entity.ContentType contentTypeEdifact
- = org.apache.http.entity.ContentType.create("application/edifact", (Charset) null);
+ org.apache.hc.core5.http.ContentType contentTypeEdifact
+ = org.apache.hc.core5.http.ContentType.create("application/edifact", (Charset) null);
String methodName = "send";
AS2ApiName as2ApiNameClient = AS2ApiName.CLIENT;
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonCertLoader.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonCertLoader.java
index 37216f01eca29..dfa4629bedf3b 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonCertLoader.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonCertLoader.java
@@ -36,8 +36,8 @@
import javax.net.ssl.SSLContext;
import org.apache.commons.io.IOUtils;
-import org.apache.http.conn.ssl.TrustAllStrategy;
-import org.apache.http.ssl.SSLContexts;
+import org.apache.hc.client5.http.ssl.TrustAllStrategy;
+import org.apache.hc.core5.ssl.SSLContexts;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonSslEndpointManualTest.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonSslEndpointManualTest.java
index 5382b74c9cb54..6a9e17cf86e83 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonSslEndpointManualTest.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonSslEndpointManualTest.java
@@ -29,7 +29,7 @@
import org.apache.camel.component.as2.api.AS2SignatureAlgorithm;
import org.apache.camel.component.as2.internal.AS2ApiName;
import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.hc.client5.http.ssl.NoopHostnameVerifier;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AS2EndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AS2EndpointBuilderFactory.java
index 6fb7fc37cf741..889023fec0f4d 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AS2EndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AS2EndpointBuilderFactory.java
@@ -222,7 +222,7 @@ default AS2EndpointConsumerBuilder ediMessageTransferEncoding(
* application/edi-x12, application/edi-consent, application/xml.
*
* The option is a:
- * <code>org.apache.http.entity.ContentType</code> type.
+ * <code>org.apache.hc.core5.http.ContentType</code> type.
*
* Group: common
*
@@ -230,7 +230,7 @@ default AS2EndpointConsumerBuilder ediMessageTransferEncoding(
* @return the dsl builder
*/
default AS2EndpointConsumerBuilder ediMessageType(
- org.apache.http.entity.ContentType ediMessageType) {
+ org.apache.hc.core5.http.ContentType ediMessageType) {
doSetProperty("ediMessageType", ediMessageType);
return this;
}
@@ -239,7 +239,7 @@ default AS2EndpointConsumerBuilder ediMessageType(
* application/edi-x12, application/edi-consent, application/xml.
*
* The option will be converted to a
- * <code>org.apache.http.entity.ContentType</code> type.
+ * <code>org.apache.hc.core5.http.ContentType</code> type.
*
* Group: common
*
@@ -1183,7 +1183,7 @@ default AS2EndpointProducerBuilder ediMessageTransferEncoding(
* application/edi-x12, application/edi-consent, application/xml.
*
* The option is a:
- * <code>org.apache.http.entity.ContentType</code> type.
+ * <code>org.apache.hc.core5.http.ContentType</code> type.
*
* Group: common
*
@@ -1191,7 +1191,7 @@ default AS2EndpointProducerBuilder ediMessageTransferEncoding(
* @return the dsl builder
*/
default AS2EndpointProducerBuilder ediMessageType(
- org.apache.http.entity.ContentType ediMessageType) {
+ org.apache.hc.core5.http.ContentType ediMessageType) {
doSetProperty("ediMessageType", ediMessageType);
return this;
}
@@ -1200,7 +1200,7 @@ default AS2EndpointProducerBuilder ediMessageType(
* application/edi-x12, application/edi-consent, application/xml.
*
* The option will be converted to a
- * <code>org.apache.http.entity.ContentType</code> type.
+ * <code>org.apache.hc.core5.http.ContentType</code> type.
*
* Group: common
*
@@ -2123,7 +2123,7 @@ default AS2EndpointBuilder ediMessageTransferEncoding(
* application/edi-x12, application/edi-consent, application/xml.
*
* The option is a:
- * <code>org.apache.http.entity.ContentType</code> type.
+ * <code>org.apache.hc.core5.http.ContentType</code> type.
*
* Group: common
*
@@ -2131,7 +2131,7 @@ default AS2EndpointBuilder ediMessageTransferEncoding(
* @return the dsl builder
*/
default AS2EndpointBuilder ediMessageType(
- org.apache.http.entity.ContentType ediMessageType) {
+ org.apache.hc.core5.http.ContentType ediMessageType) {
doSetProperty("ediMessageType", ediMessageType);
return this;
}
@@ -2140,7 +2140,7 @@ default AS2EndpointBuilder ediMessageType(
* application/edi-x12, application/edi-consent, application/xml.
*
* The option will be converted to a
- * <code>org.apache.http.entity.ContentType</code> type.
+ * <code>org.apache.hc.core5.http.ContentType</code> type.
*
* Group: common
*