olingo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ramya (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (OLINGO-1144) How to use the FilterFactory to create a valid URI for filtering on a ComplexValue in a collection?
Date Thu, 14 Dec 2017 05:19:00 GMT

     [ https://issues.apache.org/jira/browse/OLINGO-1144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Ramya resolved OLINGO-1144.
---------------------------
    Resolution: Fixed

> How to use the FilterFactory to create a valid URI for filtering on a ComplexValue in
a collection?
> ---------------------------------------------------------------------------------------------------
>
>                 Key: OLINGO-1144
>                 URL: https://issues.apache.org/jira/browse/OLINGO-1144
>             Project: Olingo
>          Issue Type: Question
>          Components: odata4-client
>    Affects Versions: (Java) V4 4.3.0
>            Reporter: Geert Graat
>
> Hi,
> We use the Olingo client library to call an OData service (which also uses the Olingo
library). We are implementing filtering using the {{FilterFactory}}. The problem we are facing
is how we can build a valid URIFilter to filter on the values of a ComplexType that is inside
a collection.
> Below is a simplified version of or metadata document:
> {code}
> <?xml version='1.0' encoding='UTF-8'?>
> <edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
> 	<edmx:DataServices>
> 		<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="example">
> 			<EntityType Name="Entity">
> 				<Property Name="values" Type="Collection(example.Value)"/>
> 			</EntityType>
> 			<ComplexType Name="Value">
> 				<Property Name="name" Type="Edm.String"/>
> 				<Property Name="type" Type="Edm.String"/>
> 			</ComplexType>
> 			<EntityContainer Name="Container">
> 				<EntitySet Name="Entities" EntityType="example.Entity"/>
> 			</EntityContainer>
> 		</Schema>
> 	</edmx:DataServices>
> </edmx:Edmx>
> {code}
> What we want is for instance to filter on an Entity that has a Value with name 'example'.
For this we need to construct the following URI:
> {code}$filter=values/any(v:v/name eq 'example'){code}
> We need to use the {{any}} function because as you can see from the metadata model an
{{Entity}} can contain multiple {{Value}} complex types in the collection property {{values}}.
> The problem is the definition of the lambda variable ({{v}} in the example above). If
we use the {{FilterFactory}}, we can get a {{FilterArgFactory}} that has an {{any}} function.
This creates a {{FilterLambda}} with the following arguments:
> * collection: the property that contains the collection, in our case {{values}}
> * operator: the operator, in our case {{any}}
> * expression: the expression to filter on our collection, in our case {{v/name eq 'example'}}
> So where does the declaration of the lambda variable go? We have searched the entire
library, but cannot find it. Can you please help with an example?



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message