hhuang1231 commented on code in PR #4569:
URL: https://github.com/apache/eventmesh/pull/4569#discussion_r1398613083


##########
eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/SourceWorker.java:
##########
@@ -233,16 +233,32 @@ private void startConnector() throws Exception {
     }
 
     private CloudEvent convertRecordToEvent(ConnectRecord connectRecord) {
+        CloudEventBuilder cloudEventBuilder = CloudEventBuilder.v1();
+
+        cloudEventBuilder.withId(UUID.randomUUID().toString())
+                .withSubject(config.getPubSubConfig().getSubject())
+                .withSource(URI.create("/"))
+                .withDataContentType("application/cloudevents+json")
+                .withType(CLOUD_EVENTS_PROTOCOL_NAME)
+                
.withData(Objects.requireNonNull(JsonUtils.toJSONString(connectRecord.getData())).getBytes(StandardCharsets.UTF_8))
+                .withExtension("ttl", 10000);
+
+        for (String key : connectRecord.getExtensions().keySet()) {
+            Object extension = connectRecord.getExtensionObj(key);
+            if (extension instanceof Integer ||
+                    extension instanceof Long ||
+                    extension instanceof Short ||
+                    extension instanceof Byte ||
+                    extension instanceof Boolean ||
+                    extension instanceof Float ||
+                    extension instanceof Double ||
+                    extension instanceof Character ||
+                    extension instanceof String) {
+                cloudEventBuilder.withExtension(key, 
String.valueOf(extension));

Review Comment:
   > > KeyValue support cannot be commanded yet Method parameters in 
CloudEventBuilder#withExtension, such as Boolean, byte[], Number, 
OffserDateTime, String, URI, so that the extension of ConnectRecord is fully 
compatible with CloudEvent? 
   > 
   > This is better. Are you willing to optimize it? Additionally, there are 
checkstyle errors reported by CI that need to be fixed.
   
   So can I assume that now I need ConnectRecord to be compatible with 
CloudEvent, and at the same time I will retain the storage and acquisition of 
Object in ConnectRecord. The former is mainly used to send events to the 
runtime, and the latter is mainly used for some special purposes of the 
source/sink itself?
   
   
那么我是不是可以这么假定:现在我需要让ConnectRecord兼容CloudEvent,同时我还将保留ConnectRecord中关于Object的存放和获取。前者主要用于将事件发送至runtime,后者主要用于source/sink自身的一些特殊用途?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to