Skip to content

Commit be73ae9

Browse files
committed
Start of usage exception
1 parent 3688bb9 commit be73ae9

2 files changed

Lines changed: 32 additions & 3 deletions

File tree

jooby/src/main/java/io/jooby/Jooby.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -283,9 +283,7 @@ public <T> Jooby mvc(@Nonnull Class<T> router, @Nonnull Provider<T> provider) {
283283
MvcFactory module = stream(modules.spliterator(), false)
284284
.filter(it -> it.supports(router))
285285
.findFirst()
286-
// TODO: Usage exception
287-
.orElseThrow(() -> new IllegalStateException("Mvc module not found: " + router.getName()
288-
+ ". Make sure annotation processor is configured properly."));
286+
.orElseThrow(() -> Usage.mvcRouteMissing(router));
289287
Extension extension = module.create(provider);
290288
extension.install(this);
291289
return this;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.jooby;
2+
3+
import javax.annotation.Nonnull;
4+
5+
/**
6+
* Usage exceptions. They provide a descriptive message with a link for a detailed section.
7+
*
8+
* @since 2.1.0
9+
*/
10+
public class Usage extends RuntimeException {
11+
/**
12+
* Creates a new Usage exception.
13+
*
14+
* @param message Message.
15+
* @param id Link to detailed section.
16+
*/
17+
public Usage(@Nonnull String message, @Nonnull String id) {
18+
super((message + "\nFor more details, please visit: https://io.jooby/usage#" + id));
19+
}
20+
21+
/**
22+
* Creates a mvc route missing exception.
23+
*
24+
* @param mvcRoute Mvc route.
25+
* @return Usage exception.
26+
*/
27+
public static @Nonnull Usage mvcRouteMissing(@Nonnull Class mvcRoute) {
28+
return new Usage("Mvc route not found: `" + mvcRoute.getName()
29+
+ "`. Make sure Jooby annotation processor is configured properly.", "mvc-route-apt");
30+
}
31+
}

0 commit comments

Comments
 (0)