Skip to content

Commit f95ac83

Browse files
committed
another way
1 parent 32381a3 commit f95ac83

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

src/main/java/io/vertx/httpproxy/HttpProxy.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
import io.vertx.core.http.RequestOptions;
2222
import io.vertx.core.net.SocketAddress;
2323
import io.vertx.httpproxy.impl.ReverseProxy;
24+
import io.vertx.httpproxy.spi.context.Context;
2425

26+
import java.util.HashMap;
27+
import java.util.Objects;
2528
import java.util.function.BiFunction;
2629
import java.util.function.Function;
2730

@@ -114,6 +117,22 @@ default HttpProxy originSelector(Function<HttpServerRequest, Future<SocketAddres
114117
*
115118
* @param request the outbound {@code HttpServerRequest}
116119
*/
117-
void handle(HttpServerRequest request);
120+
default void handle(HttpServerRequest request) {
121+
Context defaultContext = new Context() {
122+
HashMap<String, Object> data = new HashMap<>();
123+
@Override
124+
public Object get(String k) {
125+
return data.get(k);
126+
}
127+
128+
@Override
129+
public void set(String k, Object v) {
130+
data.put(k, v);
131+
}
132+
};
133+
handle(request, defaultContext);
134+
}
135+
136+
void handle(HttpServerRequest request, Context n);
118137

119138
}

src/main/java/io/vertx/httpproxy/impl/ReverseProxy.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.vertx.httpproxy.*;
1919
import io.vertx.httpproxy.cache.CacheOptions;
2020
import io.vertx.httpproxy.spi.cache.Cache;
21+
import io.vertx.httpproxy.spi.context.Context;
2122

2223
import java.util.*;
2324
import java.util.function.BiFunction;
@@ -54,7 +55,7 @@ public HttpProxy addInterceptor(ProxyInterceptor interceptor) {
5455

5556

5657
@Override
57-
public void handle(HttpServerRequest request) {
58+
public void handle(HttpServerRequest request, Context context) {
5859
ProxyRequest proxyRequest = ProxyRequest.reverseProxy(request);
5960

6061
// Encoding sanity check
@@ -70,7 +71,7 @@ public void handle(HttpServerRequest request) {
7071
return;
7172
}
7273

73-
Proxy proxy = new Proxy(proxyRequest);
74+
Proxy proxy = new Proxy(proxyRequest, context);
7475
proxy.filters = interceptors.listIterator();
7576
proxy.sendRequest()
7677
.recover(throwable -> {
@@ -153,16 +154,17 @@ private class Proxy implements ProxyContext {
153154

154155
private final ProxyRequest request;
155156
private ProxyResponse response;
156-
private final Map<String, Object> attachments = new HashMap<>();
157+
private final Context attachments;
157158
private ListIterator<ProxyInterceptor> filters;
158159

159-
private Proxy(ProxyRequest request) {
160+
private Proxy(ProxyRequest request, Context context) {
160161
this.request = request;
162+
this.attachments = context;
161163
}
162164

163165
@Override
164166
public void set(String name, Object value) {
165-
attachments.put(name, value);
167+
attachments.set(name, value);
166168
}
167169

168170
@Override
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.vertx.httpproxy.spi.context;
2+
3+
// something like this
4+
public interface Context {
5+
Object get(String k);
6+
void set(String k, Object v);
7+
}

0 commit comments

Comments
 (0)