Thanks guys!<div><br></div><div>Just noticed a typo in the post which I&#39;ve corrected. The default would be jsp() which is the current default. </div><div><br></div><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On 21 December 2012 15:41, 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">+1</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Dec 21, 2012 at 3:39 PM, Lucas Holmquist <span dir="ltr">&lt;<a href="mailto:lholmqui@redhat.com" target="_blank">lholmqui@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 style="word-wrap:break-word"><div>+1</div><div><br></div><div>From a user perspective, i think the route sections looks clean with this approach </div>

<br><div><div><div><div>On Dec 21, 2012, at 9:34 AM, Daniel Bevenius &lt;<a href="mailto:daniel.bevenius@gmail.com" target="_blank">daniel.bevenius@gmail.com</a>&gt; wrote:</div><br></div></div><blockquote type="cite">
<div><div>Hi, <div><br></div><div><p style="margin-right:0px;margin-bottom:15px;margin-left:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px;margin-top:0px!important">I&#39;m working on <a href="https://issues.jboss.org/browse/AEROGEAR-693" style="color:rgb(65,131,196);text-decoration:initial" target="_blank">AEROGEAR-693</a> and trying to figure out how to implement this in the best way.</p>

<p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px">At the moment, the default type of ViewResponder is the MvcResponder which forwards to a JSP page. By default, this means that if you do not specify a <em>produces()</em> method on a route, this is what you&#39;ll get.</p>

<p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px">Now, the media types that are passed to the <em>produces()</em> method determine two things: 1. How to match to Route that is the target of a request, matching the HTTP <em>Accept</em> header. 2. Determining the ViewResponder to be used.</p>

<p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px">The issue here is that for both a HTMLResponder and a JSPResponder the media type would in both cases be<em>text/html</em>.<br>


How do we determine which one the users actually has created a view for (jsp or html page)?</p><p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px">
Well, we need some way to differantiate between a route that will respond with a html view, but which uses a ceratain technique to render the html.</p><p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px">


