1. Domino Brix
  2. Events & context

Events

Brix includes a lightweight event bus. Extend BrixEvent for custom payloads, fire events globally, and handle them with @ListenFor on presenters.

			@BrixPresenter
public class AdminPresenter extends Presenter<AdminView> {
  @Override
  public Set<String> getRoles() {
    return Set.of("admin");
  }

  @Override
  public Authorizer getAuthorizer() {
    return RolesAllowedAuthorizer.INSTANCE;
  }
}

		
			SecurityContext sc = (SecurityContext) Brix.get().getCoreComponent().core().getSecurityContext();
sc.setUser(new MyUser());
sc.setUnauthorizedAccessHandler(() -> window.alert("Access denied"));

		

Listening

Presenters are registered as listeners on activation and removed on deactivation. Any component can register manually via Brix.get().events().register(...) and keep the returned RegistrationRecord to remove it.

Context

Use HasContext<T> to broadcast store-like state changes with an operation flag. IsContext carries data, operation (CREATED, UPDATED, DELETED), and source.

			public class DepartmentAuthorizer implements Authorizer {
  @Override
  public boolean isAuthorized(IsSecurityContext context, HasRoles hasRoles) {
    return context.isAuthenticated()
        && context.getUser().getAttributes().get("department").ifTypeIs(String.class, dept -> {
             return dept.equals("engineering");
           });
  }
}

		

Listening to context updates

Register context listeners to react to create/update/delete signals. Registration immediately replays the current context when present.

			@BrixPresenter
@RolesAllowed({"admin", "support"})
public class AdminPresenter extends Presenter<AdminView> {
  // getAuthorizer() and getRoles() are generated by the processor
}

		

Lifecycle tips

  • Use events().fireEvent(source, event) to set the source for filtering.
  • Remove manual listeners on teardown to avoid leaks.
  • Combine context with events for cross-module communication without tight coupling.

We are a group of passionate people who love what we do

Donate & Support Us