Re-work the S-RAMP->JCR query visitor using ModeShape JCR-JQOM
--------------------------------------------------------------
Key: ARTIF-627
URL:
https://issues.jboss.org/browse/ARTIF-627
Project: Artificer
Issue Type: Enhancement
Reporter: Brett Meyer
Assignee: Brett Meyer
Fix For: 1.0.0.Alpha1
SrampToJcrSql2QueryVisitor is extremely brittle and inflexible. See SRAMP-622 for an
example. The following query is next to impossible:
/s-ramp/xsd/XsdDocument[relWithAttr[s-ramp:getRelationshipAttribute(., 'FooKey')
= 'FooValue' and @FooProperty = 'FooValue']]
Note that the getRelationshipAttribute predicate function affects the relWithAttr
*relationship* itself, while the @FooProperty check must go in the target artifact
sub-query. Correctly handling this query will require a Builder pattern to be
introduced.
Attempt to use ModeShape's JCR-JQOM:
https://docs.jboss.org/author/display/MODE40/JCR-JQOM
ModeShape also has a builder class, but it's not public and may pose additional
issues.
{quote}
(10:00:16 AM) rhauch: brmeyer: well, it's not public:
https://github.com/ModeShape/modeshape/blob/master/modeshape-jcr/src/main...
and
https://github.com/ModeShape/modeshape/blob/master/modeshape-jcr/src/test...
(10:01:39 AM) rhauch: brmeyer: that builder is somewhat limited, and it is really meant
for hard-coded code. For example, there are places where you'd have to build strings
(e.g., using "AS" for aliases)
{quote}