1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.websocket.jsr356.messages;
20
21 import javax.websocket.DecodeException;
22 import javax.websocket.Decoder;
23 import javax.websocket.MessageHandler;
24 import javax.websocket.MessageHandler.Whole;
25
26 import org.eclipse.jetty.websocket.api.WebSocketException;
27 import org.eclipse.jetty.websocket.common.events.EventDriver;
28 import org.eclipse.jetty.websocket.common.message.SimpleTextMessage;
29 import org.eclipse.jetty.websocket.jsr356.DecoderFactory;
30 import org.eclipse.jetty.websocket.jsr356.MessageHandlerWrapper;
31
32 public class TextWholeMessage extends SimpleTextMessage
33 {
34 private final MessageHandlerWrapper msgWrapper;
35 private final MessageHandler.Whole<Object> wholeHandler;
36
37 @SuppressWarnings("unchecked")
38 public TextWholeMessage(EventDriver onEvent, MessageHandlerWrapper wrapper)
39 {
40 super(onEvent);
41 this.msgWrapper = wrapper;
42 this.wholeHandler = (Whole<Object>)wrapper.getHandler();
43 }
44
45 @SuppressWarnings("unchecked")
46 @Override
47 public void messageComplete()
48 {
49 finished = true;
50
51 DecoderFactory.Wrapper decoder = msgWrapper.getDecoder();
52 Decoder.Text<Object> textDecoder = (Decoder.Text<Object>)decoder.getDecoder();
53 try
54 {
55 Object obj = textDecoder.decode(utf.toString());
56 wholeHandler.onMessage(obj);
57 }
58 catch (DecodeException e)
59 {
60 throw new WebSocketException("Unable to decode text data",e);
61 }
62 }
63 }