<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">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:<br>
<br>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<pre style="background-color:#ffffff;color:#000000;font-family:'DejaVu Sans Mono';font-size:9.0pt;"><span style="color:#808000;">@POST
</span><span style="color:#808000;">@Consumes</span>(MediaType.<span style="color:#660e7a;font-weight:bold;font-style:italic;">APPLICATION_JSON</span>)
<span style="color:#000080;font-weight:bold;">public </span>Response create(ClientRepresentation clientRepresentation);
</pre>
to something like:<br>
<br>
<pre style="background-color:#ffffff;color:#000000;font-family:'DejaVu Sans Mono';font-size:9.0pt;"><span style="color:#808000;">@POST
</span><span style="color:#808000;">@Consumes</span>(MediaType.<span style="color:#660e7a;font-weight:bold;font-style:italic;">APPLICATION_JSON</span>)
<span style="color:#808000;">@Produces</span>(MediaType.<span style="color:#660e7a;font-weight:bold;font-style:italic;">APPLICATION_JSON</span>)
<span style="color:#000080;font-weight:bold;">public </span>ClientRepresentation create(ClientRepresentation clientRepresentation);
</pre>
<br>
<br>
then the advantages will be:<br>
- 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)<br>
- 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.<br>
<br>
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). <br>
<br>
Marek<br>
<br>
On 30/05/16 08:04, Stian Thorgersen wrote:<br>
</div>
<blockquote
cite="mid:CAJgngAddSSWg9NeDvcuGJrARrjs10F+=g1SMFS_g8P0LbAoCAA@mail.gmail.com"
type="cite">
<div dir="ltr">What's the status code for the response? It should
be 409.</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 27 May 2016 at 09:02, Haim Vana <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:haimv@perfectomobile.com" target="_blank">haimv@perfectomobile.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
There is an exception in the server log, but it is not
thrown, so I am not getting it in my code.
<div>
<div class="h5">
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>-------- Original message --------</div>
<div>From: Stian Thorgersen <<a
moz-do-not-send="true"
href="mailto:sthorger@redhat.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:sthorger@redhat.com">sthorger@redhat.com</a></a>>
</div>
<div>Date: 5/27/16 09:24 (GMT+02:00) </div>
<div>To: Haim Vana <<a moz-do-not-send="true"
href="mailto:haimv@perfectomobile.com"
target="_blank">haimv@perfectomobile.com</a>> </div>
<div>Cc: Marek Posolda <<a moz-do-not-send="true"
href="mailto:mposolda@redhat.com" target="_blank">mposolda@redhat.com</a>>,
<a moz-do-not-send="true"
href="mailto:keycloak-user@lists.jboss.org"
target="_blank">keycloak-user@lists.jboss.org</a>
</div>
<div>Subject: Re: [keycloak-user] How to create the
same client (same id) for multiple realms
programmatically
</div>
<div><br>
</div>
<div>
<div dir="ltr">Do you not get a error when trying to
create it the second time with the same id? If not
please create a jira.</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 26 May 2016 at 20:20,
Haim Vana <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:haimv@perfectomobile.com"
target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:haimv@perfectomobile.com">haimv@perfectomobile.com</a></a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="white" lang="EN-US">
<div>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Thanks
for your reply.</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">My
problem was that I have used setId
instead of setClientId.</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<div>
<div style="border:none;border-top:solid
#e1e1e1 1.0pt;padding:3.0pt 0in 0in
0in">
<p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext">From:</span></b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext">
Marek Posolda [mailto:<a
moz-do-not-send="true"
href="mailto:mposolda@redhat.com"
target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:mposolda@redhat.com">mposolda@redhat.com</a></a>]
<br>
<b>Sent:</b> Thursday, May 26,
2016 4:16 PM<br>
<b>To:</b> Haim Vana <<a
moz-do-not-send="true"
href="mailto:haimv@perfectomobile.com"
target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:haimv@perfectomobile.com">haimv@perfectomobile.com</a></a>>;
<a moz-do-not-send="true"
href="mailto:keycloak-user@lists.jboss.org"
target="_blank">keycloak-user@lists.jboss.org</a><br>
<b>Subject:</b> Re:
[keycloak-user] How to create the
same client (same id) for multiple
realms programmatically</span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal">You can use for
example:</p>
<pre style="background:white"><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif">RealmResource realm1 = </span><b><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif;color:#660e7a">adminClient</span></b><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif">.realms().realm(</span><b><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif;color:green">"realm1"</span></b><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif">);</span></pre>
<pre style="background:white"><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif">RealmResource realm2 = </span><b><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif;color:#660e7a">adminClient</span></b><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif">.realms().realm(</span><b><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif;color:green">"realm2"</span></b><span style="font-size:9.0pt;font-family:"DejaVu Sans Mono",serif">);</span></pre>
<pre style="background:white"><span style="font-size:11.5pt;background:#e4e4ff">realm1</span><span style="font-size:11.5pt">.clients().create(clientRepresentation);</span></pre>
<pre style="background:white"><span style="font-size:11.5pt;background:#e4e4ff">realm</span><span style="font-size:11.5pt">2.clients().create(clientRepresentation);</span></pre>
<pre style="background:white"><span style="font-size:11.5pt"> </span></pre>
<p class="MsoNormal"><br>
For update you can take a look at
some of our tests, which are
updating client. For example this
one :
<a moz-do-not-send="true"
href="https://github.com/mposolda/keycloak/blob/master/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/ClientTest.java#L183"
target="_blank">
https://github.com/mposolda/keycloak/blob/master/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/ClientTest.java#L183</a><br>
<br>
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.<br>
<br>
Marek<br>
<br>
On 26/05/16 14:54, Haim Vana
wrote:</p>
</div>
<blockquote
style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Any
idea regarding the below ?</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">As
a workaround how can I update
existing client programmatically
? I couldn't find it in the
admin API.</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Thanks
again,</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Haim.</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<div>
<div
style="border:none;border-top:solid
#e1e1e1 1.0pt;padding:3.0pt 0in
0in 0in">
<p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">
Haim Vana
<br>
<b>Sent:</b> Thursday, May
26, 2016 2:17 PM<br>
<b>To:</b> <a
moz-do-not-send="true"
href="mailto:keycloak-user@lists.jboss.org"
target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a></a><br>
<b>Subject:</b> How to
create the same client (same
id) for multiple realms
programmatically
</span></p>
</div>
</div>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Hi,</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">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.</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Any
idea how I can create the same
client for different realms
programmatically with the same
id ?</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">This
is my code sample:</span></p>
<pre style="background:white"><span style="font-size:11.5pt">ClientRepresentation clientRepresentation = </span><b><span style="font-size:11.5pt;color:navy">new </span></b><span style="font-size:11.5pt">ClientRepresentation();</span></pre>
<pre style="background:white"><span style="font-size:11.5pt">clientRepresentation.setId(clientId); // Same clientId for all reamls</span></pre>
<p class="MsoNormal"
style="background:white"><span
style="font-size:11.5pt">realm</span><span
style="font-size:11.5pt;font-family:"Courier
New ;color:black",serif">.clients().create(clientRepresentation);
// Client is created only for
first realm</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">Any
advice will be appreciated,</span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif">Haim.</span></p>
<p class="MsoNormal">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. <br>
<br>
<br>
</p>
<pre>_______________________________________________</pre>
<pre>keycloak-user mailing list</pre>
<pre><a moz-do-not-send="true" href="mailto:keycloak-user@lists.jboss.org" target="_blank">keycloak-user@lists.jboss.org</a></pre>
<pre><a moz-do-not-send="true" href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a></pre>
</blockquote>
<p class="MsoNormal"> </p>
</div>
</div>
</div>
<div>
<div>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. </div>
</div>
</div>
<br>
_______________________________________________<br>
keycloak-user mailing list<br>
<a moz-do-not-send="true"
href="mailto:keycloak-user@lists.jboss.org"
target="_blank">keycloak-user@lists.jboss.org</a><br>
<a moz-do-not-send="true"
href="https://lists.jboss.org/mailman/listinfo/keycloak-user"
rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
</blockquote>
</div>
<br>
</div>
</div>
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.
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</body>
</html>