<div dir="ltr">and - again - here we are working on the pipe(s) - not on the pipeline;<div style>But I am not sure all these sub pipes need to be accessable from the pipeline... - instead a pipe (not sure) could have &#39;getSubPipes&#39; - for it&#39;s own &#39;state management&#39;;</div>
<div style><br></div><div style>However, I am currently not sure if that is an awful API than, or not... </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 5, 2013 at 10:36 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 class="im">On Fri, Apr 5, 2013 at 10:14 AM, Christos Vasilakis <span dir="ltr">&lt;<a href="mailto:cvasilak@gmail.com" target="_blank">cvasilak@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 style="word-wrap:break-word">Hi<div><br></div><div>some comments</div><div><br></div><div>I believe the method can&#39;t be used since you don&#39;t know the team for the players  so you can&#39;t retrieve the pipe directly..right?</div>

</div></blockquote><div><br></div></div><div>Isn&#39;t that really up to the impl of the rest service?</div><div>They could return a list of teamsHePlayed for;</div><div><br></div><div>So, let&#39;s not tie this API to a specific, not existing RESTful service;</div>
<div class="im">
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><br></div><div><pre style="line-height:16px;width:744px;font-size:12px;margin-bottom:0px;font-family:Consolas,&#39;Liberation Mono&#39;,Courier,monospace;margin-top:0px;word-wrap:break-word;padding:0px">
<div> <span style="color:rgb(51,51,51)">getPlayers</span><span style="font-weight:bold">(</span><span style="color:rgb(51,51,51)">Callback</span><span style="font-weight:bold">&lt;</span><span style="color:rgb(51,51,51)">List</span><span style="font-weight:bold">&lt;</span><span style="color:rgb(51,51,51)">Player</span><span style="font-weight:bold">&gt;&gt;</span> <span style="color:rgb(51,51,51)">callback</span><span style="font-weight:bold">)</span> <span style="font-weight:bold">{</span></div>

<div style="background-color:rgb(255,255,204)">    <span style="color:rgb(51,51,51)">pipe</span><span style="font-weight:bold">.</span><span style="color:teal">get</span><span style="font-weight:bold">(</span><span style="color:rgb(221,17,68)">&quot;player&quot;</span><span style="font-weight:bold">).</span><span style="color:teal">read</span><span style="font-weight:bold">(</span><span style="color:rgb(51,51,51)">callback</span><span style="font-weight:bold">);</span></div>

<div>  <span style="font-weight:bold">}</span></div></pre><div><br></div><div>Further my questions is, how is a third (or arbitrary) nested resources are supported? I mean for a url schema like this</div><div><br></div><div>

<a href="http://soccer.org/leagues/" target="_blank">soccer.org/leagues/</a>{id}/teams/{id}/players/{id}</div><div><br></div><div>first we access the leagues:</div><div>---</div><div>getLeagues(Callback&lt;List&lt;Leagues&gt;&gt; callback) {</div>

<div> pipe.get(&quot;leagues&quot;).read(callback);</div><div>}</div><div>---</div><div>then the teams for this league:</div><div>---</div><div><div><div>getTeamsOnLeaque(Leaque league, Callback&lt;List&lt;Team&gt;&gt; callback) {</div>

</div></div><div><div>   pipe.junction(&quot;league&quot;,&quot;team&quot;).read(leaque, callback);</div><div>}</div></div><div>---</div><div>..and then we access the &quot;Players&quot; for a &quot;Team&quot;:</div><div>

---</div><div><div>  getPlayersOnTeam(Team team, Callback&lt;List&lt;Player&gt;&gt; callback) {</div><div>    pipe.junction(&quot;team&quot;,&quot;player&quot;).read(team, callback);</div><div>  }</div></div><div>---</div>

<div>But where is the &quot;League&quot; information to fill the &quot;/leagues/{id}...&quot; path? </div></div></div></blockquote><div><br></div><div><br></div></div><div>I&#39;d assume the information is &#39;inherited&#39; out of a given pipe, when doing the &#39;join&#39;</div>

<div><br></div><div>e.g. like</div><div>myTeamsForLeaguePipe = leaguePipe.junction(&quot;team&quot;);</div><div><br></div><div>not sure...</div><div class="im"><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><div><div>Unless you mean something like:</div><div>---</div><div><div>  getPlayersOnTeam(Leaque league, Team team, Callback&lt;List&lt;Player&gt;&gt; callback) {</div><div>    pipe.junction(&quot;league&quot;, &quot;team&quot;,&quot;player&quot;).read(league, team, callback);</div>

<div>  }</div></div></div></div></blockquote><div><br></div></div><div>I am not sure if that is really easy to understand/use</div><div><div class="h5"><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><div><div>---</div><div><br></div><div>probably I am missing sth..</div><div><br></div><div>Thanks,</div><div>Christos</div><div><div><div><br></div><div>On Apr 4, 2013, at 5:52 PM, Summers Pittman &lt;<a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a>&gt; wrote:</div>

