Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/jdk.httpserver/share/classes/sun/net/httpserver/HttpContextImpl.java
41159 views
1
/*
2
* Copyright (c) 2005, 2021, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
package sun.net.httpserver;
27
import java.util.*;
28
import java.lang.System.Logger;
29
import java.util.concurrent.ConcurrentHashMap;
30
import java.util.concurrent.CopyOnWriteArrayList;
31
import com.sun.net.httpserver.*;
32
33
/**
34
* HttpContext represents a mapping between a protocol (http or https) together with a root URI path
35
* to a {@link HttpHandler} which is invoked to handle requests destined
36
* for the protocol/path on the associated HttpServer.
37
* <p>
38
* HttpContext instances are created by {@link HttpServer#createContext(String,String,HttpHandler,Object)}
39
* <p>
40
*/
41
class HttpContextImpl extends HttpContext {
42
43
private final String path;
44
private final String protocol;
45
private final ServerImpl server;
46
private final AuthFilter authfilter;
47
private final Map<String,Object> attributes = new ConcurrentHashMap<>();
48
/* system filters, not visible to applications */
49
private final List<Filter> sfilters = new CopyOnWriteArrayList<>();
50
/* user filters, set by applications */
51
private final List<Filter> ufilters = new CopyOnWriteArrayList<>();
52
private Authenticator authenticator;
53
private HttpHandler handler;
54
55
/**
56
* constructor is package private.
57
*/
58
HttpContextImpl (String protocol, String path, HttpHandler cb, ServerImpl server) {
59
if (path == null || protocol == null || path.length() < 1 || path.charAt(0) != '/') {
60
throw new IllegalArgumentException ("Illegal value for path or protocol");
61
}
62
this.protocol = protocol.toLowerCase();
63
this.path = path;
64
if (!this.protocol.equals ("http") && !this.protocol.equals ("https")) {
65
throw new IllegalArgumentException ("Illegal value for protocol");
66
}
67
this.handler = cb;
68
this.server = server;
69
authfilter = new AuthFilter(null);
70
sfilters.add (authfilter);
71
}
72
73
/**
74
* returns the handler for this context
75
* @return the HttpHandler for this context
76
*/
77
public HttpHandler getHandler () {
78
return handler;
79
}
80
81
public void setHandler (HttpHandler h) {
82
if (h == null) {
83
throw new NullPointerException ("Null handler parameter");
84
}
85
if (handler != null) {
86
throw new IllegalArgumentException ("handler already set");
87
}
88
handler = h;
89
}
90
91
/**
92
* returns the path this context was created with
93
* @return this context's path
94
*/
95
public String getPath() {
96
return path;
97
}
98
99
/**
100
* returns the server this context was created with
101
* @return this context's server
102
*/
103
public HttpServer getServer () {
104
return server.getWrapper();
105
}
106
107
ServerImpl getServerImpl () {
108
return server;
109
}
110
111
/**
112
* returns the protocol this context was created with
113
* @return this context's path
114
*/
115
public String getProtocol() {
116
return protocol;
117
}
118
119
/**
120
* returns a mutable Map, which can be used to pass
121
* configuration and other data to Filter modules
122
* and to the context's exchange handler.
123
* <p>
124
* Every attribute stored in this Map will be visible to
125
* every HttpExchange processed by this context
126
*/
127
public Map<String,Object> getAttributes() {
128
return attributes;
129
}
130
131
public List<Filter> getFilters () {
132
return ufilters;
133
}
134
135
List<Filter> getSystemFilters () {
136
return sfilters;
137
}
138
139
public Authenticator setAuthenticator (Authenticator auth) {
140
Authenticator old = authenticator;
141
authenticator = auth;
142
authfilter.setAuthenticator (auth);
143
return old;
144
}
145
146
public Authenticator getAuthenticator () {
147
return authenticator;
148
}
149
Logger getLogger () {
150
return server.getLogger();
151
}
152
}
153
154