Class UiDependencyTool
java.lang.Object
org.apache.velocity.tools.generic.SafeConfig
org.apache.velocity.tools.view.UiDependencyTool
@DefaultKey("depends")
@ValidScope("request")
public class UiDependencyTool
extends org.apache.velocity.tools.generic.SafeConfig
NOTE: This tool is considered "beta" quality due to lack of public testing
and is not automatically provided via the default tools.xml file.
Tool to make it easier to manage usage of client-side dependencies.
This is essentially a simple dependency system for javascript and css.
This could be cleaned up to use fewer maps, use more classes,
and cache formatted values, but this is good enough for now.
To use it, create a ui.xml file at the root of the classpath.
Follow the example below. By default, it prepends the request context path
and then "css/" to every stylesheet file and the request context path
and "js/" to every javascript file path. You can
alter those defaults by changing the type definition. In the example
below, the file path for the style type is changed to "/styles/", leaving out
the {context}.
This is safe in request scope, but the group info (from ui.xml)
should only be read once. It is not re-parsed on every request.
Example of use:
Template
---
<html>
<head>
$depends.on('profile').print('
')
</head>
...
Output
------
<html>
<head>
<style rel="stylesheet" type="text/css" href="css/globals.css"/>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/profile.js"></script>
</head>
...
Example tools.xml:
<tools>
<toolbox scope="request">
<tool class="org.apache.velocity.tools.view.beta.UiDependencyTool"/>
</toolbox>
</tools>
Example ui.xml:
<ui>
<type name="style"><![CDATA[<link rel="stylesheet" type="text/css" href="/styles/{file}">]]></type>
<group name="globals">
<file type="style">css/globals.css<file/>
</group>
<group name="jquery">
<file type="script">js/jquery.js<file/>
</group>
<group name="profile">
<needs>globals</needs>
<needs>jquery</needs>
<file type="script">js/profile.js<file/>
</group>
</ui>
- Version:
- $Revision: 16660 $
- Author:
- Nathan Bubna
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classNOTE: This class may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes.protected classNOTE: This class may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes.protected static classNOTE: This class may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes.protected static classNOTE: This class may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes.protected static classNOTE: This class may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final StringFields inherited from class org.apache.velocity.tools.generic.SafeConfig
LOCK_CONFIG_KEY, log, LOGGER_NAME_KEY, SAFE_MODE_KEY, USE_CLASS_LOGGER_KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddDependencies(Map<String, List<String>> fbt) Adds the specified files organized by type to this instance's current dependencies.protected voidAdds a file to this instance's dependencies under the specified type.protected voidconfigure(org.apache.velocity.tools.generic.ValueParser params) Sets a custom {context} variable for the formats to use.protected org.apache.commons.digester3.DigesterCreates theDigesterused byread(String, boolean)to create the group info for this instance out of the specified XML file.protected StringApplies the format string to the given value.Returns the current dependencies of this instance, organized as an ordered map of file types to lists of the required files of that type.getDependencies(String type) Returns theListof files for the specified file type, if any.Retrieves the configured format string for the specified file type.protected UiDependencyTool.GroupNOTE: This method may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes.getGroupDependencies(String name) Returns the dependencies of the specified group, organized as an ordered map of file types to lists of the required files of that type.protected UiDependencyTool.GroupNOTE: This method may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes.Adds all the files required for the specified group, then returns this instance.Adds the specified file to this instance's list of dependencies of the specified type, then returns this instance.print()Formats and prints all the current dependencies of this tool, using a new line in between the printed/formatted files.If the parameter value is a known type, then this will format and print all of this instance's current dependencies of the specified type, using a new line in between the printed/formatted files.Formats and prints all of this instance's current dependencies of the specified type, using the specified delimiter in between the printed/formatted files.Formats and prints all the current dependencies of this tool, using the specified delimiter in between the printed/formatted files.protected voidReads group info out of the specified file and into this instance.voidSets the format string for the specified file type.toString()Returns an empty String to avoid polluting the template output after a successful call toon(String)oron(String,String).Methods inherited from class org.apache.velocity.tools.generic.SafeConfig
configure, getLog, initLogger, isConfigLocked, isSafeMode, setLockConfig, setSafeMode
-
Field Details
-
GROUPS_KEY_SPACE
-
TYPES_KEY_SPACE
-
SOURCE_FILE_KEY
- See Also:
-
DEFAULT_SOURCE_FILE
- See Also:
-
-
Constructor Details
-
UiDependencyTool
public UiDependencyTool()
-
-
Method Details
-
configure
protected void configure(org.apache.velocity.tools.generic.ValueParser params) - Overrides:
configurein classorg.apache.velocity.tools.generic.SafeConfig
-
on
Adds all the files required for the specified group, then returns this instance. If the group name is null or no such group exists, this will return null to indicate the error.- Parameters:
name- group name- Returns:
- this or null
-
on
Adds the specified file to this instance's list of dependencies of the specified type, then returns this instance. If either the type or file are null, this will return null to indicate the error.- Parameters:
type- file typefile- dependency file- Returns:
- this or null
-
print
Formats and prints all the current dependencies of this tool, using a new line in between the printed/formatted files.- Returns:
- all dependencies
-
print
If the parameter value is a known type, then this will format and print all of this instance's current dependencies of the specified type, using a new line in between the printed/formatted files. If the parameter value is NOT a known type, then this will treat it as a delimiter and print all of this instance's dependencies of all types, using the specified value as the delimiter in between the printed/formatted files.- Parameters:
typeOrDelim- type asked for, or delimiter- Returns:
- all dependencies
- See Also:
-
print
Formats and prints all of this instance's current dependencies of the specified type, using the specified delimiter in between the printed/formatted files.- Parameters:
type- file typedelim- lines delimiter- Returns:
- list of dependencies for thie type, formatted using delimiter
-
printAll
-
context
Sets a custom {context} variable for the formats to use.- Parameters:
path- context path- Returns:
- this
-
getFormat
-
setFormat
-
getDependencies
-
getDependencies
-
getGroupDependencies
-
toString
Returns an empty String to avoid polluting the template output after a successful call toon(String)oron(String,String). -
read
Reads group info out of the specified file and into this instance. If the file cannot be found and required is true, then this will throw an IllegalArgumentException. Otherwise, it will simply do nothing. Any checked exceptions during the actual reading of the file are caught and wrapped asRuntimeExceptions.- Parameters:
file- filerequired- whether this file is required
-
createDigester
protected org.apache.commons.digester3.Digester createDigester()Creates theDigesterused byread(String, boolean)to create the group info for this instance out of the specified XML file.- Returns:
- new digester
-
format
Applies the format string to the given value. Currently, this simply replaces '{file}' with the value. If you want to handle more complicated formats, override this method.- Parameters:
format- format stringvalue- dependency file- Returns:
- formatted string
-
getGroup
NOTE: This method may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes.- Parameters:
name- file name- Returns:
- group this file belongs to, or null
-
makeGroup
NOTE: This method may change or disappear w/o warning; don't depend on it unless you're willing to update your code whenever this changes.- Parameters:
name- group name- Returns:
- new group
-
addDependencies
-
addFile
-