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

Commit 8afe64e

Browse files
committed
refactor deferred API by removing request from creation time
1 parent 0a3d744 commit 8afe64e

File tree

8 files changed

+68
-71
lines changed

8 files changed

+68
-71
lines changed

jooby-reactor/src/test/java/org/jooby/reactor/ReactorTest.java

Lines changed: 41 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import org.jooby.Deferred;
1010
import org.jooby.Env;
11+
import org.jooby.Request;
1112
import org.jooby.Route;
1213
import org.jooby.Routes;
1314
import org.jooby.test.MockUnit;
@@ -79,7 +80,7 @@ public void skipMapper() throws Exception {
7980
@SuppressWarnings({"unchecked", "rawtypes" })
8081
@Test
8182
public void fluxMapper() throws Exception {
82-
new MockUnit(Env.class, Config.class, Binder.class, Routes.class)
83+
new MockUnit(Env.class, Config.class, Binder.class, Routes.class, Request.class)
8384
.expect(map)
8485
.expect(flux)
8586
.run(unit -> {
@@ -88,37 +89,38 @@ public void fluxMapper() throws Exception {
8889
}, unit -> {
8990
Route.Mapper mapper = unit.captured(Route.Mapper.class).iterator().next();
9091
Deferred deferred = (Deferred) mapper.map(unit.get(Flux.class));
91-
deferred.handler((r, x) -> {
92+
deferred.handler(unit.get(Request.class), (r, x) -> {
9293
});
9394
});
9495
}
9596

9697
@SuppressWarnings({"unchecked", "rawtypes" })
9798
@Test
9899
public void fluxMapperWithAdapter() throws Exception {
99-
new MockUnit(Env.class, Config.class, Binder.class, Routes.class, Scheduler.class)
100-
.expect(map)
101-
.expect(flux)
102-
.expect(unit -> {
103-
Flux flux = unit.get(Flux.class);
104-
expect(flux.publishOn(unit.get(Scheduler.class))).andReturn(flux);
105-
})
106-
.run(unit -> {
107-
new Reactor()
108-
.withFlux(f -> f.publishOn(unit.get(Scheduler.class)))
109-
.configure(unit.get(Env.class), unit.get(Config.class), unit.get(Binder.class));
110-
}, unit -> {
111-
Route.Mapper mapper = unit.captured(Route.Mapper.class).iterator().next();
112-
Deferred deferred = (Deferred) mapper.map(unit.get(Flux.class));
113-
deferred.handler((r, x) -> {
114-
});
115-
});
100+
new MockUnit(Env.class, Config.class, Binder.class, Routes.class, Scheduler.class,
101+
Request.class)
102+
.expect(map)
103+
.expect(flux)
104+
.expect(unit -> {
105+
Flux flux = unit.get(Flux.class);
106+
expect(flux.publishOn(unit.get(Scheduler.class))).andReturn(flux);
107+
})
108+
.run(unit -> {
109+
new Reactor()
110+
.withFlux(f -> f.publishOn(unit.get(Scheduler.class)))
111+
.configure(unit.get(Env.class), unit.get(Config.class), unit.get(Binder.class));
112+
}, unit -> {
113+
Route.Mapper mapper = unit.captured(Route.Mapper.class).iterator().next();
114+
Deferred deferred = (Deferred) mapper.map(unit.get(Flux.class));
115+
deferred.handler(unit.get(Request.class), (r, x) -> {
116+
});
117+
});
116118
}
117119

118120
@SuppressWarnings({"unchecked", "rawtypes" })
119121
@Test
120122
public void mono() throws Exception {
121-
new MockUnit(Env.class, Config.class, Binder.class, Routes.class)
123+
new MockUnit(Env.class, Config.class, Binder.class, Routes.class, Request.class)
122124
.expect(map)
123125
.expect(mono)
124126
.run(unit -> {
@@ -127,31 +129,32 @@ public void mono() throws Exception {
127129
}, unit -> {
128130
Route.Mapper mapper = unit.captured(Route.Mapper.class).iterator().next();
129131
Deferred deferred = (Deferred) mapper.map(unit.get(Mono.class));
130-
deferred.handler((r, x) -> {
132+
deferred.handler(unit.get(Request.class), (r, x) -> {
131133
});
132134
});
133135
}
134136

135137
@SuppressWarnings({"unchecked", "rawtypes" })
136138
@Test
137139
public void monoMapperWithAdapter() throws Exception {
138-
new MockUnit(Env.class, Config.class, Binder.class, Routes.class, Scheduler.class)
139-
.expect(map)
140-
.expect(mono)
141-
.expect(unit -> {
142-
Mono mono = unit.get(Mono.class);
143-
expect(mono.publishOn(unit.get(Scheduler.class))).andReturn(mono);
144-
})
145-
.run(unit -> {
146-
new Reactor()
147-
.withMono(f -> f.publishOn(unit.get(Scheduler.class)))
148-
.configure(unit.get(Env.class), unit.get(Config.class), unit.get(Binder.class));
149-
}, unit -> {
150-
Route.Mapper mapper = unit.captured(Route.Mapper.class).iterator().next();
151-
Deferred deferred = (Deferred) mapper.map(unit.get(Mono.class));
152-
deferred.handler((r, x) -> {
153-
});
154-
});
140+
new MockUnit(Env.class, Config.class, Binder.class, Routes.class, Scheduler.class,
141+
Request.class)
142+
.expect(map)
143+
.expect(mono)
144+
.expect(unit -> {
145+
Mono mono = unit.get(Mono.class);
146+
expect(mono.publishOn(unit.get(Scheduler.class))).andReturn(mono);
147+
})
148+
.run(unit -> {
149+
new Reactor()
150+
.withMono(f -> f.publishOn(unit.get(Scheduler.class)))
151+
.configure(unit.get(Env.class), unit.get(Config.class), unit.get(Binder.class));
152+
}, unit -> {
153+
Route.Mapper mapper = unit.captured(Route.Mapper.class).iterator().next();
154+
Deferred deferred = (Deferred) mapper.map(unit.get(Mono.class));
155+
deferred.handler(unit.get(Request.class), (r, x) -> {
156+
});
157+
});
155158
}
156159

157160
}

jooby-rxjava/src/test/java/org/jooby/rx/RxMapperTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void rxObservable() throws Exception {
8787
.expect(obsSubscribe)
8888
.run(unit -> {
8989
Deferred deferred = (Deferred) Rx.rx().map(unit.get(Observable.class));
90-
deferred.handler((r, x) -> {
90+
deferred.handler(null, (r, x) -> {
9191
});
9292
});
9393
}
@@ -108,7 +108,7 @@ public void rxObservableWithScheduler() throws Exception {
108108
Deferred deferred = (Deferred) Rx
109109
.rx(o -> o.observeOn(unit.get(Scheduler.class)), Function.identity())
110110
.map(unit.get(Observable.class));
111-
deferred.handler((r, x) -> {
111+
deferred.handler(null, (r, x) -> {
112112
});
113113
});
114114
}
@@ -121,7 +121,7 @@ public void rxSingle() throws Exception {
121121
.expect(sSubscribe)
122122
.run(unit -> {
123123
Deferred deferred = (Deferred) Rx.rx().map(unit.get(Single.class));
124-
deferred.handler((r, x) -> {
124+
deferred.handler(null, (r, x) -> {
125125
});
126126
});
127127
}
@@ -134,7 +134,7 @@ public void rxComplete() throws Exception {
134134
.expect(cSubscribe)
135135
.run(unit -> {
136136
Deferred deferred = (Deferred) Rx.rx().map(unit.get(Completable.class));
137-
deferred.handler((r, x) -> {
137+
deferred.handler(null, (r, x) -> {
138138
});
139139
});
140140
}

jooby-rxjava/src/test/java/org/jooby/rx/RxTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public void withObservableAdapter() throws Exception {
122122
unit.captured(CheckedRunnable.class).get(1).run();
123123

124124
Deferred deferred = (Deferred) unit.captured(Route.Mapper.class).get(0).map(value);
125-
deferred.handler((r, x) -> {
125+
deferred.handler(null, (r, x) -> {
126126
});
127127
});
128128
}
@@ -170,7 +170,7 @@ public void withSingleAdapter() throws Exception {
170170
unit.captured(CheckedRunnable.class).get(1).run();
171171

172172
Deferred deferred = (Deferred) unit.captured(Route.Mapper.class).get(0).map(value);
173-
deferred.handler((r, x) -> {
173+
deferred.handler(null, (r, x) -> {
174174
});
175175
});
176176
}
@@ -218,7 +218,7 @@ public void withCompletableAdapter() throws Exception {
218218
unit.captured(CheckedRunnable.class).get(1).run();
219219

220220
Deferred deferred = (Deferred) unit.captured(Route.Mapper.class).get(0).map(value);
221-
deferred.handler((r, x) -> {
221+
deferred.handler(null, (r, x) -> {
222222
});
223223
});
224224
}

jooby/src/main/java/org/jooby/Deferred.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,6 @@ public static interface Handler {
148148
void handle(Result result, Throwable exception);
149149
}
150150

151-
/** Current req. Optional. */
152-
private Request req;
153-
154151
/** Deferred initializer. Optional. */
155152
private Initializer initializer;
156153

@@ -170,11 +167,9 @@ public Deferred(final Initializer0 initializer) {
170167
/**
171168
* Creates a new {@link Deferred} with an initializer.
172169
*
173-
* @param req Current request.
174170
* @param initializer An initializer.
175171
*/
176-
public Deferred(final Request req, final Initializer initializer) {
177-
this.req = requireNonNull(req, "Request is required.");
172+
public Deferred(final Initializer initializer) {
178173
this.initializer = requireNonNull(initializer, "Initializer is required.");
179174
}
180175

@@ -264,12 +259,11 @@ public <T> void resolve(final Callable<T> block) {
264259
* @param handler A response handler.
265260
* @throws Exception If initializer fails to start.
266261
*/
267-
public void handler(final Handler handler) throws Exception {
262+
public void handler(final Request req, final Handler handler) throws Exception {
268263
this.handler = requireNonNull(handler, "Handler is required.");
269264
if (initializer != null) {
270-
initializer.run(this.req, this);
265+
initializer.run(req, this);
271266
}
272-
this.req = null;
273267
}
274268

275269
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ public <T> T require(final Key<T> type) {
10231023
*/
10241024
public Route.OneArgHandler promise(final Deferred.Initializer initializer) {
10251025
return req -> {
1026-
return new Deferred(req, initializer);
1026+
return new Deferred(initializer);
10271027
};
10281028
}
10291029

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ private void onDeferred(final Map<Object, Object> scope, final NativeRequest req
321321
try {
322322
request.startAsync();
323323

324-
deferred.handler((result, ex) -> {
324+
deferred.handler(req, (result, ex) -> {
325325
boolean close = false;
326326
Throwable x = null;
327327
try {

jooby/src/test/java/org/jooby/DeferredTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class DeferredTest {
1414

1515
@Test
1616
public void newWithNoInit() throws Exception {
17-
new Deferred().handler((r, ex) -> {
17+
new Deferred().handler(null, (r, ex) -> {
1818
});
1919
}
2020

@@ -24,7 +24,7 @@ public void newWithInit0() throws Exception {
2424
new Deferred(deferred -> {
2525
assertNotNull(deferred);
2626
latch.countDown();
27-
}).handler((r, ex) -> {
27+
}).handler(null, (r, ex) -> {
2828
});
2929
latch.await();
3030
}
@@ -34,11 +34,11 @@ public void newWithInit() throws Exception {
3434
new MockUnit(Request.class)
3535
.run(unit -> {
3636
CountDownLatch latch = new CountDownLatch(1);
37-
new Deferred(unit.get(Request.class), (req, deferred) -> {
37+
new Deferred((req, deferred) -> {
3838
assertNotNull(deferred);
3939
assertEquals(unit.get(Request.class), req);
4040
latch.countDown();
41-
}).handler((r, ex) -> {
41+
}).handler(unit.get(Request.class), (r, ex) -> {
4242
});
4343
latch.await();
4444
});
@@ -49,7 +49,7 @@ public void resolve() throws Exception {
4949
Object value = new Object();
5050
CountDownLatch latch = new CountDownLatch(1);
5151
Deferred deferred = new Deferred();
52-
deferred.handler((result, ex) -> {
52+
deferred.handler(null, (result, ex) -> {
5353
assertFalse(result instanceof Deferred);
5454
assertEquals(value, result.ifGet().get());
5555
assertNull(ex);
@@ -64,7 +64,7 @@ public void setResolve() throws Exception {
6464
Object value = new Object();
6565
CountDownLatch latch = new CountDownLatch(1);
6666
Deferred deferred = new Deferred();
67-
deferred.handler((result, ex) -> {
67+
deferred.handler(null, (result, ex) -> {
6868
assertFalse(result instanceof Deferred);
6969
assertEquals(value, result.ifGet().get());
7070
latch.countDown();
@@ -78,7 +78,7 @@ public void reject() throws Exception {
7878
Exception cause = new Exception();
7979
CountDownLatch latch = new CountDownLatch(1);
8080
Deferred deferred = new Deferred();
81-
deferred.handler((result, ex) -> {
81+
deferred.handler(null, (result, ex) -> {
8282
assertEquals(cause, ex);
8383
assertNull(result);
8484
latch.countDown();
@@ -92,7 +92,7 @@ public void setReject() throws Exception {
9292
Exception cause = new Exception();
9393
CountDownLatch latch = new CountDownLatch(1);
9494
Deferred deferred = new Deferred();
95-
deferred.handler((result, ex) -> {
95+
deferred.handler(null, (result, ex) -> {
9696
assertEquals(cause, ex);
9797
assertNull(result);
9898
latch.countDown();
@@ -106,7 +106,7 @@ public void runResolve() throws Exception {
106106
Object value = new Object();
107107
CountDownLatch latch = new CountDownLatch(1);
108108
Deferred deferred = new Deferred();
109-
deferred.handler((result, ex) -> {
109+
deferred.handler(null, (result, ex) -> {
110110
assertFalse(result instanceof Deferred);
111111
assertEquals(value, result.ifGet().get());
112112
latch.countDown();
@@ -120,7 +120,7 @@ public void runReject() throws Exception {
120120
Exception cause = new Exception();
121121
CountDownLatch latch = new CountDownLatch(1);
122122
Deferred deferred = new Deferred();
123-
deferred.handler((result, ex) -> {
123+
deferred.handler(null, (result, ex) -> {
124124
assertEquals(cause, ex);
125125
assertNull(result);
126126
latch.countDown();
@@ -136,7 +136,7 @@ public void callableResolve() throws Exception {
136136
Object value = new Object();
137137
CountDownLatch latch = new CountDownLatch(1);
138138
Deferred deferred = new Deferred();
139-
deferred.handler((result, ex) -> {
139+
deferred.handler(null, (result, ex) -> {
140140
assertFalse(result instanceof Deferred);
141141
assertEquals(value, result.ifGet().get());
142142
latch.countDown();
@@ -150,7 +150,7 @@ public void callableReject() throws Exception {
150150
Exception cause = new Exception();
151151
CountDownLatch latch = new CountDownLatch(1);
152152
Deferred deferred = new Deferred();
153-
deferred.handler((result, ex) -> {
153+
deferred.handler(null, (result, ex) -> {
154154
assertEquals(cause, ex);
155155
assertNull(result);
156156
latch.countDown();

jooby/src/test/java/org/jooby/SseTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ public void sseHandlerSuccess() throws Exception {
327327
unit.get(Route.Chain.class));
328328
}, unit -> {
329329
Deferred deferred = unit.captured(Deferred.class).iterator().next();
330-
deferred.handler((value, ex) -> {
330+
deferred.handler(null, (value, ex) -> {
331331
});
332332

333333
unit.captured(Runnable.class).iterator().next().run();
@@ -360,7 +360,7 @@ public void sseHandlerFailure() throws Exception {
360360
unit.get(Route.Chain.class));
361361
}, unit -> {
362362
Deferred deferred = unit.captured(Deferred.class).iterator().next();
363-
deferred.handler((value, ex) -> {
363+
deferred.handler(null, (value, ex) -> {
364364
});
365365

366366
unit.captured(Runnable.class).iterator().next().run();
@@ -391,7 +391,7 @@ public void sseHandlerHandshakeFailure() throws Exception {
391391
unit.get(Route.Chain.class));
392392
}, unit -> {
393393
Deferred deferred = unit.captured(Deferred.class).iterator().next();
394-
deferred.handler((value, ex) -> {
394+
deferred.handler(null, (value, ex) -> {
395395
});
396396
});
397397
}

0 commit comments

Comments
 (0)