In the current version Tapestry parses templates coming from java.net.URL. If the template is not in the filesystem (for example coming from database), it is more easier to implement this if Tapestry can parse the template coming from stream.
My suggestion is to extend the org.apache.tapestry.ioc.Resource interface with one more method:
which will be called insted of calling toURL().openStream() when parsing the template.
If this interface is extended in this way, Tapestry should expect org.apache.tapestry.ioc.Resource.toURL() to return null even when the resource exists(but does not have an URL).