[ https://issues.apache.org/jira/browse/CXF-4986?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
abdelgadiri updated CXF-4986: ----------------------------- Attachment: bug4986-1.0.war war to reproduce the issue > jax-rs2 request filter is unable to modify request header by adding a new > header > --------------------------------------------------------------------------------- > > Key: CXF-4986 > URL: https://issues.apache.org/jira/browse/CXF-4986 > Project: CXF > Issue Type: Bug > Components: JAX-RS > Affects Versions: 2.7.2 > Environment: cxf on tomcat > Reporter: abdelgadiri > Assignee: Sergey Beryozkin > Fix For: 2.7.5, 3.0.0 > > Attachments: bug4986-1.0.war > > > I have a filter implementation as follows > @Provider > public class AuthSessionFilter implements ContainerRequestFilter { > public AuthSessionFilter() { > } > @Override > public void filter(ContainerRequestContext requestContext) throws > IOException { > //another @Prematching filter is setting this session id so it is > definitely not null > Object sessionId = requestContext.getProperty("sessionId"); > if (sessionId == null || GeneralUtils.isNullOrBlank(sessionId + "")) { > > requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED) > .entity("missing sessionId").build()); > } > //this line gets invoked without problems, however, the added header > is not available from the resource class > requestContext.getHeaders().putSingle("sessionId", sessionId+""); > } > } > The line requestContext.getHeaders().putSingle("sessionId", sessionId+""); is > not making the added sessionId header available when trying to obtain it from > my resource. getHeaders() is supposed to return a mutable map in accordance > with the spec, but its implementation 'ContainerRequestContextImpl' is > returning a readonly map instead. it returning: > return new MetadataMap<String, String>( > (Map<String, List<String>>)m.get(Message.PROTOCOL_HEADERS), > false, true, true); > where it is passing 'true' for the readonly parameter. > in my resource, I am trying to obtain the header using > public Response doSomething(UriInfo uriInfo, HttpServletRequest request) { > //this is always null even though it shouldn't be null > String sessionId = request.getHeader("sessionId"); > } -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira