use of org.mule.runtime.api.metadata.DataType in project mule by mulesoft.
the class DataTypeMatchingTestCase method differentCharsetsShouldNotBeCompatible.
@Test
public void differentCharsetsShouldNotBeCompatible() throws Exception {
DataType jsonUtf8 = builder(JSON_PARENT_DATA_TYPE).charset(UTF_8).build();
DataType jsonUtf16 = builder(JSON_PARENT_DATA_TYPE).charset(UTF_16).build();
assertThat(jsonUtf8, is(not(assignableTo(jsonUtf16))));
assertThat(jsonUtf16, is(not(assignableTo(jsonUtf8))));
}
use of org.mule.runtime.api.metadata.DataType in project mule by mulesoft.
the class SimpleDataTypeTestCase method acceptsValidMimeType.
@Test
public void acceptsValidMimeType() throws Exception {
DataType dataType = DataType.builder().mediaType(JSON).build();
assertThat(dataType.getMediaType(), equalTo(JSON));
}
use of org.mule.runtime.api.metadata.DataType in project mule by mulesoft.
the class DataTypeUtilsTestCase method generatesContentTypeWithoutCharset.
@Test
public void generatesContentTypeWithoutCharset() throws Exception {
DataType dataType = DataType.builder().type(Object.class).mediaType(MediaType.APPLICATION_JSON).build();
String contentType = dataType.getMediaType().toRfcString();
assertThat(contentType, equalTo("application/json"));
}
use of org.mule.runtime.api.metadata.DataType in project mule by mulesoft.
the class CompositeConverterTestCase method getSourceDataTypes.
@Test
public void getSourceDataTypes() {
DataType[] dataTypes = new DataType[] { DataType.STRING };
Converter converter = mock(Converter.class);
when(converter.getSourceDataTypes()).thenReturn(Arrays.asList(dataTypes));
CompositeConverter chain = new CompositeConverter(converter);
assertEquals(DataType.STRING, chain.getSourceDataTypes().get(0));
}
use of org.mule.runtime.api.metadata.DataType in project mule by mulesoft.
the class DefaultTransformationService method getPayload.
/**
* Attempts to obtain the payload of this message with the desired Class type. This will try and resolve a transformer that can
* do this transformation. If a transformer cannot be found an exception is thrown. Any transformers added to the registry will
* be checked for compatibility.
*
* @param resultType the desired return type
* @param encoding the encoding to use if required
* @return The converted payload of this message. Note that this method will not alter the payload of this message <b>unless</b>
* the payload is an {@link InputStream} in which case the stream will be read and the payload will become the fully
* read stream.
* @throws MessageTransformerException if a transformer cannot be found or there is an error during transformation of the payload.
*/
@SuppressWarnings("unchecked")
protected <T> T getPayload(Message message, DataType resultType, Charset encoding) throws MessageTransformerException {
// Handle null by ignoring the request
if (resultType == null) {
throw new IllegalArgumentException(objectIsNull("resultType").getMessage());
}
DataType dataType = DataType.builder(resultType).type(message.getPayload().getDataType().getType()).build();
// If no conversion is necessary, just return the payload as-is
if (resultType.isCompatibleWith(dataType)) {
return (T) message.getPayload().getValue();
}
// The transformer to execute on this message
Transformer transformer = null;
try {
transformer = ((MuleContextWithRegistries) muleContext).getRegistry().lookupTransformer(dataType, resultType);
if (transformer == null) {
throw new MessageTransformerException(noTransformerFoundForMessage(dataType, resultType), null, message);
}
// Pass in the message itself
Object result = transformer.transform(message, encoding);
// Unless we disallow Object.class as a valid return type we need to do this extra check
checkResultDataType(message, resultType, result);
return (T) result;
} catch (MessageTransformerException e) {
throw e;
} catch (TransformerException e) {
throw new MessageTransformerException(transformer, e, message);
}
}
Aggregations