Another related thing: Many of our providers (eg.
DefaultJpaConnectionProviderFactory) are using the "lazyInit" pattern
when some initialization is done at the time when ProviderFactory.create
is called for the first time. Maybe we can add some support into the
framework itself and directly add another empty method like "lazyInit"
or "beforeFirstCreate" to the ProviderFactory interface?
Marek
On 10/03/17 09:20, Marek Posolda wrote:
+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(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/keycloak-dev