chia7712 commented on code in PR #18242:
URL: https://github.com/apache/kafka/pull/18242#discussion_r1889740367


##########
streams/src/main/java/org/apache/kafka/streams/processor/internals/SerdeGetter.java:
##########
@@ -18,37 +18,32 @@
 
 import org.apache.kafka.common.serialization.Serde;
 import org.apache.kafka.streams.processor.StateStoreContext;
+import org.apache.kafka.streams.processor.api.ProcessorContext;
 
 /**
  * Allows serde access across different context types.
  */
 public class SerdeGetter {
 
-    private final org.apache.kafka.streams.processor.ProcessorContext 
oldProcessorContext;
-    private final org.apache.kafka.streams.processor.api.ProcessorContext 
newProcessorContext;
+    private final ProcessorContext<?, ?> processorContext;
     private final StateStoreContext stateStorecontext;
-    public SerdeGetter(final 
org.apache.kafka.streams.processor.ProcessorContext context) {
-        oldProcessorContext = context;
-        newProcessorContext = null;
-        stateStorecontext = null;
-    }
-    public SerdeGetter(final 
org.apache.kafka.streams.processor.api.ProcessorContext context) {
-        oldProcessorContext = null;
-        newProcessorContext = context;
+
+    public SerdeGetter(final ProcessorContext<?, ?> context) {
+        processorContext = context;
         stateStorecontext = null;
     }
+
     public SerdeGetter(final StateStoreContext context) {
-        oldProcessorContext = null;
-        newProcessorContext = null;
+        processorContext = null;
         stateStorecontext = context;
     }
-    public Serde keySerde() {
-        return oldProcessorContext != null ? oldProcessorContext.keySerde() :
-            newProcessorContext != null ? newProcessorContext.keySerde() : 
stateStorecontext.keySerde();
+
+    public Serde<?> keySerde() {
+        return processorContext != null ? processorContext.keySerde() : 
stateStorecontext.keySerde();
     }
-    public Serde valueSerde() {
-        return oldProcessorContext != null ? oldProcessorContext.valueSerde() :
-            newProcessorContext != null ? newProcessorContext.valueSerde() : 
stateStorecontext.valueSerde();
+
+    public Serde<?> valueSerde() {
+        return processorContext != null ? processorContext.valueSerde() : 
stateStorecontext.valueSerde();

Review Comment:
   The IDE incorrectly assumes that `stateStoreContext.valueSerde()` might 
throw a NPE. To eliminate this false alert, perhaps we can retain the 
Supplier<Serde<?>> instead.
   ```java
       private final Supplier<Serde<?>> keySerdeSupplier;
       private final Supplier<Serde<?>> valueSerdeSupplier;
   
       public SerdeGetter(final ProcessorContext<?, ?> context) {
           keySerdeSupplier = context::keySerde;
           valueSerdeSupplier = context::valueSerde;
       }
   
       public SerdeGetter(final StateStoreContext context) {
           keySerdeSupplier = context::keySerde;
           valueSerdeSupplier = context::valueSerde;
       }
   
       public Serde<?> keySerde() {
           return keySerdeSupplier.get();
       }
   
       public Serde<?> valueSerde() {
           return valueSerdeSupplier.get();
       }
   ```



-- 
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]

Reply via email to