[ https://issues.apache.org/jira/browse/SLING-2425?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Carsten Ziegeler closed SLING-2425. ----------------------------------- > Incorrect and inconsistent escaping of property names used in JcrPropertyMap > ---------------------------------------------------------------------------- > > Key: SLING-2425 > URL: https://issues.apache.org/jira/browse/SLING-2425 > Project: Sling > Issue Type: Bug > Components: JCR > Affects Versions: JCR Resource 2.0.10 > Reporter: Alexander Klimetschek > Assignee: Carsten Ziegeler > Fix For: JCR Resource 2.1.0 > > Attachments: SLING-2425-test-dots.patch > > > The JcrPropertyMap uses the (wrong) ISO9075 encoding for property names, and > this also behaves differently between the read() and readFully() variants. > 1) ISO9075 is needed for XML names, e.g. for mapping JCR names into Xpath > queries. But the set of valid JCR names is much larger (for example "-" is > valid, while it is not allowed in ISO9075 and becomes "_x002d_"). > org.apache.jackrabbit.util.Text#escapeIllegalJcrChars() must be used instead > to escape any string for use as JCR names. [0] > 2) Inconsistency: > a) read() will take the key and use ISO9075#encodePath(), before looking up > the jcr property using the encoded variant > b) readFully() will go through all jcr properties and cache them with the key > using ISO9075#decode() > Hence for all valid JCR names, which are not valid under ISO9075 (like > "1_prop", "-foo"), these can be looked up using the cached variant b) (as > decode() won't touch them), while they cannot be looked up using read() at > all due to the forced "arbitrary" escaping. > I think there should be no auto-magically escaping at all (also not in the > accompanying JcrModifiablePropertyMap). Incorrect naming errors should simply > be passed through, it is the job of the application to handle that. The > framework should not run an arbitrary & undocumented escaping, if it cannot > enforce that anyway, since there are other ways to create properties with a > different valid char set (using the JCR API). > [0] http://wiki.apache.org/jackrabbit/EncodingAndEscaping -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira