Search in sources :

Example 1 with RegisterClientHeaders

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);
    }
}
Also used : RegisterClientHeaders(org.eclipse.microprofile.rest.client.annotation.RegisterClientHeaders) ClientHeaderParam(org.eclipse.microprofile.rest.client.annotation.ClientHeaderParam) Parameter(org.apache.cxf.jaxrs.model.Parameter) ClientHeadersFactory(org.eclipse.microprofile.rest.client.ext.ClientHeadersFactory)

Aggregations

Parameter (org.apache.cxf.jaxrs.model.Parameter)1 ClientHeaderParam (org.eclipse.microprofile.rest.client.annotation.ClientHeaderParam)1 RegisterClientHeaders (org.eclipse.microprofile.rest.client.annotation.RegisterClientHeaders)1 ClientHeadersFactory (org.eclipse.microprofile.rest.client.ext.ClientHeadersFactory)1