What about library's "assets" folder(org.myapp.assets), will it be supported?
Denis Jul 22, 2012 v 8:43 PM, Howard Lewis Ship <hls...@gmail.com>: > Just a note on where I'm heading with the 5.4 code. > > In Tapestry 5.3 and earlier, classpath assets were allowed to be > anywhere on the classpath, as long as the assets where somewhere under > a library root package. Tapestry would build an asset URL that > incorporated the library name and the relative path from that root to > the asset. So, move_up.png in org.apache.tapestry5.corelib.components > would be combined with the library name "core" -> > "org.apache.tapestry5.corelib" to create as asset URL of > /assets/123bc/core/components/move_up.png > > Of course, this has its problems including how to handle libraries > that have multiple root packages (Tapestry builds a path relative to > the deepest common folder) and, more importantly, how to keep users > from downloading things that were not intended to be downloaded, > including Java .class files and Tapestry templates and properties > files. You end up with some extra cruft, such as attaching an md5 > checksum to certain assets to "prove" that the application intended to > expose it to the client. It still makes people unhappy, as parts of > the /assets/ namespace is browsable (via the web browser); further > protection on files requires opt in (you must declare which extensions > need extra protection). All in all, less than satisfactory. > > I believe Thiago pointed out, maybe a year back, that it would have > been better to isolate assets from other things on the classpath. I > agree, and in 5.4 I'm starting a transition that way. The current > approach will continue to be supported until at least 5.5, with > runtime warnings. > > The new approach is that assets go in /META-INF/assets/<library name> > (or just /META-INF/assets/ for application classpath assets). Relative > URLs are now relative to that folder, not relative to the component > class. Again, outside of some warnings, all existing assets work > correctly using 5.3 rules. > > The warnings I mention above include where to move the file so that it > will be picked up correctly: > > [ERROR] AssetSource Packaging of classpath assets has changed in > release 5.4; Assets should no longer be on the main classpath, but > should be moved to 'META-INF/assets/' or a sub-folder. Future releases > of Tapestry may no longer support assets on the main classpath. > [ERROR] AssetSource Classpath asset > '/org/apache/tapestry5/corelib/components/sort-asc.png' should be > moved under folder '/META-INF/assets/core/', and the relative path > adjusted. > [ERROR] AssetSource Classpath asset > '/org/apache/tapestry5/corelib/components/sort-desc.png' should be > moved under folder '/META-INF/assets/core/', and the relative path > adjusted. > [ERROR] AssetSource Classpath asset > '/org/apache/tapestry5/corelib/components/sortable.png' should be > moved under folder '/META-INF/assets/core/', and the relative path > adjusted. > > The location of resources (component templates and message catalogs) > is not changed. > > One of my secondary goals will be to have a way of generating a kind > of manifest of all assets (classpath or context, static or virtual) > that can be used to pre-load assets into a CDN. > > -- > Howard M. Lewis Ship > > Creator of Apache Tapestry > > The source for Tapestry training, mentoring and support. Contact me to > learn how I can get you up and productive in Tapestry fast! > > (971) 678-5210 > http://howardlewisship.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org > For additional commands, e-mail: dev-h...@tapestry.apache.org > Denis