<div dir="ltr">+1 Not the correct thread for it though ;)</div><div class="gmail_extra"><br><div class="gmail_quote">On 30 May 2016 at 11:57, Marek Posolda <span dir="ltr"><<a href="mailto:mposolda@redhat.com" target="_blank">mposolda@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>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>
<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><span class="HOEnZb"><font color="#888888">
<br>
Marek</font></span><div><div class="h5"><br>
<br>
On 30/05/16 08:04, Stian Thorgersen wrote:<br>
</div></div></div><div><div class="h5">
<blockquote 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 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>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>-------- Original message --------</div>
<div>From: Stian Thorgersen <<a href="mailto:sthorger@redhat.com" target="_blank"></a><a href="mailto:sthorger@redhat.com" target="_blank">sthorger@redhat.com</a>>
</div>
<div>Date: 5/27/16 09:24 (GMT+02:00) </div>
<div>To: Haim Vana <<a href="mailto:haimv@perfectomobile.com" target="_blank">haimv@perfectomobile.com</a>> </div>
<div>Cc: Marek Posolda <<a href="mailto:mposolda@redhat.com" target="_blank">mposolda@redhat.com</a>>,
<a 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 href="mailto:haimv@perfectomobile.com" target="_blank"></a><a 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 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 href="mailto:mposolda@redhat.com" target="_blank"></a><a href="mailto:mposolda@redhat.com" target="_blank">mposolda@redhat.com</a>]
<br>
<b>Sent:</b> Thursday, May 26,
2016 4:16 PM<br>
<b>To:</b> Haim Vana <<a href="mailto:haimv@perfectomobile.com" target="_blank"></a><a href="mailto:haimv@perfectomobile.com" target="_blank">haimv@perfectomobile.com</a>>;
<a 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 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 href="mailto:keycloak-user@lists.jboss.org" target="_blank"></a><a href="mailto:keycloak-user@lists.jboss.org" target="_blank">keycloak-user@lists.jboss.org</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>.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 href="mailto:keycloak-user@lists.jboss.org" target="_blank">keycloak-user@lists.jboss.org</a></pre>
<pre><a 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 href="mailto:keycloak-user@lists.jboss.org" target="_blank">keycloak-user@lists.jboss.org</a><br>
<a 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>
</div></div></div>
</blockquote></div><br></div>