|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.tapestry.asset.AssetExternalizer
public class AssetExternalizer
Responsible for copying assets from the classpath to an external directory that
is visible to the web server. The externalizer is stored inside
the ServletContext
as a named attribute.
The externalizer uses the name org.apache.tapestry.AssetExternalizer.application name
. It configures itself using two additional
properties (searching in
IEngine.getPropertySource()
.
Parameter | Description |
---|---|
org.apache.tapestry.asset.dir |
The directory to which assets will be copied. |
org.apache.tapestry.asset.URL |
The corresponding URL for the asset directory. |
If either of these parameters is null, then no externalization occurs.
Private assets will still be available, just less efficiently, as the application
will be invoked via its servlet and, ultimately, the AssetService
will need
to retrieve the asset.
Assets maintain thier directory structure when copied. For example,
an asset with a resource path of /com/skunkworx/Banner.gif
would
be copied to the file system as dir/com/skunkworx/Banner.gif
and
would have a URL of URL/com/skunkworx/Banner.gif
.
The externalizer will create any directories as needed.
The externalizer will not overwrite existing files. When a new version of the application is deployed with changed assets, there are two deployment stategies:
When using the second approach, it is best to use a directory that has
a version number in it, for example, D:/inetpub/assets/0
mapped to the URL
/assets/0
. When a new version of the application is deployed, the trailing
version number is incremented from 0 to 1.
Constructor Summary | |
---|---|
protected |
AssetExternalizer(IRequestCycle cycle)
|
Method Summary | |
---|---|
protected void |
externalize(String resourcePath)
|
static AssetExternalizer |
get(IRequestCycle cycle)
Gets the externalizer singleton for the application. |
String |
getURL(String resourcePath)
Gets the URL to a private resource. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
protected AssetExternalizer(IRequestCycle cycle)
Method Detail |
---|
protected void externalize(String resourcePath) throws IOException
IOException
public static AssetExternalizer get(IRequestCycle cycle)
ServletContext
.
Each Tapestry application within a single ServletContext
will have its own externalizer; they are differentiated by the
application name.
ApplicationSpecification.getName()
public String getURL(String resourcePath)
If the asset directory and URL are not configured, then returns null.
Otherwise, the asset is copied out to the asset directory, the URL is constructed (and recorded for later) and the URL is returned.
This method is not explicitly synchronized but should work
multi-threaded. It synchronizes on the internal
Map
used to map resource paths to URLs.
resourcePath
- The full path of the resource within the
classpath. This is expected to include a leading slash. For
example: /com/skunkworx/Banner.gif
.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |