Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added rating macro
Wiki Markup
{rate}
{status:inprogress|

...

4.5

...

}Implementation tracked in [MAGNOLIA-3895@jira].
Status

Intro

...

{status}

h3. Intro

* A selector is the part between the first selector delimiter and the extension of an URI.  I.e. given a URI like {{[http://myserver/mypage~x~foo=bar~.html?param=baz&param2=qux]}} and the tilde character as the delimiter, the entire selector is _\~x~foo=bar_. A selector can be split in turn into several selectors separated from each other by the same delimiter.

h3.

...

Rationale

...

 Rationale

* Selectors existed prior to Magnolia 4.5 and they use the _._ (dot) char as a delimiter. As Magnolia 4.5 introduces the possibility to have the dot _._ character in the node names (as by JCR specification [see chapter 3 paragraph 2.2 of JCR 2.0 specs|http://www.day.com/specs/jcr/2.0/3_Repository_Model.html]) the delimiter character needs to be changed.

h3.

...

Delimiter

 Delimiter

* {{info.magnolia.cms.core.Path}} has a {{SELECTOR_DELIMITER}} constant (a string) set as _~_ (tilde).

h3.

...

 Selector name-value pair

...



* a selector can now also be in the form name=value. I.e. given a URI {{[http://myserver/mypage~x~foo=bar~.html]}} _foo=bar_ is name value selector. This kind of selector is exposed by {{MgnlContext.getAttribute(selectorName)}} and has a _"local"_ scope (similar to _HttpServletRequest_ scope). Thus, in the current example, {{MgnlContext.getAttribute("foo")}} will return the String _"bar"_, whereas {{MgnlContext.getAttribute("foo", Context.SESSION_SCOPE)}} or {{MgnlContext.getAttribute("foo", Context.APPLICATION_SCOPE)}} will return _null_.

h3.

...

AggregationState

...

 AggregationState

* this class exposes some methods to set and get selectors.
** {{setSelector(String selector)}} is currently used by {{info.magnolia.cms.filters.RepositoryMappingFilter}} where the request URI is parsed and the selector part extracted.

...


** {{String getSelector()}} returns the whole selector. I.e given the URI {{[http://myserver/mypage~x~foo=bar~.html]}} this method will return the String _x~foo=bar

...

_
** {{String\[\] getSelectors()}} returns the selector split into its discrete elements. I.e given the URI {{[http://myserver/mypage~x~foo=bar~.html]}} this method will return an array of two elements containing the "x" and the "foo=bar" String(s)

...

SelectorUtil

...



h3. SelectorUtil

* this is a utility class already existing before Magnolia 4.5. It provides two methods which are basically shortcuts to the getters in {{AggregationState

...

}}:
** {{String getSelector()

...

}}
** {{String getSelector(int index)}}