<div dir="ltr">I had a few ideas I put together and would appreciate some feedback.  A lot of it revolves around Java 8 but I kept all of the extensions themselves at Java 7.  The main goal of Java 8 was to make constructing HttpHandlers easier when you delegate to other handlers.<div>
<br></div><div>Example:</div><pre style="overflow:auto;font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;margin-top:0px;margin-bottom:0px;color:rgb(51,51,51);line-height:18px"><div class="" id="LC18" style="padding-left:10px;height:18px">
<span class="">Handlers</span><span class="" style="font-weight:bold">.</span><span class="" style="color:teal">routing</span><span class="" style="font-weight:bold">()</span></div><div class="" id="LC20" style="padding-left:10px;height:18px">
            <span class="" style="font-weight:bold">.</span><span class="" style="color:teal">add</span><span class="" style="font-weight:bold">(</span><span class="">Methods</span><span class="" style="font-weight:bold">.</span><span class="" style="color:teal">GET</span><span class="" style="font-weight:bold">,</span> <span class="" style="color:rgb(221,17,68)">&quot;/messages&quot;</span><span class="" style="font-weight:bold">,</span> <span class="">HandlerBuilder</span></div>
<div class="" id="LC21" style="padding-left:10px;height:18px">                <span class="" style="font-weight:bold">.</span><span class="" style="color:teal">create</span><span class="" style="font-weight:bold">(</span><span class="">CustomHandlers</span><span class="" style="font-weight:bold">.</span><span class="" style="color:teal">json</span><span class="" style="font-weight:bold">(</span><span class="">Messages:</span><span class="" style="font-weight:bold">:</span><span class="">getMessages</span><span class="" style="font-weight:bold">))</span></div>
<div class="" id="LC22" style="padding-left:10px;height:18px">                <span class="" style="font-weight:bold">.</span><span class="" style="color:teal">wrap</span><span class="" style="font-weight:bold">(</span><span class="">CustomHandlers:</span><span class="" style="font-weight:bold">:</span><span class="">timing</span><span class="" style="font-weight:bold">,</span> <span class="" style="color:rgb(221,17,68)">&quot;getMessages&quot;</span><span class="" style="font-weight:bold">)</span></div>
<div class="" id="LC23" style="padding-left:10px;height:18px">                <span class="" style="font-weight:bold">.</span><span class="" style="color:teal">wrap</span><span class="" style="font-weight:bold">(</span><span class="">BlockingHandler:</span><span class="" style="font-weight:bold">:</span><span class="" style="font-weight:bold">new</span><span class="" style="font-weight:bold">)</span></div>
</pre><div><span style="color:rgb(51,51,51);font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;line-height:18px">             </span><span class="" style="color:rgb(51,51,51);font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;line-height:18px;font-weight:bold">.</span><span class="" style="font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;line-height:18px;color:teal">build</span><span class="" style="color:rgb(51,51,51);font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;line-height:18px;font-weight:bold">())</span> <div>
<br></div><div>Here is my branch <a href="https://github.com/billoneil/undertow/tree/feature/ext">https://github.com/billoneil/undertow/tree/feature/ext</a></div><div><br></div><div>Here is the entry point to an example that puts it all together. <a href="https://github.com/billoneil/undertow/blob/feature/ext/ext/examples/src/main/java/io/undertow/ext/examples/rest/RestServer.java">https://github.com/billoneil/undertow/blob/feature/ext/ext/examples/src/main/java/io/undertow/ext/examples/rest/RestServer.java</a></div>
<div><br></div><div>Please excuse the boring example I couldn&#39;t think of anything interesting. </div><div><br></div><div>If you run it locally</div><div><br></div><div><br></div><div>curl -X POST localhost:8080/messages/optional -d &#39;{&quot;title&quot;: &quot;Optional&quot;, &quot;message&quot;: &quot;Using optional&quot;}&#39;<br>
</div><div>{&quot;success&quot;:true}<br></div><div><br></div><div>curl -X POST localhost:8080/messages/lambda -d &#39;{&quot;title&quot;: &quot;Lambda&quot;, &quot;message&quot;: &quot;Using Lambda&quot;}&#39;<br></div><div>
{&quot;success&quot;:true}<br></div><div><br></div><div>curl -X POST localhost:8080/messages -d &#39;{&quot;title&quot;: &quot;Method References&quot;, &quot;message&quot;: &quot;Using method references&quot;}&#39;<br></div>
<div>{&quot;success&quot;:true}<br></div><div><br></div><div>curl -X GET localhost:8080/messages<br></div><div><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">[</span><ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em;color:rgb(0,0,0);font-family:monospace;font-size:medium">
<li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><div class="" style="padding-right:10px;padding-left:6px">
</div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">title</span>: <span class="" style="color:green">&quot;Optional&quot;</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">message</span>: <span class="" style="color:green">&quot;Using optional&quot;</span></div></li></ul>},</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">title</span>: <span class="" style="color:green">&quot;Lambda&quot;</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">message</span>: <span class="" style="color:green">&quot;Using Lambda&quot;</span></div></li></ul>},</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">title</span>: <span class="" style="color:green">&quot;Method References&quot;</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px;background-color:rgb(235,238,249)">
<span class="" style="font-weight:bold">message</span>: <span class="" style="color:green">&quot;Using method references&quot;</span></div></li></ul>}</div></li></ul><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">]</span><br>
</div><div><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium"><br></span></div><div>curl -X GET localhost:8080/info/metrics<span style="color:rgb(0,0,0);font-family:monospace;font-size:medium"><br></span></div>
<div><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">{</span><ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em;color:rgb(0,0,0);font-family:monospace;font-size:medium"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">version</span>: <span class="" style="color:green">&quot;3.0.0&quot;</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">gauges</span>: { },</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">counters</span>: { },</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">histograms</span>: { },</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">meters</span>: <div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">response.status.code.200</span>: <div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">count</span>: <span class="" style="color:blue">8</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m15_rate</span>: <span class="" style="color:blue">21.787938213503697</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m1_rate</span>: <span class="" style="color:blue">6.5304307794735275</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m5_rate</span>: <span class="" style="color:blue">18.017228623496</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean_rate</span>: <span class="" style="color:blue">4.457584495510739</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">units</span>: <span class="" style="color:green">&quot;events/minute&quot;</span></div></li></ul>}</div></li></ul>},</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">timers</span>: <div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">createMessageLambda</span>: <div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">count</span>: <span class="" style="color:blue">1</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">max</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">min</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p50</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p75</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p95</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p98</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p99</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p999</span>: <span class="" style="color:blue">1.169</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">stddev</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m15_rate</span>: <span class="" style="color:blue">0.059490549916151686</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m1_rate</span>: <span class="" style="color:blue">0.1812199126454006</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m5_rate</span>: <span class="" style="color:blue">0.14211865026090975</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean_rate</span>: <span class="" style="color:blue">0.5343847126926461</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">duration_units</span>: <span class="" style="color:green">&quot;milliseconds&quot;</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">rate_units</span>: <span class="" style="color:green">&quot;calls/minute&quot;</span></div></li></ul>},</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">createMessageMethodReferences</span>: <div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li>
<div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">count</span>: <span class="" style="color:blue">1</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">max</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">mean</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">min</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">p50</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">p75</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">p95</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">p98</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">p99</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">p999</span>: <span class="" style="color:blue">0.648</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">stddev</span>: <span class="" style="color:blue">0</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">m15_rate</span>: <span class="" style="color:blue">0.05982197273776584</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">m1_rate</span>: <span class="" style="color:blue">0.19696865690816925</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">m5_rate</span>: <span class="" style="color:blue">0.14450714325124409</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">mean_rate</span>: <span class="" style="color:blue">0.5343791108783038</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">duration_units</span>: <span class="" style="color:green">&quot;milliseconds&quot;</span>,</div>
</li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">rate_units</span>: <span class="" style="color:green">&quot;calls/minute&quot;</span></div>
</li></ul>},</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px"><span class="" style="font-weight:bold">createMessageOptional</span>: <div class="" style="padding-right:10px;padding-left:6px">
</div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">count</span>: <span class="" style="color:blue">1</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">max</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">min</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p50</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p75</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p95</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p98</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p99</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p999</span>: <span class="" style="color:blue">94.579</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">stddev</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m15_rate</span>: <span class="" style="color:blue">10.678581251856285</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m1_rate</span>: <span class="" style="color:blue">2.0852873214053433</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m5_rate</span>: <span class="" style="color:blue">8.456257076624562</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean_rate</span>: <span class="" style="color:blue">0.5343875445806129</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">duration_units</span>: <span class="" style="color:green">&quot;milliseconds&quot;</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">rate_units</span>: <span class="" style="color:green">&quot;calls/minute&quot;</span></div></li></ul>},</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">getMessages</span>: <div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">count</span>: <span class="" style="color:blue">3</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">max</span>: <span class="" style="color:blue">9.809999999999999</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean</span>: <span class="" style="color:blue">3.6413333333333333</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">min</span>: <span class="" style="color:blue">0.514</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p50</span>: <span class="" style="color:blue">0.6</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p75</span>: <span class="" style="color:blue">9.809999999999999</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p95</span>: <span class="" style="color:blue">9.809999999999999</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p98</span>: <span class="" style="color:blue">9.809999999999999</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p99</span>: <span class="" style="color:blue">9.809999999999999</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p999</span>: <span class="" style="color:blue">9.809999999999999</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">stddev</span>: <span class="" style="color:blue">5.342395093339066</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m15_rate</span>: <span class="" style="color:blue">0.18767034671569677</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m1_rate</span>: <span class="" style="color:blue">1.2185014871528328</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m5_rate</span>: <span class="" style="color:blue">0.49650226189858143</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean_rate</span>: <span class="" style="color:blue">1.6030845484157583</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">duration_units</span>: <span class="" style="color:green">&quot;milliseconds&quot;</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">rate_units</span>: <span class="" style="color:green">&quot;calls/minute&quot;</span></div></li></ul>},</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">getMetrics</span>: <div class="" style="padding-right:10px;padding-left:6px"></div>{<ul class="" style="list-style-type:none;padding:0px;margin:0px 0px 0px 2em"><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">count</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">max</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">min</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p50</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p75</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p95</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p98</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p99</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">p999</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">stddev</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m15_rate</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m1_rate</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">m5_rate</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">mean_rate</span>: <span class="" style="color:blue">0</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">duration_units</span>: <span class="" style="color:green">&quot;milliseconds&quot;</span>,</div></li><li><div class="" style="display:inline-block;padding:1px 2px;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px">
<span class="" style="font-weight:bold">rate_units</span>: <span class="" style="color:green">&quot;calls/minute&quot;</span></div></li></ul>}</div></li></ul>}</div></li></ul><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">}</span><br>
</div><div><br></div><div><br></div><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 3, 2014 at 9:28 AM, Bill O&#39;Neil <span dir="ltr">&lt;<a href="mailto:bill@dartalley.com" target="_blank">bill@dartalley.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">I have mostly just been getting familiar with undertow for side projects.  I would be happy to share anything I come up with though to get some feedback.</div>
<div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">
On Wed, Jul 2, 2014 at 10:44 AM, Jason Greene <span dir="ltr">&lt;<a href="mailto:jason.greene@redhat.com" target="_blank">jason.greene@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>On Jul 2, 2014, at 9:02 AM, Bill O&#39;Neil &lt;<a href="mailto:bill@dartalley.com" target="_blank">bill@dartalley.com</a>&gt; wrote:<br>
<br>
&gt; Is there any plan to open up an undertow-ext library where the community can make small modules that hook into 3rd party dependencies?  For example, an HttpHandler that uses Jackson/Gson to serialize to json and set appropriate headers, or an HTML templating framework for rendering HTML.<br>


&gt;<br>
&gt; Would you prefer these to be hosted by 3rd parties instead?<br>
<br>
</div>I think this is a great idea. Are you interested in being a maintainer of such a thing?<br>
<br>
--<br>
Jason T. Greene<br>
WildFly Lead / JBoss EAP Platform Architect<br>
JBoss, a division of Red Hat<br>
<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>