Annotation Type ClientHeaderParam
-
@Target({TYPE,METHOD}) @Retention(RUNTIME) @Documented @Repeatable(ClientHeaderParams.class) public @interface ClientHeaderParam
Used to specify an HTTP parameter that should be sent with the outbound request. When this annotation is placed at the interface level of a REST client interface, the specified header will be sent on each request for all methods in the interface. When this annotation is placed on a method, the header will be sent only for that method. If the same HTTP header is specified in an annotation for both the type and the method, only the header value specified in the annotation on the method will be sent.The value of the header to send can be specified explicitly by using the
value
attribute. The value can also be computed via a default method on the client interface or a public static method on a different class. The compute method must return a String or String[] (indicating a multivalued header) value. This method must be specified in thevalue
attribute but wrapped in curly-braces. The compute method's signature must either contain no arguments or a singleString
argument. The String argument is the name of the header.Here is an example that explicitly defines a header value and computes a value:
public interface MyClient { static AtomicInteger counter = new AtomicInteger(1); default String determineHeaderValue(String headerName) { if ("SomeHeader".equals(headerName)) { return "InvokedCount " + counter.getAndIncrement(); } throw new UnsupportedOperationException("unknown header name"); } @ClientHeaderParam(name="SomeHeader", value="ExplicitlyDefinedValue") @GET Response useExplicitHeaderValue(); @ClientHeaderParam(name="SomeHeader", value="{determineHeaderValue}") @DELETE Response useComputedHeaderValue(); }
The implementation should fail to deploy a client interface if the annotation contains a@ClientHeaderParam
annotation with avalue
attribute that references a method that does not exist, or contains an invalid signature.The
required
attribute will determine what action the implementation should take if the method specified in thevalue
attribute throws an exception. If the attribute is true (default), then the implementation will abort the request and will throw the exception back to the caller. If therequired
attribute is set to false, then the implementation will not send this header if the method throws an exception.Note that if an interface method contains an argument annotated with
@HeaderParam
, that argument will take priority over anything specified in a ClientHeaderParam annotation.- Since:
- 1.2