[keycloak-dev] Use default methods in Provider and ProviderFactory

Marek Posolda mposolda at redhat.com
Fri Mar 10 03:20:42 EST 2017


+1

On a slightly related note, I wonder if we can also improve our 
ProviderEvents? Registering listener for the event, which usually looks 
like:

     @Override
     public void postInit(KeycloakSessionFactory factory) {
         factory.register(new ProviderEventListener() {
             @Override
             public void onEvent(ProviderEvent event) {
                 if (event instanceof RealmModel.ClientCreationEvent) {
                     RealmModel.ClientCreationEvent typedEvent = 
(RealmModel.ClientCreationEvent) event;
                     doSomething(typedEvent);
                 }
             }
         });
     }


can be simplified and prettyfied to something like:


     @ProviderEventListener
     public void doSomething(RealmModel.ClientCreationEvent typedEvent, 
KeycloakSessionFactory factory) {

     }

I think the impl will be pretty easy. At startup, framework will just 
lookup for @ProviderEventListener annotated methods of registered 
KeycloakSessionFactory implementations. It can also detect the event 
type according to first argument of method and automatically register 
the listener for it.

This will allow us to remove method "postInit" altogether as it's mostly 
used just for registering event listeners though.

Marek

On 09/03/17 12:28, Stian Thorgersen wrote:
> The life-cycle methods on providers and provider factories (init, postInit,
> close) are frequently not used, but providers have to add empty methods. To
> reduce the amount of boilerplate in a provider I propose changing the
> following to have empty default methods:
>
> ProviderFactory:
> * init
> * postInit
> * close
>
> Provider:
> * close
> _______________________________________________
> keycloak-dev mailing list
> keycloak-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-dev




More information about the keycloak-dev mailing list