public abstract class UrlTemplate extends GenericService
Users of this class can obtain a Url by cloning the UrlParameter array and populating the values of each of the parameters. The format method of this class can then be called which will use the MessageFormat object and the supplied parameter values to create the Url.
This class has 2 common sub classes: DirectUrlTemplate and IndirectUrlTemplate.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string
|
java.util.List |
mExcludedBrowserTypes |
protected ApplicationLogging |
mLogger |
protected UrlParameterLookup[] |
mLookups |
int |
mMaxUrlLength |
protected java.lang.String |
mMessageFormatString |
java.util.List |
mSupportedBrowserTypes |
protected UrlParameter[] |
mUrlParameters |
java.lang.String |
mUrlTemplateFormat |
protected boolean |
mUseDefaultWebApp |
protected WebApp |
mWebApp |
SERVICE_INFO_KEY
DEFAULT_LOG_TRACE_STATUS
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
Constructor and Description |
---|
UrlTemplate() |
UrlTemplate(ApplicationLogging pLogger) |
Modifier and Type | Method and Description |
---|---|
UrlParameter[] |
cloneUrlParameters()
Clones the parameters for this template to allow values to be set for this request.
|
void |
doStartService()
This is called after a Service has been created, placed into the
naming hierarchy, and initialized with its configured property
values.
|
java.lang.String |
formatUrl(UrlParameter[] pUrlParams,
WebApp pDefaultWebApp)
Method to get a url String using this template with the given parameters.
|
java.util.List |
getExcludedBrowserTypes()
Getter method for list of excluded browser types.
|
int |
getMaxUrlLength()
Getter method for the max url length property.
|
java.text.MessageFormat |
getMessageFormat()
Returns the template MessageFormat object
|
java.util.List |
getSupportedBrowserTypes()
Getter method for list of supported browser types.
|
java.lang.String |
getUrlTemplateFormat()
Getter method for the url template format property.
|
protected WebApp |
getWebApp()
Getter method for the web application.
|
WebAppRegistry |
getWebAppRegistry()
Getter method for the web application registry.
|
protected abstract void |
initialize()
Abstract method to allow a template to be initialized.
|
boolean |
isSupported(DynamoHttpServletRequest pRequest)
Method to check whether the request browser type is supported by this template.
|
protected void |
parseTemplate()
Loops through all the characters in the template and pulls out the parameter names
and whether they are escaped or not.
|
void |
setExcludedBrowserTypes(java.util.List pExcludedBrowserTypes)
Setter method for list of excluded browser types
|
void |
setLookupMap(java.util.Map pLookupMap,
UrlParameterLookup[] pSortedLookups)
Associates types with each parameter.
|
void |
setMaxUrlLength(int pMaxUrlLength)
Setter method for the max url length property.
|
void |
setSupportedBrowserTypes(java.util.List pSupportedBrowserTypes)
Setter method for list of supported browser types
|
void |
setUrlTemplateFormat(java.lang.String pUrlTemplateFormat)
Setter method for the url template format property.
|
protected void |
setUseDefaultWebApp(boolean pUseDefaultWebApp)
Sets a flag to specify that the default web app should be used
if available.
|
protected void |
setWebApp(WebApp pWebApp)
Setter method for web application.
|
void |
setWebAppRegistry(WebAppRegistry pWebAppRegistry)
Setter method for the web application registry.
|
java.lang.String |
toString()
Override toString() for meaningful logging
|
protected boolean |
useDefaultWebApp() |
addLogListener, createAdminServlet, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
public static java.lang.String CLASS_VERSION
protected java.lang.String mMessageFormatString
protected UrlParameter[] mUrlParameters
protected UrlParameterLookup[] mLookups
protected WebApp mWebApp
protected boolean mUseDefaultWebApp
protected ApplicationLogging mLogger
public java.lang.String mUrlTemplateFormat
public int mMaxUrlLength
public java.util.List mSupportedBrowserTypes
public java.util.List mExcludedBrowserTypes
public UrlTemplate()
public UrlTemplate(ApplicationLogging pLogger)
public java.lang.String getUrlTemplateFormat()
public void setUrlTemplateFormat(java.lang.String pUrlTemplateFormat)
pUrlTemplateFormat
- String format of the url templatepublic int getMaxUrlLength()
public void setMaxUrlLength(int pMaxUrlLength)
pMaxUrlLength
- The maximum Url length to set.public java.util.List getSupportedBrowserTypes()
public void setSupportedBrowserTypes(java.util.List pSupportedBrowserTypes)
pSupportedBrowserTypes
- List of supported browser typespublic java.util.List getExcludedBrowserTypes()
public void setExcludedBrowserTypes(java.util.List pExcludedBrowserTypes)
pExcludedBrowserTypes
- List of excluded browser typespublic WebAppRegistry getWebAppRegistry()
public void setWebAppRegistry(WebAppRegistry pWebAppRegistry)
pWebAppRegistry
- The web application registry to set.public void doStartService() throws ServiceException
GenericService
doStartService
in class GenericService
ServiceException
Initializes the template.
protected abstract void initialize() throws atg.repository.seo.ItemLinkException
atg.repository.seo.ItemLinkException
public java.text.MessageFormat getMessageFormat()
public UrlParameter[] cloneUrlParameters()
public java.lang.String formatUrl(UrlParameter[] pUrlParams, WebApp pDefaultWebApp) throws atg.repository.seo.ItemLinkException
pUrlParam
- UrlParameter array to use in the formatpDefaultWebApp
- A default WebApp to use if one is required but none was specifiedItemLinkException
protected void setWebApp(WebApp pWebApp)
pWebApp
- WebApp object for the web applicationprotected WebApp getWebApp()
protected void setUseDefaultWebApp(boolean pUseDefaultWebApp)
pUseDefaultWebApp
- true
if the default web app should be used.protected boolean useDefaultWebApp()
true
if the default web app should be used.public void setLookupMap(java.util.Map pLookupMap, UrlParameterLookup[] pSortedLookups)
pLookupMap
- Map of the UrlParameterLookup objectspSortedLookups
- array of the UrlParameterLookup objects sorted by name lengthpublic boolean isSupported(DynamoHttpServletRequest pRequest)
pRequest
- DynamoHttpServletRequest objectprotected void parseTemplate() throws atg.repository.seo.ItemLinkException
Loops through all the characters in the template and pulls out the parameter names and whether they are escaped or not. This allows us to create an array of UrlParameter and also a MessageFormat object.
Parameters wrapped in square brackets will not have their values encoded when embeded in the Url. Alternatively an 'encode=false' format type can be specified.
e.g. Either:
"/[item.template.url]/"
or:
"/{item.template.url, encode=false}/"
Also a web application name can be specified in the first part of the format string by
ending it with a colon.
e.g. "/PioneerCycling:/[item.template.url]"
This would parse out the PioneerCycling and resolve it as a WebApp object in the web app
registry. The ':' character would be discarded and everything after that would be part of
the MessageFormat object.
e.g. Take the following template:
"/jump/product/{item.displayName}/[item.template.url]"
If item.displayName resolved to the String "DVD&Recorder" and item.template.url resolved to the
String "ProductCatalog/products.jsp" then the resulting Url would be:
"/jump/product/DVD%26Recorder/ProductCatalog/products.jsp"
atg.repository.seo.ItemLinkException
public java.lang.String toString()
toString
in class java.lang.Object