<div><br><blockquote type="cite">What if we create a new metaphor, a Junction.<br><br><a href="https://gist.github.com/secondsun/dcf5682b6ff17c729d9a" target="_blank">https://gist.github.com/secondsun/dcf5682b6ff17c729d9a</a><br>

<br>It joins two pipes together and can be used over and over again with different data?<br>It isn&#39;t a Pipe though, but perhaps that could be changed to look more like Christos&#39;s previous example.<br><br>At the very least I like the words &quot;junction&quot; or &quot;join&quot; more than &quot;of&quot;<br>

<br>----- Original Message -----<br>| From: &quot;Christos Vasilakis&quot; &lt;<a href="mailto:cvasilak@gmail.com" target="_blank">cvasilak@gmail.com</a>&gt;<br>| To: &quot;AeroGear Developer Mailing List&quot; &lt;<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a>&gt;<br>

| Sent: Wednesday, April 3, 2013 3:03:02 AM<br>| Subject: Re: [aerogear-dev] [Aerogear Pipeline] Support for nested endpoints<br>| <br>| <br>| On Apr 2, 2013, at 4:03 PM, Matthias Wessendorf &lt; <a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a> &gt; wrote:<br>

| <br>| <br>| <br>| <br>| Two thoughts....<br>| <br>| 1) the &#39;original&#39; leaguesPipe has no clue about the subpipes, right ?<br>| 2) should a pipe offer a &#39;getter&#39; for all it&#39;s sub pipes ?<br>| <br>| <br>

| Just a thought is instead of using Pipe, to continue using Pipeline adding an<br>| extra parameter &quot; of&quot; for specifying the parent : E.g.:<br>| <br>| …..<br>| id&lt;AGPipe&gt; leaguesPipe = [pipeline pipe@&quot;leagues&quot;];<br>

| <br>| id&lt;AGPipe&gt; allTeamsInSeattlePipe = [pipeline subPipe@&quot;teams&quot; of :leaguesPipe<br>| for:@&quot;seattle&quot;]<br>| <br>| id&lt;AGPipe&gt; allPlayersInTrebuchetPipe = [pipeline subPipe:@&quot;players&quot; of:<br>

| allTeamsInSeattlePipe for:@&quot;trebuchet&quot;];<br>| …..<br>| <br>| <br>| Wdyt?<br>| <br>| <br>| <br>| <br>| <br>| <br>| <br>| -M<br>| <br>| <br>| <br>| <br>| <br>| Thanks,<br>| Christos<br>| <br>| <br>| <br>| <br>| <br>

| <br>| <br>| <br>| <br>| <br>| <br>| <br>| <br>| <br>| <a href="http://soccer.org/leagues/seattle/teams/trebuchet/players/foo" target="_blank">soccer.org/leagues/seattle/teams/trebuchet/players/foo</a> - &gt;<br>| [[pipeline pipe:@&quot;players&quot; pathParams:@[@&quot;seattle&quot;, @&quot;trebuchet&quot;]] read<br>

| :@&quot;foo&quot;] ..<br>| -----<br>| <br>| <br>| Wdyt?<br>| <br>| Thanks<br>| Christos<br>| <br>| On Mar 18, 2013, at 1:12 PM, Sebastien Blanc &lt; <a href="mailto:scm.blanc@gmail.com" target="_blank">scm.blanc@gmail.com</a> &gt; wrote:<br>

| <br>| <br>| <br>| Well, that would not be possible, for that you will have to create a &quot;child&quot;<br>| pipe. But I agree, that is maybe no optimal ...<br>| <br>| <br>| On Fri, Mar 15, 2013 at 6:44 PM, Summers Pittman &lt; <a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a> &gt;<br>

| wrote:<br>| <br>| <br>| <br>| On 03/15/2013 01:34 PM, Sebastien Blanc wrote:<br>| <br>| <br>| I like the idea but I will more see that has a method/function for the<br>| pipelineManager (and will be easier to implement in JS, I think) :<br>

| <br>| var myParentPipe = Aerogear.Pipeline({name:&quot;parentPipe&quot;}).pipes.parentPipe<br>| <br>| var myChildPipe = Aerogear.Pipeline.fromParent(myParentPipe, {options} )<br>| What would it look like to get a child record from a parent?<br>

| <br>| <br>| <br>| <br>| <br>| <br>| On Fri, Mar 15, 2013 at 5:37 PM, Douglas Campos &lt; <a href="mailto:qmx@qmx.me" target="_blank">qmx@qmx.me</a> &gt; wrote:<br>| <br>| <br>| What about this?<br>| <br>| Pipeline&lt;Post&gt; postPipeline = …<br>

