Skip to content

Commit c2e9c5a

Browse files
authored
add avaje-jsonb source
1 parent 86aac66 commit c2e9c5a

File tree

1 file changed

+72
-18
lines changed

1 file changed

+72
-18
lines changed

README.md

Lines changed: 72 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class WidgetController {
3434
return new Widget(id, "you got it"+ hello.hello());
3535
}
3636

37-
@Get
37+
@Get()
3838
List<Widget> getAll() {
3939
return List.of(new Widget(1, "Rob"), new Widget(2, "Fi"));
4040
}
@@ -186,42 +186,96 @@ package org.example.hello;
186186
import static io.avaje.http.api.PathTypeConversion.*;
187187

188188
import io.avaje.http.api.*;
189-
import io.helidon.common.http.FormParams;
190-
import io.helidon.webserver.Handler;
191-
import io.helidon.webserver.Routing;
192-
import io.helidon.webserver.ServerRequest;
193-
import io.helidon.webserver.ServerResponse;
194-
import io.helidon.webserver.Service;
195-
import jakarta.inject.Singleton;
189+
import io.avaje.inject.Component;
190+
import io.helidon.nima.webserver.http.HttpRouting;
191+
import io.helidon.nima.webserver.http.HttpRules;
192+
import io.helidon.nima.webserver.http.HttpService;
193+
import io.helidon.nima.webserver.http.ServerRequest;
194+
import io.helidon.nima.webserver.http.ServerResponse;
196195
import org.example.hello.WidgetController;
197196

198-
@Generated("io.dinject.helidon-generator")
199-
@Singleton
200-
public class WidgetController$Route implements Service {
197+
@Generated("avaje-helidon-nima-generator")
198+
@Component
199+
public class WidgetController$Route implements HttpService {
201200

202201
private final WidgetController controller;
203-
204202
public WidgetController$Route(WidgetController controller) {
205203
this.controller = controller;
206204
}
207205

208206
@Override
209-
public void update(Routing.Rules rules) {
210-
207+
public void routing(HttpRules rules) {
211208
rules.get("/widgets/{id}", this::_getById);
212-
rules.post("/widgets", this::_getAll);
209+
rules.get("/widgets", this::_getAll);
213210
}
214211

215212
private void _getById(ServerRequest req, ServerResponse res) {
216-
int id = asInt(req.path().param("id"));
217-
res.send(controller.getById(id));
213+
var pathParams = req.path().pathParameters();
214+
int id = asInt(pathParams.first("id").get());
215+
var result = controller.getById(id);
216+
res.send(result);
218217
}
219218

220219
private void _getAll(ServerRequest req, ServerResponse res) {
221-
res.send(controller.getAll());
220+
var pathParams = req.path().pathParameters();
221+
var result = controller.getAll();
222+
res.send(result);
222223
}
223224

224225
}
225226
```
226227

228+
### (Helidon Nima with Avaje-Jsonb) The generated WidgetController$Route.java is:
229+
230+
```java
231+
package org.example.hello;
232+
233+
import static io.avaje.http.api.PathTypeConversion.*;
234+
235+
import io.avaje.http.api.*;
236+
import io.avaje.inject.Component;
237+
import io.helidon.nima.webserver.http.HttpRouting;
238+
import io.helidon.nima.webserver.http.HttpRules;
239+
import io.helidon.nima.webserver.http.HttpService;
240+
import io.helidon.nima.webserver.http.ServerRequest;
241+
import io.helidon.nima.webserver.http.ServerResponse;
242+
import org.example.hello.WidgetController;
243+
244+
@Generated("avaje-helidon-nima-generator")
245+
@Component
246+
public class WidgetController$Route implements HttpService {
247+
248+
249+
private final WidgetController controller;
250+
private final JsonType<org.example.hello.WidgetController.Widget> getByIdReturnedJsonType;
251+
private final JsonType<java.util.List<org.example.hello.WidgetController.Widget>> getAllReturnedJsonType;
252+
253+
public WidgetController$Route(WidgetController controller, Jsonb jsonB) {
254+
this.controller = controller;
255+
this.getByIdReturnedJsonType = jsonB.type(org.example.hello.WidgetController.Widget.class);
256+
this.getAllReturnedJsonType = jsonB.type(org.example.hello.WidgetController.Widget.class).list();
257+
}
258+
259+
@Override
260+
public void routing(HttpRules rules) {
261+
rules.get("/widgets/{id}", this::_getById);
262+
rules.get("/widgets", this::_getAll);
263+
}
264+
265+
private void _getById(ServerRequest req, ServerResponse res) {
266+
var pathParams = req.path().pathParameters();
267+
int id = asInt(pathParams.first("id").get());
268+
var result = controller.getById(id);
269+
res.headers().contentType(io.helidon.common.http.HttpMediaType.APPLICATION_JSON);
270+
getByIdReturnedJsonType.toJson(result, res.outputStream());
271+
}
227272

273+
private void _getAll(ServerRequest req, ServerResponse res) {
274+
var pathParams = req.path().pathParameters();
275+
var result = controller.getAll();
276+
res.headers().contentType(io.helidon.common.http.HttpMediaType.APPLICATION_JSON);
277+
getAllReturnedJsonType.toJson(result, res.outputStream());
278+
}
279+
280+
}
281+
```

0 commit comments

Comments
 (0)