@Test public void failsWhenNoImplicitConversionAvailable() throws MuleException { Transformer transformer = new MockTransformerBuilder().from(DataType.BYTE_ARRAY).to(DataType.STRING).build(); when(conversionResolver.resolve(any(DataType.class), anyList())).thenReturn(null); Message message = of("TEST"); try { transformationService.applyTransformers(message, null, transformer); fail("Transformation is supposed to fail"); } catch (IllegalArgumentException expected) { } verifyTransformerNotExecuted(transformer); }
@Test public void appliesImplicitConversionWhenAvailable() throws MuleException { Transformer transformer = new MockTransformerBuilder().from(DataType.BYTE_ARRAY).to(DataType.STRING).returning("bar").build(); Transformer converter = new MockConverterBuilder().from(DataType.STRING).to(DataType.BYTE_ARRAY).returning("bar".getBytes()).build(); when(conversionResolver.resolve(any(DataType.class), anyList())).thenReturn(converter); Message message = of("TEST"); message = transformationService.applyTransformers(message, null, transformer); assertEquals("bar", message.getPayload().getValue()); verifyTransformerExecuted(transformer); verifyTransformerExecuted(converter); }
@Test public void appliesImplicitConversionOnConverterWhenSourceAndReturnTypeDoesNotMatch() throws MuleException { // Converter(C->D), payload B: uses implicit conversion B->C Transformer converter1 = new MockConverterBuilder().from(dataTypeC).to(dataTypeD).returning(new D()).build(); Transformer converter2 = new MockConverterBuilder().from(dataTypeB).to(dataTypeC).returning(new C()).build(); when(conversionResolver.resolve(any(DataType.class), anyList())).thenReturn(converter2); Message message = of(new B()); message = transformationService.applyTransformers(message, null, converter1); assertTrue(message.getPayload().getValue() instanceof D); verifyTransformerExecuted(converter1); verifyTransformerExecuted(converter2); }
muleContext.getDataTypeConverterResolver().resolve(originalSourceType, transformer.getSourceDataTypes());
@Test public void failsWhenNoImplicitConversionAvailable() throws MuleException { Transformer transformer = new MockTransformerBuilder().from(DataType.BYTE_ARRAY).to(DataType.STRING).build(); when(conversionResolver.resolve(any(DataType.class), anyList())).thenReturn(null); Message message = of("TEST"); try { transformationService.applyTransformers(message, null, transformer); fail("Transformation is supposed to fail"); } catch (IllegalArgumentException expected) { } verifyTransformerNotExecuted(transformer); }
@Test public void appliesImplicitConversionWhenAvailable() throws MuleException { Transformer transformer = new MockTransformerBuilder().from(DataType.BYTE_ARRAY).to(DataType.STRING).returning("bar").build(); Transformer converter = new MockConverterBuilder().from(DataType.STRING).to(DataType.BYTE_ARRAY).returning("bar".getBytes()).build(); when(conversionResolver.resolve(any(DataType.class), anyList())).thenReturn(converter); Message message = of("TEST"); message = transformationService.applyTransformers(message, null, transformer); assertEquals("bar", message.getPayload().getValue()); verifyTransformerExecuted(transformer); verifyTransformerExecuted(converter); }
@Test public void appliesImplicitConversionOnConverterWhenSourceAndReturnTypeDoesNotMatch() throws MuleException { // Converter(C->D), payload B: uses implicit conversion B->C Transformer converter1 = new MockConverterBuilder().from(dataTypeC).to(dataTypeD).returning(new D()).build(); Transformer converter2 = new MockConverterBuilder().from(dataTypeB).to(dataTypeC).returning(new C()).build(); when(conversionResolver.resolve(any(DataType.class), anyList())).thenReturn(converter2); Message message = of(new B()); message = transformationService.applyTransformers(message, null, converter1); assertTrue(message.getPayload().getValue() instanceof D); verifyTransformerExecuted(converter1); verifyTransformerExecuted(converter2); }