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;
20
21 import java.util.ArrayList;
22 import java.util.List;
23 import java.util.Map;
24
25 import javax.websocket.Extension;
26
27 import org.eclipse.jetty.websocket.api.extensions.ExtensionConfig;
28 import org.eclipse.jetty.websocket.api.util.QuoteUtil;
29
30 public class JsrExtension implements Extension
31 {
32 private static class JsrParameter implements Extension.Parameter
33 {
34 private String name;
35 private String value;
36
37 private JsrParameter(String key, String value)
38 {
39 this.name = key;
40 this.value = value;
41 }
42
43 @Override
44 public String getName()
45 {
46 return this.name;
47 }
48
49 @Override
50 public String getValue()
51 {
52 return this.value;
53 }
54 }
55
56 private final String name;
57 private List<Parameter> parameters = new ArrayList<>();
58
59
60
61
62 public JsrExtension(ExtensionConfig cfg)
63 {
64 this.name = cfg.getName();
65 if (cfg.getParameters() != null)
66 {
67 for (Map.Entry<String, String> entry : cfg.getParameters().entrySet())
68 {
69 parameters.add(new JsrParameter(entry.getKey(),entry.getValue()));
70 }
71 }
72 }
73
74
75
76
77 public JsrExtension(String name)
78 {
79 this.name = name;
80 }
81
82 @Override
83 public String getName()
84 {
85 return name;
86 }
87
88 @Override
89 public List<Parameter> getParameters()
90 {
91 return parameters;
92 }
93
94 @Override
95 public String toString()
96 {
97 StringBuilder str = new StringBuilder();
98 str.append(name);
99 for (Parameter param : parameters)
100 {
101 str.append(';');
102 str.append(param.getName());
103 String value = param.getValue();
104 if (value != null)
105 {
106 str.append('=');
107 QuoteUtil.quoteIfNeeded(str,value,";=");
108 }
109 }
110 return str.toString();
111 }
112 }