<div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On 24 April 2017 at 09:27, Sebastian Laskawiec <span dir="ltr">&lt;<a href="mailto:slaskawi@redhat.com" target="_blank">slaskawi@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey Guys!<div><br></div><div>I&#39;m currently reworking REST interface and I&#39;m scratching my head looking how we deal with Serializable [1][2]. </div><div><br></div><div>The scenario assumes that server knows that cache stores a Serializable instance and moreover, it knows how to deserialize it (and convert it to XML/JSON, but that&#39;s the trivial part). I might be wrong, but I think both assumptions are questionable if not wrong. At first, how to distinguish a serialized instance of a class the server received [3] from a standard byte array? I can imagine someone using &quot;Content-type: application/x-java-serialized-<wbr>object&quot; but it&#39;s very error prone. It also leads to the question number two - how the server will know that type of instance it is? This knowledge is essential for deserialization.</div><div><br></div><div>I think the serialization/deserialization should be really done on the client side (but as I mentioned before, maybe I don&#39;t see some important use cases). I would like to remove it from refactored REST server.</div></div></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">​To answer this specific question: the server needs to be able to serialize / deserialize the objects for many reasons.</div><div class="gmail_default" style="font-size:small">Among these we have:</div><div class="gmail_default" style="font-size:small"> - compatibility mode</div><div class="gmail_default" style="font-size:small"> - &quot;transcoding&quot; among different clients expecting different types</div><div class="gmail_default" style="font-size:small"> - indexless queries (read and compare specific fields)<br></div><div class="gmail_default" style="font-size:small"> - indexed queries (index specific fields)</div><div class="gmail_default" style="font-size:small"> - firing events​ (on anything more useful else than &quot;blob was changed&quot;)</div><div class="gmail_default" style="font-size:small"> - avoid losing the data when encoding schemes are updated (e.g. an Infinispan update which includes improvements / fixes on the serialized representation )</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">It&#39;s probably not an exhaustive list as I didn&#39;t follow this subject closely, but I guess there are enough reasons there to clarify why just encoding/decoding at the client side is not good enough.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Thanks,</div><div class="gmail_default" style="font-size:small">Sanne</div><div class="gmail_default" style="font-size:small"><br></div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>What do you think?</div><div><br></div><div>Thanks,</div><div>Sebastian</div><div><br></div><div>[1] <a href="https://github.com/infinispan/infinispan/blob/master/server/rest/src/main/java/org/infinispan/rest/Server.java#L267-L313" target="_blank">https://github.com/<wbr>infinispan/infinispan/blob/<wbr>master/server/rest/src/main/<wbr>java/org/infinispan/rest/<wbr>Server.java#L267-L313</a></div><div>[2] <a href="https://github.com/infinispan/infinispan/blob/master/server/rest/src/test/java/org/infinispan/rest/IntegrationTest.java#L636-L639" target="_blank">https://github.com/<wbr>infinispan/infinispan/blob/<wbr>master/server/rest/src/test/<wbr>java/org/infinispan/rest/<wbr>IntegrationTest.java#L636-L639</a></div><div>[3] Note that the input param here is byte[] <a href="https://github.com/infinispan/infinispan/blob/master/server/rest/src/main/java/org/infinispan/rest/Server.java#L458" target="_blank">https://github.com/infinispan/<wbr>infinispan/blob/master/server/<wbr>rest/src/main/java/org/<wbr>infinispan/rest/Server.java#<wbr>L458</a></div></div><span class="HOEnZb"><font color="#888888"><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr"><p class="m_-3155696685922446366inbox-inbox-fullname-container" style="box-sizing:border-box;color:rgb(0,0,0);font-family:overpass,sans-serif;font-weight:bold;margin:0px;padding:0px;font-size:14px;text-transform:uppercase"><span class="m_-3155696685922446366inbox-inbox-firstname-container" style="box-sizing:border-box">SEBASTIAN</span><span class="m_-3155696685922446366inbox-inbox-Apple-converted-space"> </span><span class="m_-3155696685922446366inbox-inbox-lastname-container" style="box-sizing:border-box">ŁASKAWIEC</span></p><p class="m_-3155696685922446366inbox-inbox-position-container" style="box-sizing:border-box;color:rgb(0,0,0);font-family:overpass,sans-serif;font-size:10px;margin:0px 0px 4px;text-transform:uppercase"><span class="m_-3155696685922446366inbox-inbox-position" style="box-sizing:border-box">INFINISPAN DEVELOPER</span></p><p class="m_-3155696685922446366inbox-inbox-legal-container" style="box-sizing:border-box;font-family:overpass,sans-serif;margin:0px;font-size:10px;color:rgb(153,153,153)"><a class="m_-3155696685922446366inbox-inbox-redhat-anchor" href="https://www.redhat.com/" style="box-sizing:border-box;color:rgb(0,136,206);margin:0px;text-decoration:none" target="_blank">Red Hat<span class="m_-3155696685922446366inbox-inbox-Apple-converted-space"> </span><span style="box-sizing:border-box">EMEA</span></a></p><table border="0" style="box-sizing:border-box;color:rgb(0,0,0);font-family:overpass,sans-serif;font-size:medium"><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td width="100px" style="box-sizing:border-box"><a href="https://red.ht/sig" style="box-sizing:border-box" target="_blank"><img width="90" height="auto" style="box-sizing:border-box" src="https://www.redhat.com/files/brand/email/sig-redhat.png"></a></td></tr></tbody></table></div></div>
</font></span><br>______________________________<wbr>_________________<br>
infinispan-dev mailing list<br>
<a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/infinispan-<wbr>dev</a><br></blockquote></div><br></div></div>