| Post post = // get from the pipeline<br>| Pipeline&lt;Comment&gt;<br>| postPipeline.childPipelineForOrOtherWeirdName(Comment.class, post)<br>| <br>| <br>| On 15/03/2013, at 12:26, Summers Pittman &lt; <a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a> &gt; wrote:<br>

| <br>| &gt; On 03/14/2013 04:48 AM, Matthias Wessendorf wrote:<br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; On Thu, Mar 14, 2013 at 9:32 AM, Sebastien Blanc &lt; <a href="mailto:scm.blanc@gmail.com" target="_blank">scm.blanc@gmail.com</a> &gt;<br>

| &gt;&gt; wrote:<br>| &gt;&gt; Hi,<br>| &gt;&gt; While I was playing with scaffolding and tried to build a simple Blog<br>| &gt;&gt; Application with Aerogear I faced the current situation :<br>| &gt;&gt; I have a Post object which contains many Comment objects. Now I want to<br>

| &gt;&gt; call my Post pipe to retrieve the related comments, I have currently 2<br>| &gt;&gt; options :<br>| &gt;&gt; <br>| &gt;&gt; /posts/1 -&gt; assuming comments will be implicitly retrieved (eager loading)<br>| &gt;&gt; /comments/?postid=1<br>

| &gt;&gt; <br>| &gt;&gt; But regarding our model the correct form should be :<br>| &gt;&gt; <br>| &gt;&gt; /posts/1/comments<br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; +1<br>| &gt;&gt; that is the ideal way to model URIs for &quot;nested&quot; resources.<br>

| &gt;&gt; <br>| &gt;&gt; See [1], extracted from [2]<br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; But, AFAIK, with the current API, it is not possible to define this last<br>| &gt;&gt; pattern (at least for JS and iOs, confirmed by Matzew). When doing a read<br>

| &gt;&gt; we can pass an id option but as mentioned in the doc, this id will always<br>| &gt;&gt; be append to the endpoint.<br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; Well, it is possible - but in a very (IMO) ugly way:<br>

| &gt;&gt; <br>| &gt;&gt; <a href="https://gist.github.com/matzew/6ab432e437b9a017a21d" target="_blank">https://gist.github.com/matzew/6ab432e437b9a017a21d</a><br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; <br>

| &gt;&gt; IMO, we should be able to support this pattern but for now I&#39;m not really<br>| &gt;&gt; sure how to specify this in our API, so if you have any ideas feedback<br>| &gt;&gt; this thread has been made for you !<br>

| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; Suggestion: Enhance the read function - example:<br>| &gt;&gt; <br>| &gt;&gt; <a href="https://gist.github.com/matzew/04f069dfbed2cc77a8b4" target="_blank">https://gist.github.com/matzew/04f069dfbed2cc77a8b4</a><br>

| &gt; I&#39;m thinking of the inverse myself. Add a &quot;ParentPath&quot; property which can<br>| &gt; be used to extract information from parent objects.<br>| &gt; <br>| &gt; <a href="https://gist.github.com/secondsun/17ce96082eda37dbd10e" target="_blank">https://gist.github.com/secondsun/17ce96082eda37dbd10e</a><br>

| &gt; <br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; -Matthias<br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; [1]<br>| &gt;&gt; <a href="http://www.infoq.com/resource/articles/rest-introduction/en/resources/figure2.jpg" target="_blank">http://www.infoq.com/resource/articles/rest-introduction/en/resources/figure2.jpg</a><br>

| &gt;&gt; [2] <a href="http://www.infoq.com/articles/rest-introduction" target="_blank">http://www.infoq.com/articles/rest-introduction</a><br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; Seb<br>

| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; _______________________________________________<br>| &gt;&gt; aerogear-dev mailing list<br>| &gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>

| &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; <br>| &gt;&gt; --<br>| &gt;&gt; Matthias Wessendorf<br>

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

| &gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>| &gt;&gt; <br>| &gt;&gt; _______________________________________________<br>| &gt;&gt; aerogear-dev mailing list<br>

| &gt;&gt; <br>| &gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>| &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>

| &gt; <br>| &gt; _______________________________________________<br>| &gt; aerogear-dev mailing list<br>| &gt; <a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>| &gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>

| <br>| -- qmx<br>| <br>| <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>

| <br>| <br>| <br>| _______________________________________________<br>| aerogear-dev mailing list <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>

| <br>| <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>

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

| <br>| <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>

| <br>| <br>| <br>| --<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><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>| <br>| <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>

| <br>| <br>| <br>| --<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><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>| <br>| <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>

<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></blockquote>

</div><br></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><div><div class="h5"><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>
</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>