While debugging through this didn't get used as far as I remember. 

Maybe MultipartProvider uses an alternative path to detect the handlers?

LieGrue,
strub




> On Friday, 9 December 2016, 17:15, Romain Manni-Bucau <[email protected]> 
> wrote:
> > Hey Mark,
> 
> have a look
> to org.apache.cxf.jaxrs.provider.ProviderFactory.MessageBodyWriterComparator
> (and the reader companion) maybe. Got aligned in cxf "jaxrs 2" for 
> spec
> alignment
> 
> 
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://blog-rmannibucau.rhcloud.com> | Old Blog
> <http://rmannibucau.wordpress.com> | Github 
> <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
> 
> 
> 2016-12-09 17:10 GMT+01:00 Mark Struberg <[email protected]>:
> 
>>  good evening!
>> 
>>  My first post to CXF, so I excuse if I ask something obvious ;)
>> 
>>  We have the following code over in Apache OpenWebBeans / Meecrowave:
>> 
>>  @Produces({
>>          "application/json", "*/json",
>>          "*/*+json", "*/x-json",
>>          "*/javascript", "*/x-javascript"
>>  })
>>  @Consumes({
>>          "application/json", "*/json",
>>          "*/*+json", "*/x-json",
>>          "*/javascript", "*/x-javascript"
>>  })
>>  public static class ConfiguredJsonbJaxrsProvider<T> extends
>>  JsonbJaxrsProvider<T> {
>> 
>>  I tried to use the CXF WebClient to send a multipart form with a file
>>  attachment. MediaType is application/octet-stream.
>>  Sadly I always triggered our Johnzon JSONB provider (johnzon.apache.org).
>> 
>>  The reason is that */json seems to match ANY other MediaType, regardless
>>  of the subtype. Is this intended?
>>  The code I found during debugging is the following in geronimo-jaxrs_2.0
>>  MediaType:
>> 
>>  public boolean isCompatible(MediaType other) {
>>      return other != null && (type.equals(MEDIA_TYPE_WILDCARD) ||
>>  other.type.equals(MEDIA_TYPE_WILDCARD) ||
>>          (type.equalsIgnoreCase(other.type) && 
> (subtype.equals(MEDIA_TYPE_WILDCARD)
>>  || other.subtype.equals(MEDIA_TYPE_WILDCARD))) ||
>>          (type.equalsIgnoreCase(other.type) &&
>>  this.subtype.equalsIgnoreCase(other.subtype)));
>>  }
>> 
>> 
>>  I'm geronimo PMC myself so I can even fix it. But would need some 
> feedback
>>  how it should behave.
>>  https://svn.apache.org/repos/asf/geronimo/specs/trunk/
>>  geronimo-jaxrs_2.0_spec/
>> 
>>  I did a quick look at the RI and now I'm even more confused:
>> 
>>      public boolean isCompatible(MediaType other) {
>>          return other != null && // return false if other is null, 
> else
>>                  (type.equals(MEDIA_TYPE_WILDCARD) ||
>>  other.type.equals(MEDIA_TYPE_WILDCARD) || // both are wildcard types, or
>>                          (type.equalsIgnoreCase(other.type) &&
>>  (subtype.equals(MEDIA_TYPE_WILDCARD)
>>                                  || 
> other.subtype.equals(MEDIA_TYPE_WILDCARD)))
>>  || // same types, wildcard sub-types, or
>>                          (type.equalsIgnoreCase(other.type) &&
>>  this.subtype.equalsIgnoreCase(other.subtype))); // same types & 
> sub-types
>>      }
>> 
>>  It says "both are wildcard types" but the code is actually ONE of 
> them is
>>  a wildcard type, isn't?
>>   (type.equals(MEDIA_TYPE_WILDCARD) || 
> other.type.equals(MEDIA_TYPE_WILDCARD)
>>  || // both are wildcard types, or
>> 
>> 
>>  Any hints are highly welcome, my head is already hurting...
>> 
>>  What are the actual rules for matching MediaTypes? What does the spec
>>  define?
>> 
>>  txs and LieGrue,
>>  strub
>> 
>> 
>> 
>> 
> 

Reply via email to