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.InputStream;
22 import java.nio.ByteBuffer;
23
24 import javax.websocket.OnMessage;
25
26 import org.eclipse.jetty.websocket.common.events.annotated.InvalidSignatureException;
27 import org.eclipse.jetty.websocket.jsr356.annotations.Param.Role;
28 import org.eclipse.jetty.websocket.jsr356.decoders.ByteArrayDecoder;
29 import org.eclipse.jetty.websocket.jsr356.decoders.ByteBufferDecoder;
30
31
32
33
34 public class JsrParamIdBinary extends JsrParamIdOnMessage implements IJsrParamId
35 {
36 public static final IJsrParamId INSTANCE = new JsrParamIdBinary();
37
38 @Override
39 public boolean process(Param param, JsrCallable callable) throws InvalidSignatureException
40 {
41 if (super.process(param,callable))
42 {
43
44 return true;
45 }
46
47 if (param.type.isAssignableFrom(ByteBuffer.class))
48 {
49 param.bind(Role.MESSAGE_BINARY);
50 callable.setDecoderClass(ByteBufferDecoder.class);
51 return true;
52 }
53
54 if (param.type.isAssignableFrom(byte[].class))
55 {
56 param.bind(Role.MESSAGE_BINARY);
57 callable.setDecoderClass(ByteArrayDecoder.class);
58 return true;
59 }
60
61
62 if (param.type.isAssignableFrom(InputStream.class))
63 {
64 assertPartialMessageSupportDisabled(param,callable);
65 param.bind(Role.MESSAGE_BINARY_STREAM);
66
67 return true;
68 }
69
70 return false;
71 }
72 }