/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.config.spring.parsers.specific; import static org.mule.runtime.config.spring.parsers.specific.DataTypeFactoryBean.buildDataTypeDefinition; import org.mule.runtime.api.metadata.DataType; import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.PropertyValues; import org.springframework.beans.factory.support.AbstractBeanDefinition; /** * Parses transformers message processors to map data type attributes to a {@link DataType} * * @since 4.0.0 */ public class TransformerMessageProcessorDefinitionParser extends MessageProcessorWithDataTypeDefinitionParser { private static final String RETURN_CLASS = "returnClass"; public TransformerMessageProcessorDefinitionParser(Class messageProcessor) { super(messageProcessor); } public TransformerMessageProcessorDefinitionParser() { super(); } @Override protected void removeDataTypeProperties(MutablePropertyValues props) { props.removePropertyValue(RETURN_CLASS); super.removeDataTypeProperties(props); } @Override protected AbstractBeanDefinition parseDataType(PropertyValues sourceProperties) { if (sourceProperties.contains(RETURN_CLASS) || isDataTypeConfigured(sourceProperties)) { return buildDataTypeDefinition(getClassName(sourceProperties), sourceProperties); } else { return null; } } private String getClassName(PropertyValues sourceProperties) { return (String) (sourceProperties.contains(RETURN_CLASS) ? sourceProperties.getPropertyValue(RETURN_CLASS).getValue() : Object.class.getName()); } }