mirror of
https://github.com/google/nomulus.git
synced 2025-06-01 10:14:04 +02:00
Make Router reject classes with no @Action-returning methods
This provides a safeguard against using TypeInstantiator to resolve the component class, where if resolution is done incorrectly, you end up with java.lang.Object. Formerly, that would have "succeeded" in generating a Router for Object, which of course has no methods that return @Action classes. Such a router is pretty useless, so it's better to make Router stricter and have it fail if you give it such a class by accident. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=148353224
This commit is contained in:
parent
d8ce444251
commit
ea3a8dfa9d
3 changed files with 19 additions and 10 deletions
|
@ -37,15 +37,17 @@ public final class RouterTest {
|
|||
public interface Empty {}
|
||||
|
||||
@Test
|
||||
public void testRoute_noRoutes_returnsAbsent() throws Exception {
|
||||
assertThat(Router.create(Empty.class).route("")).isAbsent();
|
||||
assertThat(Router.create(Empty.class).route("/")).isAbsent();
|
||||
public void testRoute_noRoutes_throws() throws Exception {
|
||||
thrown.expect(
|
||||
IllegalArgumentException.class,
|
||||
"No routes found for class: google.registry.request.RouterTest.Empty");
|
||||
Router.create(Empty.class);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Action(path = "/sloth")
|
||||
public final class SlothTask implements Runnable {
|
||||
public static final class SlothTask implements Runnable {
|
||||
@Override
|
||||
public void run() {}
|
||||
}
|
||||
|
@ -75,7 +77,7 @@ public final class RouterTest {
|
|||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Action(path = "/prefix", isPrefix = true)
|
||||
public final class PrefixTask implements Runnable {
|
||||
public static final class PrefixTask implements Runnable {
|
||||
@Override
|
||||
public void run() {}
|
||||
}
|
||||
|
@ -101,7 +103,7 @@ public final class RouterTest {
|
|||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Action(path = "/prefix/long", isPrefix = true)
|
||||
public final class LongTask implements Runnable {
|
||||
public static final class LongTask implements Runnable {
|
||||
@Override
|
||||
public void run() {}
|
||||
}
|
||||
|
@ -140,20 +142,23 @@ public final class RouterTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testRoute_methodsInComponentAreIgnored_noRoutes() throws Exception {
|
||||
assertThat(Router.create(WeirdMethodsComponent.class).route("/sloth")).isAbsent();
|
||||
public void testRoute_methodsInComponentAreIgnored_throws() throws Exception {
|
||||
thrown.expect(
|
||||
IllegalArgumentException.class,
|
||||
"No routes found for class: google.registry.request.RouterTest.WeirdMethodsComponent");
|
||||
Router.create(WeirdMethodsComponent.class);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Action(path = "/samePathAsOtherTask")
|
||||
public final class DuplicateTask1 implements Runnable {
|
||||
public static final class DuplicateTask1 implements Runnable {
|
||||
@Override
|
||||
public void run() {}
|
||||
}
|
||||
|
||||
@Action(path = "/samePathAsOtherTask")
|
||||
public final class DuplicateTask2 implements Runnable {
|
||||
public static final class DuplicateTask2 implements Runnable {
|
||||
@Override
|
||||
public void run() {}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue