|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.tapestry.asset.AssetExternalizerImpl
Implementation of the AssetExternalizer
service interface.
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 | |
AssetExternalizerImpl()
|
Method Summary | |
protected void |
externalize(java.lang.String resourcePath)
|
java.lang.String |
getURL(java.lang.String resourcePath)
Gets the URL to a private resource. |
void |
initializeService()
|
void |
setClassResolver(org.apache.hivemind.ClassResolver resolver)
|
void |
setLog(org.apache.commons.logging.Log log)
|
void |
setPropertySource(IPropertySource propertySource)
since 4.0 |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public AssetExternalizerImpl()
Method Detail |
public void initializeService()
protected void externalize(java.lang.String resourcePath) throws java.io.IOException
java.io.IOException
public java.lang.String getURL(java.lang.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.
getURL
in interface AssetExternalizer
resourcePath
- The full path of the resource within the classpath. This is expected to include a
leading slash. For example: /com/skunkworx/Banner.gif
.public void setLog(org.apache.commons.logging.Log log)
public void setClassResolver(org.apache.hivemind.ClassResolver resolver)
public void setPropertySource(IPropertySource propertySource)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |