aboutsummaryrefslogtreecommitdiffstats
path: root/language-web/src/main/java/tools/refinery/language/web/xtext/HttpServiceContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'language-web/src/main/java/tools/refinery/language/web/xtext/HttpServiceContext.java')
-rw-r--r--language-web/src/main/java/tools/refinery/language/web/xtext/HttpServiceContext.java107
1 files changed, 0 insertions, 107 deletions
diff --git a/language-web/src/main/java/tools/refinery/language/web/xtext/HttpServiceContext.java b/language-web/src/main/java/tools/refinery/language/web/xtext/HttpServiceContext.java
deleted file mode 100644
index d0ba6a2d..00000000
--- a/language-web/src/main/java/tools/refinery/language/web/xtext/HttpServiceContext.java
+++ /dev/null
@@ -1,107 +0,0 @@
1/**
2 * Copyright (c) 2015, 2020 itemis AG (http://www.itemis.eu) and others.
3 * This program and the accompanying materials are made available under the
4 * terms of the Eclipse Public License 2.0 which is available at
5 * http://www.eclipse.org/legal/epl-2.0.
6 *
7 * SPDX-License-Identifier: EPL-2.0
8 */
9package tools.refinery.language.web.xtext;
10
11import java.io.IOException;
12import java.net.URLDecoder;
13import java.nio.charset.Charset;
14import java.util.Collections;
15import java.util.Enumeration;
16import java.util.HashMap;
17import java.util.Map;
18import java.util.Set;
19
20import org.eclipse.xtext.web.server.IServiceContext;
21import org.eclipse.xtext.web.server.ISession;
22
23import com.google.common.io.CharStreams;
24
25import jakarta.servlet.http.HttpServletRequest;
26
27/**
28 * Provides the parameters and metadata of an {@link HttpServletRequest}.
29 */
30class HttpServiceContext implements IServiceContext {
31 private final HttpServletRequest request;
32
33 private final Map<String, String> parameters = new HashMap<>();
34
35 private HttpSessionWrapper sessionWrapper;
36
37 public HttpServiceContext(HttpServletRequest request) throws IOException {
38 this.request = request;
39 initializeParameters();
40 }
41
42 private void initializeParameters() throws IOException {
43 initializeUrlEncodedParameters();
44 initializeRequestParameters();
45 if (!parameters.containsKey(IServiceContext.SERVICE_TYPE)) {
46 String substring = null;
47 if (request.getPathInfo() != null) {
48 substring = request.getPathInfo().substring(1);
49 }
50 parameters.put(IServiceContext.SERVICE_TYPE, substring);
51 }
52 }
53
54 private void initializeUrlEncodedParameters() throws IOException {
55 String[] contentType = null;
56 if (request.getContentType() != null) {
57 contentType = request.getContentType().split(";(\\s*)");
58 }
59 if (contentType != null && "application/x-www-form-urlencoded".equals(contentType[0])) {
60 String charset = null;
61 if (contentType.length >= 2 && contentType[1].startsWith("charset=")) {
62 charset = (contentType[1]).substring("charset=".length());
63 } else {
64 charset = Charset.defaultCharset().toString();
65 }
66 String[] encodedParams = CharStreams.toString(request.getReader()).split("&");
67 for (String param : encodedParams) {
68 int nameEnd = param.indexOf("=");
69 if (nameEnd > 0) {
70 String key = param.substring(0, nameEnd);
71 String value = URLDecoder.decode(param.substring(nameEnd + 1), charset);
72 parameters.put(key, value);
73 }
74 }
75 }
76 }
77
78 private void initializeRequestParameters() {
79 Enumeration<String> paramNames = request.getParameterNames();
80 while (paramNames.hasMoreElements()) {
81 String name = paramNames.nextElement();
82 parameters.put(name, request.getParameter(name));
83 }
84 }
85
86 @Override
87 public Set<String> getParameterKeys() {
88 return Collections.unmodifiableSet(parameters.keySet());
89 }
90
91 @Override
92 public String getParameter(String key) {
93 return parameters.get(key);
94 }
95
96 @Override
97 public ISession getSession() {
98 if (sessionWrapper == null) {
99 sessionWrapper = new HttpSessionWrapper(request.getSession(true));
100 }
101 return sessionWrapper;
102 }
103
104 public HttpServletRequest getRequest() {
105 return request;
106 }
107}