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)), the CloudEvent is 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 the CloudEvent into a message where CloudEvent attributes are mapped to headers with a configurable prefix (default:"ce-"), and the CloudEvent data becomes the payload. The output message contains the original data as payload withMessageHeaders.CONTENT_TYPEset to"application/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 a ToCloudEventTransformer with no extensionPatterns.ToCloudEventTransformer(String... extensionPatterns) Create a ToCloudEventTransformer. -
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 for CloudEvent headers in binary content mode.voidsetDataSchemaExpression(Expression dataSchemaExpression) Set theExpressionto create thedataSchemafor the CloudEvent.voidsetEventFormat(io.cloudevents.core.format.EventFormat eventFormat) Set theEventFormatto use for CloudEvent serialization.voidsetEventFormatContentTypeExpression(Expression eventFormatContentTypeExpression) Set theExpressionto produce a cloud event format content type whenEventFormatProvideris to be used to determineEventFormat.voidsetEventIdExpression(Expression eventIdExpression) Set theExpressionto create CloudEventid.voidsetSourceExpression(Expression sourceExpression) Set theExpressionto create CloudEventsource.voidsetSubjectExpression(Expression subjectExpression) Set theExpressionto create thesubjectfor the CloudEvent.voidsetTypeExpression(Expression typeExpression) Set theExpressionto extract thetypefor the CloudEvent.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 a ToCloudEventTransformer with no extensionPatterns. -
ToCloudEventTransformer
Create a ToCloudEventTransformer.- Parameters:
extensionPatterns- patterns to evaluate whether message headers should be added as extensions to the CloudEvent
-
-
Method Details
-
onInit
protected void onInit()Description copied from class:IntegrationObjectSupportSubclasses may implement this for initialization logic.- Overrides:
onInitin classIntegrationObjectSupport
-
setEventIdExpression
Set theExpressionto create CloudEventid. Default extracts theidfrom theMessageHeadersof the message.- Parameters:
eventIdExpression- the expression to create theidfor each CloudEvent
-
setSourceExpression
Set theExpressionto create CloudEventsource. Default is"/spring/" + appName + "." + getBeanName()).- Parameters:
sourceExpression- the expression to create thesourcefor each CloudEvent
-
setTypeExpression
- Parameters:
typeExpression- the expression to create thetypefor each CloudEvent
-
setDataSchemaExpression
Set theExpressionto create thedataSchemafor the CloudEvent.- Parameters:
dataSchemaExpression- the expression to create thedataSchemafor each CloudEvent
-
setSubjectExpression
Set theExpressionto create thesubjectfor the CloudEvent.- Parameters:
subjectExpression- the expression to create thesubjectfor each CloudEvent
-
setEventFormat
public void setEventFormat(io.cloudevents.core.format.EventFormat eventFormat) Set theEventFormatto use for CloudEvent serialization. IfeventFormatand theeventFormatContentTypeExpressionare provided, theeventFormathas a 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. IfeventFormatand theeventFormatContentTypeExpressionare provided, theeventFormathas a precedence.- Parameters:
eventFormatContentTypeExpression- the expression to create content type for theEventFormatProvider.resolveFormat(String)- See Also:
-
setCloudEventPrefix
Set the prefix for CloudEvent headers in binary content mode. Defaults toce-.- Parameters:
cloudEventPrefix- the prefix to use for CloudEvent headers
-
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
-