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.server;
20
21 import javax.websocket.server.ServerEndpointConfig;
22
23 import org.eclipse.jetty.websocket.api.WebSocketPolicy;
24 import org.eclipse.jetty.websocket.common.events.EventDriver;
25 import org.eclipse.jetty.websocket.common.events.EventDriverImpl;
26 import org.eclipse.jetty.websocket.jsr356.endpoints.EndpointInstance;
27 import org.eclipse.jetty.websocket.jsr356.endpoints.JsrEndpointEventDriver;
28
29 public class JsrServerExtendsEndpointImpl implements EventDriverImpl
30 {
31 @Override
32 public EventDriver create(Object websocket, WebSocketPolicy policy)
33 {
34 if (!(websocket instanceof EndpointInstance))
35 {
36 throw new IllegalStateException(String.format("Websocket %s must be an %s",websocket.getClass().getName(),EndpointInstance.class.getName()));
37 }
38
39 EndpointInstance ei = (EndpointInstance)websocket;
40 JsrEndpointEventDriver driver = new JsrEndpointEventDriver(policy, ei);
41
42 ServerEndpointConfig config = (ServerEndpointConfig)ei.getConfig();
43 if (config instanceof PathParamServerEndpointConfig)
44 {
45 PathParamServerEndpointConfig ppconfig = (PathParamServerEndpointConfig)config;
46 driver.setPathParameters(ppconfig.getPathParamMap());
47 }
48
49 return driver;
50 }
51
52 @Override
53 public String describeRule()
54 {
55 return "class extends " + javax.websocket.Endpoint.class.getName();
56 }
57
58 @Override
59 public boolean supports(Object websocket)
60 {
61 if (!(websocket instanceof EndpointInstance))
62 {
63 return false;
64 }
65
66 EndpointInstance ei = (EndpointInstance)websocket;
67 Object endpoint = ei.getEndpoint();
68
69 return (endpoint instanceof javax.websocket.Endpoint);
70 }
71 }