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.annotations;
20
21 import java.io.IOException;
22 import java.io.Reader;
23 import java.lang.reflect.Method;
24
25 import javax.websocket.DecodeException;
26 import javax.websocket.Decoder;
27
28 import org.eclipse.jetty.websocket.jsr356.JsrSession;
29 import org.eclipse.jetty.websocket.jsr356.annotations.Param.Role;
30
31
32
33
34
35
36 public class OnMessageTextStreamCallable extends OnMessageCallable
37 {
38 private Decoder.TextStream<?> textDecoder;
39
40 public OnMessageTextStreamCallable(Class<?> pojo, Method method)
41 {
42 super(pojo,method);
43 }
44
45
46
47
48 public OnMessageTextStreamCallable(OnMessageCallable copy)
49 {
50 super(copy);
51 }
52
53 public Object call(Object endpoint, Reader reader) throws DecodeException, IOException
54 {
55
56
57 Object copy[] = new Object[super.args.length];
58 System.arraycopy(super.args,0,copy,0,super.args.length);
59 copy[idxMessageObject] = textDecoder.decode(reader);
60 return super.call(endpoint,copy);
61 }
62
63 @Override
64 public void init(JsrSession session)
65 {
66 idxMessageObject = findIndexForRole(Role.MESSAGE_TEXT_STREAM);
67 assertRoleRequired(idxMessageObject,"Text Reader Message Object");
68 super.init(session);
69 assertDecoderRequired();
70 textDecoder = (Decoder.TextStream<?>)getDecoder();
71 }
72 }