<div dir="ltr">It took me a while to get the time to do this, but I just submitted a PR that extracts the functionality into an AbstractResourceHandler to allow other methodologies without compromising the existing paradigm.<div><br></div><div><a href="https://github.com/undertow-io/undertow/pull/470">https://github.com/undertow-io/undertow/pull/470</a><br></div><div><br></div><div>I wasn&#39;t able to extract it into a static method as there are too many configuration options that it needs access to for it to be practical.</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jan 3, 2017 at 2:48 PM Stuart Douglas &lt;<a href="mailto:sdouglas@redhat.com">sdouglas@redhat.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If you submit a PR I would be happy to look at it.<br class="gmail_msg">
<br class="gmail_msg">
Stuart<br class="gmail_msg">
<br class="gmail_msg">
On Wed, Jan 4, 2017 at 2:09 AM, Hicks, Matt &lt;<a href="mailto:matt@matthicks.com" class="gmail_msg" target="_blank">matt@matthicks.com</a>&gt; wrote:<br class="gmail_msg">
&gt; Bill, though you&#39;re probably right, I still believe this would be useful<br class="gmail_msg">
&gt; functionality for one-off resource handling without requiring a resource<br class="gmail_msg">
&gt; handler.<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; On Mon, Jan 2, 2017 at 8:59 PM Bill O&#39;Neil &lt;<a href="mailto:bill@dartalley.com" class="gmail_msg" target="_blank">bill@dartalley.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; You should be able to handle all of your use cases by composing handlers<br class="gmail_msg">
&gt;&gt; together. Create a new handler that handles security or the database logic<br class="gmail_msg">
&gt;&gt; then delegates to an internal resource handler with the appropriate path.<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; On Mon, Jan 2, 2017 at 9:50 PM, Hicks, Matt &lt;<a href="mailto:matt@matthicks.com" class="gmail_msg" target="_blank">matt@matthicks.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; The problem with ResourceHandler is it doesn&#39;t easily support more<br class="gmail_msg">
&gt;&gt;&gt; complex scenarios.  A few examples: security on resources, URLs that must<br class="gmail_msg">
&gt;&gt;&gt; find a resource path from the database, conditional resources (deliver<br class="gmail_msg">
&gt;&gt;&gt; resource A if the IP is x.x.x.x and resource B otherwise), etc.<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; Offering a more granular control to allow delivery of individual<br class="gmail_msg">
&gt;&gt;&gt; resources without the need of a ResourceHandler will drastically improve the<br class="gmail_msg">
&gt;&gt;&gt; flexibility of Undertow.<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; On Mon, Jan 2, 2017 at 4:46 PM Stuart Douglas &lt;<a href="mailto:sdouglas@redhat.com" class="gmail_msg" target="_blank">sdouglas@redhat.com</a>&gt;<br class="gmail_msg">
&gt;&gt;&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; I would be ok with that, however why can&#39;t you just use the<br class="gmail_msg">
&gt;&gt;&gt;&gt; ResourceHandler? PathResourceManager will use transferFrom if the file<br class="gmail_msg">
&gt;&gt;&gt;&gt; is larger than a configured minimum (the transferMinSize parameter in<br class="gmail_msg">
&gt;&gt;&gt;&gt; the constructor).<br class="gmail_msg">
&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; Stuart<br class="gmail_msg">
&gt;&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; On Wed, Dec 28, 2016 at 1:52 AM, Hicks, Matt &lt;<a href="mailto:matt@matthicks.com" class="gmail_msg" target="_blank">matt@matthicks.com</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; Previously I&#39;ve asked about streaming a single file back to the client<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; and<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; got some good insight as to how to accomplish this with<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; `transferFrom`, but<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; this misses out on all the extra features like resuming transfers,<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; cached<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; content, etc.  It would be very nice Undertow offered a static utility<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; method to serve up File, Path, and URL providing all of this<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; functionality<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; that is currently contained in ResourceHandler<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; (<a href="https://github.com/undertow-io/undertow/blob/master/core/src/main/java/io/undertow/server/handlers/resource/ResourceHandler.java#L155" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/undertow-io/undertow/blob/master/core/src/main/java/io/undertow/server/handlers/resource/ResourceHandler.java#L155</a>).<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; I don&#39;t think it would be difficult to extract all of that out of the<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; private method and simply have ResourceHandler call the static method.<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; Stuart, what do you think?<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; I&#39;d even be willing to do the leg-work if you&#39;d be willing to accept a<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; PR<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; for it.<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt;<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; _______________________________________________<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; undertow-dev mailing list<br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; <a href="mailto:undertow-dev@lists.jboss.org" class="gmail_msg" target="_blank">undertow-dev@lists.jboss.org</a><br class="gmail_msg">
&gt;&gt;&gt;&gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/undertow-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/undertow-dev</a><br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt;<br class="gmail_msg">
&gt;&gt;&gt; _______________________________________________<br class="gmail_msg">
&gt;&gt;&gt; undertow-dev mailing list<br class="gmail_msg">
&gt;&gt;&gt; <a href="mailto:undertow-dev@lists.jboss.org" class="gmail_msg" target="_blank">undertow-dev@lists.jboss.org</a><br class="gmail_msg">
&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/undertow-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/undertow-dev</a><br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
</blockquote></div>