You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2015/03/24 16:40:26 UTC

incubator-johnzon git commit: minor cleanup + adding few doc about websocket codecs

Repository: incubator-johnzon
Updated Branches:
  refs/heads/master 29a79edb9 -> 622f4a495


minor cleanup + adding few doc about websocket codecs


Project: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/commit/622f4a49
Tree: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/tree/622f4a49
Diff: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/diff/622f4a49

Branch: refs/heads/master
Commit: 622f4a495e29a01fe239399d2f88097fad1484c4
Parents: 29a79ed
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Mar 24 16:40:20 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Mar 24 16:40:20 2015 +0100

----------------------------------------------------------------------
 .../websocket/endpoint/ClientEndpointImpl.java  |  9 +-
 src/site/markdown/index.md.vm                   | 95 ++++++++++++++++++++
 2 files changed, 96 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/622f4a49/johnzon-websocket/src/test/java/org/apache/johnzon/websocket/endpoint/ClientEndpointImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-websocket/src/test/java/org/apache/johnzon/websocket/endpoint/ClientEndpointImpl.java b/johnzon-websocket/src/test/java/org/apache/johnzon/websocket/endpoint/ClientEndpointImpl.java
index 10020ad..82260fa 100644
--- a/johnzon-websocket/src/test/java/org/apache/johnzon/websocket/endpoint/ClientEndpointImpl.java
+++ b/johnzon-websocket/src/test/java/org/apache/johnzon/websocket/endpoint/ClientEndpointImpl.java
@@ -25,20 +25,13 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.Semaphore;
 import javax.websocket.ClientEndpoint;
-import javax.websocket.EndpointConfig;
 import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
 
 @ClientEndpoint(encoders = JohnzonTextEncoder.class, decoders = ClientEndpointImpl.MessageDecoder.class)
 public class ClientEndpointImpl {
     public static final List<Message> MESSAGES = new LinkedList<Message>();
     public static final Semaphore SEMAPHORE = new Semaphore(0);
 
-    @OnOpen
-    public void init(final EndpointConfig config) {
-
-    }
-
     @OnMessage
     public synchronized void on(final Message message) {
         MESSAGES.add(message);
@@ -47,7 +40,7 @@ public class ClientEndpointImpl {
 
     public static class MessageDecoder extends JohnzonTextDecoder {
         public MessageDecoder() {
-            type = Message.class;
+            super(Message.class);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/622f4a49/src/site/markdown/index.md.vm
----------------------------------------------------------------------
diff --git a/src/site/markdown/index.md.vm b/src/site/markdown/index.md.vm
index 944b612..c8892a1 100644
--- a/src/site/markdown/index.md.vm
+++ b/src/site/markdown/index.md.vm
@@ -84,6 +84,101 @@ JAX-RS module provides two providers (and underlying MessageBodyReaders and Mess
 * org.apache.johnzon.jaxrs.ConfigurableJohnzonProvider: same as JohnzonProvider but with setters to ease the configuration of the provider in most servers/containers
 * org.apache.johnzon.jaxrs.JsrProvider: allows you to use JsrArray, JsrObject (more generally JsonStructure)
 
+
+### Websocket
+
+<pre class="prettyprint linenums"><![CDATA[
+<dependency>
+  <groupId>org.apache.johnzon</groupId>
+  <artifactId>johnzon-websocket</artifactId>
+  <version>${project.version}</version>
+</dependency>
+]]></pre>
+
+WebSocket module provides a basic integration with Java WebSocket API (JSR 356).
+
+Integration is at codec level (encoder/decoder). There are two families of codecs:
+
+* The ones based on JSON-P (JsonObject, JsonArray, JsonStructure)
+* The ones based on Johnzon Mapper
+
+#### JSON-P integration
+
+Encoders:
+
+*  `org.apache.johnzon.websocket.jsr.JsrObjectEncoder`
+*  `org.apache.johnzon.websocket.jsr.JsrArrayEncoder`
+*  `org.apache.johnzon.websocket.jsr.JsrStructureEncoder`
+
+Decoders:
+
+*  `org.apache.johnzon.websocket.jsr.JsrObjectDecoder`
+*  `org.apache.johnzon.websocket.jsr.JsrArrayDecoder`
+*  `org.apache.johnzon.websocket.jsr.JsrStructureDecoder`
+
+#### Mapper integration
+
+Encoder:
+
+*  `org.apache.johnzon.websocket.mapper.JohnzonTextEncoder`
+
+Decoder:
+
+*  `org.apache.johnzon.websocket.mapper.JohnzonTextDecoder`
+
+#### Sample
+
+##### JSON-P Samples
+
+On server and client side configuration is easy: just provide the `encoders` and `decoders` parameters to `@[Server|Client]Endpoint`
+(or `EndpointConfig` if you use programmatic API)):
+
+    @ClientEndpoint(encoders = JsrObjectEncoder.class, decoders = JsrObjectDecoder.class)
+    public class JsrClientEndpointImpl {
+        @OnMessage
+        public void on(final JsonObject message) {
+            // ...
+        }
+    }
+
+    @ServerEndpoint(value = "/my-server", encoders = JsrObjectEncoder.class, decoders = JsrObjectDecoder.class)
+    public class JsrClientEndpointImpl {
+        @OnMessage
+        public void on(final JsonObject message) {
+            // ...
+        }
+    }
+
+##### Mapper Samples
+
+Server configuration is as simple as providing `encoders` and `decoders` parameters to `@ServerEndpoint`:
+
+    @ServerEndpoint(value = "/server", encoders = JohnzonTextEncoder.class, decoders = JohnzonTextDecoder.class)
+    public class ServerEndpointImpl {
+        @OnMessage
+        public void on(final Session session, final Message message) {
+            // ...
+        }
+    }
+
+Client configuration is almost the same excepted in this case it is not possible for Johnzon
+to guess the type you expect so you'll need to provide it. In next sample it is done just extending `JohnzonTextDecoder`
+in `MessageDecoder`.
+
+    @ClientEndpoint(encoders = JohnzonTextEncoder.class, decoders = ClientEndpointImpl.MessageDecoder.class)
+    public class ClientEndpointImpl {
+        @OnMessage
+        public void on(final Message message) {
+            // ...
+        }
+    
+        public static class MessageDecoder extends JohnzonTextDecoder {
+            public MessageDecoder() {
+                super(Message.class);
+            }
+        }
+    }
+
 ## Thanks
 
 We would like to thank ej-technologies for their [Java profiler JProfiler](http://www.ej-technologies.com/products/jprofiler/overview.html) which helped us a lot optimizing memory footprint and speed. ![JProfiler](http://www.ej-technologies.com/images/banners/jprofiler_small.png)