You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eventmesh.apache.org by mi...@apache.org on 2022/10/27 02:49:09 UTC

[incubator-eventmesh] branch master updated: [Enhancement] Possible null pointer dereference due to return value of called method [cloudevents SyncRequest] #1948

This is an automated email from the ASF dual-hosted git repository.

mikexue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-eventmesh.git


The following commit(s) were added to refs/heads/master by this push:
     new c0e1d6b1 [Enhancement] Possible null pointer dereference due to return value of called method [cloudevents SyncRequest] #1948
     new 8a6cf63b Merge pull request #1949 from starmoon1994/fix_patch_issues1948
c0e1d6b1 is described below

commit c0e1d6b1c33500f954924b74eef48a60c167a33a
Author: starmoon1994 <62...@qq.com>
AuthorDate: Thu Oct 27 09:50:14 2022 +0800

    [Enhancement] Possible null pointer dereference due to return value of called method [cloudevents SyncRequest] #1948
---
 .../tcp/demo/pub/cloudevents/SyncRequest.java      | 45 ++++++++++++++--------
 1 file changed, 30 insertions(+), 15 deletions(-)

diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/SyncRequest.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/SyncRequest.java
index 2dceddfc..b39dc3fc 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/SyncRequest.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/SyncRequest.java
@@ -31,6 +31,8 @@ import java.nio.charset.StandardCharsets;
 import java.util.Properties;
 
 import io.cloudevents.CloudEvent;
+import io.cloudevents.CloudEventData;
+import io.cloudevents.core.format.EventFormat;
 import io.cloudevents.core.provider.EventFormatProvider;
 import io.cloudevents.jackson.JsonFormat;
 
@@ -39,29 +41,42 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class SyncRequest {
 
-    private static EventMeshTCPClient<CloudEvent> client;
-
     public static void main(String[] args) throws Exception {
         Properties properties = Utils.readPropertiesFile(ExampleConstants.CONFIG_FILE_NAME);
         final String eventMeshIp = properties.getProperty(ExampleConstants.EVENTMESH_IP);
         final int eventMeshTcpPort = Integer.parseInt(properties.getProperty(ExampleConstants.EVENTMESH_TCP_PORT));
         UserAgent userAgent = EventMeshTestUtils.generateClient1();
         EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder()
-                .host(eventMeshIp)
-                .port(eventMeshTcpPort)
-                .userAgent(userAgent)
-                .build();
+            .host(eventMeshIp)
+            .port(eventMeshTcpPort)
+            .userAgent(userAgent)
+            .build();
         try {
-            client = EventMeshTCPClientFactory.createEventMeshTCPClient(
-                    eventMeshTcpClientConfig, CloudEvent.class);
-            client.init();
+            Package response;
+            try (EventMeshTCPClient<CloudEvent> client = EventMeshTCPClientFactory.createEventMeshTCPClient(
+                eventMeshTcpClientConfig, CloudEvent.class)) {
+                client.init();
+
+                CloudEvent event = EventMeshTestUtils.generateCloudEventV1SyncRR();
+                log.info("begin send rr msg: {}", event);
+                response = client.rr(event, EventMeshCommon.DEFAULT_TIME_OUT_MILLS);
+            }
+            // check-NPE EventFormat
+            EventFormat eventFormat = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE);
+            if (null == eventFormat) {
+                log.error("eventFormat is null. end the process");
+                return;
+            }
+            CloudEvent replyEvent = eventFormat
+                .deserialize(response.getBody().toString().getBytes(StandardCharsets.UTF_8));
 
-            CloudEvent event = EventMeshTestUtils.generateCloudEventV1SyncRR();
-            log.info("begin send rr msg: {}", event);
-            Package response = client.rr(event, EventMeshCommon.DEFAULT_TIME_OUT_MILLS);
-            CloudEvent replyEvent = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE)
-                    .deserialize(response.getBody().toString().getBytes(StandardCharsets.UTF_8));
-            String content = new String(replyEvent.getData().toBytes(), StandardCharsets.UTF_8);
+            // check-NPE CloudEventData
+            CloudEventData cloudEventData = replyEvent.getData();
+            if (null == cloudEventData) {
+                log.error("replyEvent.data is null. end the process");
+                return;
+            }
+            String content = new String(cloudEventData.toBytes(), StandardCharsets.UTF_8);
             log.info("receive rr reply: {}|{}", response, content);
 
         } catch (Exception e) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@eventmesh.apache.org
For additional commands, e-mail: commits-help@eventmesh.apache.org