com.jalios.jcms
Class DescriptiveURLs

java.lang.Object
  extended by com.jalios.jcms.DescriptiveURLs

public class DescriptiveURLs
extends Object

Manages Descriptive URLs production and decoding.

Since:
jcms-5.7.0
Version:
$Revision: 48536 $
Author:
Olivier Jaquemet

Nested Class Summary
static class DescriptiveURLs.DescriptiveURLsListener
           
 
Constructor Summary
DescriptiveURLs()
           
 
Method Summary
static String cleanDescriptiveURLText(String str, Locale locale)
          Apply the following operation on the given string: unaccentuate lowercase (using given Locale) replace whitespace with "-" remove characters matching pattern [^0-9a-zA-Z/-] remove multiple contiguous letters [/-]
static String getDescriptiveURL(Data data, Locale locale)
          Retrieve an descriptive URL for the given Data in the given language.
static String getDescriptiveURLText(Data data, 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 String getId(javax.servlet.http.HttpServletRequest request)
          Returns a Data id computed from the URL of the requested url.
static String getId(String path)
          Returns a Data id computed from the given requested path (servletPath + pathInfo).
static String getLanguage(javax.servlet.http.HttpServletRequest request)
          Returns a ISO-639 language code computed from the URL of the specified request.
static String getLanguage(String path)
          Returns a ISO-639 language code extracted from the given requested path (servletPath + pathInfo).
static 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 void removeURLCache(Data data)
          Remove the cached Descriptive URL values for the given Data.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DescriptiveURLs

public DescriptiveURLs()
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

getId

public static String getId(javax.servlet.http.HttpServletRequest request)
Returns a Data 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 String getId(String path)
Returns a Data 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 optionnal)
Returns:
the Data's id extracted from the given path.
Since:
jcms-5.7.0

getLanguage

public static 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 String getLanguage(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 optionnal)
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 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 String getDescriptiveURL(Data data,
                                       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

Parameters:
data - the Data for which create the URL (cannot be null)
locale - the Locale to use for I18N and localized operations if null, the channel locale is used Channel.getLocale()
Returns:
a relative URL
Throws:
IllegalArgumentException - if data is null
Since:
jcms-5.7.0

getDescriptiveURLText

public static String getDescriptiveURLText(Data data,
                                           Locale locale)
Returns the textual part of a descriptive URL built for the given Data. As the textual part is optionnal, this method is called only when the property descriptive-urls.text.enabled is set to "true".

Parameters:
data - the Data for which the URL is built.
locale - the Locale 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 String cleanDescriptiveURLText(String str,
                                             Locale locale)
Apply the following operation on the given string:
  • unaccentuate
  • lowercase (using given Locale)
  • replace whitespace with "-"
  • remove characters matching pattern [^0-9a-zA-Z/-]
  • remove multiple contiguous letters [/-]

Parameters:
str - the string to clean
locale - the Locale 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


Copyright © 2001-2010 Jalios SA. All Rights Reserved.