added the Velocity renderer (from the new venice-dynamo project) to
Venice; will be used for the post box soon
This commit is contained in:
parent
899863578d
commit
7d3c167733
|
@ -65,3 +65,8 @@ jacl.base=/usr/local/java/jacl1.3.1
|
|||
rhino.base=/usr/local/java/rhino1_5R4_1
|
||||
# rhino.lib=${rhino.base}
|
||||
# rhino.jarfile=js.jar
|
||||
|
||||
# [Location of Velocity 1.4]
|
||||
velocity.base=/usr/local/java/velocity-1.4
|
||||
# velocity.lib=${velocity.base}
|
||||
# velocity.jarfile=velocity-1.4.jar
|
||||
|
|
11
build.xml
11
build.xml
|
@ -79,6 +79,11 @@
|
|||
<property name="rhino.lib" value="${rhino.base}"/>
|
||||
<property name="rhino.jarfile" value="js.jar"/>
|
||||
|
||||
<!-- [Location of Velocity 1.4] -->
|
||||
<property name="velocity.base" value="../velocity"/>
|
||||
<property name="velocity.lib" value="${velocity.base}"/>
|
||||
<property name="velocity.jarfile" value="velocity-1.4.jar"/>
|
||||
|
||||
<!-- ============================================================================
|
||||
Path references
|
||||
============================================================================ -->
|
||||
|
@ -90,6 +95,7 @@
|
|||
<fileset dir="${regexp.lib}" includes="${regexp.jarfile}"/>
|
||||
<fileset dir="${log4j.lib}" includes="${log4j.jarfile}"/>
|
||||
<fileset dir="${bsf.lib}" includes="${bsf.jarfile}"/>
|
||||
<fileset dir="${velocity.lib}" includes="${velocity.jarfile}"/>
|
||||
</path>
|
||||
|
||||
<!-- ============================================================================
|
||||
|
@ -136,6 +142,7 @@
|
|||
<mkdir dir="${deploy.home}/WEB-INF"/>
|
||||
<mkdir dir="${deploy.home}/WEB-INF/scripts"/>
|
||||
<mkdir dir="${deploy.home}/WEB-INF/rpcscripts"/>
|
||||
<mkdir dir="${deploy.home}/WEB-INF/templates"/>
|
||||
</target>
|
||||
|
||||
<!-- ============================================================================
|
||||
|
@ -153,6 +160,9 @@
|
|||
<copy todir="${deploy.home}/WEB-INF/rpcscripts"> <!-- this copies all the RPC scripts -->
|
||||
<fileset dir="rpcscripts"/>
|
||||
</copy>
|
||||
<copy todir="${deploy.home}/WEB-INF/templates"> <!-- this copies all the RPC scripts -->
|
||||
<fileset dir="templates"/>
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
<!-- ============================================================================
|
||||
|
@ -176,6 +186,7 @@
|
|||
<fileset dir="${regexp.lib}" includes="${regexp.jarfile}"/>
|
||||
<fileset dir="${log4j.lib}" includes="${log4j.jarfile}"/>
|
||||
<fileset dir="${bsf.lib}" includes="${bsf.jarfile}"/>
|
||||
<fileset dir="${velocity.lib}" includes="${velocity.jarfile}"/>
|
||||
<!-- <fileset dir="${jacl.lib}" includes="${jacl.jarfile}, ${jacl.tcljarfile}"/> -->
|
||||
<fileset dir="${rhino.lib}" includes="${rhino.jarfile}"/>
|
||||
<fileset dir="lib" includes="*.jar"/>
|
||||
|
|
|
@ -34,6 +34,9 @@
|
|||
<!-- The temporary directory for script compilation, relative to the application root. -->
|
||||
<temp-dir>WEB-INF/temp</temp-dir>
|
||||
|
||||
<!-- The directory for Velocity templates, relative to the application root. -->
|
||||
<template-dir>WEB-INF/templates</template-dir>
|
||||
|
||||
</file-paths>
|
||||
|
||||
<!-- Paths of resources referred to by their URIs in the user interface. -->
|
||||
|
|
|
@ -49,24 +49,25 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
private static Logger logger = Logger.getLogger(RootConfig.class);
|
||||
|
||||
private static final Map link_types;
|
||||
private static final Map s_link_types;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private String script_directory; // the scripts directory
|
||||
private String rpc_script_directory; // the RPC scripts directory
|
||||
private String temp_directory; // the temporary directory
|
||||
private String image_path; // the images path
|
||||
private String static_path; // the static files path
|
||||
private String external_static_path; // the external static files path
|
||||
private String format_path; // the JSP formatter path
|
||||
private String blank_photo_path; // the "photo not available" path
|
||||
private Properties properties; // the property list
|
||||
private String frame_jsp_name; // the name of the frame JSP
|
||||
private String site_title; // the title for the site
|
||||
private String m_script_directory; // the scripts directory
|
||||
private String m_rpc_script_directory; // the RPC scripts directory
|
||||
private String m_temp_directory; // the temporary directory
|
||||
private String m_template_directory; // the Velocity templates directory
|
||||
private String m_image_path; // the images path
|
||||
private String m_static_path; // the static files path
|
||||
private String m_external_static_path; // the external static files path
|
||||
private String m_format_path; // the JSP formatter path
|
||||
private String m_blank_photo_path; // the "photo not available" path
|
||||
private Properties m_properties; // the property list
|
||||
private String m_frame_jsp_name; // the name of the frame JSP
|
||||
private String m_site_title; // the title for the site
|
||||
private File stylesheet; // the stylesheet file reference
|
||||
private long stylesheet_lastchange; // when was the stylesheet last changed?
|
||||
private boolean smart_tags; // do we want to allow M$ IE6 Smart Tags?
|
||||
|
@ -74,23 +75,23 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
private String site_logo_href = null; // the HREF to surround the site logo with
|
||||
private int site_logo_href_type = -1; // the type of the above href
|
||||
private String venice_logo_tag; // the HTML snippet containing the Venice logo
|
||||
private String page_icon_tags = null; // the HTML snippet containing the page icons
|
||||
private String font_face; // the default font face name
|
||||
private String base_font; // the default <BASEFONT> tag
|
||||
private String m_page_icon_tags = null; // the HTML snippet containing the page icons
|
||||
private String m_font_face; // the default font face name
|
||||
private String m_base_font; // the default <BASEFONT> tag
|
||||
private Map m_font_sizes; // the stock font sizes
|
||||
private ColorPalette colors; // all the colors
|
||||
private ColorPalette m_colors; // all the colors
|
||||
private boolean html_comments; // do we want to embed HTML comments?
|
||||
private ButtonHolder buttons; // the button definitions
|
||||
private String[] content_hdr; // the content header parts
|
||||
private Remapper remapper; // the URL remapper
|
||||
private int rpc_timeout = 60; // RPC session timeout
|
||||
private List xmlrpc_methods; // the list of XML-RPC methods
|
||||
private StockMessages stock_messages; // the stock messages
|
||||
private Map menus; // the menus
|
||||
private int m_rpc_timeout = 60; // RPC session timeout
|
||||
private List m_xmlrpc_methods; // the list of XML-RPC methods
|
||||
private StockMessages m_stock_messages; // the stock messages
|
||||
private Map m_menus; // the menus
|
||||
private Map m_menu_templates; // the menu templates
|
||||
private DialogManager dialogs; // the dialog manager
|
||||
private SideBoxManager sideboxes; // the sidebox manager
|
||||
private CommunityMenuFactory comm_menu_fact; // the community menu factory
|
||||
private DialogManager m_dialogs; // the dialog manager
|
||||
private SideBoxManager m_sideboxes; // the sidebox manager
|
||||
private CommunityMenuFactory m_comm_menu_fact; // the community menu factory
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
|
@ -120,84 +121,47 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
services_config = root_file_path + services_config;
|
||||
|
||||
// Get the full pathname of the script directory.
|
||||
script_directory = loader.configGetSubElementText(sect_h,"script-dir");
|
||||
if (!(script_directory.startsWith("/")))
|
||||
script_directory = root_file_path + script_directory;
|
||||
if (!(script_directory.endsWith("/")))
|
||||
script_directory = script_directory + "/";
|
||||
|
||||
// Test to make sure the script directory exists.
|
||||
File t_file = new File(script_directory);
|
||||
if (!(t_file.isDirectory()))
|
||||
{ // script directory does not exist - throw exception
|
||||
logger.fatal("<script-dir/> directory \"" + script_directory + "\" is not a directory");
|
||||
throw new ConfigException("specified <script-dir/> is not a directory",
|
||||
sect_h.getSubElement("script-dir"));
|
||||
|
||||
} // end if
|
||||
m_script_directory = getRelativeDirectory(sect_h,"script-dir",root_file_path,true);
|
||||
|
||||
// Get the full pathname of the RPC script directory.
|
||||
rpc_script_directory = loader.configGetSubElementText(sect_h,"rpc-script-dir");
|
||||
if (!(rpc_script_directory.startsWith("/")))
|
||||
rpc_script_directory = root_file_path + rpc_script_directory;
|
||||
if (!(rpc_script_directory.endsWith("/")))
|
||||
rpc_script_directory = rpc_script_directory + "/";
|
||||
|
||||
// Test to make sure the RPC script directory exists.
|
||||
t_file = new File(rpc_script_directory);
|
||||
if (!(t_file.isDirectory()))
|
||||
{ // script directory does not exist - throw exception
|
||||
logger.fatal("<rpc-script-dir/> directory \"" + rpc_script_directory + "\" is not a directory");
|
||||
throw new ConfigException("specified <rpc-script-dir/> is not a directory",
|
||||
sect_h.getSubElement("rpc-script-dir"));
|
||||
|
||||
} // end if
|
||||
m_rpc_script_directory = getRelativeDirectory(sect_h,"rpc-script-dir",root_file_path,true);
|
||||
|
||||
// Get the full pathname of the temporary directory.
|
||||
temp_directory = loader.configGetSubElementText(sect_h,"temp-dir");
|
||||
if (!(temp_directory.startsWith("/")))
|
||||
temp_directory = root_file_path + temp_directory;
|
||||
m_temp_directory = getRelativeDirectory(sect_h,"temp-dir",root_file_path,false);
|
||||
|
||||
// Test to make sure the temporary directory exists.
|
||||
t_file = new File(temp_directory);
|
||||
if (!(t_file.isDirectory()))
|
||||
{ // temporary directory does not exist - throw exception
|
||||
logger.fatal("<temp-dir/> directory \"" + temp_directory + "\" is not a directory");
|
||||
throw new ConfigException("specified <temp-dir/> is not a directory",
|
||||
sect_h.getSubElement("temp-dir"));
|
||||
|
||||
} // end if
|
||||
// Get the full pathname of the Velocity template directory.
|
||||
m_template_directory = getRelativeDirectory(sect_h,"template-dir",root_file_path,false);
|
||||
|
||||
// Get the <uri-paths/> section.
|
||||
sect = loader.configGetSubSection(root_h,"uri-paths");
|
||||
sect_h = new DOMElementHelper(sect);
|
||||
|
||||
// Get the images path.
|
||||
image_path = loader.configGetSubElementText(sect_h,"image");
|
||||
if (!(image_path.endsWith("/")))
|
||||
image_path = image_path + "/";
|
||||
m_image_path = loader.configGetSubElementText(sect_h,"image");
|
||||
if (!(m_image_path.endsWith("/")))
|
||||
m_image_path = m_image_path + "/";
|
||||
|
||||
// Get the static path.
|
||||
static_path = loader.configGetSubElementText(sect_h,"static");
|
||||
if (!(static_path.endsWith("/")))
|
||||
static_path = static_path + "/";
|
||||
m_static_path = loader.configGetSubElementText(sect_h,"static");
|
||||
if (!(m_static_path.endsWith("/")))
|
||||
m_static_path = m_static_path + "/";
|
||||
|
||||
// Get the external static path.
|
||||
external_static_path = loader.configGetSubElementText(sect_h,"external-static");
|
||||
if (!(external_static_path.endsWith("/")))
|
||||
external_static_path = external_static_path + "/";
|
||||
m_external_static_path = loader.configGetSubElementText(sect_h,"external-static");
|
||||
if (!(m_external_static_path.endsWith("/")))
|
||||
m_external_static_path = m_external_static_path + "/";
|
||||
|
||||
// Get the format JSP path.
|
||||
format_path = loader.configGetSubElementText(sect_h,"format-jsp");
|
||||
if (!(format_path.endsWith("/")))
|
||||
format_path = format_path + "/";
|
||||
m_format_path = loader.configGetSubElementText(sect_h,"format-jsp");
|
||||
if (!(m_format_path.endsWith("/")))
|
||||
m_format_path = m_format_path + "/";
|
||||
|
||||
// Get the pathname of the "photo not available" image.
|
||||
blank_photo_path = loader.configGetSubElementText(sect_h,"photo-not-avail");
|
||||
m_blank_photo_path = loader.configGetSubElementText(sect_h,"photo-not-avail");
|
||||
Element sect1 = sect_h.getSubElement("photo-not-avail");
|
||||
DOMElementHelper sect1_h = new DOMElementHelper(sect1);
|
||||
if (sect1_h.hasAttribute("fixup"))
|
||||
blank_photo_path = image_path + blank_photo_path;
|
||||
m_blank_photo_path = m_image_path + m_blank_photo_path;
|
||||
|
||||
// Load the default properties from the resources.
|
||||
Properties defprops = new Properties();
|
||||
|
@ -212,7 +176,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
} // end catch
|
||||
|
||||
properties = new Properties(defprops); // create the actual properties
|
||||
m_properties = new Properties(defprops); // create the actual properties
|
||||
|
||||
// Get the <properties/> section.
|
||||
sect = loader.configGetSubSection(root_h,"properties");
|
||||
|
@ -229,7 +193,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
if ((n.getNodeType()==Node.ELEMENT_NODE) && n.getNodeName().equals("property"))
|
||||
{ // add the property value to the map
|
||||
sect1 = (Element)n;
|
||||
properties.setProperty(loader.configGetAttribute(sect1,"name"),loader.configGetText(sect1));
|
||||
m_properties.setProperty(loader.configGetAttribute(sect1,"name"),loader.configGetText(sect1));
|
||||
|
||||
} // end if
|
||||
|
||||
|
@ -243,10 +207,10 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
// Get the name of the frame JSP.
|
||||
String tmp = loader.configGetSubElementText(sect_h,"jsp-name");
|
||||
frame_jsp_name = format_path + tmp;
|
||||
m_frame_jsp_name = m_format_path + tmp;
|
||||
|
||||
// Get the site title.
|
||||
site_title = sect_h.getSubElementText("site-title");
|
||||
m_site_title = sect_h.getSubElementText("site-title");
|
||||
|
||||
// Get the base font size.
|
||||
Integer bf_size = sect_h.getSubElementInt("basefont-size");
|
||||
|
@ -285,7 +249,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
sect1 = loader.configGetSubSection(sect_h,"site-logo");
|
||||
sect1_h = new DOMElementHelper(sect1);
|
||||
StringBuffer tmpbuf = new StringBuffer("<img src=\"");
|
||||
tmpbuf.append(loader.configGetText(sect1_h)).append("\" alt=\"").append(site_title).append("\" width=\"");
|
||||
tmpbuf.append(loader.configGetText(sect1_h)).append("\" alt=\"").append(m_site_title).append("\" width=\"");
|
||||
|
||||
// Get the logo width.
|
||||
Integer itmp = sect1_h.getAttributeInt("width");
|
||||
|
@ -318,7 +282,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
{ // save off the HREF, get the type of the link
|
||||
site_logo_href = tmp;
|
||||
tmp = loader.configGetAttribute(sect1,"type");
|
||||
itmp = (Integer)(link_types.get(tmp));
|
||||
itmp = (Integer)(s_link_types.get(tmp));
|
||||
if (itmp==null)
|
||||
{ // this is not good!
|
||||
logger.fatal("<site-logo/> type=\"" + tmp + "\" is not a valid value");
|
||||
|
@ -336,7 +300,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
itmp = new Integer(100);
|
||||
int tmp_width = (VENICE_IMAGE_WIDTH * itmp.intValue()) / 100;
|
||||
int tmp_height = (VENICE_IMAGE_HEIGHT * itmp.intValue()) / 100;
|
||||
venice_logo_tag = "<a href=\"" + VENICE_URL + "\" target=\"_blank\"><img src=\"" + image_path
|
||||
venice_logo_tag = "<a href=\"" + VENICE_URL + "\" target=\"_blank\"><img src=\"" + m_image_path
|
||||
+ VENICE_IMAGE + "\" alt=\"" + VENICE_ALT + "\" width=\"" + tmp_width + "\" height=\""
|
||||
+ tmp_height + "\" border=\"0\" hspace=\"0\" vspace=\"0\" /></a>";
|
||||
|
||||
|
@ -362,17 +326,17 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
} // end if
|
||||
|
||||
if (page_icon_1==null)
|
||||
page_icon_tags = page_icon_2; // just use "shortcut icon"
|
||||
m_page_icon_tags = page_icon_2; // just use "shortcut icon"
|
||||
else
|
||||
page_icon_tags = page_icon_1 + page_icon_2; // use both tags
|
||||
m_page_icon_tags = page_icon_1 + page_icon_2; // use both tags
|
||||
|
||||
// Get the <rendering/> section.
|
||||
sect = loader.configGetSubSection(root_h,"rendering");
|
||||
sect_h = new DOMElementHelper(sect);
|
||||
|
||||
// Get the default font face name.
|
||||
font_face = loader.configGetSubElementText(sect_h,"font");
|
||||
base_font = "<basefont face=\"" + font_face + "\" size=\"" + bf_size.intValue() + "\" />";
|
||||
m_font_face = loader.configGetSubElementText(sect_h,"font");
|
||||
m_base_font = "<basefont face=\"" + m_font_face + "\" size=\"" + bf_size.intValue() + "\" />";
|
||||
|
||||
// Load the stock font sizes.
|
||||
sect1 = sect_h.getSubElement("font-sizes");
|
||||
|
@ -404,7 +368,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
m_font_sizes = Collections.EMPTY_MAP;
|
||||
|
||||
// Load all the colors.
|
||||
colors = new ColorPalette(loader.configGetSubSection(sect_h,"colors"));
|
||||
m_colors = new ColorPalette(loader.configGetSubSection(sect_h,"colors"));
|
||||
|
||||
// Set up the content header array.
|
||||
content_hdr = new String[5];
|
||||
|
@ -419,7 +383,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
// Get the "Buttons" section and initialize it.
|
||||
sect1 = loader.configGetSubSection(sect_h,"buttons");
|
||||
buttons = new ButtonHolder(sect1,image_path);
|
||||
buttons = new ButtonHolder(sect1,m_image_path);
|
||||
|
||||
// Get the <remapper/> section.
|
||||
sect = loader.configGetSubSection(root_h,"remapper");
|
||||
|
@ -437,8 +401,8 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
Integer xtmp = sect_h.getSubElementInt("session-timeout");
|
||||
if (xtmp==null)
|
||||
throw new ConfigException("<session-timeout/> value is not an integer",sect);
|
||||
rpc_timeout = xtmp.intValue();
|
||||
if (rpc_timeout<=0)
|
||||
m_rpc_timeout = xtmp.intValue();
|
||||
if (m_rpc_timeout<=0)
|
||||
throw new ConfigException("<session-timeout/> value is invalid",sect);
|
||||
|
||||
} // end if
|
||||
|
@ -460,11 +424,11 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
} // end for
|
||||
|
||||
if (tmp_alist.isEmpty())
|
||||
xmlrpc_methods = Collections.EMPTY_LIST;
|
||||
m_xmlrpc_methods = Collections.EMPTY_LIST;
|
||||
else
|
||||
{ // save off the methods list
|
||||
tmp_alist.trimToSize();
|
||||
xmlrpc_methods = Collections.unmodifiableList(tmp_alist);
|
||||
m_xmlrpc_methods = Collections.unmodifiableList(tmp_alist);
|
||||
|
||||
} // end else
|
||||
|
||||
|
@ -472,7 +436,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
sect = loader.configGetSubSection(root_h,"messages");
|
||||
|
||||
// Initialize the stock messages list.
|
||||
stock_messages = new StockMessages(sect);
|
||||
m_stock_messages = new StockMessages(sect);
|
||||
|
||||
// Get the <menu-definitions/> section.
|
||||
sect = loader.configGetSubSection(root_h,"menu-definitions");
|
||||
|
@ -495,9 +459,9 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
} // end for
|
||||
|
||||
if (tmap.isEmpty())
|
||||
menus = Collections.EMPTY_MAP;
|
||||
m_menus = Collections.EMPTY_MAP;
|
||||
else
|
||||
menus = Collections.unmodifiableMap(tmap);
|
||||
m_menus = Collections.unmodifiableMap(tmap);
|
||||
|
||||
// Get the <menu-template-definitions/> section.
|
||||
sect = loader.configGetSubSection(root_h,"menu-template-definitions");
|
||||
|
@ -528,7 +492,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
sect = loader.configGetSubSection(root_h,"dialog-definitions");
|
||||
|
||||
// Initialize the dialog manager.
|
||||
dialogs = new DialogManager(this,sect);
|
||||
m_dialogs = new DialogManager(this,sect);
|
||||
|
||||
// done with the ui-config.xml file
|
||||
// Load up the sidebox-config.xml file.
|
||||
|
@ -536,7 +500,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
root = loader.configGetRootElement(doc,"sidebox-config");
|
||||
|
||||
// Create the sidebox manager.
|
||||
sideboxes = new SideBoxManager(root);
|
||||
m_sideboxes = new SideBoxManager(root);
|
||||
|
||||
// done with the sidebox-config.xml file
|
||||
// Load up the services-config.xml file.
|
||||
|
@ -545,7 +509,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
root_h = new DOMElementHelper(root);
|
||||
|
||||
// Get the community section and pass it to the CommunityMenuFactory.
|
||||
comm_menu_fact = new CommunityMenuFactory(root_h.getSubElement("community"),this);
|
||||
m_comm_menu_fact = new CommunityMenuFactory(root_h.getSubElement("community"),this);
|
||||
|
||||
} // end constructor
|
||||
|
||||
|
@ -554,6 +518,32 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static final String getRelativeDirectory(DOMElementHelper sect_h, String tagname, String root_file_path,
|
||||
boolean addslash) throws ConfigException
|
||||
{
|
||||
XMLLoader loader = XMLLoader.get();
|
||||
|
||||
// Get the full pathname of the directory.
|
||||
String rc = loader.configGetSubElementText(sect_h,tagname);
|
||||
if (!(rc.startsWith("/")))
|
||||
rc = root_file_path + rc;
|
||||
if (addslash && !(rc.endsWith("/")))
|
||||
rc += "/";
|
||||
|
||||
// Test to make sure the directory exists.
|
||||
File tmp = new File(rc);
|
||||
if (!(tmp.isDirectory()))
|
||||
{ // directory does not exist, throw exception
|
||||
logger.fatal("<" + tagname + "/> directory \"" + rc + "\" is not a directory");
|
||||
throw new ConfigException("specified <" + tagname + "/> is not a directory",
|
||||
sect_h.getSubElement(tagname));
|
||||
|
||||
} // end if
|
||||
|
||||
return rc;
|
||||
|
||||
} // end getRelativeDirectory
|
||||
|
||||
private final String mapFontSize(String sz)
|
||||
{
|
||||
String rc = (String)(m_font_sizes.get(sz));
|
||||
|
@ -568,64 +558,70 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
public final String getTemporaryPath()
|
||||
{
|
||||
return temp_directory;
|
||||
return m_temp_directory;
|
||||
|
||||
} // end getTemporaryPath
|
||||
|
||||
public final String getVelocityTemplateDirectory()
|
||||
{
|
||||
return m_template_directory;
|
||||
|
||||
} // end getVelocityTemplateDirectory
|
||||
|
||||
public final String getImagePath(String img)
|
||||
{
|
||||
return image_path + img;
|
||||
return m_image_path + img;
|
||||
|
||||
} // end getImagePath
|
||||
|
||||
public final String getStaticPath(String s)
|
||||
{
|
||||
return static_path + s;
|
||||
return m_static_path + s;
|
||||
|
||||
} // end getImagePath
|
||||
|
||||
public final String getExternalStaticPath(String s)
|
||||
{
|
||||
return external_static_path + s;
|
||||
return m_external_static_path + s;
|
||||
|
||||
} // end getExternalStaticPath
|
||||
|
||||
public final String getFormatJSPPath(String jsp)
|
||||
{
|
||||
return format_path + jsp;
|
||||
return m_format_path + jsp;
|
||||
|
||||
} // end getFormatJSPPath
|
||||
|
||||
public final String getScriptPath(String sname)
|
||||
{
|
||||
return script_directory + sname;
|
||||
return m_script_directory + sname;
|
||||
|
||||
} // end getScriptPath
|
||||
|
||||
public final String getRPCScriptPath(String sname)
|
||||
{
|
||||
return rpc_script_directory + sname;
|
||||
return m_rpc_script_directory + sname;
|
||||
|
||||
} // end getRPCScriptPath
|
||||
|
||||
public final String getFrameJSPName()
|
||||
{
|
||||
return frame_jsp_name;
|
||||
return m_frame_jsp_name;
|
||||
|
||||
} // end getFrameJSPName
|
||||
|
||||
public final String getPageTitle(String t)
|
||||
{
|
||||
if (site_title==null)
|
||||
if (m_site_title==null)
|
||||
return t;
|
||||
else
|
||||
return t + " - " + site_title;
|
||||
return t + " - " + m_site_title;
|
||||
|
||||
} // end getPageTitle
|
||||
|
||||
public final String getBaseFontTag()
|
||||
{
|
||||
return base_font;
|
||||
return m_base_font;
|
||||
|
||||
} // end getBaseFontTag
|
||||
|
||||
|
@ -659,36 +655,36 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
// Set up the replacements map to replace the various parameters.
|
||||
HashMap vars = new HashMap();
|
||||
vars.put("font",font_face);
|
||||
colors.fillParameterMap("color.",vars);
|
||||
vars.put("font",m_font_face);
|
||||
m_colors.fillParameterMap("color.",vars);
|
||||
return StringUtil.replaceAllVariables(raw_data.toString(),vars);
|
||||
|
||||
} // end loadStyleSheetData
|
||||
|
||||
public final String getColor(int selector)
|
||||
{
|
||||
return colors.getColor(selector);
|
||||
return m_colors.getColor(selector);
|
||||
|
||||
} // end getColor
|
||||
|
||||
public final String getColor(String name)
|
||||
{
|
||||
return colors.getColor(name);
|
||||
return m_colors.getColor(name);
|
||||
|
||||
} // end getColor
|
||||
|
||||
public final String getFontTag(int colorsel, int size)
|
||||
{
|
||||
return "<font face=\"" + font_face + "\" color=\"" + colors.getColor(colorsel) + "\" size=\"" + size + "\">";
|
||||
return "<font face=\"" + m_font_face + "\" color=\"" + m_colors.getColor(colorsel) + "\" size=\"" + size + "\">";
|
||||
|
||||
} // end getFontTag
|
||||
|
||||
public final String getFontTag(String color, int size)
|
||||
{
|
||||
StringBuffer rc = new StringBuffer("<font face=\"");
|
||||
rc.append(font_face).append("\" size=\"").append(size).append("\"");
|
||||
rc.append(m_font_face).append("\" size=\"").append(size).append("\"");
|
||||
if (color!=null)
|
||||
rc.append(" color=\"").append(colors.getColor(color)).append("\"");
|
||||
rc.append(" color=\"").append(m_colors.getColor(color)).append("\"");
|
||||
rc.append('>');
|
||||
return rc.toString();
|
||||
|
||||
|
@ -697,7 +693,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
public final String getFontTag(int colorsel, String size)
|
||||
{
|
||||
StringBuffer rc = new StringBuffer("<font face=\"");
|
||||
rc.append(font_face).append("\" color=\"").append(colors.getColor(colorsel)).append('\"');
|
||||
rc.append(m_font_face).append("\" color=\"").append(m_colors.getColor(colorsel)).append('\"');
|
||||
if (size!=null)
|
||||
rc.append(" size=\"").append(mapFontSize(size)).append('\"');
|
||||
rc.append('>');
|
||||
|
@ -708,9 +704,9 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
public final String getFontTag(String color, String size)
|
||||
{
|
||||
StringBuffer rc = new StringBuffer("<font face=\"");
|
||||
rc.append(font_face).append("\"");
|
||||
rc.append(m_font_face).append("\"");
|
||||
if (color!=null)
|
||||
rc.append(" color=\"").append(colors.getColor(color)).append("\"");
|
||||
rc.append(" color=\"").append(m_colors.getColor(color)).append("\"");
|
||||
if (size!=null)
|
||||
rc.append(" size=\"").append(mapFontSize(size)).append('\"');
|
||||
rc.append('>');
|
||||
|
@ -750,20 +746,20 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
public final int convertLinkType(String str)
|
||||
{
|
||||
Integer tmp = (Integer)(link_types.get(str.trim().toLowerCase()));
|
||||
Integer tmp = (Integer)(s_link_types.get(str.trim().toLowerCase()));
|
||||
return (tmp==null) ? -1 : tmp.intValue();
|
||||
|
||||
} // end convertLinkType
|
||||
|
||||
public final String getStockMessage(String key)
|
||||
{
|
||||
return stock_messages.get(key);
|
||||
return m_stock_messages.get(key);
|
||||
|
||||
} // end getStockMessage
|
||||
|
||||
public final String getStockMessage(String key, Map vars)
|
||||
{
|
||||
return stock_messages.getReplace(key,vars);
|
||||
return m_stock_messages.getReplace(key,vars);
|
||||
|
||||
} // end getStockMessage
|
||||
|
||||
|
@ -781,7 +777,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
public final String getPageIconTags()
|
||||
{
|
||||
return page_icon_tags;
|
||||
return m_page_icon_tags;
|
||||
|
||||
} // end getPageIconTags
|
||||
|
||||
|
@ -798,13 +794,13 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
public final MenuComponent getMenu(String name)
|
||||
{
|
||||
return (MenuComponent)(menus.get(name));
|
||||
return (MenuComponent)(m_menus.get(name));
|
||||
|
||||
} // end getMenu
|
||||
|
||||
public final MenuComponent getMenu(String name, Map vars)
|
||||
{
|
||||
return new Menu((Menu)(menus.get(name)),vars);
|
||||
return new Menu((Menu)(m_menus.get(name)),vars);
|
||||
|
||||
} // end getMenu
|
||||
|
||||
|
@ -828,63 +824,63 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
|
||||
public final Dialog getDialog(String name)
|
||||
{
|
||||
return dialogs.getDialog(name);
|
||||
return m_dialogs.getDialog(name);
|
||||
|
||||
} // end getDialog
|
||||
|
||||
public final SideBoxManager getSideBoxManager()
|
||||
{
|
||||
return sideboxes;
|
||||
return m_sideboxes;
|
||||
|
||||
} // end getSideBoxManager
|
||||
|
||||
public final String getBlankPhoto()
|
||||
{
|
||||
return blank_photo_path;
|
||||
return m_blank_photo_path;
|
||||
|
||||
} // end getBlankPhoto
|
||||
|
||||
public final String getProperty(String name)
|
||||
{
|
||||
return properties.getProperty(name);
|
||||
return m_properties.getProperty(name);
|
||||
|
||||
} // end getProperty
|
||||
|
||||
public final String getProperty(String name, String default_val)
|
||||
{
|
||||
return properties.getProperty(name,default_val);
|
||||
return m_properties.getProperty(name,default_val);
|
||||
|
||||
} // end getProperty
|
||||
|
||||
public final CommunityMenu getCommunityMenu(CommunityContext comm)
|
||||
{
|
||||
return comm_menu_fact.createMenu(comm);
|
||||
return m_comm_menu_fact.createMenu(comm);
|
||||
|
||||
} // end getCommunityMenu
|
||||
|
||||
public final String getDefaultServletAddress(RequestInput inp, CommunityContext comm)
|
||||
{
|
||||
return comm_menu_fact.getDefaultServletAddress(inp,comm);
|
||||
return m_comm_menu_fact.getDefaultServletAddress(inp,comm);
|
||||
|
||||
} // end getDefaultServletAddress
|
||||
|
||||
public final int getRpcSessionTimeout()
|
||||
{
|
||||
return rpc_timeout;
|
||||
return m_rpc_timeout;
|
||||
|
||||
} // end getRpcSessionTimeout
|
||||
|
||||
public final List getXmlRpcMethods()
|
||||
{
|
||||
return xmlrpc_methods;
|
||||
return m_xmlrpc_methods;
|
||||
|
||||
} // end getXmlRpcMethods
|
||||
|
||||
public final void addFormatParams(Map map)
|
||||
{
|
||||
// add font and colors first
|
||||
map.put("font",font_face);
|
||||
colors.fillParameterMap("color.",map);
|
||||
map.put("font",m_font_face);
|
||||
m_colors.fillParameterMap("color.",map);
|
||||
|
||||
// now add font sizes
|
||||
for (Iterator it=m_font_sizes.entrySet().iterator(); it.hasNext(); )
|
||||
|
@ -908,7 +904,7 @@ public class RootConfig implements LinkTypes, ColorSelectors
|
|||
m.put("servlet",new Integer(SERVLET));
|
||||
m.put("frame",new Integer(FRAME));
|
||||
m.put("fullservlet",new Integer(FULLSERVLET));
|
||||
link_types = Collections.unmodifiableMap(m);
|
||||
s_link_types = Collections.unmodifiableMap(m);
|
||||
|
||||
} // end static initializer
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ public interface HTMLRendering extends ColorSelectors, LinkTypes
|
|||
|
||||
public String formatURL(String url, int type);
|
||||
|
||||
public String formatURL(String url, String type);
|
||||
|
||||
public String formatDate(Date date);
|
||||
|
||||
public String getFontTag(int colorsel, int size);
|
||||
|
|
|
@ -31,6 +31,7 @@ import com.silverwrist.venice.ui.helpers.ErrorBox;
|
|||
import com.silverwrist.venice.ui.helpers.ThrowableContent;
|
||||
import com.silverwrist.venice.ui.script.ScriptingException;
|
||||
import com.silverwrist.venice.ui.script.ScriptManagerContainer;
|
||||
import com.silverwrist.venice.ui.velocity.VelocityRenderer;
|
||||
|
||||
public abstract class BaseServlet extends HttpServlet
|
||||
{
|
||||
|
@ -415,6 +416,7 @@ public abstract class BaseServlet extends HttpServlet
|
|||
} // end if
|
||||
|
||||
ScriptManagerContainer.initialize(rootconf,ctxt); // make sure container initialized
|
||||
VelocityRenderer.init(ctxt,rootconf); // initialize Velocity renderer
|
||||
BrowserDatabase.get(ctxt); // initialize browser database
|
||||
|
||||
} // end synchronized block
|
||||
|
|
|
@ -40,6 +40,7 @@ import com.silverwrist.venice.ui.menus.Menu;
|
|||
import com.silverwrist.venice.ui.menus.MenuComponent;
|
||||
import com.silverwrist.venice.ui.menus.MenuTemplate;
|
||||
import com.silverwrist.venice.ui.script.*;
|
||||
import com.silverwrist.venice.ui.velocity.*;
|
||||
import com.silverwrist.venice.util.XMLLoader;
|
||||
|
||||
public class RequestImpl implements RequestInput
|
||||
|
@ -212,6 +213,22 @@ public class RequestImpl implements RequestInput
|
|||
|
||||
} // end if
|
||||
|
||||
if (c instanceof ContentVelocity)
|
||||
{ // render the object
|
||||
VelocityRenderer vr = VelocityRenderer.get(ctxt);
|
||||
vr.render((ContentVelocity)c,this,null);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
if (c instanceof ContentVelocityOwnTemplate)
|
||||
{ // render the object
|
||||
VelocityRenderer vr = VelocityRenderer.get(ctxt);
|
||||
vr.render((ContentVelocityOwnTemplate)c,this,null);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
// if nothing else...
|
||||
this.write(c.toString());
|
||||
|
||||
|
@ -254,6 +271,22 @@ public class RequestImpl implements RequestInput
|
|||
|
||||
} // end if
|
||||
|
||||
if (c instanceof ContentVelocity)
|
||||
{ // render the object
|
||||
VelocityRenderer vr = VelocityRenderer.get(ctxt);
|
||||
vr.render((ContentVelocity)c,this,out);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
if (c instanceof ContentVelocityOwnTemplate)
|
||||
{ // render the object
|
||||
VelocityRenderer vr = VelocityRenderer.get(ctxt);
|
||||
vr.render((ContentVelocityOwnTemplate)c,this,out);
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
this.output(c); // fall back in ContentJSP case
|
||||
|
||||
} // end output
|
||||
|
@ -2046,10 +2079,10 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private RequestImpl req; // request we're attached to
|
||||
private RootConfig config; // configuration data
|
||||
private DateFormat display_date = null; // format to use for displaying dates
|
||||
private DateFormat activity_time = null; // format to use for activity string times
|
||||
private RequestImpl m_req; // request we're attached to
|
||||
private RootConfig m_config; // configuration data
|
||||
private DateFormat m_display_date = null; // format to use for displaying dates
|
||||
private DateFormat m_activity_time = null; // format to use for activity string times
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
|
@ -2058,8 +2091,8 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
|
||||
HTMLRenderingImpl(RequestImpl req, RootConfig config)
|
||||
{
|
||||
this.req = req;
|
||||
this.config = config;
|
||||
this.m_req = req;
|
||||
this.m_config = config;
|
||||
|
||||
} // end constructor
|
||||
|
||||
|
@ -2070,19 +2103,19 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
|
||||
public String getColor(int selector)
|
||||
{
|
||||
return config.getColor(selector);
|
||||
return m_config.getColor(selector);
|
||||
|
||||
} // end getColor
|
||||
|
||||
public String getColor(String name)
|
||||
{
|
||||
return config.getColor(name);
|
||||
return m_config.getColor(name);
|
||||
|
||||
} // end getColor
|
||||
|
||||
public boolean useHTMLComments()
|
||||
{
|
||||
return config.useHTMLComments();
|
||||
return m_config.useHTMLComments();
|
||||
|
||||
} // end useHTMLComments
|
||||
|
||||
|
@ -2091,108 +2124,118 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
if (type==ABSOLUTE)
|
||||
return url;
|
||||
else if (type==SERVLET)
|
||||
return req.encodeServletPath(url);
|
||||
return m_req.encodeServletPath(url);
|
||||
else if (type==FRAME)
|
||||
return req.encodeServletPath("frame/" + url);
|
||||
return m_req.encodeServletPath("frame/" + url);
|
||||
else if (type==FULLSERVLET)
|
||||
return req.expandServletPath(url,true);
|
||||
return m_req.expandServletPath(url,true);
|
||||
else
|
||||
throw new IndexOutOfBoundsException("invalid format type index for formatURL");
|
||||
|
||||
} // end formatURL
|
||||
|
||||
public String formatURL(String url, String type)
|
||||
{
|
||||
int ityp = m_config.convertLinkType(type);
|
||||
if (ityp<0)
|
||||
return url;
|
||||
else
|
||||
return formatURL(url,ityp);
|
||||
|
||||
} // end formatURL
|
||||
|
||||
public String formatDate(Date date)
|
||||
{
|
||||
synchronized (this)
|
||||
{ // create the display date formatter if we don't yet have it
|
||||
if (display_date==null)
|
||||
if (m_display_date==null)
|
||||
{ // create the display date formatter
|
||||
display_date = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM,req.getLocale());
|
||||
display_date.setTimeZone(req.getTimeZone());
|
||||
m_display_date = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM,m_req.getLocale());
|
||||
m_display_date.setTimeZone(m_req.getTimeZone());
|
||||
|
||||
} // end if
|
||||
|
||||
} // end synchronized block
|
||||
|
||||
return display_date.format(date);
|
||||
return m_display_date.format(date);
|
||||
|
||||
} // end formatDate
|
||||
|
||||
public String getFontTag(int colorsel, int size)
|
||||
{
|
||||
return config.getFontTag(colorsel,size);
|
||||
return m_config.getFontTag(colorsel,size);
|
||||
|
||||
} // end getFontTag
|
||||
|
||||
public String getFontTag(String color, int size)
|
||||
{
|
||||
return config.getFontTag(color,size);
|
||||
return m_config.getFontTag(color,size);
|
||||
|
||||
} // end getFontTag
|
||||
|
||||
public String getFontTag(int colorsel, String size)
|
||||
{
|
||||
return config.getFontTag(colorsel,size);
|
||||
return m_config.getFontTag(colorsel,size);
|
||||
|
||||
} // end getFontTag
|
||||
|
||||
public String getFontTag(String color, String size)
|
||||
{
|
||||
return config.getFontTag(color,size);
|
||||
return m_config.getFontTag(color,size);
|
||||
|
||||
} // end getFontTag
|
||||
|
||||
public int convertLinkType(String str)
|
||||
{
|
||||
return config.convertLinkType(str);
|
||||
return m_config.convertLinkType(str);
|
||||
|
||||
} // end convertLinkType
|
||||
|
||||
public String getStockMessage(String key)
|
||||
{
|
||||
return config.getStockMessage(key);
|
||||
return m_config.getStockMessage(key);
|
||||
|
||||
} // end getStockMessage
|
||||
|
||||
public String getStockMessage(String key, Map vars)
|
||||
{
|
||||
return config.getStockMessage(key,vars);
|
||||
return m_config.getStockMessage(key,vars);
|
||||
|
||||
} // end getStockMessage
|
||||
|
||||
public String getStaticPath(String s)
|
||||
{
|
||||
return config.getStaticPath(s);
|
||||
return m_config.getStaticPath(s);
|
||||
|
||||
} // end getStaticPath
|
||||
|
||||
public String getExternalStaticPath(String s)
|
||||
{
|
||||
return config.getExternalStaticPath(s);
|
||||
return m_config.getExternalStaticPath(s);
|
||||
|
||||
} // end getExternalStaticPath
|
||||
|
||||
public String getImagePath(String s)
|
||||
{
|
||||
return config.getImagePath(s);
|
||||
return m_config.getImagePath(s);
|
||||
|
||||
} // end getImagePath
|
||||
|
||||
public String getButtonVisual(String id)
|
||||
{
|
||||
return config.getButtonVisual(id);
|
||||
return m_config.getButtonVisual(id);
|
||||
|
||||
} // end getButtonVisual
|
||||
|
||||
public String getButtonInput(String id)
|
||||
{
|
||||
return config.getButtonInput(id);
|
||||
return m_config.getButtonInput(id);
|
||||
|
||||
} // end getButtonInput
|
||||
|
||||
public String getUserPhotoTag(String url)
|
||||
{
|
||||
return getUserPhotoTag(url,req.getEngine().getUserPhotoSize());
|
||||
return getUserPhotoTag(url,m_req.getEngine().getUserPhotoSize());
|
||||
|
||||
} // end getUserPhotoTag
|
||||
|
||||
|
@ -2200,7 +2243,7 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
{
|
||||
StringBuffer buf = new StringBuffer("<img src=\"");
|
||||
if (StringUtil.isStringEmpty(url))
|
||||
buf.append(config.getBlankPhoto());
|
||||
buf.append(m_config.getBlankPhoto());
|
||||
else
|
||||
buf.append(url);
|
||||
buf.append("\" alt=\"\" align=\"left\" border=\"0\" width=\"").append(size.width).append("\" height=\"");
|
||||
|
@ -2215,9 +2258,9 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
return "Never"; // safeguard
|
||||
|
||||
// Set up the two calendars we'll use for comparison.
|
||||
Calendar c_last = new GregorianCalendar(req.getTimeZone(),req.getLocale());
|
||||
Calendar c_last = new GregorianCalendar(m_req.getTimeZone(),m_req.getLocale());
|
||||
c_last.setTime(date);
|
||||
Calendar c_now = new GregorianCalendar(req.getTimeZone(),req.getLocale());
|
||||
Calendar c_now = new GregorianCalendar(m_req.getTimeZone(),m_req.getLocale());
|
||||
|
||||
// Determine the exact number of days in the delta.
|
||||
int delta_days = 0;
|
||||
|
@ -2233,14 +2276,14 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
String s = null;
|
||||
if (delta_days<=1)
|
||||
{ // set up to convert the time into a string
|
||||
if (activity_time==null)
|
||||
if (m_activity_time==null)
|
||||
{ // get the "activity" time formatter
|
||||
activity_time = DateFormat.getTimeInstance(DateFormat.MEDIUM,req.getLocale());
|
||||
activity_time.setTimeZone(req.getTimeZone());
|
||||
m_activity_time = DateFormat.getTimeInstance(DateFormat.MEDIUM,m_req.getLocale());
|
||||
m_activity_time.setTimeZone(m_req.getTimeZone());
|
||||
|
||||
} // end if
|
||||
|
||||
s = activity_time.format(date);
|
||||
s = m_activity_time.format(date);
|
||||
|
||||
} // end if
|
||||
|
||||
|
@ -2261,7 +2304,7 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
buf.append(this.getImagePath("sig_other.jpg"));
|
||||
else
|
||||
buf.append(url);
|
||||
Dimension sz = req.getEngine().getCommunityLogoSize();
|
||||
Dimension sz = m_req.getEngine().getCommunityLogoSize();
|
||||
buf.append("\" alt=\"\" border=\"0\" width=\"").append(sz.width).append("\" height=\"").append(sz.height);
|
||||
buf.append("\" />");
|
||||
return buf.toString();
|
||||
|
@ -2270,19 +2313,19 @@ class HTMLRenderingImpl implements HTMLRendering
|
|||
|
||||
public String expandServletPath(String spath)
|
||||
{
|
||||
return req.expandServletPath(spath,false);
|
||||
return m_req.expandServletPath(spath,false);
|
||||
|
||||
} // end expandServletPath
|
||||
|
||||
public Calendar getCalendar()
|
||||
{
|
||||
return new GregorianCalendar(req.getTimeZone(),req.getLocale());
|
||||
return new GregorianCalendar(m_req.getTimeZone(),m_req.getLocale());
|
||||
|
||||
} // end getCalendar
|
||||
|
||||
public Locale getLocale()
|
||||
{
|
||||
return req.getLocale();
|
||||
return m_req.getLocale();
|
||||
|
||||
} // end getLocale
|
||||
|
||||
|
|
34
src/com/silverwrist/venice/ui/velocity/ContentVelocity.java
Normal file
34
src/com/silverwrist/venice/ui/velocity/ContentVelocity.java
Normal file
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
* (the "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
package com.silverwrist.venice.ui.velocity;
|
||||
|
||||
import com.silverwrist.venice.ui.Content;
|
||||
|
||||
public interface ContentVelocity extends Content, VelocitySupplyParams
|
||||
{
|
||||
/**
|
||||
* Returns the resource name of the Velocity template to be used in rendering this object. This pathname
|
||||
* is interpreted relative to the "template path" specified in the configuration.
|
||||
* The template engine loads it via the standard resource loader, and then applies the parameters
|
||||
* contained in this object to it.
|
||||
*
|
||||
* @return The resource pathname of the Velocity template to use.
|
||||
*/
|
||||
public String getTemplateName();
|
||||
|
||||
} // end interface ContentVelocity
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
* (the "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
package com.silverwrist.venice.ui.velocity;
|
||||
|
||||
import com.silverwrist.venice.ui.Content;
|
||||
|
||||
public interface ContentVelocityOwnTemplate extends Content, VelocitySupplyParams
|
||||
{
|
||||
/**
|
||||
* Returns the Velocity template data to be rendered.
|
||||
*
|
||||
* @return The Velocity template data.
|
||||
*/
|
||||
public String getTemplate();
|
||||
|
||||
/**
|
||||
* Returns an identifier for the Velocity template, to be used when generating error messages and
|
||||
* the like.
|
||||
*
|
||||
* @return The Velocity template identifier.
|
||||
*/
|
||||
public String getIdentifier();
|
||||
|
||||
} // end interface ContentVelocityOwnTemplate
|
132
src/com/silverwrist/venice/ui/velocity/ContextWrapper.java
Normal file
132
src/com/silverwrist/venice/ui/velocity/ContextWrapper.java
Normal file
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
* (the "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
package com.silverwrist.venice.ui.velocity;
|
||||
|
||||
import java.util.*;
|
||||
import org.apache.velocity.context.Context;
|
||||
|
||||
/**
|
||||
* An Adapter which allows a {@link com.silverwrist.venice.ui.velocity.VelocitySupplyParams VelocitySupplyParams}
|
||||
* to supply rendering parameters to Velocity as a standard <code>Context</code> object.
|
||||
*/
|
||||
class ContextWrapper implements Context
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private VelocitySupplyParams m_vr; // the parameter supplier we're adapting
|
||||
private Object[] m_arr = null; // cache of the parameter names array
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* Creates a new <code>ContextWrapper</code>.
|
||||
*
|
||||
* @param vr The {@link com.silverwrist.venice.ui.velocity.VelocitySupplyParams VelocitySupplyParams} to be
|
||||
* wrapped by this object.
|
||||
*/
|
||||
ContextWrapper(VelocitySupplyParams vr)
|
||||
{
|
||||
m_vr = vr;
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Implementations from interface Context
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* Adds a name/value pair to the context. For this class, this is a no-op.
|
||||
*
|
||||
* @param key The name to key the provided value with.
|
||||
* @param value The corresponding value.
|
||||
* @return The previous value set for that key, or <code>null/code>.
|
||||
*/
|
||||
public Object put(String key, Object value)
|
||||
{
|
||||
return null; // dummy method
|
||||
|
||||
} // end put
|
||||
|
||||
/**
|
||||
* Gets the value corresponding to the provided key from the context.
|
||||
*
|
||||
* @param key The name of the desired value.
|
||||
* @return The value corresponding to the provided key.
|
||||
*/
|
||||
public Object get(String key)
|
||||
{
|
||||
if (m_vr==null)
|
||||
return null;
|
||||
return m_vr.getParameter(key);
|
||||
|
||||
} // end get
|
||||
|
||||
/**
|
||||
* Indicates whether the specified key is in the context.
|
||||
*
|
||||
* @param key The key to look for.
|
||||
* @return <code>true</code> if the key is in the context, <code>false</code> if not.
|
||||
*/
|
||||
public boolean containsKey(Object key)
|
||||
{
|
||||
if (m_vr==null)
|
||||
return false;
|
||||
return (m_vr.getParameter(key.toString())!=null);
|
||||
|
||||
} // end containsKey
|
||||
|
||||
/**
|
||||
* Get all the keys for the values in the context.
|
||||
*
|
||||
* @return An array containing all the keys from this context.
|
||||
*/
|
||||
public Object[] getKeys()
|
||||
{
|
||||
if (m_arr==null)
|
||||
{ // fill in array
|
||||
if (m_vr==null)
|
||||
m_arr = new Object[0];
|
||||
else
|
||||
m_arr = m_vr.getParameterNames().toArray();
|
||||
|
||||
} // end if
|
||||
|
||||
return m_arr;
|
||||
|
||||
} // end getKeys
|
||||
|
||||
/**
|
||||
* Removes the value associated with the specified key from the context. For this class, this is a no-op.
|
||||
*
|
||||
* @param key The name of the value to remove.
|
||||
* @return The value that the key was mapped to, or <code>null</code> if unmapped.
|
||||
*/
|
||||
public Object remove(Object key)
|
||||
{
|
||||
return null; // dummy method
|
||||
|
||||
} // end remove
|
||||
|
||||
} // end class ContextWrapper
|
57
src/com/silverwrist/venice/ui/velocity/StdObject.java
Normal file
57
src/com/silverwrist/venice/ui/velocity/StdObject.java
Normal file
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
* (the "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
package com.silverwrist.venice.ui.velocity;
|
||||
|
||||
import com.silverwrist.venice.ui.*;
|
||||
import com.silverwrist.venice.ui.helpers.*;
|
||||
|
||||
public class StdObject
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private RequestOutput m_rout;
|
||||
private HTMLRendering m_html = null;
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
StdObject(RequestOutput out)
|
||||
{
|
||||
m_rout = out;
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External operations
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String formatURL(String url, String type)
|
||||
{
|
||||
if (m_html==null)
|
||||
m_html = (HTMLRendering)(m_rout.queryService(HTMLRendering.class));
|
||||
return m_html.formatURL(url,type);
|
||||
|
||||
} // end formatURL
|
||||
|
||||
} // end class StdObject
|
289
src/com/silverwrist/venice/ui/velocity/VelocityRenderer.java
Normal file
289
src/com/silverwrist/venice/ui/velocity/VelocityRenderer.java
Normal file
|
@ -0,0 +1,289 @@
|
|||
/*
|
||||
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
* (the "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
package com.silverwrist.venice.ui.velocity;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import javax.servlet.*;
|
||||
import org.apache.log4j.*;
|
||||
import org.apache.velocity.*;
|
||||
import org.apache.velocity.app.*;
|
||||
import org.apache.velocity.context.AbstractContext;
|
||||
import org.apache.velocity.context.Context;
|
||||
import org.apache.velocity.exception.*;
|
||||
import org.apache.velocity.runtime.RuntimeConstants;
|
||||
import com.silverwrist.venice.ui.*;
|
||||
import com.silverwrist.venice.ui.config.RootConfig;
|
||||
|
||||
public class VelocityRenderer
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Internal "tool" context.
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private class ToolContext extends AbstractContext
|
||||
{
|
||||
/*====================================================================
|
||||
* Attributes
|
||||
*====================================================================
|
||||
*/
|
||||
|
||||
private StdObject m_std;
|
||||
|
||||
/*====================================================================
|
||||
* Constructor
|
||||
*====================================================================
|
||||
*/
|
||||
|
||||
ToolContext(Context inner, RequestOutput out)
|
||||
{
|
||||
super(inner);
|
||||
m_std = new StdObject(out);
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*====================================================================
|
||||
* Abstract implementations from class AbstractContext
|
||||
*====================================================================
|
||||
*/
|
||||
|
||||
public Object internalGet(String key)
|
||||
{
|
||||
if (key.equals("std"))
|
||||
return m_std;
|
||||
return null;
|
||||
|
||||
} // end internalGet
|
||||
|
||||
public Object internalPut(String key, Object value)
|
||||
{
|
||||
Context ctxt = getChainedContext();
|
||||
if (ctxt==null)
|
||||
return null;
|
||||
else
|
||||
return ctxt.put(key,value);
|
||||
|
||||
} // end internalPut
|
||||
|
||||
public boolean internalContainsKey(Object key)
|
||||
{
|
||||
String keystr = key.toString();
|
||||
if (keystr.equals("std"))
|
||||
return true;
|
||||
return false;
|
||||
|
||||
} // end internalContainsKey
|
||||
|
||||
public Object[] internalGetKeys()
|
||||
{
|
||||
ArrayList rc = new ArrayList();
|
||||
rc.add("std");
|
||||
return rc.toArray();
|
||||
|
||||
} // end internalGetKeys
|
||||
|
||||
public Object internalRemove(Object key)
|
||||
{
|
||||
Context ctxt = getChainedContext();
|
||||
if (ctxt==null)
|
||||
return null;
|
||||
else
|
||||
return ctxt.remove(key);
|
||||
|
||||
} // end internalRemove
|
||||
|
||||
} // end class ToolContext
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Static data members
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static final String CONTEXT_KEY = VelocityRenderer.class.getName();
|
||||
private static final String LOGGING_CATEGORY_NAME = "velocity.engine";
|
||||
|
||||
private static Logger vel_logger = Logger.getLogger(LOGGING_CATEGORY_NAME);
|
||||
private static Logger logger = Logger.getLogger(VelocityRenderer.class);
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private VelocityEngine m_ve; // our instance of the Velocity engine
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private VelocityRenderer(String template_dir) throws Exception
|
||||
{
|
||||
m_ve = new VelocityEngine();
|
||||
m_ve.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
|
||||
"org.apache.velocity.runtime.log.SimpleLog4JLogSystem");
|
||||
m_ve.setProperty("runtime.log.logsystem.log4j.category",LOGGING_CATEGORY_NAME);
|
||||
m_ve.setProperty("resource.loader","file");
|
||||
m_ve.setProperty("file.loader.description","Velocity File Resource Loader");
|
||||
m_ve.setProperty("file.resource.loader.class","org.apache.velocity.runtime.resource.loader.FileResourceLoader");
|
||||
m_ve.setProperty("file.resource.loader.path",template_dir);
|
||||
m_ve.setProperty("velocimacro.permissions.allow.inline","true");
|
||||
m_ve.setProperty("velocimacro.permissions.allow.inline.to.replace.global","false");
|
||||
m_ve.setProperty("velocimacro.permissions.allow.inline.local.scope","true");
|
||||
m_ve.init();
|
||||
|
||||
} // end constructor
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External operations
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public void formatTemplate(String template_name, VelocitySupplyParams params, RequestOutput out, Writer wr)
|
||||
throws IOException, ServletException
|
||||
{
|
||||
if (wr==null)
|
||||
wr = out.getWriter();
|
||||
try
|
||||
{ // Load the template.
|
||||
Template templ = m_ve.getTemplate(template_name);
|
||||
|
||||
// Create a context containing the arguments.
|
||||
VelocityContext ctxt = new VelocityContext(new ContextWrapper(params));
|
||||
|
||||
// Merge the template onto the output.
|
||||
templ.merge(new ToolContext(ctxt,out),wr);
|
||||
wr.flush();
|
||||
|
||||
} // end try
|
||||
catch (ResourceNotFoundException e)
|
||||
{ // this is not good
|
||||
throw new ServletException("unable to load Velocity resource: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
catch (ParseErrorException e)
|
||||
{ // parse error
|
||||
throw new ServletException("Velocity parse error: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
catch (MethodInvocationException e)
|
||||
{ // some method failed
|
||||
throw new ServletException("Velocity method invocation error: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
catch (IOException e)
|
||||
{ // pass IOExceptions straight through
|
||||
throw e;
|
||||
|
||||
} // end catch
|
||||
catch (Exception e)
|
||||
{ // all other garbage goes here
|
||||
throw new ServletException("Velocity rendering failure: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end formatTemplate
|
||||
|
||||
public void render(ContentVelocity content, RequestOutput out, Writer wr) throws IOException, ServletException
|
||||
{
|
||||
formatTemplate(content.getTemplateName(),content,out,wr);
|
||||
|
||||
} // end render
|
||||
|
||||
public void render(ContentVelocityOwnTemplate content, RequestOutput out, Writer wr)
|
||||
throws IOException, ServletException
|
||||
{
|
||||
if (wr==null)
|
||||
wr = out.getWriter();
|
||||
try
|
||||
{ // Get the identifier.
|
||||
String ident = content.getIdentifier();
|
||||
if (ident==null)
|
||||
ident = "ContentVelocityOwnTemplate";
|
||||
|
||||
// Create a context containing the arguments.
|
||||
VelocityContext ctxt = new VelocityContext(new ContextWrapper(content));
|
||||
|
||||
if (!(m_ve.evaluate(new ToolContext(ctxt,out),wr,ident,content.getTemplate())))
|
||||
throw new ServletException("Velocity template rendering failure");
|
||||
wr.flush();
|
||||
|
||||
} // end try
|
||||
catch (ResourceNotFoundException e)
|
||||
{ // this is not good
|
||||
throw new ServletException("unable to load Velocity resource: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
catch (ParseErrorException e)
|
||||
{ // parse error
|
||||
throw new ServletException("Velocity parse error: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
catch (MethodInvocationException e)
|
||||
{ // some method failed
|
||||
throw new ServletException("Velocity method invocation error: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
catch (IOException e)
|
||||
{ // pass IOExceptions straight through
|
||||
throw e;
|
||||
|
||||
} // end catch
|
||||
catch (Exception e)
|
||||
{ // all other garbage goes here
|
||||
throw new ServletException("Velocity rendering failure: " + e.getMessage(),e);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end render
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External static operations
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public static void init(ServletContext ctxt, RootConfig config)
|
||||
{
|
||||
if (ctxt.getAttribute(CONTEXT_KEY)!=null)
|
||||
return; // already initialized
|
||||
|
||||
try
|
||||
{ // initialize the renderer object
|
||||
VelocityRenderer tmp = new VelocityRenderer(config.getVelocityTemplateDirectory());
|
||||
ctxt.setAttribute(CONTEXT_KEY,tmp);
|
||||
|
||||
} // end try
|
||||
catch (Exception e)
|
||||
{ // the initialization failed!
|
||||
logger.fatal("VelocityRenderer initialization failed!",e);
|
||||
|
||||
} // end catch
|
||||
|
||||
} // end init
|
||||
|
||||
public static VelocityRenderer get(ServletContext ctxt) throws ServletException
|
||||
{
|
||||
VelocityRenderer rc = (VelocityRenderer)(ctxt.getAttribute(CONTEXT_KEY));
|
||||
if (rc==null)
|
||||
throw new ServletException("VelocityRenderer not initialized");
|
||||
return rc;
|
||||
|
||||
} // end get
|
||||
|
||||
} // end class VelocityRenderer
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
* (the "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
package com.silverwrist.venice.ui.velocity;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Common interface for all output objects that supply parameters to Velocity.
|
||||
*
|
||||
* @author Eric J. Bowersox <erbo@ricochet.com>
|
||||
* @version X
|
||||
*/
|
||||
public interface VelocitySupplyParams
|
||||
{
|
||||
/**
|
||||
* Returns the value of a parameter set on the object.
|
||||
*
|
||||
* @param key The name of the parameter to look up.
|
||||
* @return The parameter's value, or <code>null</code> if the parameter was not set.
|
||||
*/
|
||||
public Object getParameter(String key);
|
||||
|
||||
/**
|
||||
* Returns a <code>java.util.Collection</code> of all parameter names currently defined on this object.
|
||||
*
|
||||
* @return A collection of all parameter names currently defined.
|
||||
*/
|
||||
public Collection getParameterNames();
|
||||
|
||||
} // end interface VelocitySupplyParams
|
20
templates/VM_global_library.vm
Normal file
20
templates/VM_global_library.vm
Normal file
|
@ -0,0 +1,20 @@
|
|||
#*
|
||||
The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
(the "License"); you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
language governing rights and limitations under the License.
|
||||
|
||||
The Original Code is the Venice Web Communities System.
|
||||
|
||||
The Initial Developer of the Original Code is Eric J. Bowersox <erbo@ricochet.com>,
|
||||
for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
Copyright (C) 2004 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
*#
|
||||
|
||||
## Define macros around the "std" object.
|
||||
#macro( formatURL $type $url )$std.formatURL($type,$url)#end
|
Loading…
Reference in New Issue
Block a user