<div dir="ltr">+1</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 11, 2013 at 2:18 PM, Sebastien Blanc <span dir="ltr">&lt;<a href="mailto:scm.blanc@gmail.com" target="_blank">scm.blanc@gmail.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">Okay now that we agreed that the client should report in case of failure, I would like to submit a PR for that, throwing a exception is what we want here no ? Custom exception JavaSenderException of smt similar ?<div>

<br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 11, 2013 at 10:24 AM, Matthias Wessendorf <span dir="ltr">&lt;<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</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"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div>On Tue, Jun 11, 2013 at 10:20 AM, Sebastien Blanc <span dir="ltr">&lt;<a href="mailto:scm.blanc@gmail.com" target="_blank">scm.blanc@gmail.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"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div>On Tue, Jun 11, 2013 at 10:16 AM, Matthias Wessendorf <span dir="ltr">&lt;<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>&gt;</span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">



<div>On Tue, Jun 11, 2013 at 10:04 AM, Sebastien Blanc <span dir="ltr">&lt;<a href="mailto:scm.blanc@gmail.com" target="_blank">scm.blanc@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">



<div>On Tue, Jun 11, 2013 at 9:53 AM, Matthias Wessendorf <span dir="ltr">&lt;<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">



<div>On Tue, Jun 11, 2013 at 9:25 AM, Sebastien Blanc <span dir="ltr">&lt;<a href="mailto:scm.blanc@gmail.com" target="_blank">scm.blanc@gmail.com</a>&gt;</span> wrote:<br>




<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hi,<div>I start looking at the repo. I have some general questions and then more (not that much implementation detailed ;) ) specific  proposals</div>








<div><br></div><div>*  Is our final goal to propose an implementation that we really want the developers to use or is it more providing a reference implementation of the sender API and developer will most of the time implement their own ? </div>







</div></blockquote><div><br></div></div><div>The goal is, to give them a Java Utility to use to for sending. If they want, they can still do the HTTP by hand. Ideally we have this &quot;client&quot; for other platforms as well:</div>







<div>* Node.js, Ruby, PHP etc</div><div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">







<div dir="ltr"><div>* How are we going to secure the API ? </div></div></blockquote><div><br></div></div><div>Once the endpoints are secured, we will leverage that on the client side (e.g. function to specifiy the &quot;credentials&quot;)</div>






<div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>* The API looks like now &quot;fire &amp; forget&quot;, do we plan to change that ? </div>







</div></blockquote></div><div>It is fire and forget.</div><div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">







<div dir="ltr"><div>I can imagine that people using the sender need to have some &quot;feedback/return value/response&quot; to manage their flows ?</div></div></blockquote><div><br></div></div><div>Well, we do not really have much control there. Apple, for instance, does also not really tell you: &quot;I could not deliver the push message to Mr. XYZ&quot;. Similar is google. </div>







<div>They all  have &quot;feedback&quot; service, that&#39;s more &quot;here is a list of invalid device tokens&quot;. This info should NEVER be returned, from our Sender-Endpoint.</div><div><br></div><div>
Other cloud providers do similar: HTTP 200 + &quot;Thanks we got your job, it is now being processed by our system&quot;</div></div></div></div></blockquote><div><br></div></div><div>I agree that we don&#39;t have control between &quot;our&quot; systems and Google&#39;s/Apple&#39;s networks. But, between our push server and our backend server, the chance is bigger that the dev has more control.</div>





</div></div></div></blockquote><div><br></div></div><div>Not nessacarially, the PushEE could be run by the &quot;ops department&quot;, and different groups, within one company just use it to send messages.<br></div><div>



<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">
<div class="gmail_quote"><div> The thing is that the sender api now &quot;swallow&quot; the http status, just making the http status available for the backend app using the sender API will be a nice benefit (there could be no connection between our pushee and our backend app for instance) ...</div>




</div></div></div></blockquote><div><br></div></div><div>If PushEE is not reachable, the client would fail, and will(should:)) report that back. This like that (low level http), we should report back. but nothing about the actual send (the communication from PushEE -&gt; PushNetworks)</div>



</div></div></div></blockquote><div><br></div></div><div>Okay :)  &quot;and will(should:)) report that back&quot; was just what I wanted to point out !</div></div></div></div></blockquote><div><br></div><div><br></div></div>

<div>
Ah, - OK. </div><div><div><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 class="gmail_extra"><div class="gmail_quote">

<div><div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><font color="#888888">
<div><br></div><div>-M</div></font></span><div><div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



