Maybe someone already mentions it before. IMO the returning "Response"
from the create methods on admin client is one of the biggest limitation
of current admin-client. For example if we change ClientResources method:
@POST @Consumes(MediaType.APPLICATION_JSON)
public Response create(ClientRepresentation clientRepresentation);
to something like:
@POST @Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public ClientRepresentation create(ClientRepresentation clientRepresentation);
then the advantages will be:
- You won't need to parse the ID of newly created client from the URI
location and call additional GET request to retrieve newly created
client (You usually want newly created client when you are creating it)
- In case the error happened, the exception will be thrown on
client-side too. With the "Response" object, the exception is not thrown
on client-side but you are supposed to manually check the status code.
This may be confusing for users, who are not so familiar with the admin
client. When exception is thrown on client-side, it's crystal clear that
something bad happened and client wasn't successfully created on server
side.
Are there any disadvantages? The only one I see is, that POST responses
from server will need to return the representation of created object,
but that's maybe rather advantage (as you don't need to call additional
GET request, which in 95% of cases you need).
Marek
On 30/05/16 08:04, Stian Thorgersen wrote:
What's the status code for the response? It should be 409.
On 27 May 2016 at 09:02, Haim Vana <haimv(a)perfectomobile.com
<mailto:haimv@perfectomobile.com>> wrote:
There is an exception in the server log, but it is not thrown, so
I am not getting it in my code.
-------- Original message --------
From: Stian Thorgersen <sthorger(a)redhat.com
<mailto:sthorger@redhat.com>>
Date: 5/27/16 09:24 (GMT+02:00)
To: Haim Vana <haimv(a)perfectomobile.com
<mailto:haimv@perfectomobile.com>>
Cc: Marek Posolda <mposolda(a)redhat.com
<mailto:mposolda@redhat.com>>, keycloak-user(a)lists.jboss.org
<mailto:keycloak-user@lists.jboss.org>
Subject: Re: [keycloak-user] How to create the same client (same
id) for multiple realms programmatically
Do you not get a error when trying to create it the second time
with the same id? If not please create a jira.
On 26 May 2016 at 20:20, Haim Vana <haimv(a)perfectomobile.com
<mailto:haimv@perfectomobile.com>> wrote:
Thanks for your reply.
My problem was that I have used setId instead of setClientId.
*From:*Marek Posolda [mailto:mposolda@redhat.com
<mailto:mposolda@redhat.com>]
*Sent:* Thursday, May 26, 2016 4:16 PM
*To:* Haim Vana <haimv(a)perfectomobile.com
<mailto:haimv@perfectomobile.com>>;
keycloak-user(a)lists.jboss.org
<mailto:keycloak-user@lists.jboss.org>
*Subject:* Re: [keycloak-user] How to create the same client
(same id) for multiple realms programmatically
You can use for example:
RealmResource realm1 = *adminClient*.realms().realm(*"realm1"*);
RealmResource realm2 = *adminClient*.realms().realm(*"realm2"*);
realm1.clients().create(clientRepresentation);
realm2.clients().create(clientRepresentation);
For update you can take a look at some of our tests, which are
updating client. For example this one :
https://github.com/mposolda/keycloak/blob/master/testsuite/integration-ar...
Note that you need to know client Id (this is different thant
clientId). The easiest is to set it manually in representation
before you create client (via client.setId ) like it's done in
this test.
Marek
On 26/05/16 14:54, Haim Vana wrote:
Any idea regarding the below ?
As a workaround how can I update existing client
programmatically ? I couldn't find it in the admin API.
Thanks again,
Haim.
*From:*Haim Vana
*Sent:* Thursday, May 26, 2016 2:17 PM
*To:* keycloak-user(a)lists.jboss.org
<mailto:keycloak-user@lists.jboss.org>
*Subject:* How to create the same client (same id) for
multiple realms programmatically
Hi,
I am trying to create the same client for many realms,
however it creates it only once, probably because they
have the same id, however in UI I am able to create it.
Any idea how I can create the same client for different
realms programmatically with the same id ?
This is my code sample:
ClientRepresentation clientRepresentation = *new *ClientRepresentation();
clientRepresentation.setId(clientId); // Same clientId for
all reamls
realm.clients().create(clientRepresentation); // Client is
created only for first realm
Any advice will be appreciated,
Haim.
The information contained in this message is proprietary
to the sender, protected from disclosure, and may be
privileged. The information is intended to be conveyed
only to the designated recipient(s) of the message. If the
reader of this message is not the intended recipient, you
are hereby notified that any dissemination, use,
distribution or copying of this communication is strictly
prohibited and may be unlawful. If you have received this
communication in error, please notify us immediately by
replying to the message and deleting it from your
computer. Thank you.
_______________________________________________
keycloak-user mailing list
keycloak-user(a)lists.jboss.org
<mailto:keycloak-user@lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/keycloak-user
The information contained in this message is proprietary to
the sender, protected from disclosure, and may be privileged.
The information is intended to be conveyed only to the
designated recipient(s) of the message. If the reader of this
message is not the intended recipient, you are hereby notified
that any dissemination, use, distribution or copying of this
communication is strictly prohibited and may be unlawful. If
you have received this communication in error, please notify
us immediately by replying to the message and deleting it from
your computer. Thank you.
_______________________________________________
keycloak-user mailing list
keycloak-user(a)lists.jboss.org
<mailto:keycloak-user@lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/keycloak-user
The information contained in this message is proprietary to the
sender, protected from disclosure, and may be privileged. The
information is intended to be conveyed only to the designated
recipient(s) of the message. If the reader of this message is not
the intended recipient, you are hereby notified that any
dissemination, use, distribution or copying of this communication
is strictly prohibited and may be unlawful. If you have received
this communication in error, please notify us immediately by
replying to the message and deleting it from your computer. Thank
you.