How about a introduce a type, MediaType that looks something like this:</p><div style="border:none;padding:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px">
<pre style="font-size:13px;line-height:19px;font-family:Consolas,&#39;Liberation Mono&#39;,Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">
<span style="font-weight:bold">public</span> <span style="font-weight:bold">class</span> <span style="color:rgb(68,85,136);font-weight:bold">MediaType</span> <span style="font-weight:bold">{</span>

    <span style="font-weight:bold">public</span> <span style="font-weight:bold">static</span> <span style="font-weight:bold">final</span> <span>String</span> <span>HTML</span> <span style="font-weight:bold">=</span> <span style="color:rgb(221,17,68)">&quot;text/html&quot;</span><span style="font-weight:bold">;</span>
    <span style="font-weight:bold">public</span> <span style="font-weight:bold">static</span> <span style="font-weight:bold">final</span> <span>String</span> <span>ANY</span> <span style="font-weight:bold">=</span> <span style="color:rgb(221,17,68)">&quot;*/*&quot;</span><span style="font-weight:bold">;</span>
    <span style="font-weight:bold">public</span> <span style="font-weight:bold">static</span> <span style="font-weight:bold">final</span> <span>String</span> <span>JSON</span> <span style="font-weight:bold">=</span> <span style="color:rgb(221,17,68)">&quot;application/json&quot;</span><span style="font-weight:bold">;</span>

    <span style="font-weight:bold">private</span> <span style="font-weight:bold">final</span> <span>String</span> <span>mediaType</span><span style="font-weight:bold">;</span>
    <span style="font-weight:bold">private</span> <span style="font-weight:bold">final</span> <span>Class</span><span style="font-weight:bold">&lt;?</span> <span style="font-weight:bold">extends</span> <span>Responder</span><span style="font-weight:bold">&gt;</span> <span>responderClass</span><span style="font-weight:bold">;</span>

    <span style="font-weight:bold">private</span> <span style="color:rgb(153,0,0);font-weight:bold">MediaType</span><span style="font-weight:bold">(</span><span style="font-weight:bold">final</span> <span>String</span> <span>mediaType</span><span style="font-weight:bold">,</span> <span>Class</span><span style="font-weight:bold">&lt;?</span> <span style="font-weight:bold">extends</span> <span>Responder</span><span style="font-weight:bold">&gt;</span> <span>responderClass</span><span style="font-weight:bold">)</span> <span style="font-weight:bold">{</span>
        <span style="font-weight:bold">this</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">mediaType</span> <span style="font-weight:bold">=</span> <span>mediaType</span><span style="font-weight:bold">;</span>
        <span style="font-weight:bold">this</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">responderClass</span> <span style="font-weight:bold">=</span> <span>responderClass</span><span style="font-weight:bold">;</span>
    <span style="font-weight:bold">}</span>

    <span style="font-weight:bold">public</span> <span>String</span> <span style="color:rgb(153,0,0);font-weight:bold">getMediaType</span><span style="font-weight:bold">()</span> <span style="font-weight:bold">{</span>
        <span style="font-weight:bold">return</span> <span>mediaType</span><span style="font-weight:bold">;</span>
    <span style="font-weight:bold">}</span>

    <span style="font-weight:bold">public</span> <span>Class</span><span style="font-weight:bold">&lt;?</span> <span style="font-weight:bold">extends</span> <span>Responder</span><span style="font-weight:bold">&gt;</span> <span>getResponderClass</span><span style="font-weight:bold">()</span> <span style="font-weight:bold">{</span>
        <span style="font-weight:bold">return</span> <span>responderClass</span><span style="font-weight:bold">;</span>
    <span style="font-weight:bold">}</span>

    <span>@Override</span>
    <span style="font-weight:bold">public</span> <span>String</span> <span style="color:rgb(153,0,0);font-weight:bold">toString</span><span style="font-weight:bold">()</span> <span style="font-weight:bold">{</span>
        <span style="font-weight:bold">return</span> <span style="color:rgb(221,17,68)">&quot;MediaType[type=&quot;</span> <span style="font-weight:bold">+</span> <span>mediaType</span> <span style="font-weight:bold">+</span> <span style="color:rgb(221,17,68)">&quot;, responderClass=&quot;</span> <span style="font-weight:bold">+</span> <span>responderClass</span> <span style="font-weight:bold">+</span> <span style="color:rgb(221,17,68)">&quot;]&quot;</span><span style="font-weight:bold">;</span>
    <span style="font-weight:bold">}</span>

    <span style="font-weight:bold">public</span> <span style="font-weight:bold">static</span> <span>MediaType</span> <span style="color:rgb(153,0,0);font-weight:bold">html</span><span style="font-weight:bold">()</span> <span style="font-weight:bold">{</span>
        <span style="font-weight:bold">return</span> <span style="font-weight:bold">new</span> <span style="color:rgb(153,0,0);font-weight:bold">MediaType</span><span style="font-weight:bold">(</span><span>HTML</span><span style="font-weight:bold">,</span> <span>HtmlViewResponder</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">class</span><span style="font-weight:bold">);</span>
    <span style="font-weight:bold">}</span>

    <span style="font-weight:bold">public</span> <span style="font-weight:bold">static</span> <span>MediaType</span> <span style="color:rgb(153,0,0);font-weight:bold">jsp</span><span style="font-weight:bold">()</span> <span style="font-weight:bold">{</span>
        <span style="font-weight:bold">return</span> <span style="font-weight:bold">new</span> <span style="color:rgb(153,0,0);font-weight:bold">MediaType</span><span style="font-weight:bold">(</span><span>HTML</span><span style="font-weight:bold">,</span> <span>JspViewResponder</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">class</span><span style="font-weight:bold">);</span>
    <span style="font-weight:bold">}</span>

    <span style="font-weight:bold">public</span> <span style="font-weight:bold">static</span> <span>MediaType</span> <span style="color:rgb(153,0,0);font-weight:bold">json</span><span style="font-weight:bold">()</span> <span style="font-weight:bold">{</span>
        <span style="font-weight:bold">return</span> <span style="font-weight:bold">new</span> <span style="color:rgb(153,0,0);font-weight:bold">MediaType</span><span style="font-weight:bold">(</span><span>JSON</span><span style="font-weight:bold">,</span> <span>JsonResponder</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">class</span><span style="font-weight:bold">);</span>
    <span style="font-weight:bold">}</span>

<span style="font-weight:bold">}</span>
</pre></div><p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px">And we could add <em>html()</em>, <em>jsp()</em>, and <em>json()</em> methods to AbstractRoutingModule, so a route that should be handled by a HtmlViewResponder would look like this:</p>


<div style="border:none;padding:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,&#39;Liberation Mono&#39;,Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">
<span>route</span><span style="font-weight:bold">()</span>
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">from</span><span style="font-weight:bold">(</span><span style="color:rgb(221,17,68)">&quot;/plain&quot;</span><span style="font-weight:bold">)</span>
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">on</span><span style="font-weight:bold">(</span><span>RequestMethod</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">GET</span><span style="font-weight:bold">)</span>
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">produces</span><span style="font-weight:bold">(</span><span>html</span><span style="font-weight:bold">())</span>
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">to</span><span style="font-weight:bold">(</span><span>Html</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">class</span><span style="font-weight:bold">).</span><span style="color:rgb(0,128,128)">index</span><span style="font-weight:bold">();</span>
</pre></div><p style="margin:15px 0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px">To be backward compatible, if a <em>produces()</em> method was not specified it would be the same as specifying:</p>


<div style="border:none;padding:0px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:22px;margin-bottom:0px!important"><pre style="font-size:13px;line-height:19px;font-family:Consolas,&#39;Liberation Mono&#39;,Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">produces</span><span style="font-weight:bold">(</span><span>json</span><span style="font-weight:bold">())</span></pre>
</div></div></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><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></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>
<br></blockquote></div><br></div>