generate method

  1. @override
Future<String?> generate(
  1. LibraryReader library,
  2. BuildStep buildStep
)

Ex: Input: abstract class UserService { @Access(type: 'permission', permission: AppPermission.userRead) Future

@Access(type: 'self', ownerParam: 'userId') Future

Future

Output: class UserServiceGuarded implements UserService { final UserService _inner; final RBACSessionStore _sessionStore; final RBACUserContextResolver _contextResolver;

UserServiceGuarded(this._inner, this._sessionStore, this._contextResolver);

@override Future

@override Future

@override Future

Implementation

@override
Future<String?> generate(LibraryReader library, BuildStep buildStep) async {
  final buffer = StringBuffer();

  for (final annotated in library.annotatedWith(_checker)) {
    final element = annotated.element;
    final output = _generateForElement(element);
    if (output != null) {
      buffer.writeln(output);
    }
  }

  return buffer.isEmpty ? null : buffer.toString();
}