@Override protected boolean matchesSafely(DataType dataType) { boolean sameType = type == null ? dataType.getType() == null : type.equals(dataType.getType()); boolean sameEncoding = dataType.getMediaType().getCharset().equals(Optional.ofNullable(encoding)); boolean sameMimeType = mimeType == null ? dataType.getMediaType() == null : mimeType.matches(dataType.getMediaType()); return sameType && sameEncoding && sameMimeType; }
@Test public void strictMimeType() throws Exception { CoreEvent response = runFlow("strictMimeType"); assertThat(response.getMessage().getPayload().getDataType().getMediaType().matches(TEXT), is(true)); }
@Test public void getInlineGroupDefinition() throws Exception { Message message = flowRunner("getBarberPreferences").withPayload(EMPTY_STRING).run().getMessage(); assertThat(message.getPayload().getValue(), is(notNullValue())); assertThat(message.getPayload().getDataType().getMediaType().matches(APPLICATION_JAVA), is(true)); BarberPreferences preferences = (BarberPreferences) message.getPayload().getValue(); assertThat(preferences.getBeardTrimming(), is(BarberPreferences.BEARD_KIND.MUSTACHE)); assertThat(preferences.isFullyBald(), is(false)); }
@Override public boolean doMatch(TypedValue typedValue) { if (mediaType == null) { return nullValue().matches(typedValue.getDataType().getMediaType()); } return mediaType.matches(typedValue.getDataType().getMediaType()); }
@Override protected boolean matchesSafely(DataType dataType) { boolean sameType = type == null ? dataType.getType() == null : type.equals(dataType.getType()); boolean sameEncoding = dataType.getMediaType().getCharset().equals(Optional.ofNullable(encoding)); boolean sameMimeType = mimeType == null ? dataType.getMediaType() == null : mimeType.matches(dataType.getMediaType()); return sameType && sameEncoding && sameMimeType; }
private void replaceOutputType(ExecutableComponentDeclaration<?> declaration, MediaTypeModelProperty property, Function<MetadataFormat, MetadataType> type) { final MediaType mediaType = property.getMediaType(); if (mediaType.matches(ANY)) { return; } final OutputDeclaration output = declaration.getOutput(); output.setType(type.apply(toMetadataFormat(mediaType)), output.hasDynamicType()); }
@Override public List<Converter> filter(List<Converter> converters, DataType source, DataType result) { List<Converter> filteredByType = filterByResultType(filterBySourceType(converters, source), result); if (!ANY.matches(result.getMediaType())) { return filterByResultMimeType(filteredByType, result); } return filteredByType; }
private List<Converter> filterByResultMimeType(List<Converter> converters, DataType result) { return filterByResult(converters, converter -> converter.getReturnDataType().getMediaType().matches(result.getMediaType())); }
@Override public boolean isCompatibleWith(DataType dataType) { if (this == dataType) { return true; } if (dataType == null) { return false; } SimpleDataType that = (SimpleDataType) dataType; if (!fromPrimitive(this.getType()).isAssignableFrom(fromPrimitive(that.getType()))) { return false; } return MediaType.ANY.matches(getMediaType()) || mediaTypesMatch(dataType); }
private boolean mediaTypesMatch(DataType other) { if (this.getMediaType() == null && other.getMediaType() != null) { return false; } if (this.getMediaType() != null && other.getMediaType() == null) { return false; } if (!this.getMediaType().getCharset().isPresent()) { return this.getMediaType().matches(other.getMediaType()); } else { return this.getMediaType().equals(other.getMediaType()); } }
private MediaType mergeMediaType(Message message, DataType transformed) { DataType original = message.getPayload().getDataType(); MediaType mimeType = ANY.matches(transformed.getMediaType()) ? original.getMediaType() : transformed.getMediaType(); Charset encoding = transformed.getMediaType().getCharset() .orElse(message.getPayload().getDataType().getMediaType().getCharset().orElse(getDefaultEncoding(muleContext))); return DataType.builder().mediaType(mimeType).charset(encoding).build().getMediaType(); }
@Test public void strictMimeType() throws Exception { CoreEvent response = runFlow("strictMimeType"); assertThat(response.getMessage().getPayload().getDataType().getMediaType().matches(TEXT), is(true)); }
@Override public Event process(Event event) throws MessagingException { MediaType endpointMimeType = endpoint.getMimeType(); if (endpointMimeType != null) { InternalMessage message = event.getMessage(); final DataType dataType = message.getPayload().getDataType(); if (DataType.OBJECT.getMediaType().matches(dataType.getMediaType())) { event = Event.builder(event).message(InternalMessage.builder(event.getMessage()).mediaType(endpointMimeType).build()).build(); } else { if (!dataType.getMediaType().matches(endpointMimeType)) { throw new MessagingException(CoreMessages.unexpectedMIMEType(dataType.getMediaType().toRfcString(), endpointMimeType.toRfcString()), event, this); } } } return event; }
@Override public Event process(Event event) throws MessagingException { org.mule.runtime.api.metadata.MediaType endpointMimeType = endpoint.getMimeType(); if (endpointMimeType != null) { InternalMessage message = event.getMessage(); final DataType dataType = message.getPayload().getDataType(); if (DataType.OBJECT.getMediaType().matches(dataType.getMediaType())) { event = Event.builder(event) .message(InternalMessage.builder(event.getMessage()).mediaType(dataType.getMediaType()).build()).build(); } else { if (!dataType.getMediaType().matches(endpointMimeType)) { throw new MessagingException(CoreMessages.unexpectedMIMEType(dataType.getMediaType().toRfcString(), endpointMimeType.toRfcString()), event, this); } } } return event; }
@Test public void getInlineGroupDefinition() throws Exception { Message message = flowRunner("getBarberPreferences").withPayload(EMPTY_STRING).run().getMessage(); assertThat(message.getPayload().getValue(), is(notNullValue())); assertThat(message.getPayload().getDataType().getMediaType().matches(APPLICATION_JAVA), is(true)); BarberPreferences preferences = (BarberPreferences) message.getPayload().getValue(); assertThat(preferences.getBeardTrimming(), is(BarberPreferences.BEARD_KIND.MUSTACHE)); assertThat(preferences.isFullyBald(), is(false)); }