<div dir="ltr"><div class="gmail_extra">
<div class="gmail_quote">
<div><div>
<div>  </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">



<div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



<div dir="ltr">

<div><br></div><div>* You say one will go away, why is that ? Do we want to lean toward a single implementation ?</div></div></blockquote><div><br></div></div><div>For Java, I do not see a reason in supporting two &quot;client&quot;. I did start with AsyncHttpClient and RestEasy client. I was hoping to see odds/benefits in one....</div>







<div>Looking at the code, I think I do prefer using the RestEasy inside of our Java-Sender.... </div><div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">







<div dir="ltr"><div> We could propose different ones (and in different language, like a vertx mod client)</div></div></blockquote><div><br></div></div><div>of course, but that&#39;s that&#39;s outside of the &quot;java lib&quot; we are talking about here.  Surely, we can have a vertx-sender, node-sender etc </div>






<div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>
<br></div><div>So, now a bit more specific :</div><div>I&#39;ve been forking your repo :  <a href="https://github.com/sebastienblanc/ag-java-sender/tree/refactoring" target="_blank">https://github.com/sebastienblanc/ag-java-sender/tree/refactoring</a></div>









<div><br></div><div>To factor more code and make the sender API really unit testable (running without any server) I&#39;ve moved a bit things and introduced a sort of Client interface that will implement really the http client we will use, this client is then injected in the sender interface.</div>







</div></blockquote><div><br></div></div><div>that is nice. The project is simple now, and was written while I was hacking the sender endpoints - that way I could avoid sending lot&#39;s of CURLs ;-) </div><div>
<div><br></div><div>
 </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">

<div>With Arquillian should be easy to add real integration tests.</div></div></blockquote><div><br></div></div><div>sounds good</div><div><div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">







<div dir="ltr"><div><br></div><div class="gmail_extra">Let&#39;s discuss !</div><div class="gmail_extra">Sebi</div><div class="gmail_extra"><br><br><div class="gmail_quote">
<div><div>
On Mon, Jun 3, 2013 at 9:00 PM, Matthias Wessendorf <span dir="ltr">&lt;<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>&gt;</span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">








<div><div>
<div dir="ltr">Hello,<div><br></div><div>a FIRST version of the Java Sender API is ready:</div><div><a href="https://github.com/matzew/ag-java-sender" target="_blank">https://github.com/matzew/ag-java-sender</a></div><div>









<br></div><div>Two implementations, based on different Java HTTP clients:</div>
<div>* RestEasy:</div><div><a href="https://github.com/matzew/ag-java-sender/blob/master/src/main/java/org/aerogear/unifiedpush/resteasy/RestEasyJavaSender.java" target="_blank">https://github.com/matzew/ag-java-sender/blob/master/src/main/java/org/aerogear/unifiedpush/resteasy/RestEasyJavaSender.java</a></div>










<div>* AsyncHttpClient:</div><div><a href="https://github.com/matzew/ag-java-sender/blob/master/src/main/java/org/aerogear/unifiedpush/async/AsyncJavaSender.java" target="_blank">https://github.com/matzew/ag-java-sender/blob/master/src/main/java/org/aerogear/unifiedpush/async/AsyncJavaSender.java</a><br>










</div><div><br></div><div>One will go away, time will tell... not important now...<br></div><div><br></div><div>Tests:</div><div><a href="https://github.com/matzew/ag-java-sender/tree/master/src/test/java/org/aerogear/unifiedpush" target="_blank">https://github.com/matzew/ag-java-sender/tree/master/src/test/java/org/aerogear/unifiedpush</a><br>










</div><div><br></div><div><br></div><div>More functionality (e.g. selective send for deviceType, MobileVariant) will follow, hand in hand with the matching endpoints</div><span><font color="#888888"><div><br></div>
<div>
<br></div><div>-Matthias</div><div><br></div><div><br></div><div><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>










sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></font></span></div>
<br></div></div>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div><br></div></div>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><div><div><br><br clear="all"><div><br>
</div>-- <br>Matthias Wessendorf <br>

<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>








twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div></div></div>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><br></div></div>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><div><div><br><br clear="all"><div><br>
</div>-- <br>Matthias Wessendorf <br>

<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>





twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div></div></div>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><br></div></div>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div></div></div><div><div><br><br clear="all"><div><br>
</div>-- <br>Matthias Wessendorf <br>
<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>


twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div></div></div>
<br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br>
<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div>