applyRoutes method
Applies the routes from this Controller to some router.
When reflection is disabled (see canReflect), only the routes added in
configureRoutes are applied; @Expose methods are not discovered.
Implementation
Future<String> applyRoutes(
Router<RequestHandler> router,
Reflector reflector,
) async {
// Load global expose decl
var exposeDecl = findExpose(reflector);
if (exposeDecl == null) {
throw Exception('All controllers must carry an @Expose() declaration.');
}
var routable = Routable();
_mountPoint = router.mount(exposeDecl.path, routable);
await configureRoutes(routable);
String name;
if (canReflect(reflector)) {
// Pre-reflect methods
var classMirror = reflector.reflectClass(runtimeType)!;
var instanceMirror = reflector.reflectInstance(this);
final handlers = <RequestHandler>[
...exposeDecl.middleware,
...middleware,
];
classMirror.declarations.forEach(
_routeBuilder(reflector, instanceMirror, routable, handlers),
);
name = reflector.reflectType(runtimeType)!.name;
} else {
name = runtimeType.toString();
}
// Return the name.
return exposeDecl.as?.isNotEmpty == true ? exposeDecl.as! : name;
}