@Test public void reusesDefaultFlowConstruct() throws MessageTransformerException { MuleContext muleContextSpy = spy(muleContext); transformer.setMuleContext(muleContextSpy); transform(); transform(); transform(); verify(muleContextSpy, times(1)).getDefaultErrorHandler(any()); }
@Override public Object transform(Object src, CoreEvent event) throws MessageTransformerException { return transform(src, resolveEncoding(src), event); }
@Override public final Object transform(Object src, Charset enc, CoreEvent event) throws MessageTransformerException { DataType sourceType = DataType.fromType(src.getClass()); if (!isSourceDataTypeSupported(sourceType)) { if (isIgnoreBadInput()) { logger .debug("Source type is incompatible with this transformer and property 'ignoreBadInput' is set to true, so the transformer chain will continue."); return src; } else { I18nMessage msg = CoreMessages.transformOnObjectUnsupportedTypeOfEndpoint(getName(), src.getClass()); throw new MessageTransformerException(msg, this, event.getMessage()); logger.debug(format("Applying transformer %s (%s)", getName(), getClass().getName())); logger.debug(format("Object before transform: %s", StringMessageUtils.toString(src))); MuleClientFlowConstruct flowConstruct = new MuleClientFlowConstruct(muleContext); ComponentLocation location = getLocation() != null ? getLocation() : fromSingleComponent("AbstractMessageTransformer"); event = InternalEvent.builder(create(flowConstruct, location)).message(message).build(); result = transformMessage(event, enc); result = checkReturnClass(result, event); return result;
private void transform() throws MessageTransformerException { assertThat(transformer.transform(Message.of(new Object()), Charset.defaultCharset(), null), is(BYTES)); }
@Override public void initialise() throws InitialisationException { super.initialise(); valueEvaluator.initialize(muleContext.getExpressionManager()); }
@Override public int hashCode() { return hash(super.hashCode(), getArguments()); }
@Override public boolean equals(Object obj) { return super.equals(obj) && this.getArguments().equals(((AbstractExpressionTransformer) obj).getArguments()); }
/** * 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); } }
/** * Template method where deriving classes can do any initialisation after the properties have been set on this transformer * * @throws InitialisationException * */ @Override public void initialise() throws InitialisationException { super.initialise(); if (Object.class.equals(getReturnDataType().getType())) { throw new InitialisationException(CoreMessages.transformerInvalidReturnType(Object.class, getName()), this); } }
@Override public void setMuleContext(MuleContext muleContext) { super.setMuleContext(muleContext); for (Transformer transformer : transformers) { transformer.setMuleContext(muleContext); } }