On Mon, Jul 23, 2012 at 7:37 AM, Thiago H de Paula Figueiredo
<[email protected]> wrote:
> Just for backward compatibility, what about adding a symbol defaulting to
> false that allows assets to be loaded from outside /META-INF/assets?

You mean, in 5.5 and beyond?

In 5.4, you have compatibility with 5.3, you just get an error in the console.

>
>
> On Sun, 22 Jul 2012 15:43:47 -0300, Howard Lewis Ship <[email protected]>
> wrote:
>
>> 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.
>>
>
>
> --
> Thiago H. de Paula Figueiredo
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>



-- 
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to