@Override public Event process(Event event) throws MuleException { if (event != null && event.getMessage() != null) { try { return messageProcessor.process(event); } catch (Exception e) { throw new MessageTransformerException(this, e); } } return event; }
/** * Transform the message with no event specified. */ @Override public final Object transform(Object src, Charset enc) throws TransformerException { try { return transform(src, enc, null); } catch (MessageTransformerException e) { // Try to avoid double-wrapping Throwable cause = e.getCause(); if (cause instanceof TransformerException) { TransformerException te = (TransformerException) cause; if (te.getTransformer() == this) { throw te; } } throw new TransformerException(e.getI18nMessage(), this, e); } }
@Test public void failsOnConverterWhenSourceAndReturnTypeDoesNotMatchAndThereIsNoImplicitConversion2() throws MuleException { // Converter(B->C), payload A: FAIL ByteArrayInputStream payload = new ByteArrayInputStream(TEST_PAYLOAD.getBytes()); DataType originalSourceType = DataType.fromType(payload.getClass()); Transformer converter1 = new MockConverterBuilder().from(originalSourceType).to(dataTypeC).build(); A transformedPayload = new A(); when(converter1.transform(any())).thenReturn(transformedPayload); Message message = of(payload); try { transformationService.applyTransformers(message, null, converter1); fail("Transformation is supposed to fail"); } catch (MessageTransformerException expected) { assertThat(expected.getErrorMessage().getPayload().getValue(), is(transformedPayload)); } }
@Override public Object transformMessage(CoreEvent event, Charset outputEncoding) throws MessageTransformerException { try { return callback.doTransform(event.getMessage()); } catch (MessageTransformerException e) { throw e; } catch (TransformerException e) { throw new MessageTransformerException(e.getI18nMessage(), this, e, event.getMessage()); } catch (Exception e) { throw new MessageTransformerException(this, e, event.getMessage()); } }
@Test public void failsOnConverterWhenSourceAndReturnTypeDoesNotMatchAndThereIsNoImplicitConversion2() throws MuleException { // Converter(B->C), payload A: FAIL ByteArrayInputStream payload = new ByteArrayInputStream(TEST_PAYLOAD.getBytes()); DataType originalSourceType = DataType.fromType(payload.getClass()); Transformer converter1 = new MockConverterBuilder().from(originalSourceType).to(dataTypeC).build(); A transformedPayload = new A(); when(converter1.transform(any())).thenReturn(transformedPayload); Message message = of(payload); try { transformationService.applyTransformers(message, null, converter1); fail("Transformation is supposed to fail"); } catch (MessageTransformerException expected) { assertThat(expected.getErrorMessage().getPayload().getValue(), is(transformedPayload)); } }
protected void checkResultDataType(Message message, DataType resultType, Object value) throws MessageTransformerException { if (value != null && !resultType.getType().isAssignableFrom(value.getClass())) { TypedValue<Object> actualType = TypedValue.of(value); Message transformedMessage = Message.builder(message).payload(actualType).build(); throw new MessageTransformerException(transformOnObjectNotOfSpecifiedType(resultType, actualType), null, transformedMessage); } }
/** * Check if the return class is supported by this transformer */ protected Object checkReturnClass(Object object, CoreEvent event) throws MessageTransformerException { try { checkTransformerReturnClass(this, object); } catch (TransformerException e) { throw new MessageTransformerException(createStaticMessage(e.getMessage()), this, event.getMessage()); } return object; }
@Override public Object transformMessage(CoreEvent event, Charset outputEncoding) throws MessageTransformerException { Object results[] = new Object[arguments.size()]; int i = 0; for (Iterator<ExpressionArgument> iterator = arguments.iterator(); iterator.hasNext(); i++) { ExpressionArgument argument = iterator.next(); try { results[i] = argument.evaluate(event); } catch (ExpressionRuntimeException e) { throw new MessageTransformerException(this, e, event.getMessage()); } if (!argument.isOptional() && results[i] == null) { throw new MessageTransformerException(expressionReturnedNull(argument.getExpression()), this, event.getMessage()); } } if (isReturnSourceIfNull() && checkIfAllAreNull(results)) { return event.getMessage(); } if (results.length == 1) { return results[0]; } else { return results; } }
} else { I18nMessage msg = CoreMessages.transformOnObjectUnsupportedTypeOfEndpoint(getName(), src.getClass()); throw new MessageTransformerException(msg, this, event.getMessage()); } else { if (event == null) { throw new MessageTransformerException(CoreMessages.noCurrentEventForTransformer(), this, null);
@Override public CoreEvent process(CoreEvent event) throws MuleException { if (event != null && event.getMessage() != null) { try { return CoreEvent.builder(event) .message(((ExtendedTransformationService) muleContext.getTransformationService()) .applyTransformers(event.getMessage(), event, this)) .build(); } catch (Exception e) { throw new MessageTransformerException(this, e, event.getMessage()); } } return event; }
@Override public Object transformMessage(DataType outputType, MuleContext muleContext) throws MessageTransformerException { if (outputType == null) { throw new MessageTransformerException(objectIsNull("outputType"), null, message); } Message transformedMessage = muleContext.getTransformationService().transform(message, outputType); if (message.getPayload().getDataType().isStreamType()) { setMessage(transformedMessage); } return transformedMessage.getPayload().getValue(); }
@Override public CoreEvent process(CoreEvent event) throws MuleException { if (event != null && event.getMessage() != null) { try { event = CoreEvent.builder(event) .message(((ExtendedTransformationService) muleContext.getTransformationService()) .applyTransformers(event.getMessage(), event, this)) .build(); } catch (MessageTransformerException e) { throw e; } catch (Exception e) { throw new MessageTransformerException(this, e, event.getMessage()); } } return event; }
transformer = ((MuleContextWithRegistries) muleContext).getRegistry().lookupTransformer(dataType, resultType); if (transformer == null) { throw new MessageTransformerException(noTransformerFoundForMessage(dataType, resultType), null, message); throw e; } catch (TransformerException e) { throw new MessageTransformerException(transformer, e, message);
@Override public Object transformMessage(CoreEvent event, Charset outputEncoding) throws MessageTransformerException { Message result = event.getMessage(); Object temp = event.getMessage(); Transformer lastTransformer = null; for (Object element : transformers) { lastTransformer = (Transformer) element; try { temp = lastTransformer.transform(temp); } catch (TransformerException e) { throw new MessageTransformerException(lastTransformer, e, event.getMessage()); } if (temp instanceof Message) { result = (Message) temp; } else { result = Message.builder(event.getMessage()).value(temp).build(); event = CoreEvent.builder(event).message(result).build(); } } if (lastTransformer != null && Message.class.isAssignableFrom(lastTransformer.getReturnDataType().getType())) { return result; } else { return result.getPayload().getValue(); } }