Skip to content
This repository was archived by the owner on Mar 3, 2026. It is now read-only.

Commit 7b4cdf9

Browse files
committed
rename some renderer+result.ifGet/get #fix 295
1 parent 2444c81 commit 7b4cdf9

20 files changed

+189
-131
lines changed

coverage-report/src/test/java/org/jooby/RendererDefOrderFeature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ public class RendererDefOrderFeature extends ServerFeature {
2525
public void order() throws Exception {
2626
request()
2727
.get("/renderer/order")
28-
.expect("Asset, Bytes, ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, defaultErr, ToString");
28+
.expect("asset, bytes, byteBuffer, file, charBuffer, stream, reader, fileChannel, defaultErr, text");
2929
}
3030
}

coverage-report/src/test/java/org/jooby/RendererOrder2Feature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public String name() {
3939
@Override
4040
public void render(final Object object, final Context ctx) throws Exception {
4141
assertEquals(
42-
"Asset, Bytes, ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, r2, r1, r3, defaultErr, ToString",
42+
"asset, bytes, byteBuffer, file, charBuffer, stream, reader, fileChannel, r2, r1, r3, defaultErr, text",
4343
ctx.toString());
4444
}
4545

@@ -73,6 +73,6 @@ public void order() throws Exception {
7373
request()
7474
.get("/renderer/order")
7575
.expect(
76-
"Asset, Bytes, ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, r2, r1, r3, defaultErr, ToString");
76+
"asset, bytes, byteBuffer, file, charBuffer, stream, reader, fileChannel, r2, r1, r3, defaultErr, text");
7777
}
7878
}

