Package com.jalios.jcms
Class DescriptiveURLs
- java.lang.Object
-
- com.jalios.jcms.DescriptiveURLs
-
public class DescriptiveURLs extends java.lang.Object
Manages Descriptive URLs production and decoding.- Since:
- jcms-5.7.0
- Author:
- Olivier Jaquemet
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DescriptiveURLs.DescriptiveURLsListener
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
FORCE_ORIGINAL_PORTAL
-
Constructor Summary
Constructors Constructor Description DescriptiveURLs()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.String
cleanDescriptiveURLText(java.lang.String str, java.util.Locale locale)
Clean the specified text for use in textual part of a descriptive URL.static java.lang.String
getDescriptiveURL(Data data, java.util.Locale locale)
Retrieve an descriptive URL for the given Data in the given language.static java.lang.String
getDescriptiveURLText(Data data, java.util.Locale locale)
Returns the textual part of a descriptive URL built for the given Data.static Category
getFirstDescriptiveCategory(Publication pub)
Returns the first category of the given Publication belonging to one the root categories specified for descriptive urls.static java.lang.String
getId(java.lang.String path)
Returns aData
id computed from the given requested path (servletPath + pathInfo).static java.lang.String
getId(javax.servlet.http.HttpServletRequest request)
Returns aData
id computed from the URL of the requested url.static java.lang.String
getLanguage(java.lang.String path)
Returns a ISO-639 language code extracted from the given requested path (servletPath + pathInfo).static java.lang.String
getLanguage(javax.servlet.http.HttpServletRequest request)
Returns a ISO-639 language code computed from the URL of the specified request.static java.lang.String
getServletPath()
Returns the servlet path used for descriptive URL.static void
init()
Initialize or reinitialize Descriptive URLS.static boolean
isEnabled()
Check if descriptive URLs are enabled.static boolean
isLanguagePartEnabled()
Check if language part is enabled in descriptive URLs.static void
removeURLCache(Data data)
Remove the cached Descriptive URL values for the given Data.
-
-
-
Field Detail
-
FORCE_ORIGINAL_PORTAL
public static final java.lang.String FORCE_ORIGINAL_PORTAL
- See Also:
- Constant Field Values
-
-
Method Detail
-
init
public static void init()
Initialize or reinitialize Descriptive URLS. - read/reload properties. - initialize internal variable/caches. - initialize listener for cache management. - register ServletUtil hooks to provide custom behavior.- Since:
- jcms-5.7.0
-
isEnabled
public static boolean isEnabled()
Check if descriptive URLs are enabled.- Returns:
- true if enabled, false otherwise.
- Since:
- jcms-5.7.0
-
isLanguagePartEnabled
public static boolean isLanguagePartEnabled()
Check if language part is enabled in descriptive URLs.- Returns:
- true if enabled, false otherwise.
- Since:
- jcms-8.0.3
-
getId
public static java.lang.String getId(javax.servlet.http.HttpServletRequest request)
Returns aData
id computed from the URL of the requested url.- Parameters:
request
- the request for which we want the id- Returns:
- the Data's id extracted from the accessed path of the given request.
- Since:
- jcms-5.7.0
-
getId
public static java.lang.String getId(java.lang.String path)
Returns aData
id computed from the given requested path (servletPath + pathInfo).- Parameters:
path
- the requested path relative to the webapp. That is if an url is http://domain.tld+/contextPath+/servletPath+/pathInfo + ?querystring the requested path would be /servletPath/pathInfo (starting slash is optional)- Returns:
- the Data's id extracted from the given path.
- Since:
- jcms-5.7.0
-
getLanguage
public static java.lang.String getLanguage(javax.servlet.http.HttpServletRequest request)
Returns a ISO-639 language code computed from the URL of the specified request.- Parameters:
request
- the request for which we want the language- Returns:
- an ISO-639 language code extracted from the accessed path of the given request, or null if no valid value could be found.
- Since:
- jcms-7.1.0
-
getLanguage
public static java.lang.String getLanguage(java.lang.String path)
Returns a ISO-639 language code extracted from the given requested path (servletPath + pathInfo).Returns only language configured in site (cf
Channel.getLanguageList()
, otherwise returns null.- Parameters:
path
- the requested path relative to the webapp. That is if an url is http://domain.tld+/contextPath+/servletPath+/pathInfo + ?querystring the requested path would be /servletPath/pathInfo (starting slash is optional)- Returns:
- the requested language extracted from the given path or null if no valid language could be found.
- Since:
- jcms-7.1.0
-
getServletPath
public static java.lang.String getServletPath()
Returns the servlet path used for descriptive URL.- Returns:
- a path WITHOUT starting '/' and WITH traling '/', for example "jcms/".
- Since:
- jcms-5.7.0
-
getDescriptiveURL
public static java.lang.String getDescriptiveURL(Data data, java.util.Locale locale)
Retrieve an descriptive URL for the given Data in the given language. The returned descriptive URL will follow the following format :{prefix}/{id}[/text]
where{prefix}
is the servlet mapping of theDisplayServlet
{id}
is the id of the given Data[/text]
is an optional textual part retrieve from methodgetDescriptiveURLText(Data, Locale)
if textual part has been enabled using propertydescriptive-urls.text.enabled
- Parameters:
data
- theData
for which create the URL (cannot be null)locale
- theLocale
to use for I18N and localized operations if null, the channel locale is usedChannel.getLocale()
- Returns:
- a relative URL
- Throws:
java.lang.IllegalArgumentException
- if data is null- Since:
- jcms-5.7.0
-
getDescriptiveURLText
public static java.lang.String getDescriptiveURLText(Data data, java.util.Locale locale)
Returns the textual part of a descriptive URL built for the given Data. As the textual part is optional, this method is called only when the propertydescriptive-urls.text.enabled
is set to "true".- Parameters:
data
- theData
for which the URL is built.locale
- theLocale
to use I18N and localized operation.- Returns:
- the textual part of the descriptive URL.
- Since:
- jcms-5.7.0
-
getFirstDescriptiveCategory
public static Category getFirstDescriptiveCategory(Publication pub)
Returns the first category of the given Publication belonging to one the root categories specified for descriptive urls.- Parameters:
pub
- the publication for which we want the first Descriptive Category- Returns:
- a Category or null if no category could be found
- Since:
- jcms-5.7.0
-
cleanDescriptiveURLText
public static java.lang.String cleanDescriptiveURLText(java.lang.String str, java.util.Locale locale)
Clean the specified text for use in textual part of a descriptive URL.Current implementation applies the following operation on the specified string :
- unaccentuate
- lowercase (using given Locale)
- Replace characters as defined by regular expression in properties
descriptive-urls.text.clean.{idx}-regex
and its corresponding replacement patterndescriptive-urls.text.clean.{idx}-replace
(where{idx}
is a sequential number from 1).Default replacement :
- replace whitespace and punctuation with dash character "-",
- remove characters matching pattern [^0-9a-zA-Z/-],
- remove multiple contiguous letters [/-]
- limit length to 1024 characters
- Parameters:
str
- the string to cleanlocale
- theLocale
to use I18N and localized operation- Returns:
- the converted string or null if the given string is null
- Since:
- jcms-5.7.0
-
removeURLCache
public static void removeURLCache(Data data)
Remove the cached Descriptive URL values for the given Data.This method is automatically invoked during data update.
- Parameters:
data
- the Data for which descriptive URL have been modified and for which cache need to be removed- Since:
- jcms-5.7.0
-
-