if you scope this producer you would have a lazy instance and in the
context of the timer you wouldnt call it so you wouldnt have this NPE

Romain Manni-Bucau
@rmannibucau |  Blog | Old Blog | Github | LinkedIn


2017-12-07 9:49 GMT+01:00 Matthew Broadhead <matthew.broadh...@nbmlaw.co.uk>:
> i have this method to @Produces KeycloakSecurityContext
> @Produces
>     @Default
>     @Dependent
>     public KeycloakSecurityContext keycloakSecurityContext() {
>         try {
>             if (httpServletRequest instanceof KeycloakPrincipal) {
>                 KeycloakPrincipal<KeycloakSecurityContext> keycloakPrincipal
> = (KeycloakPrincipal<KeycloakSecurityContext>) httpServletRequest
>                         .getUserPrincipal();
>                 return keycloakPrincipal.getKeycloakSecurityContext();
>             }
>         } catch (NullPointerException e) {
>             // e.printStackTrace();
>         }
>         return null;
>     }
> i added catch the NullPointerException because httpServletRequest causes an
> NPE if the KeycloakSecurityContext is injected into an @ApplicationScoped
> where it has been run from a timer and there is no servlet request.  there
> is no way to null check the httpServletRequest as it blows up behind the
> scenes
> is this the right way to do it or is there another way to detect there is no
> request?

Reply via email to