[keycloak-user] Issue (500 Internal Server Error) with "Update the client" via Admin REST API

Stan Silvert ssilvert at redhat.com
Thu Nov 12 09:20:46 EST 2015


On 11/12/2015 8:59 AM, Stian Thorgersen wrote:
> Not sure why this is turning into a lengthy discussion, but null in 
> the representation has a meaning. If you look at how it's implemented 
> the lack of a value (it's set to null) results in setting the default 
> value only if creating a new entity. If updating an existing entity a 
> null value is simply ignored. If you initialize these in the 
> representation you will end up overriding existing values. The idea is 
> that someone can update a single value without having to include all 
> existing values.
So at the beginning I said it would be rare for us to want the default 
to be null.  That's where I was mistaken.  It's good that we had the 
discussion because I needed to know that null has that meaning.

Part of this is Java's fault.  A Boolean with three values isn't really 
Boolean.  George Boole is probably rolling over in his grave.
>
> On 12 November 2015 at 14:45, Stan Silvert <ssilvert at redhat.com 
> <mailto:ssilvert at redhat.com>> wrote:
>
>     On 11/12/2015 8:41 AM, Stian Thorgersen wrote:
>>     The bug is simply caused by not checking for null
>     Seriously?  So every time you call a getter on a Representation
>     you have to check for null?
>
>     If a Boolean should not be null then initialize it properly or use
>     boolean.
>
>>
>>     On 12 November 2015 at 14:40, Stan Silvert <ssilvert at redhat.com
>>     <mailto:ssilvert at redhat.com>> wrote:
>>
>>         On 11/12/2015 8:33 AM, Stian Thorgersen wrote:
>>>         RepresentationToModel
>>         The bug happened before RepresentationToModel could be
>>         called. That's why we need to initialize variables properly.
>>
>>>
>>>         On 12 November 2015 at 14:20, Stan Silvert
>>>         <ssilvert at redhat.com <mailto:ssilvert at redhat.com>> wrote:
>>>
>>>             On 11/12/2015 7:39 AM, Stian Thorgersen wrote:
>>>>
>>>>
>>>>             On 12 November 2015 at 13:12, Stan Silvert
>>>>             <ssilvert at redhat.com <mailto:ssilvert at redhat.com>> wrote:
>>>>
>>>>                 Funny.  I just ran into that exact NPE yesterday
>>>>                 but I thought it was a state that was caused by my
>>>>                 new code.  So I only fixed it in that one
>>>>                 representation class.  But I'm not ready to merge
>>>>                 that yet.
>>>>
>>>>                 We really need to go through all the
>>>>                 representations and set defaults for all instance
>>>>                 variables of type Boolean. It's probably rare that
>>>>                 we would want that default to be null. Even if it
>>>>                 should be null we should say so explicitly.
>>>>
>>>>
>>>>             -1 We want them to be null. We set defaults elsewhere
>>>             Where?
>>>
>>>>
>>>>
>>>>                 Stan
>>>>
>>>>
>>>>                 On 11/12/2015 5:42 AM, Stian Thorgersen wrote:
>>>>>                 That's a bug. It's failing on "if
>>>>>                 (rep.isServiceAccountsEnabled() ..)",
>>>>>                 but serviceAccountsEnabled in the representation
>>>>>                 can be null, which would result in this NPE.
>>>>>
>>>>>                 Can you create a JIRA please? If you did a PR as
>>>>>                 well that'd be even better :)
>>>>>
>>>>>                 On 12 November 2015 at 10:58, Juraj Janosik
>>>>>                 <juraj.janosik77 at gmail.com
>>>>>                 <mailto:juraj.janosik77 at gmail.com>> wrote:
>>>>>
>>>>>                     Hi,
>>>>>
>>>>>                     I want to announce an issue with "Update the
>>>>>                     client
>>>>>                     <http://keycloak.github.io/docs/rest-api/index.html#_update_the_client>"
>>>>>                     via Admin REST API.
>>>>>
>>>>>                     _Description:_ I want to change the
>>>>>                     description for existing client #3.
>>>>>
>>>>>                     _Note:_ From the documentation ("Update the
>>>>>                     client
>>>>>                     <http://keycloak.github.io/docs/rest-api/index.html#_update_the_client>"),
>>>>>                     body parameter attributes
>>>>>                     are required in schema "ClientRepresentation".
>>>>>                     Description of schema "ClientRepresentation"
>>>>>                     notes for any mandatory attribute.
>>>>>
>>>>>                     Are some parameters mandatory for successfuly
>>>>>                     running of this scenario ?
>>>>>
>>>>>                     _Tested scenario:_
>>>>>                     _Tested data:_
>>>>>                     "Update Client":
>>>>>                     "method":"PUT","url":"<URL>:<PORT>/auth/admin/realms/<REALM>/clients/3"
>>>>>                     "headers":
>>>>>                     [["Content-Type","application/json"],
>>>>>                     ["Authorization","Bearer <ACCESS_TOKEN>]]
>>>>>                     "body":
>>>>>                     "{
>>>>>                     "id":"3",
>>>>>                     "clientId":"testclient-3",
>>>>>                     "name": "testclient-3",
>>>>>                     "description": "TESTCLIENT-3 v.2"
>>>>>                     }"
>>>>>
>>>>>                     _Test Result:_ Status Code: 500 Internal
>>>>>                     Server Error
>>>>>
>>>>>                     _Some parts from console logs:_
>>>>>                     10:35:31,591 ERROR [io.undertow.request]
>>>>>                     (default task-18) UT005023: Exception handling
>>>>>                     request to
>>>>>                     /auth/admin/realms/universities/clients/3:
>>>>>                     java.lang.RuntimeException: request path:
>>>>>                     /auth/admin/realms/universities/clients/3
>>>>>                     ...
>>>>>                         at
>>>>>                     org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)
>>>>>                         ... 29 more
>>>>>                     *Caused by: java.lang.NullPointerException*
>>>>>                         at
>>>>>                     org.keycloak.services.resources.admin.ClientResource.update(ClientResource.java:106)
>>>>>
>>>>>
>>>>>                     Thanks a lot.
>>>>>
>>>>>                     Best Regards,
>>>>>                     Juraj
>>>>>
>>>>>
>>>>>
>>>>>                     _______________________________________________
>>>>>                     keycloak-user mailing list
>>>>>                     keycloak-user at lists.jboss.org
>>>>>                     <mailto:keycloak-user at lists.jboss.org>
>>>>>                     https://lists.jboss.org/mailman/listinfo/keycloak-user
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                 _______________________________________________
>>>>>                 keycloak-user mailing list
>>>>>                 keycloak-user at lists.jboss.org  <mailto:keycloak-user at lists.jboss.org>
>>>>>                 https://lists.jboss.org/mailman/listinfo/keycloak-user
>>>>
>>>>
>>>>                 _______________________________________________
>>>>                 keycloak-user mailing list
>>>>                 keycloak-user at lists.jboss.org
>>>>                 <mailto:keycloak-user at lists.jboss.org>
>>>>                 https://lists.jboss.org/mailman/listinfo/keycloak-user
>>>>
>>>>
>>>
>>>
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/keycloak-user/attachments/20151112/9adade31/attachment-0001.html 


More information about the keycloak-user mailing list