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.lang.reflect.Method;
22
23 import javax.websocket.Decoder;
24
25 import org.eclipse.jetty.websocket.jsr356.JsrSession;
26
27
28
29
30 public class OnErrorCallable extends JsrCallable
31 {
32 private int idxThrowable = -1;
33
34 public OnErrorCallable(Class<?> pojo, Method method)
35 {
36 super(pojo,method);
37 }
38
39 public OnErrorCallable(OnErrorCallable copy)
40 {
41 super(copy);
42 this.idxThrowable = copy.idxThrowable;
43 }
44
45 public void call(Object endpoint, Throwable cause)
46 {
47 if (idxThrowable == (-1))
48 {
49 idxThrowable = findIndexForRole(Param.Role.ERROR_CAUSE);
50 assertRoleRequired(idxThrowable,"Throwable");
51 }
52
53 if (idxThrowable >= 0)
54 {
55 super.args[idxThrowable] = cause;
56 }
57 super.call(endpoint,super.args);
58 }
59
60 @Override
61 public void init(JsrSession session)
62 {
63 idxThrowable = findIndexForRole(Param.Role.ERROR_CAUSE);
64 assertRoleRequired(idxThrowable,"Throwable");
65 super.init(session);
66 }
67
68 @Override
69 public void setDecoderClass(Class<? extends Decoder> decoderClass)
70 {
71
72 }
73
74 }