Hi James,

Just speculating here...  what if you add this code to your Application
subclass:

@Override

public Map<String, Object> getProperties() {

    Map<String,Object> props = new HashMap<>();

    props.put("org.apache.cxf.http.header.split", true);

    return props;

}


I think that might a more portable approach that does the same thing...


Hope this helps,


Andy

On Sat, Sep 8, 2018 at 8:00 AM James Carman <ja...@carmanconsulting.com>
wrote:

> No thoughts on this one?  I'd like to keep my implementation very "vanilla"
> with respect to the JAX-RS spec, but I am using CXF as my JAX-RS
> implementation during testing.  I just want to make sure I'm not doing any
> unnecessary CXF-specific work-arounds in my code.  If we were to "fix" it,
> though, it might introduce a change in behavior and that's not good
> either.
>
> On Fri, Aug 31, 2018 at 8:49 AM James Carman <ja...@carmanconsulting.com>
> wrote:
>
> > I think I misspoke here.  Even if I set the header split property, the
> > ContainerRequestContext.getHeaders() still returns concatenated values,
> but
> > if I use a @Context annotation to inject HttpHeaders, I can get back the
> > header values individually (not concatenated).  If I take away the header
> > split property, then HttpHeaders starts returning concatenated headers.
> I
> > probably should have said so in my original email, but I'm using CXF
> > v3.2.6.
> >
> > On Fri, Aug 31, 2018 at 8:35 AM James Carman <ja...@carmanconsulting.com
> >
> > wrote:
> >
> >> I found a thread about this topic from 2015, but it seems to be talking
> >> about client-side:
> >>
> >>
> >>
> http://mail-archives.apache.org/mod_mbox/cxf-users/201504.mbox/%3c552bed6b.3000...@gmail.com%3E
> >>
> >> I'm writing a CorsFilter and I need to get the list of
> >> Access-Control-Request-Headers to evaluate them.  If I do this:
> >>
> >> JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
> >> factory.getProperties(true).put("org.apache.cxf.http.header.split",
> true);
> >>
> >> then everything works fine.  However, it seems odd (even after reading
> >> the referred javadocs) that the expected behavior would be concatenated
> >> values.  The return type is MultivaluedMap<String,String>.  If the
> intent
> >> was that there would always be only one "value" in the map for each key,
> >> then why would they say to return a MultivaluedMap<String,String>?
> Perhaps
> >> this is a problem with the spec or something, but I can't really see in
> the
> >> spec where it specifically says to return the values this way.  It does
> >> have a @see pointing to the getHeaderString(String), where it does say
> >> they'd be concatenated.  I'm sure I'm missing something here.  Thoughts?
> >>
> >> Thanks,
> >>
> >> James
> >>
> >>
>

Reply via email to