You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/08/02 22:28:13 UTC

svn commit: r1509847 - in /tomcat/trunk/java/javax/websocket: DefaultClientEndpointConfig.java server/DefaultServerEndpointConfig.java

Author: markt
Date: Fri Aug  2 20:28:12 2013
New Revision: 1509847

URL: http://svn.apache.org/r1509847
Log:
Use the same Map implementation for user properties to prevent implementation conflicts

Modified:
    tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java
    tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java

Modified: tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java?rev=1509847&r1=1509846&r2=1509847&view=diff
==============================================================================
--- tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java (original)
+++ tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java Fri Aug  2 20:28:12 2013
@@ -16,9 +16,9 @@
  */
 package javax.websocket;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 final class DefaultClientEndpointConfig implements ClientEndpointConfig {
 
@@ -26,7 +26,7 @@ final class DefaultClientEndpointConfig 
     private final List<Extension> extensions;
     private final List<Class<? extends Encoder>> encoders;
     private final List<Class<? extends Decoder>> decoders;
-    private final Map<String,Object> userProperties = new HashMap<>();
+    private final Map<String,Object> userProperties = new ConcurrentHashMap<>();
     private final Configurator configurator;
 
 

Modified: tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java?rev=1509847&r1=1509846&r2=1509847&view=diff
==============================================================================
--- tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java (original)
+++ tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java Fri Aug  2 20:28:12 2013
@@ -16,9 +16,9 @@
  */
 package javax.websocket.server;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.websocket.Decoder;
 import javax.websocket.Encoder;
@@ -36,7 +36,7 @@ final class DefaultServerEndpointConfig 
     private final List<Class<? extends Encoder>> encoders;
     private final List<Class<? extends Decoder>> decoders;
     private final Configurator serverEndpointConfigurator;
-    private final Map<String,Object> userProperties = new HashMap<>();
+    private final Map<String,Object> userProperties = new ConcurrentHashMap<>();
 
     DefaultServerEndpointConfig(
             Class<?> endpointClass, String path,



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r1509847 - in /tomcat/trunk/java/javax/websocket: DefaultClientEndpointConfig.java server/DefaultServerEndpointConfig.java

Posted by Mark Thomas <ma...@apache.org>.
Martin Grigorov <mg...@apache.org> wrote:
>Hi Mark,
>
>Thanks for the fix!
>
>On Fri, Aug 2, 2013 at 10:28 PM, <ma...@apache.org> wrote:
>
>> Author: markt
>> Date: Fri Aug  2 20:28:12 2013
>> New Revision: 1509847
>>
>> URL: http://svn.apache.org/r1509847
>> Log:
>> Use the same Map implementation for user properties to prevent
>> implementation conflicts
>>
>> Modified:
>>    
>tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java
>>
>>
>tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java
>>
>
>Is it OK to change the JSR API jars ?

For the sake of clarity, that code is not a copy of the implementation from the EG. It is a clean room implementation of the same API. Therefore we are free to change it as long as the API is in unchanged and functionality is consistent with the spec.

>The change is binary compatible per se, but I wonder whether such
>changes
>in classes would not lead to different behavior in different web
>containers.

The Java WebSocket spec just says Map. It does not fix discuss nulls or thread safety. That is perhaps something that should be clarified in the spec. Please raise a Jira issue against the spec for this.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r1509847 - in /tomcat/trunk/java/javax/websocket: DefaultClientEndpointConfig.java server/DefaultServerEndpointConfig.java

Posted by Martin Grigorov <mg...@apache.org>.
Hi Mark,

Thanks for the fix!

On Fri, Aug 2, 2013 at 10:28 PM, <ma...@apache.org> wrote:

> Author: markt
> Date: Fri Aug  2 20:28:12 2013
> New Revision: 1509847
>
> URL: http://svn.apache.org/r1509847
> Log:
> Use the same Map implementation for user properties to prevent
> implementation conflicts
>
> Modified:
>     tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java
>
> tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java
>

Is it OK to change the JSR API jars ?
The change is binary compatible per se, but I wonder whether such changes
in classes would not lead to different behavior in different web containers.



>
> Modified:
> tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java?rev=1509847&r1=1509846&r2=1509847&view=diff
>
> ==============================================================================
> --- tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java
> (original)
> +++ tomcat/trunk/java/javax/websocket/DefaultClientEndpointConfig.java Fri
> Aug  2 20:28:12 2013
> @@ -16,9 +16,9 @@
>   */
>  package javax.websocket;
>
> -import java.util.HashMap;
>  import java.util.List;
>  import java.util.Map;
> +import java.util.concurrent.ConcurrentHashMap;
>
>  final class DefaultClientEndpointConfig implements ClientEndpointConfig {
>
> @@ -26,7 +26,7 @@ final class DefaultClientEndpointConfig
>      private final List<Extension> extensions;
>      private final List<Class<? extends Encoder>> encoders;
>      private final List<Class<? extends Decoder>> decoders;
> -    private final Map<String,Object> userProperties = new HashMap<>();
> +    private final Map<String,Object> userProperties = new
> ConcurrentHashMap<>();
>      private final Configurator configurator;
>
>
>
> Modified:
> tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java?rev=1509847&r1=1509846&r2=1509847&view=diff
>
> ==============================================================================
> ---
> tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java
> (original)
> +++
> tomcat/trunk/java/javax/websocket/server/DefaultServerEndpointConfig.java
> Fri Aug  2 20:28:12 2013
> @@ -16,9 +16,9 @@
>   */
>  package javax.websocket.server;
>
> -import java.util.HashMap;
>  import java.util.List;
>  import java.util.Map;
> +import java.util.concurrent.ConcurrentHashMap;
>
>  import javax.websocket.Decoder;
>  import javax.websocket.Encoder;
> @@ -36,7 +36,7 @@ final class DefaultServerEndpointConfig
>      private final List<Class<? extends Encoder>> encoders;
>      private final List<Class<? extends Decoder>> decoders;
>      private final Configurator serverEndpointConfigurator;
> -    private final Map<String,Object> userProperties = new HashMap<>();
> +    private final Map<String,Object> userProperties = new
> ConcurrentHashMap<>();
>
>      DefaultServerEndpointConfig(
>              Class<?> endpointClass, String path,
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>