Fixes bug where HeaderTemplate stored values in a HashSet which
caused the following issues:
* Header values could be written in wrong order
* Order was not stable between JVM instances
Fixes#1007
As part of 10.x, the `headers()` and `queries()` collections on the
`RequestTemplate` were made read only. The `JAXRSContract` was still
attempting to manipulate those directly. THis was missed due to a
use case not accounted for in the tests. I've added the appropriate
use case and corrected the usage of the template.
Closes#797Closes#798
JAXRSContract sets a single Content-Type value
This change allows headers to be cleared by passing a null
value for backwards compatibility.
Multiple Content-Type values are not valid because the body
that we send with any given request will only have a single
type.
Updated header entry assertion to be agnostic to header name
order.
* RequestTemplate.headers clear behavior matches that of query params
* Refactoring RequestTemplate to RFC6570
This change refactors `RequestTemplate` in an attempt to
adhere to the [RFC-6570 - URI Template](https://tools.ietf.org/html/rfc6570)
specification more closely. The reason for this is to
reduce the amount of inconsistency between `@Param`, `@QueryMap`,
`@Header`, `@HeaderMap`, and `@Body` template expansion.
First, `RequestTemplate` now delegates uri, header, query, and
body template parsing to `UriTemplate`, `HeaderTemplate`,
`QueryTemplate`, and `BodyTemplate` respectively. These components
are all variations on a `Template`.
`UriTemplate` adheres to RFC 6570 explicitly and supports Level 1
(Simple String) variable expansion. Unresolved variables are ignored
and removed from the uri. This includes query parameter pairs. All
literal and expanded variables are pct-encoded according to the Charset
provided in the `RequestTemplate`.
`HeaderTemplate` supports Level 1 (Simple String) variable expansion.
Unresolved variables are ignored. Empty headers are removed. No
encoding is performed.
`QueryTemplate` is a subset of a `UriTemplate` and reacts in the same
way. Unresolved pairs are ignored and not present on the final
template. All literals and expanded variables are pct-encoded
according to the Charset provided.
`BodyTemplate` supports Level 1 (Simple String) variable expansion.
Unresolved variables produce empty strings. Values are not encoded.
All remaining customizations, including custom encoders, collection format
expansion and charset encoding are still supportted and made backward
compatible.
Finally, a number of inconsistent methods on `RequestTemplate` have
been deprecated for public use and all deprecated usage throughout
the library has been replaced.
* FIXED unsupported jaxrs-2.1 annotations should not break entire interface, resolving #669
* UPDATED jaxrs: more defensive jaxrs2 support
* ADDED jsr311-api dependency to httpclient (as jsr311 is `provided` in feign-jaxrs now)
* UPDATED httpclient `jsr311-api` scope to test
UPDATED jaxrs readme