Skip to content

Commit 3c836c7

Browse files
committed
tech task: upgrade to new route API from existing modules
1 parent 58b7f6e commit 3c836c7

9 files changed

Lines changed: 184 additions & 286 deletions

File tree

jooby-assets/src/main/java/org/jooby/assets/Assets.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@
2323

2424
import org.jooby.Env;
2525
import org.jooby.Jooby;
26-
import org.jooby.Route;
27-
import org.jooby.Route.Definition;
26+
import org.jooby.Routes;
2827
import org.jooby.handlers.AssetHandler;
2928
import org.jooby.internal.assets.AssetHandlerWithCompiler;
3029
import org.jooby.internal.assets.AssetVars;
3130
import org.jooby.internal.assets.LiveCompiler;
3231

3332
import com.google.common.base.Throwables;
3433
import com.google.inject.Binder;
35-
import com.google.inject.multibindings.Multibinder;
3634
import com.typesafe.config.Config;
3735
import com.typesafe.config.ConfigFactory;
3836

@@ -243,10 +241,8 @@ public void configure(final Env env, final Config config, final Binder binder) {
243241
String cpath = config.getString("application.path");
244242
AssetCompiler compiler = new AssetCompiler(loader, conf);
245243

246-
Multibinder<Definition> routes = Multibinder.newSetBinder(binder, Route.Definition.class);
247-
routes.addBinding()
248-
.toInstance(new Route.Definition("*", "*", new AssetVars(compiler, cpath))
249-
.name("/assets/vars"));
244+
Routes routes = env.routes();
245+
routes.use("*", "*", new AssetVars(compiler, cpath)).name("/assets/vars");
250246
// live compiler?
251247
boolean watch = dev;
252248
if (watch && conf.hasPath("assets.watch")) {
@@ -256,8 +252,7 @@ public void configure(final Env env, final Config config, final Binder binder) {
256252
LiveCompiler liveCompiler = new LiveCompiler(conf, compiler);
257253
env.onStart(liveCompiler::start);
258254
env.onStop(liveCompiler::stop);
259-
routes.addBinding()
260-
.toInstance(new Route.Definition("*", "*", liveCompiler).name("/assets/compiler"));
255+
routes.use("*", "*", liveCompiler).name("/assets/compiler");
261256
}
262257

263258
AssetHandler handler = dev
@@ -274,9 +269,7 @@ public void configure(final Env env, final Config config, final Binder binder) {
274269
.ofSeconds(conf.getDuration("assets.cache.maxAge", TimeUnit.SECONDS)));
275270
}
276271

277-
compiler.patterns().forEach(
278-
pattern -> routes.addBinding()
279-
.toInstance(new Route.Definition("GET", pattern, handler)));
272+
compiler.patterns().forEach(pattern -> routes.get(pattern, handler));
280273

281274
} catch (Exception ex) {
282275
throw Throwables.propagate(ex);

jooby-assets/src/test/java/org/jooby/assets/AssetsTest.java

Lines changed: 49 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jooby.assets;
22

3+
import static org.easymock.EasyMock.eq;
34
import static org.easymock.EasyMock.expect;
45
import static org.easymock.EasyMock.isA;
56
import static org.junit.Assert.assertTrue;
@@ -10,8 +11,10 @@
1011
import org.jooby.Route;
1112
import org.jooby.Route.Definition;
1213
import org.jooby.Route.Filter;
14+
import org.jooby.Routes;
1315
import org.jooby.handlers.AssetHandler;
1416
import org.jooby.internal.assets.AssetHandlerWithCompiler;
17+
import org.jooby.internal.assets.AssetVars;
1518
import org.jooby.internal.assets.LiveCompiler;
1619
import org.jooby.test.MockUnit;
1720
import org.junit.Test;
@@ -34,7 +37,6 @@
3437
@PrepareForTest({Assets.class, AssetCompiler.class, Multibinder.class, LiveCompiler.class })
3538
public class AssetsTest {
3639

37-
@SuppressWarnings("unchecked")
3840
@Test
3941
public void configure() throws Exception {
4042
Config conf = ConfigFactory.empty()
@@ -48,20 +50,17 @@ public void configure() throws Exception {
4850
expect(compiler.patterns()).andReturn(Sets.newHashSet("/assets/**"));
4951
unit.registerMock(AssetCompiler.class, compiler);
5052
}).expect(unit -> {
51-
Binder binder = unit.get(Binder.class);
53+
Definition assetVars = unit.mock(Definition.class);
54+
expect(assetVars.name("/assets/vars")).andReturn(assetVars);
55+
Routes routes = unit.mock(Routes.class);
56+
expect(routes.use(eq("*"), eq("*"), unit.capture(AssetVars.class))).andReturn(assetVars);
5257

53-
LinkedBindingBuilder<Definition> varsLBB = unit.mock(LinkedBindingBuilder.class);
54-
varsLBB.toInstance(unit.capture(Route.Definition.class));
58+
Definition assetHandlerWithCompiler = unit.mock(Definition.class);
59+
expect(routes.get(eq("/assets/**"), isA(AssetHandlerWithCompiler.class)))
60+
.andReturn(assetHandlerWithCompiler);
5561

56-
LinkedBindingBuilder<Definition> handlerLBB = unit.mock(LinkedBindingBuilder.class);
57-
handlerLBB.toInstance(unit.capture(Route.Definition.class));
58-
59-
Multibinder<Definition> mb = unit.mock(Multibinder.class);
60-
expect(mb.addBinding()).andReturn(varsLBB);
61-
expect(mb.addBinding()).andReturn(handlerLBB);
62-
63-
unit.mockStatic(Multibinder.class);
64-
expect(Multibinder.newSetBinder(binder, Route.Definition.class)).andReturn(mb);
62+
Env env = unit.get(Env.class);
63+
expect(env.routes()).andReturn(routes);
6564
}).expect(unit -> {
6665
Env env = unit.get(Env.class);
6766

@@ -86,17 +85,12 @@ public void configure() throws Exception {
8685
}).run(unit -> {
8786
new Assets()
8887
.configure(unit.get(Env.class), conf, unit.get(Binder.class));
89-
} , unit -> {
90-
Filter handler = unit.captured(Route.Definition.class).iterator().next().filter();
91-
handler.handle(unit.get(Request.class), unit.get(Response.class),
92-
unit.get(Route.Chain.class));
93-
} , unit -> {
94-
Filter handler = unit.captured(Route.Definition.class).get(1).filter();
95-
assertTrue(handler instanceof AssetHandlerWithCompiler);
88+
}, unit -> {
89+
unit.captured(AssetVars.class).iterator().next().handle(unit.get(Request.class),
90+
unit.get(Response.class), unit.get(Route.Chain.class));
9691
});
9792
}
9893

99-
@SuppressWarnings("unchecked")
10094
@Test
10195
public void configureWithWatch() throws Exception {
10296
Config conf = ConfigFactory.empty()
@@ -110,42 +104,35 @@ public void configureWithWatch() throws Exception {
110104
expect(compiler.patterns()).andReturn(Sets.newHashSet("/assets/**"));
111105
unit.registerMock(AssetCompiler.class, compiler);
112106
}).expect(unit -> {
113-
Binder binder = unit.get(Binder.class);
107+
AssetCompiler compiler = unit.get(AssetCompiler.class);
114108

115-
LinkedBindingBuilder<Definition> varsLBB = unit.mock(LinkedBindingBuilder.class);
116-
varsLBB.toInstance(unit.capture(Route.Definition.class));
109+
Definition assetVars = unit.mock(Definition.class);
110+
expect(assetVars.name("/assets/vars")).andReturn(assetVars);
111+
Routes routes = unit.mock(Routes.class);
112+
expect(routes.use(eq("*"), eq("*"), unit.capture(AssetVars.class))).andReturn(assetVars);
117113

118-
LinkedBindingBuilder<Definition> handlerLBB = unit.mock(LinkedBindingBuilder.class);
119-
handlerLBB.toInstance(unit.capture(Route.Definition.class));
114+
Definition assetHandlerWithCompiler = unit.mock(Definition.class);
115+
expect(routes.get(eq("/assets/**"), isA(AssetHandlerWithCompiler.class)))
116+
.andReturn(assetHandlerWithCompiler);
120117

121-
Multibinder<Definition> mb = unit.mock(Multibinder.class);
122-
expect(mb.addBinding()).andReturn(varsLBB);
123-
expect(mb.addBinding()).andReturn(handlerLBB);
124-
unit.registerMock(Multibinder.class, mb);
118+
Definition liveCompilerRoute = unit.mock(Definition.class);
119+
expect(liveCompilerRoute.name("/assets/compiler")).andReturn(liveCompilerRoute);
125120

126-
unit.mockStatic(Multibinder.class);
127-
expect(Multibinder.newSetBinder(binder, Route.Definition.class)).andReturn(mb);
121+
LiveCompiler liveCompiler = unit.constructor(LiveCompiler.class)
122+
.args(Config.class, AssetCompiler.class)
123+
.build(conf, compiler);
124+
expect(routes.use(eq("*"), eq("*"), eq(liveCompiler))).andReturn(liveCompilerRoute);
125+
126+
Env env = unit.get(Env.class);
127+
expect(env.routes()).andReturn(routes);
128128
}).expect(unit -> {
129129
Env env = unit.get(Env.class);
130130

131131
expect(env.name()).andReturn("dev");
132132
}).expect(unit -> {
133-
AssetCompiler compiler = unit.get(AssetCompiler.class);
134-
135-
unit.constructor(LiveCompiler.class)
136-
.args(Config.class, AssetCompiler.class)
137-
.build(conf, compiler);
138-
139133
Env env = unit.get(Env.class);
140134
expect(env.onStart(isA(CheckedRunnable.class))).andReturn(env);
141135
expect(env.onStop(isA(CheckedRunnable.class))).andReturn(env);
142-
143-
LinkedBindingBuilder<Definition> lbblc = unit.mock(LinkedBindingBuilder.class);
144-
lbblc.toInstance(unit.capture(Route.Definition.class));
145-
146-
Multibinder<Definition> mbr = unit.get(Multibinder.class);
147-
expect(mbr.addBinding()).andReturn(lbblc);
148-
149136
}).expect(unit -> {
150137
AssetCompiler compiler = unit.get(AssetCompiler.class);
151138
expect(compiler.keySet()).andReturn(Sets.newHashSet("home"));
@@ -164,17 +151,12 @@ public void configureWithWatch() throws Exception {
164151
}).run(unit -> {
165152
new Assets()
166153
.configure(unit.get(Env.class), conf, unit.get(Binder.class));
167-
} , unit -> {
168-
Filter handler = unit.captured(Route.Definition.class).iterator().next().filter();
169-
handler.handle(unit.get(Request.class), unit.get(Response.class),
170-
unit.get(Route.Chain.class));
171-
} , unit -> {
172-
Filter handler = unit.captured(Route.Definition.class).get(1).filter();
173-
assertTrue(handler instanceof LiveCompiler);
154+
}, unit -> {
155+
unit.captured(AssetVars.class).iterator().next().handle(unit.get(Request.class),
156+
unit.get(Response.class), unit.get(Route.Chain.class));
174157
});
175158
}
176159

177-
@SuppressWarnings("unchecked")
178160
@Test
179161
public void configuredist() throws Exception {
180162
Config conf = ConfigFactory.empty()
@@ -193,20 +175,17 @@ public void configuredist() throws Exception {
193175
expect(compiler.patterns()).andReturn(Sets.newHashSet("/assets/**"));
194176
unit.registerMock(AssetCompiler.class, compiler);
195177
}).expect(unit -> {
196-
Binder binder = unit.get(Binder.class);
178+
Definition assetVars = unit.mock(Definition.class);
179+
expect(assetVars.name("/assets/vars")).andReturn(assetVars);
180+
Routes routes = unit.mock(Routes.class);
181+
expect(routes.use(eq("*"), eq("*"), unit.capture(AssetVars.class))).andReturn(assetVars);
197182

198-
LinkedBindingBuilder<Definition> varsLBB = unit.mock(LinkedBindingBuilder.class);
199-
varsLBB.toInstance(unit.capture(Route.Definition.class));
200-
201-
LinkedBindingBuilder<Definition> handlerLBB = unit.mock(LinkedBindingBuilder.class);
202-
handlerLBB.toInstance(unit.capture(Route.Definition.class));
203-
204-
Multibinder<Definition> mb = unit.mock(Multibinder.class);
205-
expect(mb.addBinding()).andReturn(varsLBB);
206-
expect(mb.addBinding()).andReturn(handlerLBB);
183+
Definition assetHandlerWithCompiler = unit.mock(Definition.class);
184+
expect(routes.get(eq("/assets/**"), isA(AssetHandler.class)))
185+
.andReturn(assetHandlerWithCompiler);
207186

208-
unit.mockStatic(Multibinder.class);
209-
expect(Multibinder.newSetBinder(binder, Route.Definition.class)).andReturn(mb);
187+
Env env = unit.get(Env.class);
188+
expect(env.routes()).andReturn(routes);
210189
}).expect(unit -> {
211190
Env env = unit.get(Env.class);
212191

@@ -230,13 +209,9 @@ public void configuredist() throws Exception {
230209
}).run(unit -> {
231210
new Assets()
232211
.configure(unit.get(Env.class), conf, unit.get(Binder.class));
233-
} , unit -> {
234-
Filter handler = unit.captured(Route.Definition.class).iterator().next().filter();
235-
handler.handle(unit.get(Request.class), unit.get(Response.class),
236-
unit.get(Route.Chain.class));
237-
} , unit -> {
238-
Filter handler = unit.captured(Route.Definition.class).get(1).filter();
239-
assertTrue(handler instanceof AssetHandler);
212+
}, unit -> {
213+
unit.captured(AssetVars.class).iterator().next().handle(unit.get(Request.class),
214+
unit.get(Response.class), unit.get(Route.Chain.class));
240215
});
241216
}
242217

@@ -289,11 +264,11 @@ public void configureFails() throws Exception {
289264
}).run(unit -> {
290265
new Assets()
291266
.configure(unit.get(Env.class), conf, unit.get(Binder.class));
292-
} , unit -> {
267+
}, unit -> {
293268
Filter handler = unit.captured(Route.Definition.class).iterator().next().filter();
294269
handler.handle(unit.get(Request.class), unit.get(Response.class),
295270
unit.get(Route.Chain.class));
296-
} , unit -> {
271+
}, unit -> {
297272
Filter handler = unit.captured(Route.Definition.class).get(1).filter();
298273
assertTrue(handler instanceof AssetHandlerWithCompiler);
299274
});

jooby-elasticsearch/src/main/java/org/jooby/elasticsearch/ElasticSearch.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.jooby.Env;
3232
import org.jooby.Jooby;
3333
import org.jooby.Renderer;
34-
import org.jooby.Route;
3534
import org.jooby.internal.elasticsearch.BytesReferenceRenderer;
3635
import org.jooby.internal.elasticsearch.EmbeddedHandler;
3736

@@ -273,11 +272,7 @@ public void configure(final Env env, final Config config, final Binder binder) {
273272
.toInstance(new BytesReferenceRenderer());
274273

275274
EmbeddedHandler handler = new EmbeddedHandler(path, node, detailedErrors);
276-
Multibinder<Route.Definition> route = Multibinder.newSetBinder(binder, Route.Definition.class);
277-
route.addBinding()
278-
.toInstance(
279-
new Route.Definition("*", path + "/**", handler).name("elasticsearch")
280-
);
275+
env.routes().use("*", path + "/**", handler).name("elasticsearch");
281276
}
282277

283278
@Override

jooby-elasticsearch/src/test/java/org/jooby/elasticsearch/ElasticSearchTest.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.jooby.Env;
1818
import org.jooby.Renderer;
1919
import org.jooby.Route;
20+
import org.jooby.Routes;
2021
import org.jooby.internal.elasticsearch.BytesReferenceRenderer;
2122
import org.jooby.internal.elasticsearch.EmbeddedHandler;
2223
import org.jooby.test.MockUnit;
@@ -127,20 +128,17 @@ public class ElasticSearchTest {
127128
EmbeddedHandler handler = unit.mockConstructor(EmbeddedHandler.class, new Class[]{String.class,
128129
Node.class, boolean.class }, eq("/es"), eq(unit.get(Node.class)), eq(true));
129130

130-
Route.Definition rh = unit.mockConstructor(Route.Definition.class, new Class[]{String.class,
131-
String.class, Route.Handler.class }, "*", "/es/**", handler);
131+
Routes routes = unit.mock(Routes.class);
132+
Route.Definition rh = unit.mock(Route.Definition.class);
132133
expect(rh.name("elasticsearch")).andReturn(rh);
133134

134-
LinkedBindingBuilder<Route.Definition> lbbr = unit.mock(LinkedBindingBuilder.class);
135-
lbbr.toInstance(rh);
136-
137-
Multibinder<Route.Definition> routes = unit.mock(Multibinder.class);
138-
expect(routes.addBinding()).andReturn(lbbr);
135+
expect(routes.use("*", "/es/**", handler)).andReturn(rh);
139136

140137
unit.mockStatic(Multibinder.class);
141138
expect(Multibinder.newSetBinder(binder, Renderer.class)).andReturn(formatters);
142-
expect(Multibinder.newSetBinder(binder, Route.Definition.class)).andReturn(routes);
143139

140+
Env env = unit.get(Env.class);
141+
expect(env.routes()).andReturn(routes);
144142
};
145143

146144
@Test

jooby-hbm4/src/main/java/org/jooby/hbm/Hbm.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.hibernate.Session;
3636
import org.hibernate.jpa.AvailableSettings;
3737
import org.jooby.Env;
38-
import org.jooby.Route;
3938
import org.jooby.internal.hbm.HbmProvider;
4039
import org.jooby.internal.hbm.HbmUnitDescriptor;
4140
import org.jooby.jdbc.Jdbc;
@@ -44,7 +43,6 @@
4443

4544
import com.google.inject.Binder;
4645
import com.google.inject.Key;
47-
import com.google.inject.multibindings.Multibinder;
4846
import com.typesafe.config.Config;
4947
import com.typesafe.config.ConfigFactory;
5048

@@ -226,9 +224,7 @@ public void configure(final Env env, final Config config, final Binder binder) {
226224
emkeys.add(key);
227225
});
228226

229-
Multibinder<Route.Definition> routes = Multibinder.newSetBinder(binder, Route.Definition.class);
230-
routes.addBinding().toInstance(
231-
new Route.Definition("*", "*", new OpenSessionInView(emf, emkeys)).name("hbm"));
227+
env.routes().use("*", "*", new OpenSessionInView(emf, emkeys)).name("hbm");
232228
}
233229

234230
private static Map<Object, Object> config(final Env env, final Config config,

0 commit comments

Comments
 (0)