use of org.eclipse.microprofile.rest.client.annotation.RegisterClientHeaders in project cxf by apache.
the class MicroProfileClientProxyImpl method handleHeaders.
@Override
@SuppressWarnings("unchecked")
protected void handleHeaders(Method m, Object[] params, MultivaluedMap<String, String> headers, List<Parameter> beanParams, MultivaluedMap<ParameterType, Parameter> map) {
super.handleHeaders(m, params, headers, beanParams, map);
try {
Class<?> declaringClass = m.getDeclaringClass();
ClientHeaderParam[] clientHeaderAnnosOnInterface = declaringClass.getAnnotationsByType(ClientHeaderParam.class);
ClientHeaderParam[] clientHeaderAnnosOnMethod = m.getAnnotationsByType(ClientHeaderParam.class);
RegisterClientHeaders headersFactoryAnno = declaringClass.getAnnotation(RegisterClientHeaders.class);
if (clientHeaderAnnosOnInterface.length < 1 && clientHeaderAnnosOnMethod.length < 1 && headersFactoryAnno == null) {
return;
}
for (ClientHeaderParam methodAnno : clientHeaderAnnosOnMethod) {
String headerName = methodAnno.name();
if (!headers.containsKey(headerName)) {
Parameter p = createClientHeaderParameter(methodAnno, declaringClass);
if (p != null) {
headers.putSingle(p.getName(), p.getDefaultValue());
}
}
}
for (ClientHeaderParam intfAnno : clientHeaderAnnosOnInterface) {
String headerName = intfAnno.name();
if (!headers.containsKey(headerName)) {
Parameter p = createClientHeaderParameter(intfAnno, declaringClass);
if (p != null) {
headers.putSingle(p.getName(), p.getDefaultValue());
}
}
}
if (headersFactoryAnno != null) {
Class<ClientHeadersFactory> headersFactoryClass = (Class<ClientHeadersFactory>) headersFactoryAnno.value();
mergeHeaders(headersFactoryClass, headers);
}
} catch (Throwable t) {
throwException(t);
}
}
Aggregations