[ 
https://issues.apache.org/jira/browse/CXF-7462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16110983#comment-16110983
 ] 

ASF GitHub Bot commented on CXF-7462:
-------------------------------------

Github user andymc12 commented on a diff in the pull request:

    https://github.com/apache/cxf/pull/301#discussion_r130889015
  
    --- Diff: 
rt/rs/sse/src/main/java/org/apache/cxf/jaxrs/sse/OutboundSseEventImpl.java ---
    @@ -24,24 +24,24 @@
     import javax.ws.rs.core.MediaType;
     import javax.ws.rs.sse.OutboundSseEvent;
     
    -public class OutboundSseEventImpl implements OutboundSseEvent {
    -    private String id;
    -    private String name;
    -    private String comment;
    -    private long reconnectDelay = -1;
    -    private Class<?> type;
    -    private Type genericType;
    -    private MediaType mediaType;
    -    private Object data;
    +public final class OutboundSseEventImpl implements OutboundSseEvent {
    +    private final String id;
    +    private final String name;
    +    private final String comment;
    +    private final long reconnectDelay;
    +    private final Class<?> type;
    +    private final Type genericType;
    +    private final MediaType mediaType;
    +    private final Object data;
     
         public static class BuilderImpl implements Builder {
             private String id;
             private String name;
             private String comment;
             private long reconnectDelay = -1;
    -        private Class<?> type;
    +        private Class<?> type = String.class;
    --- End diff --
    
    The use case here is for when a user uses the `data(String data)` API 
method (as opposed to the `data(Class<?> type, Object o)` method.  In the 
single parm case, the type is not set by the user, so we will get a NPE unless 
we set it - and since the API method accepts a String type, I think that makes 
the most sense.
    
    That said, I think I will make a change here - to avoid the case where the 
user uses _both_ API methods.  For example, they could do:
    `builder.data(Widget.class, new Widget(123)).data("my String");`
    
    I believe that this will cause the type to be set to Widget in the first 
call, but then not reset to String in the second call.  I'll change the 
defaulting to be in the implementation of the `data(String s)` method.
    
    Thanks for the review comments!


> OutboundSseEventImpl could use some minor tweaks
> ------------------------------------------------
>
>                 Key: CXF-7462
>                 URL: https://issues.apache.org/jira/browse/CXF-7462
>             Project: CXF
>          Issue Type: Improvement
>          Components: JAX-RS
>    Affects Versions: 3.2.0
>            Reporter: Andy McCright
>            Priority: Minor
>             Fix For: 3.2.0
>
>
> The OutboundSseEventImpl class could use some minor tweaks, including:
> 1) Make the fields final to reflect that the event is immutable.
> 2) Use defaults for the data type (String.class) and media type 
> (SERVER_SENT_EVENT_TYPE).
> 3) Restrict the constructor's visibility.
> I also plan to add some tests for these changes.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to