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)