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 org.eclipse.jetty.websocket.common.events.annotated.InvalidSignatureException;
22 import org.eclipse.jetty.websocket.jsr356.annotations.Param.Role;
23 import org.eclipse.jetty.websocket.jsr356.metadata.DecoderMetadata;
24
25
26
27
28 public class JsrParamIdDecoder extends JsrParamIdOnMessage implements IJsrParamId
29 {
30 private final DecoderMetadata metadata;
31
32 public JsrParamIdDecoder(DecoderMetadata metadata)
33 {
34 this.metadata = metadata;
35 }
36
37 @Override
38 public boolean process(Param param, JsrCallable callable) throws InvalidSignatureException
39 {
40 if (param.type.isAssignableFrom(metadata.getObjectType()))
41 {
42 assertPartialMessageSupportDisabled(param,callable);
43
44 switch (metadata.getMessageType())
45 {
46 case TEXT:
47 if (metadata.isStreamed())
48 {
49 param.bind(Role.MESSAGE_TEXT_STREAM);
50 }
51 else
52 {
53 param.bind(Role.MESSAGE_TEXT);
54 }
55 break;
56 case BINARY:
57 if (metadata.isStreamed())
58 {
59 param.bind(Role.MESSAGE_BINARY_STREAM);
60 }
61 else
62 {
63 param.bind(Role.MESSAGE_BINARY);
64 }
65 break;
66 case PONG:
67 param.bind(Role.MESSAGE_PONG);
68 break;
69 }
70 callable.setDecoderClass(metadata.getCoderClass());
71 return true;
72 }
73 return false;
74 }
75 }