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@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@redhat.com>
Date: 5/27/16 09:24 (GMT+02:00)
To: Haim Vana <haimv@perfectomobile.com>
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@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]
Sent: Thursday, May 26, 2016 4:16 PM
To: Haim Vana <haimv@perfectomobile.com>; 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-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/ClientTest.java#L183

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@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@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@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.