Fixes issue with originalContentType

This commit is contained in:
Vinicius Carvalho
2017-08-24 20:25:21 -04:00
parent 51e7161056
commit 007594cafd

View File

@@ -37,6 +37,7 @@ import org.apache.avro.specific.SpecificDatumReader;
import org.apache.avro.specific.SpecificDatumWriter;
import org.apache.avro.specific.SpecificRecord;
import org.springframework.cloud.stream.binder.BinderHeaders;
import org.springframework.core.io.Resource;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
@@ -48,6 +49,7 @@ import org.springframework.util.MimeType;
* Base class for Apache Avro
* {@link org.springframework.messaging.converter.MessageConverter} implementations.
* @author Marius Bogoevici
* @author Vinicius Carvalho
*/
public abstract class AbstractAvroMessageConverter extends AbstractMessageConverter {
@@ -68,6 +70,29 @@ public abstract class AbstractAvroMessageConverter extends AbstractMessageConver
return super.canConvertFrom(message, targetClass) && (message.getPayload() instanceof byte[]);
}
@Override
protected boolean supportsMimeType(MessageHeaders headers) {
for (MimeType current : getSupportedMimeTypes()) {
if(mimeTypeMatches(current,headers.get(MessageHeaders.CONTENT_TYPE)) || mimeTypeMatches(current,headers.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)) ){
return true;
}
}
return false;
}
private boolean mimeTypeMatches(MimeType reference, Object target){
if(target == null){
return !isStrictContentTypeMatch();
}else if(target instanceof MimeType){
return reference.equals((MimeType)target);
}else if(target instanceof String){
return reference.equals(MimeType.valueOf((String)target));
}
return false;
}
@Override
protected Object convertFromInternal(Message<?> message, Class<?> targetClass, Object conversionHint) {
Object result = null;