[keycloak-user] Issue (500 Internal Server Error) with "Update the client" via Admin REST API
Stan Silvert
ssilvert at redhat.com
Thu Nov 12 10:06:58 EST 2015
On 11/12/2015 9:59 AM, Stian Thorgersen wrote:
>
>
> On 12 November 2015 at 15:20, Stan Silvert <ssilvert at redhat.com
> <mailto:ssilvert at redhat.com>> wrote:
>
> 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.
>
>
> Not really. It's a object reference so can be set to null. It's
> incredible useful and without it Java would be horrible. You'd have to
> have a separate boolean (isMyBooleanSet?)
I was speaking tounge-in-cheek. However, combined with autoboxing, it's
error-prone. That's the bug we saw here.
>
>
>>
>> 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/9d25b84c/attachment-0001.html
More information about the keycloak-user
mailing list