Package com.mgreau.wwsmad.websocket.encoders

Source Code of com.mgreau.wwsmad.websocket.encoders.NotificationMessageEncoder

package com.mgreau.wwsmad.websocket.encoders;

import java.io.StringWriter;
import java.util.Set;

import javax.json.Json;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;
import javax.websocket.EncodeException;
import javax.websocket.Encoder;
import javax.websocket.EndpointConfig;

import com.mgreau.wwsmad.websocket.messages.NotificationMessage;

public class NotificationMessageEncoder implements Encoder.Text<NotificationMessage> {
  @Override
  public void init(EndpointConfig ec) {
  }

  @Override
  public void destroy() {
  }

  @Override
  public String encode(NotificationMessage m) throws EncodeException {
    StringWriter swriter = new StringWriter();
    try (JsonWriter jsonWrite = Json.createWriter(swriter)) {
      JsonObjectBuilder builder = Json.createObjectBuilder();
      builder.add("type", m.getType().toString()).
        add("adocId", m.getAdocId()).
        add(
          "data",
          Json.createObjectBuilder()
          .add("nbConnected", m.getNbConnected())
           .add("nbWriters", m.getWriters().size())
          .add("writers", toJSON(m.getWriters())));

      jsonWrite.writeObject(builder.build());
    }
    return swriter.toString();
  }
 
  private JsonObjectBuilder toJSON(Set<String> writers){
    JsonObjectBuilder jsb = Json.createObjectBuilder();
    for(String writer : writers){
      jsb.add(writer,writer);
    }
    return jsb;
   
  }
}
TOP

Related Classes of com.mgreau.wwsmad.websocket.encoders.NotificationMessageEncoder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.