On 28/06/2017 10:41, Sergey Beryozkin wrote:
Hi

I think something similar works for a CXF FIQL JPA2 visitor, for example:

https://github.com/apache/cxf/blob/master/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorFiqlTest.java#L65

(find the books which have been revied done by Ted)

Hi Sergey,
that would work if we had straight beans as in the linked sample.

Syncope data model is instead much more involved as new schema for attributes can be defined at runtime: this is the reason why we have SearchCondVisitor [1] translating FIQL into our internal search conditions, which serve as input to one of available implementations of AnySearchDAO like as the default one based on SQL views [2] and another relying on Elasticsearch-based [3].

Regards.

[1] https://github.com/apache/syncope/blob/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java [2] https://github.com/apache/syncope/blob/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java [3] https://github.com/apache/syncope/blob/2_0_X/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java

On 28/06/17 08:54, Francesco Chicchiriccò wrote:
On 27/06/2017 18:18, Colm O hEigeartaigh wrote:
Thanks Francesco! On a related note, let's say I have some AnyObjects
(Printer) with a relationship to other AnyObjects (Cartridge). Now I want to search for a Printer which has a relationship with a Cartridge with a
"colour" attribute of "blue". Is there a way to do this via a FIQL
expression?

No, you cannot express such condition ATM; you could do for example:

SyncopeClient.getAnyObjectSearchConditionBuilder("PRINTER").
inRelationships("ce75249b-76e4-44b6-88ae-0841846faceb").
                 and().is("colour").equalTo("blue").query();

which translates to FIQL

$type==PRINTER;$relationships==ce75249b-76e4-44b6-88ae-0841846faceb;colour==blue

but this would rather search for blue printers having a relationship with an any object with key 'ce75249b-76e4-44b6-88ae-0841846faceb'.

or alternatively

SyncopeClient.getAnyObjectSearchConditionBuilder("PRINTER").
                 inRelationshipTypes("WITH_CARTDRIGE").
                 and().is("color").equalTo("blue").query();

which translates to FIQL

$type==PRINTER;$relationshipTypes==WITH_CARTDRIGE;color==blue

but this would rather search for blue printers having a relationship on type WITH_CARTDRIGE.

Regards.

On Tue, Jun 27, 2017 at 4:29 PM, Francesco Chicchiriccò <ilgro...@apache.org> wrote:

On 27/06/2017 17:24, Colm O hEigeartaigh wrote:

Hi all,

How can I retrieve a list of AnyObjects? The following returns a 400:

curl -I -X GET -u admin:password
http://localhost:9080/syncope/rest/anyObjects

You must at least provide the AnyType, e.g.

http://localhost:9080/syncope/rest/anyObjects;fiql=%24type%3D%3DPRINTER

Regards.




--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/

Reply via email to