coverage-report/src/test/java/org/jooby/RendererOrderFeature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class RendererOrderFeature extends ServerFeature {
2323

2424
@Override
2525
public void render(final Object object, final Context ctx) throws Exception {
26-
assertEquals("Asset, Bytes, ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, r1, r2, r3, defaultErr, ToString",
26+
assertEquals("asset, bytes, byteBuffer, file, charBuffer, stream, reader, fileChannel, r1, r2, r3, defaultErr, text",
2727
ctx.toString());
2828
}
2929

@@ -69,6 +69,6 @@ public String name() {
6969
public void order() throws Exception {
7070
request()
7171
.get("/renderer/order")
72-
.expect("Asset, Bytes, ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, r1, r2, r3, defaultErr, ToString");
72+
.expect("asset, bytes, byteBuffer, file, charBuffer, stream, reader, fileChannel, r1, r2, r3, defaultErr, text");
7373
}
7474
}

jooby/src/main/java/org/jooby/Jooby.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3441,14 +3441,14 @@ private Injector bootstrap(final Config args,
34413441
parsers.addBinding().toInstance(BuiltinParser.Bytes);
34423442

34433443
/** basic render */
3444-
renderers.addBinding().toInstance(BuiltinRenderer.Asset);
3445-
renderers.addBinding().toInstance(BuiltinRenderer.Bytes);
3446-
renderers.addBinding().toInstance(BuiltinRenderer.ByteBuffer);
3447-
renderers.addBinding().toInstance(BuiltinRenderer.File);
3448-
renderers.addBinding().toInstance(BuiltinRenderer.CharBuffer);
3449-
renderers.addBinding().toInstance(BuiltinRenderer.InputStream);
3450-
renderers.addBinding().toInstance(BuiltinRenderer.Reader);
3451-
renderers.addBinding().toInstance(BuiltinRenderer.FileChannel);
3444+
renderers.addBinding().toInstance(BuiltinRenderer.asset);
3445+
renderers.addBinding().toInstance(BuiltinRenderer.bytes);
3446+
renderers.addBinding().toInstance(BuiltinRenderer.byteBuffer);
3447+
renderers.addBinding().toInstance(BuiltinRenderer.file);
3448+
renderers.addBinding().toInstance(BuiltinRenderer.charBuffer);
3449+
renderers.addBinding().toInstance(BuiltinRenderer.stream);
3450+
renderers.addBinding().toInstance(BuiltinRenderer.reader);
3451+
renderers.addBinding().toInstance(BuiltinRenderer.fileChannel);
34523452

34533453
/** modules, routes, parsers, renderers and websockets */
34543454
Set<Object> routeClasses = new HashSet<>();
@@ -3481,7 +3481,7 @@ private Injector bootstrap(final Config args,
34813481
? finalConfig.getBoolean("err.stacktrace")
34823482
: "dev".equals(envname);
34833483
renderers.addBinding().toInstance(new DefaulErrRenderer(stacktrace));
3484-
renderers.addBinding().toInstance(BuiltinRenderer.ToString);
3484+
renderers.addBinding().toInstance(BuiltinRenderer.text);
34853485

34863486
binder.bind(HttpHandler.class).to(HttpHandlerImpl.class).in(Singleton.class);
34873487

@@ -3785,7 +3785,9 @@ private Config defaultConfig(final Config config) {
37853785
.withValue("runtime.processors", ConfigValueFactory.fromAnyRef(processors))
37863786
.withValue("runtime.processors-plus1", ConfigValueFactory.fromAnyRef(processors + 1))
37873787
.withValue("runtime.processors-plus2", ConfigValueFactory.fromAnyRef(processors + 2))
3788-
.withValue("runtime.processors-x2", ConfigValueFactory.fromAnyRef(processors * 2));
3788+
.withValue("runtime.processors-x2", ConfigValueFactory.fromAnyRef(processors * 2))
3789+
.withValue("runtime.concurrencyLevel", ConfigValueFactory
3790+
.fromAnyRef(Math.max(4, processors)));
37893791

37903792
return defs;
37913793
}

jooby/src/main/java/org/jooby/Result.java

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import com.google.common.base.Joiner;
3030
import com.google.common.collect.ImmutableList;
31+
import com.google.common.collect.ImmutableMap;
3132

3233
/**
3334
* Utility class for HTTP responses. Usually you start with a result builder {@link Results} and
@@ -70,8 +71,10 @@
7071
*/
7172
public class Result {
7273

74+
private static Map<String, Object> NO_HEADERS = ImmutableMap.of();
75+
7376
/** Response headers. */
74-
private Map<String, Object> headers = new LinkedHashMap<>();
77+
private Map<String, Object> headers = NO_HEADERS;
7578

7679
/** Response status. */
7780
private Status status;
@@ -81,6 +84,9 @@ public class Result {
8184

8285
private final Map<MediaType, Supplier<Object>> data = new LinkedHashMap<>();
8386

87+
/** Quick access to first result . */
88+
private Supplier<Object> first;
89+
8490
/**
8591
* Set response status.
8692
*
@@ -131,7 +137,9 @@ public Result type(final String type) {
131137
*/
132138
public Result set(final Object content) {
133139
requireNonNull(content, "No content.");
134-
data.put(MediaType.all, () -> content);
140+
Supplier<Object> supplier = () -> content;
141+
first = supplier;
142+
data.put(MediaType.all, supplier);
135143
return this;
136144
}
137145

@@ -156,6 +164,7 @@ public Result when(final String type, final Supplier<Object> supplier) {
156164
public Result when(final MediaType type, final Supplier<Object> supplier) {
157165
requireNonNull(type, "A media type is required.");
158166
requireNonNull(supplier, "A supplier fn is required.");
167+
first = supplier;
159168
data.put(type, supplier);
160169
return this;
161170
}
@@ -181,7 +190,21 @@ public Optional<MediaType> type() {
181190
return Optional.ofNullable(type);
182191
}
183192

184-
public Optional<Object> get() {
193+
/**
194+
* Get a result value.
195+
*
196+
* @return Value or <code>empty</code>
197+
*/
198+
public Optional<Object> ifGet() {
199+
return ifGet(MediaType.ALL);
200+
}
201+
202+
/**
203+
* Get a result value.
204+
*
205+
* @return Value or <code>null</code>
206+
*/
207+
public Object get() {
185208
return get(MediaType.ALL);
186209
}
187210

@@ -191,23 +214,32 @@ public Optional<Object> get() {
191214
* @param types Accept header.
192215
* @return Result content.
193216
*/
194-
public Optional<Object> get(final List<MediaType> types) {
217+
public Optional<Object> ifGet(final List<MediaType> types) {
218+
return Optional.ofNullable(get(types));
219+
}
220+
221+
/**
222+
* Get a result value for the given types (accept header).
223+
*
224+
* @param types Accept header.
225+
* @return Result content or <code>null</code>.
226+
*/
227+
public Object get(final List<MediaType> types) {
195228
requireNonNull(types, "Types are required.");
196229
int size = data.size();
197230
if (size == 1) {
198-
return Optional.of(data.values().iterator().next().get());
231+
return first.get();
199232
}
200233
if (size == 0) {
201-
return Optional.empty();
234+
return null;
202235
}
203236
Supplier<Object> provider = MediaType
204237
.matcher(types)
205238
.first(ImmutableList.copyOf(data.keySet()))
206239
.map(it -> data.remove(it))
207240
.orElseThrow(
208-
() -> new Err(Status.NOT_ACCEPTABLE, Joiner.on(", ").join(types))
209-
);
210-
return Optional.of(provider.get());
241+
() -> new Err(Status.NOT_ACCEPTABLE, Joiner.on(", ").join(types)));
242+
return provider.get();
211243
}
212244

213245
/**
@@ -222,7 +254,7 @@ public Result header(final String name, final Object value) {
222254
requireNonNull(name, "Header's name is required.");
223255
requireNonNull(value, "Header's value is required.");
224256

225-
headers.put(name, value);
257+
put(name, value);
226258
return this;
227259
}
228260

@@ -253,18 +285,27 @@ public Result header(final String name, final Iterable<Object> values) {
253285
requireNonNull(name, "Header's name is required.");
254286
requireNonNull(values, "Header's values are required.");
255287

256-
headers.put(name, values);
288+
put(name, values);
257289
return this;
258290
}
259291

260292
@Override
261293
protected Result clone() {
262294
Result result = new Result();
263-
result.headers.putAll(headers);
295+
headers.forEach(result::header);
264296
result.status = status;
265297
result.type = type;
298+
result.first = first;
266299
result.data.putAll(data);
267300
return result;
268301
}
269302

303+
private void put(final String name, final Object val) {
304+
if (headers == NO_HEADERS) {
305+
// assign memory
306+
headers = new LinkedHashMap<>();
307+
}
308+
headers.put(name, val);
309+
}
310+
270311
}

jooby/src/main/java/org/jooby/Route.java

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1502,20 +1502,37 @@ default void next(final Request req, final Response rsp) throws Exception {
15021502

15031503
}
15041504

1505+
String GET = "GET";
1506+
1507+
String POST = "POST";
1508+
1509+
String PUT = "PUT";
1510+
1511+
String DELETE = "DELETE";
1512+
1513+
String PATCH = "PATCH";
1514+
1515+
String HEAD = "HEAD";
1516+
1517+
String CONNECT = "CONNECT";
1518+
1519+
String OPTIONS = "OPTIONS";
1520+
1521+
String TRACE = "TRACE";
1522+
15051523
/**
15061524
* Well known HTTP methods.
15071525
*/
15081526
List<String> METHODS = ImmutableList.<String> builder()
1509-
.add(
1510-
"GET",
1511-
"POST",
1512-
"PUT",
1513-
"DELETE",
1514-
"PATCH",
1515-
"HEAD",
1516-
"CONNECT",
1517-
"OPTIONS",
1518-
"TRACE")
1527+
.add(GET,
1528+
POST,
1529+
PUT,
1530+
DELETE,
1531+
PATCH,
1532+
HEAD,
1533+
CONNECT,
1534+
OPTIONS,
1535+
TRACE)
15191536
.build();
15201537

15211538
/**

jooby/src/main/java/org/jooby/internal/BuiltinRenderer.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
public enum BuiltinRenderer implements Renderer {
3535

36-
Asset {
36+
asset {
3737
@Override
3838
public void render(final Object value, final Context ctx) throws Exception {
3939
if (value instanceof Asset) {
@@ -45,7 +45,7 @@ public void render(final Object value, final Context ctx) throws Exception {
4545
}
4646
},
4747

48-
InputStream {
48+
stream {
4949
@Override
5050
public void render(final Object object, final Renderer.Context ctx) throws Exception {
5151
if (object instanceof InputStream) {
@@ -56,7 +56,7 @@ public void render(final Object object, final Renderer.Context ctx) throws Excep
5656
}
5757
},
5858

59-
Reader {
59+
reader {
6060
@Override
6161
public void render(final Object object, final Renderer.Context ctx) throws Exception {
6262
if (object instanceof Reader) {
@@ -66,7 +66,7 @@ public void render(final Object object, final Renderer.Context ctx) throws Excep
6666
}
6767
},
6868

69-
Bytes {
69+
bytes {
7070
@Override
7171
public void render(final Object object, final Renderer.Context ctx) throws Exception {
7272
Class<?> type = object.getClass();
@@ -77,7 +77,7 @@ public void render(final Object object, final Renderer.Context ctx) throws Excep
7777
}
7878
},
7979

80-
ByteBuffer {
80+
byteBuffer {
8181
@Override
8282
public void render(final Object object, final Renderer.Context ctx) throws Exception {
8383
if (object instanceof ByteBuffer) {
@@ -88,7 +88,7 @@ public void render(final Object object, final Renderer.Context ctx) throws Excep
8888
}
8989
},
9090

91-
File {
91+
file {
9292
@Override
9393
public void render(final Object object, final Renderer.Context ctx) throws Exception {
9494
if (object instanceof File) {
@@ -99,7 +99,7 @@ public void render(final Object object, final Renderer.Context ctx) throws Excep
9999
}
100100
},
101101

102-
CharBuffer {
102+
charBuffer {
103103
@Override
104104
public void render(final Object object, final Renderer.Context ctx) throws Exception {
105105
if (object instanceof CharBuffer) {
@@ -110,7 +110,7 @@ public void render(final Object object, final Renderer.Context ctx) throws Excep
110110
}
111111
},
112112

113-
FileChannel {
113+
fileChannel {
114114
@Override
115115
public void render(final Object object, final Renderer.Context ctx) throws Exception {
116116
if (object instanceof FileChannel) {
@@ -120,7 +120,7 @@ public void render(final Object object, final Renderer.Context ctx) throws Excep
120120
}
121121
},
122122

123-
ToString {
123+
text {
124124
@Override
125125
public void render(final Object object, final Renderer.Context ctx) throws Exception {
126126
if (!(object instanceof View)) {

jooby/src/main/java/org/jooby/internal/HttpHandlerImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,8 +485,8 @@ private static String method(final String methodParam, final NativeRequest reque
485485
}
486486

487487
private static LoadingCache<RouteKey, List<Route>> routeCache(final Set<Route.Definition> routes,
488-
final Config config) {
489-
return CacheBuilder.from(config.getString("server.routes.Cache"))
488+
final Config conf) {
489+
return CacheBuilder.from(conf.getString("server.routes.Cache"))
490490
.build(new CacheLoader<RouteKey, List<Route>>() {
491491
@Override
492492
public List<Route> load(final RouteKey key) throws Exception {

0 commit comments

Comments
 (0)