[ http://issues.apache.org/jira/browse/JCR-473?page=comments#action_12419218 ]
Jukka Zitting commented on JCR-473: ----------------------------------- Angela: > regarding interfaces for Path, QName: Ah, sorry for being a bit unclear. I'd still keep them as concrete classes, preferably final. > regarding split of NamespaceResolver: > perhaps it's worth taking a closer look at this. at first glance it looks a > little exaggerated to me. > > in any case (and as long as nobody objects) i would prefer applying the patch > as is and discuss additional enhancements in a separate thread. > having a patch that shows the impact of a modification makes it easier to > decide about the benefits (or drawbacks). Agreed, sorry for muddying the water. +1 to this patch. I'll see if I can come up with compelling enough rationale for the extended proposal, and follow up on the mailing list later on. > Some enhancements to jackrabbit commons > --------------------------------------- > > Key: JCR-473 > URL: http://issues.apache.org/jira/browse/JCR-473 > Project: Jackrabbit > Type: Improvement > Versions: 1.0 > Reporter: angela > Assignee: angela > Attachments: JCR-473_rev_417443.patch > > I would like to suggest a couple of enhancements to the commons module. > The patch was created against rev. 417443 and the tests did not reveal any > problems. > Summary of suggestion modifications: > QName > ------------------------------------------------------------------------------------------------------------------------- > - reduce QName to its core functionality and put conversion from and to JCR > name to > a separate class 'NameFormat' > - in order not to break existing code, all methods that deal with the > conversion in QName > are marked deprecated. > - add constant for the name of the root node. > Path > ------------------------------------------------------------------------------------------------------------------------- > - reduce Path to its core functionality and put conversion from and to JCR > path to > a separate class 'PathFormat' > - in order not to break existing code, all methods that deal with the > conversion in Path > are marked deprecated. > - introduce new constants for UNDEFINED_INDEX (0) and DEFAULT_INDEX (1), that > are currently hardcoded throughout the jackrabbit project. > - new method Path.getElement(int) [PathElement] > - make PathElement constants public (used by PathFormat) > Path.PathBuilder > ------------------------------------------------------------------------------------------------------------------------- > - additional constructor PathBuilder(Path) > Path.PathElement > ------------------------------------------------------------------------------------------------------------------------- > - add PathElement.getNormalizedIndex() that always asserts a 1-based index. > - change subclasses to be private (no usage within the jackrabbit, except > inside Path). > PathMap > ------------------------------------------------------------------------------------------------------------------------- > - move o.a.j.core.PathMap to o.a.j.util.PathMap in order to make it > available in the > commons module. > NamespaceResolver > ------------------------------------------------------------------------------------------------------------------------- > - add methods for resolution of paths: > > getQPath(String jcrPath) [Path] > > getJCRPath(Path qPath) [String] > NamespaceListener > ------------------------------------------------------------------------------------------------------------------------- > - add method 'namespaceRemove(String)' > ValueHelper > ------------------------------------------------------------------------------------------------------------------------- > currently JCR value objects are 'manually' created in the ValueHelper > despite the > fact, that JSR170 defines a ValueFactory interface. Consequently the > ValueHelper > present in the commons module can only be used by implementations that use > the same value implementations. > - add new helper methods that take a ValueFactory as argument. > - in order not to break existing code the original methods are marked > deprecated and > may be removed at a later time. > consequently: > - modify signature of InternalValue.create that include a value conversion > to take a > ValueFactory param and adjust all usages inside the core package. > ValueFactoryImpl > ------------------------------------------------------------------------------------------------------------------------- > - createValue(String, int ): used to call the conversion on ValueHelper. with > the > changes suggested to ValueHelper, the code must be changed in order to > created instances of the Value implementations within the factory. > - together with the modification to ValueHelper, stefan suggested to replace > the public > constructor with a static 'getInstance' method. All usages within > jackrabbit.core, were > modified accordingly. > Text > ------------------------------------------------------------------------------------------------------------------------- > - add getName(String, boolean) where the boolean flag indicates whether a > trailing slash > should be ignored. > - add getRelativeParent(String, int, boolean) where the boolean flag > indicates whether a > trailing slash should be ignored. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
