Package org.menacheri.jetserver.handlers.netty

Source Code of org.menacheri.jetserver.handlers.netty.TextWebsocketDecoder

package org.menacheri.jetserver.handlers.netty;

import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import org.jboss.netty.handler.codec.oneone.OneToOneDecoder;
import org.menacheri.jetserver.event.Event;
import org.menacheri.jetserver.event.Events;
import org.menacheri.jetserver.event.impl.DefaultEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.gson.Gson;

/**
* This class will convert an incoming {@link TextWebSocketFrame} to an
* {@link Event}. The incoming data is expected to be a JSon string
* representation of an Event object. This class uses {@link Gson} to do the
* decoding to {@link DefaultEvent}. If the incoming event is of type
* {@link Events#NETWORK_MESSAGE} then it will be converted to
* {@link Events#SESSION_MESSAGE}.
*
* @author Abraham Menacherry
*
*/
public class TextWebsocketDecoder extends OneToOneDecoder
{

  private static final Logger LOG = LoggerFactory
      .getLogger(ByteArrayStreamDecoder.class);
  private Gson gson;

  @Override
  protected Object decode(ChannelHandlerContext ctx, Channel channel,
      Object msg) throws Exception
  {
    Event event = null;
    try
    {
      TextWebSocketFrame frame = (TextWebSocketFrame) msg;
      event = gson.fromJson(frame.getText(), DefaultEvent.class);
      if (event.getType() == Events.NETWORK_MESSAGE)
      {
        event.setType(Events.SESSION_MESSAGE);
      }
    }
    catch (Exception e)
    {
      LOG.error("Exception occurred while decoding json: ", e);
    }
    return event;
  }

  public Gson getGson()
  {
    return gson;
  }

  public void setGson(Gson gson)
  {
    this.gson = gson;
  }

}
TOP

Related Classes of org.menacheri.jetserver.handlers.netty.TextWebsocketDecoder

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.