Class ToCloudEventTransformer
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.transformer.AbstractTransformer
org.springframework.integration.cloudevents.transformer.ToCloudEventTransformer
- All Implemented Interfaces:
Aware,BeanFactoryAware,BeanNameAware,InitializingBean,ApplicationContextAware,ComponentSourceAware,ExpressionCapable,GenericTransformer<Message<?>, Message<?>>,NamedComponent,Transformer
Transform messages to
CloudEvent format with attributes and extensions mapping.
This transformer supports two output modes:
- Structured Content Mode: When an
EventFormatis available (either configured viasetEventFormat(EventFormat)or resolved viasetEventFormatContentTypeExpression(Expression)), theCloudEventis serialized into the message payload using that format (e.g., JSON, XML). The output message contains the serialized CloudEvent as payload withMessageHeaders.CONTENT_TYPEset to the format's serialized content type. - Binary Content Mode: When no
EventFormatis available, the transformer usesToCloudEventTransformer.MessageBuilderMessageWriterto convert theCloudEventinto a message whereCloudEventattributes are mapped to headers with a configurable prefix (default:CloudEventHeaders.PREFIX), and theCloudEventdata becomes the payload. The output message contains the original data as payload withMessageHeaders.CONTENT_TYPEset toapplication/cloudevents.
- Since:
- 7.1
- Author:
- Glenn Renfro, Artem Bilan
-
Field Summary
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger -
Constructor Summary
ConstructorsConstructorDescriptionCreate an instance with no extension patterns.ToCloudEventTransformer(String... extensionPatterns) Create an instance with the provided extension patterns. -
Method Summary
Modifier and TypeMethodDescriptionprotected ObjectdoTransform(Message<?> message) Subclasses must implement this method to provide the transformation logic.protected voidonInit()Subclasses may implement this for initialization logic.voidsetCloudEventPrefix(String cloudEventPrefix) Set the prefix forCloudEventheaders in binary content mode.voidsetDataSchemaExpression(Expression dataSchemaExpression) voidsetEventFormat(io.cloudevents.core.format.EventFormat eventFormat) Set theEventFormatto use forCloudEventserialization.voidsetEventFormatContentTypeExpression(Expression eventFormatContentTypeExpression) Set theExpressionto produce a cloud event format content type whenEventFormatProvideris to be used to determineEventFormat.voidsetEventIdExpression(Expression eventIdExpression) voidsetSourceExpression(Expression sourceExpression) voidsetSubjectExpression(Expression subjectExpression) voidsetTypeExpression(Expression typeExpression) Methods inherited from class org.springframework.integration.transformer.AbstractTransformer
transformMethods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentDescription, getComponentName, getComponentSource, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentDescription, setComponentName, setComponentSource, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
-
Constructor Details
-
ToCloudEventTransformer
public ToCloudEventTransformer()Create an instance with no extension patterns. -
ToCloudEventTransformer
Create an instance with the provided extension patterns.- Parameters:
extensionPatterns- patterns to evaluate whether message headers should be added as extensions to theCloudEvent
-
-
Method Details
-
setEventIdExpression
Set theExpressionto createCloudEventid.Default is to extract the
idfrom theMessageHeadersof the message.- Parameters:
eventIdExpression- the expression to create theidfor eachCloudEvent
-
setSourceExpression
Set theExpressionto createCloudEventsource.Default is
"/spring/" + appName + "." + getBeanName()).- Parameters:
sourceExpression- the expression to create thesourcefor eachCloudEvent
-
setTypeExpression
- Parameters:
typeExpression- the expression to create thetypefor eachCloudEvent
-
setDataSchemaExpression
- Parameters:
dataSchemaExpression- the expression to create thedataSchemafor eachCloudEvent
-
setSubjectExpression
- Parameters:
subjectExpression- the expression to create thesubjectfor eachCloudEvent
-
setEventFormat
public void setEventFormat(io.cloudevents.core.format.EventFormat eventFormat) Set theEventFormatto use forCloudEventserialization.If
eventFormatand theeventFormatContentTypeExpressionare provided, theeventFormathas precedence.- Parameters:
eventFormat- the event format for serializing CloudEvents
-
setEventFormatContentTypeExpression
Set theExpressionto produce a cloud event format content type whenEventFormatProvideris to be used to determineEventFormat.If
eventFormatand theeventFormatContentTypeExpressionare provided, theeventFormathas precedence.- Parameters:
eventFormatContentTypeExpression- the expression to create content type for theEventFormatProvider.resolveFormat(String)- See Also:
-
setCloudEventPrefix
Set the prefix forCloudEventheaders in binary content mode.Default is
CloudEventHeaders.PREFIX.- Parameters:
cloudEventPrefix- the prefix to use forCloudEventheaders
-
onInit
protected void onInit()Description copied from class:IntegrationObjectSupportSubclasses may implement this for initialization logic.- Overrides:
onInitin classIntegrationObjectSupport
-
doTransform
Description copied from class:AbstractTransformerSubclasses must implement this method to provide the transformation logic. If the return value is itself a Message, it will be used as the result. Otherwise, any non-null return value will be used as the payload of the result Message.- Specified by:
doTransformin classAbstractTransformer- Parameters:
message- The message.- Returns:
- The result of the transformation.
-
getComponentType
-