forked from quarkusio/quarkus
-
Notifications
You must be signed in to change notification settings - Fork 1
/
NewParamsRestResource.java
117 lines (107 loc) · 4.02 KB
/
NewParamsRestResource.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package org.jboss.resteasy.reactive.server.vertx.test.simple;
import java.util.Optional;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.container.ResourceContext;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.Configuration;
import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Providers;
import javax.ws.rs.sse.Sse;
import javax.ws.rs.sse.SseEventSink;
import org.jboss.resteasy.reactive.RestCookie;
import org.jboss.resteasy.reactive.RestForm;
import org.jboss.resteasy.reactive.RestHeader;
import org.jboss.resteasy.reactive.RestMatrix;
import org.jboss.resteasy.reactive.RestPath;
import org.jboss.resteasy.reactive.RestQuery;
import org.jboss.resteasy.reactive.server.SimpleResourceInfo;
import org.jboss.resteasy.reactive.server.core.BlockingOperationSupport;
import org.jboss.resteasy.reactive.server.spi.ServerRequestContext;
import org.junit.jupiter.api.Assertions;
import io.smallrye.common.annotation.Blocking;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.http.HttpServerResponse;
@Path("/new-params/{klass}/{regex:[^/]+}")
public class NewParamsRestResource {
@GET
@Path("{id}")
public String get(String klass, String regex, String id) {
return "GET:" + klass + ":" + regex + ":" + id;
}
@POST
@Path("params/{p}")
public String params(@RestPath String p,
@RestQuery String q,
@RestQuery Optional<String> q2,
@RestQuery Optional<Integer> q3,
@RestHeader int h,
@RestHeader String xMyHeader,
@RestHeader("Test-Header-Param") String testHeaderParam,
@RestHeader("") String paramEmpty,
@RestForm String f,
@RestMatrix String m,
@RestCookie String c,
@RestCookie("c") Cookie cookie) {
return "params: p: " + p + ", q: " + q + ", h: " + h + ", xMyHeader: " + xMyHeader + ", testHeaderParam: "
+ testHeaderParam + ", paramEmpty: "
+ paramEmpty + ", f: " + f + ", m: " + m
+ ", c: " + c
+ ", c2: " + cookie.getValue()
+ ", q2: " + q2.orElse("empty") + ", q3: " + q3.orElse(-1);
}
@Blocking
@POST
@Path("form-blocking")
public String formBlocking(@RestForm String f) {
if (!BlockingOperationSupport.isBlockingAllowed()) {
throw new RuntimeException("should not have dispatched");
}
return f;
}
@GET
@Path("context")
public String context(// Spec:
UriInfo uriInfo,
HttpHeaders headers,
Request request,
Providers providers,
ResourceContext resourceContext,
Configuration configuration,
// Extras
ResourceInfo resourceInfo,
SimpleResourceInfo simplifiedResourceInfo,
ServerRequestContext restContext,
HttpServerRequest httpServerRequest,
HttpServerResponse httpServerResponse) {
Assertions.assertNotNull(uriInfo);
Assertions.assertNotNull(headers);
Assertions.assertNotNull(request);
Assertions.assertNotNull(providers);
Assertions.assertNotNull(resourceContext);
Assertions.assertNotNull(configuration);
Assertions.assertNotNull(resourceInfo);
Assertions.assertNotNull(simplifiedResourceInfo);
Assertions.assertNotNull(restContext);
Assertions.assertNotNull(httpServerRequest);
Assertions.assertNotNull(httpServerResponse);
return "OK";
}
@GET
@Path("sse")
@Produces(MediaType.SERVER_SENT_EVENTS)
public void eventStream(SseEventSink eventSink,
Sse sse) {
Assertions.assertNotNull(eventSink);
Assertions.assertNotNull(sse);
try (SseEventSink sink = eventSink) {
eventSink.send(sse.newEvent("OK"));
}
}
}