Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bound actions and function overloads via container and structured type #233

Open
wants to merge 24 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
9c937e0
Bound actions and function overloads via container
HeikoTheissen Jan 11, 2024
8ab36ad
@ralfhandl's suggestions
HeikoTheissen Jan 11, 2024
1680d8e
Actions/Functions bound to a property via structured type
HeikoTheissen Jan 13, 2024
edaf880
Rephrased
HeikoTheissen Jan 15, 2024
c858774
style
HeikoTheissen Jan 15, 2024
cbd551c
@ralfhandl's suggestions
HeikoTheissen Jan 15, 2024
419986c
Action/Function via complex or entity type
HeikoTheissen Jan 15, 2024
584f5fd
Rephrased
HeikoTheissen Jan 15, 2024
8ab0389
Rephrased again
HeikoTheissen Jan 15, 2024
728c907
Fine-tuning
HeikoTheissen Jan 15, 2024
ffb1079
Parameters and return types
HeikoTheissen Jan 15, 2024
48dc875
Merge branch 'main' into ODATA-1626
HeikoTheissen Jan 18, 2024
d522e99
Explain "addressed via resource path"
HeikoTheissen Jan 18, 2024
2c63eb7
Rephrased
HeikoTheissen Jan 18, 2024
99fa5de
Fine-tuning
HeikoTheissen Jan 18, 2024
36ce19c
Redefine the "Property via structured type" case
HeikoTheissen Jan 19, 2024
3a76fca
Merge branch 'main' into ODATA-1626
ralfhandl Jan 26, 2024
fcfd147
Merge branch 'main' into ODATA-1626
ralfhandl Feb 1, 2024
dda4091
Merge branch 'main' into ODATA-1626
ralfhandl Feb 5, 2024
ca3bdea
Merge branch 'main' into ODATA-1626
ralfhandl Feb 15, 2024
528b59e
Merge branch 'main' into ODATA-1626
ralfhandl Feb 22, 2024
21159e2
Merge branch 'main' into ODATA-1626
ralfhandl Feb 29, 2024
6061f24
Merge remote-tracking branch 'origin/main' into ODATA-1626
HeikoTheissen Jul 11, 2024
e405cda
Merge branch 'ODATA-1626' of git@github.com:oasis-tcs/odata-specs.git
HeikoTheissen Jul 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions docs/odata-csdl-json/odata-csdl-json.html
Original file line number Diff line number Diff line change
Expand Up @@ -2276,6 +2276,16 @@ <h3 id="1422-target"><a name="Target" href="#Target">14.2.2 Target</a></h3>
<td><pre><code>MySchema.MyAction</code></pre></td>
</tr>
<tr class="odd">
<td>bound <a href="#Action">Action</a> overload via container</td>
<td>Navigation Property via container or Property via container, followed by bound Action overload</td>
<td><pre><code>MySchema.MyEntityContainer/MyEntitySet</code> <br><code> /MyNavigationProperty</code> <br><code> /MySchema.MyAction(Collection(MySchema.MyBindingType))</code></pre></td>
</tr>
<tr class="even">
<td>all bound <a href="#Action">Action</a> overloads with given binding type via container</td>
<td>Navigation Property via container or Property via container, followed by all overloads of an Action</td>
<td><pre><code>MySchema.MyEntityContainer/MyEntitySet</code> <br><code> /MyNavigationProperty</code> <br><code> /MySchema.MyAction</code></pre></td>
</tr>
<tr class="odd">
<td><a href="#ActionImport">Action Import</a></td>
<td>qualified name of entity container followed by a segment containing the action import name</td>
<td><pre><code>MySchema.MyEntityContainer/MyActionImport</code></pre></td>
Expand Down Expand Up @@ -2326,6 +2336,16 @@ <h3 id="1422-target"><a name="Target" href="#Target">14.2.2 Target</a></h3>
<td><pre><code>MySchema.MyFunction</code></pre></td>
</tr>
<tr class="odd">
<td>bound <a href="#Function">Function</a> overload via container</td>
<td>Navigation Property via container or Property via container, followed by bound Function overload</td>
<td><pre><code>MySchema.MyEntityContainer/MyEntitySet</code> <br><code> /MyComplexProperty</code> <br><code> /MySchema.MyFunction(MySchema.MyBindingType)</code></pre></td>
</tr>
<tr class="even">
<td>all bound <a href="#Function">Function</a> overloads of given binding type via container</td>
<td>Navigation Property via container or Property via container, followed by all overloads of a Function</td>
<td><pre><code>MySchema.MyEntityContainer/MyEntitySet</code> <br><code> /MyComplexProperty</code> <br><code> /MySchema.MyFunction</code></pre></td>
</tr>
<tr class="odd">
<td><a href="#FunctionImport">Function Import</a></td>
<td>qualified name of entity container followed by a segment containing the function import name</td>
<td><pre><code>MySchema.MyEntityContainer/MyFunctionImport</code></td>
Expand Down Expand Up @@ -2389,6 +2409,8 @@ <h3 id="1422-target"><a name="Target" href="#Target">14.2.2 Target</a></h3>
</table>
<p>All <a href="#QualifiedName">qualified names</a> used in a target path MUST be in scope.</p>
<p>External targeting is possible for properties and navigation properties of singletons or entities in a particular entity set. These annotations override annotations on the properties or navigation properties targeted via the declaring structured type.</p>
<p>External targeting is also possible for action and function overloads that are bound to properties or navigation properties of singletons or entities in a particular entity set. These annotations override annotations targeting the action or function overloads directly.</p>
<p>Note “all bound Action or Function overloads of given binding type via container” references all overloads where the binding parameter is an instance or a collection of the given type.</p>
<h2 id="143-constant-expression"><a name="ConstantExpression" href="#ConstantExpression">14.3 Constant Expression</a></h2>
<p>Constant expressions allow assigning a constant value to an applied term.</p>
<h3 id="1431-binary"><a name="Binary" href="#Binary">14.3.1 Binary</a></h3>
Expand Down
13 changes: 13 additions & 0 deletions docs/odata-csdl-json/odata-csdl-json.md
Original file line number Diff line number Diff line change
Expand Up @@ -3841,6 +3841,8 @@ Model element| Can be targeted with path expression (see also [section 14.4.1.1]
-----|-----|-----
[Action](#Action) overload| qualified name of action followed by parentheses containing the binding parameter type of a bound action overload to identify that bound overload, or by empty parentheses to identify the unbound overload| <pre>`MySchema.MyAction(MySchema.MyBindingType)` <br>`MySchema.MyAction(Collection(MySchema.BindingType))` <br>`MySchema.MyAction()`</pre>
all overloads of an [Action](#Action)| qualified name of action| <pre>`MySchema.MyAction`</pre>
bound [Action](#Action) overload via container| Navigation Property via container or Property via container, followed by bound Action overload| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyNavigationProperty` <br>` /MySchema.MyAction(Collection(MySchema.MyBindingType))`</pre>
all bound [Action](#Action) overloads with given binding type via container| Navigation Property via container or Property via container, followed by all overloads of an Action| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyNavigationProperty` <br>` /MySchema.MyAction`</pre>
[Action Import](#ActionImport)| qualified name of entity container followed by a segment containing the action import name| <pre>`MySchema.MyEntityContainer/MyActionImport`</pre>
[Annotation](#Annotation) on a model element| path expression identifying the model element followed by a segment containing an at (`@`) prepended to the qualified name of a term, optionally suffixed with a hash (`#`) and the qualifier of an annotation| <pre>`MySchema.MyEntityType/@MyVocabulary.MyTerm` <br>`MySchema.MyEntityType/@MyVocabulary.MyTerm#MyQualifier`</pre>
[Complex Type](#ComplexType)| qualified name of complex type| <pre>`MySchema.MyComplexType`</pre>
Expand All @@ -3851,6 +3853,8 @@ all overloads of an [Action](#Action)| qualified name of action| <pre>`MySchema.
[Enumeration Type Member](#EnumerationTypeMember)| qualified name of enumeration type followed by a segment containing the name of a child element| <pre>`MySchema.MyEnumType/MyMember`</pre>
[Function](#Function) overload| qualified name of function followed by parentheses containing the comma-separated list of the parameter types of a bound or unbound function overload in the order of their definition in the function overload| <pre>`MySchema.MyFunction(MySchema.MyBindingParamType,` <br>` First.NonBinding.ParamType)` <br>`MySchema.MyFunction(First.NonBinding.ParamType,` <br>` Second.NonBinding.ParamType)`</pre>
all overloads of a [Function](#Function)| qualified name of function| <pre>`MySchema.MyFunction`</pre>
bound [Function](#Function) overload via container| Navigation Property via container or Property via container, followed by bound Function overload| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyComplexProperty` <br>` /MySchema.MyFunction(MySchema.MyBindingType)`</pre>
all bound [Function](#Function) overloads of given binding type via container| Navigation Property via container or Property via container, followed by all overloads of a Function| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyComplexProperty` <br>` /MySchema.MyFunction`</pre>
[Function Import](#FunctionImport)| qualified name of entity container followed by a segment containing the function import name| <pre>`MySchema.MyEntityContainer/MyFunctionImport`
[Navigation Property](#NavigationProperty) via container| qualified name of entity container followed by a segment containing a singleton or entity set name and zero or more segments containing the name of a structural or navigation property, or a type-cast or term-cast| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyNavigationProperty` <br>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MySchema.MyEntityType/MyNavProperty` <br>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyComplexProperty/MyNavProperty` <br>`MySchema.MyEntityContainer/MySingleton` <br>` /MyComplexProperty/MyNavProperty`</pre>
[Navigation Property](#NavigationProperty) via structured type| qualified name of structured type followed by zero or more segments containing the name of a structural or navigation property, or a type-cast or term-cast| <pre>`MySchema.MyEntityType/MyNavigationProperty` <br>`MySchema.MyComplexType/MyNavigationProperty`</pre>
Expand All @@ -3871,6 +3875,15 @@ properties of singletons or entities in a particular entity set. These
annotations override annotations on the properties or navigation
properties targeted via the declaring structured type.

External targeting is also possible for action and function overloads that
are bound to properties or navigation properties of singletons or entities in
a particular entity set. These annotations override annotations targeting the
action or function overloads directly.

Note "all bound Action or Function overloads of given binding type via
container" references all overloads where the binding parameter is an instance
or a collection of the given type.

## <a name="ConstantExpression" href="#ConstantExpression">14.3 Constant Expression</a>

Constant expressions allow assigning a constant value to an applied
Expand Down
22 changes: 22 additions & 0 deletions docs/odata-csdl-xml/odata-csdl-xml.html
Original file line number Diff line number Diff line change
Expand Up @@ -2092,6 +2092,16 @@ <h3 id="1422-target"><a name="Target" href="#Target">14.2.2 Target</a></h3>
<td><pre><code>MySchema.MyAction</code></pre></td>
</tr>
<tr class="odd">
<td>bound <a href="#Action">Action</a> overload via container</td>
<td>Navigation Property via container or Property via container, followed by bound Action overload</td>
<td><pre><code>MySchema.MyEntityContainer/MyEntitySet</code> <br><code> /MyNavigationProperty</code> <br><code> /MySchema.MyAction(Collection(MySchema.MyBindingType))</code></pre></td>
</tr>
<tr class="even">
<td>all bound <a href="#Action">Action</a> overloads with given binding type via container</td>
<td>Navigation Property via container or Property via container, followed by all overloads of an Action</td>
<td><pre><code>MySchema.MyEntityContainer/MyEntitySet</code> <br><code> /MyNavigationProperty</code> <br><code> /MySchema.MyAction</code></pre></td>
</tr>
<tr class="odd">
<td><a href="#ActionImport">Action Import</a></td>
<td>qualified name of entity container followed by a segment containing the action import name</td>
<td><pre><code>MySchema.MyEntityContainer/MyActionImport</code></pre></td>
Expand Down Expand Up @@ -2142,6 +2152,16 @@ <h3 id="1422-target"><a name="Target" href="#Target">14.2.2 Target</a></h3>
<td><pre><code>MySchema.MyFunction</code></pre></td>
</tr>
<tr class="odd">
<td>bound <a href="#Function">Function</a> overload via container</td>
<td>Navigation Property via container or Property via container, followed by bound Function overload</td>
<td><pre><code>MySchema.MyEntityContainer/MyEntitySet</code> <br><code> /MyComplexProperty</code> <br><code> /MySchema.MyFunction(MySchema.MyBindingType)</code></pre></td>
</tr>
<tr class="even">
<td>all bound <a href="#Function">Function</a> overloads of given binding type via container</td>
<td>Navigation Property via container or Property via container, followed by all overloads of a Function</td>
<td><pre><code>MySchema.MyEntityContainer/MyEntitySet</code> <br><code> /MyComplexProperty</code> <br><code> /MySchema.MyFunction</code></pre></td>
</tr>
<tr class="odd">
<td><a href="#FunctionImport">Function Import</a></td>
<td>qualified name of entity container followed by a segment containing the function import name</td>
<td><pre><code>MySchema.MyEntityContainer/MyFunctionImport</code></td>
Expand Down Expand Up @@ -2205,6 +2225,8 @@ <h3 id="1422-target"><a name="Target" href="#Target">14.2.2 Target</a></h3>
</table>
<p>All <a href="#QualifiedName">qualified names</a> used in a target path MUST be in scope.</p>
<p>External targeting is possible for properties and navigation properties of singletons or entities in a particular entity set. These annotations override annotations on the properties or navigation properties targeted via the declaring structured type.</p>
<p>External targeting is also possible for action and function overloads that are bound to properties or navigation properties of singletons or entities in a particular entity set. These annotations override annotations targeting the action or function overloads directly.</p>
<p>Note “all bound Action or Function overloads of given binding type via container” references all overloads where the binding parameter is an instance or a collection of the given type.</p>
<h2 id="143-constant-expression"><a name="ConstantExpression" href="#ConstantExpression">14.3 Constant Expression</a></h2>
<p>Constant expressions allow assigning a constant value to an applied term.</p>
<h3 id="1431-binary"><a name="Binary" href="#Binary">14.3.1 Binary</a></h3>
Expand Down
13 changes: 13 additions & 0 deletions docs/odata-csdl-xml/odata-csdl-xml.md
Original file line number Diff line number Diff line change
Expand Up @@ -3654,6 +3654,8 @@ Model element| Can be targeted with path expression (see also [section 14.4.1.1]
-----|-----|-----
[Action](#Action) overload| qualified name of action followed by parentheses containing the binding parameter type of a bound action overload to identify that bound overload, or by empty parentheses to identify the unbound overload| <pre>`MySchema.MyAction(MySchema.MyBindingType)` <br>`MySchema.MyAction(Collection(MySchema.BindingType))` <br>`MySchema.MyAction()`</pre>
all overloads of an [Action](#Action)| qualified name of action| <pre>`MySchema.MyAction`</pre>
bound [Action](#Action) overload via container| Navigation Property via container or Property via container, followed by bound Action overload| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyNavigationProperty` <br>` /MySchema.MyAction(Collection(MySchema.MyBindingType))`</pre>
all bound [Action](#Action) overloads with given binding type via container| Navigation Property via container or Property via container, followed by all overloads of an Action| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyNavigationProperty` <br>` /MySchema.MyAction`</pre>
[Action Import](#ActionImport)| qualified name of entity container followed by a segment containing the action import name| <pre>`MySchema.MyEntityContainer/MyActionImport`</pre>
[Annotation](#Annotation) on a model element| path expression identifying the model element followed by a segment containing an at (`@`) prepended to the qualified name of a term, optionally suffixed with a hash (`#`) and the qualifier of an annotation| <pre>`MySchema.MyEntityType/@MyVocabulary.MyTerm` <br>`MySchema.MyEntityType/@MyVocabulary.MyTerm#MyQualifier`</pre>
[Complex Type](#ComplexType)| qualified name of complex type| <pre>`MySchema.MyComplexType`</pre>
Expand All @@ -3664,6 +3666,8 @@ all overloads of an [Action](#Action)| qualified name of action| <pre>`MySchema.
[Enumeration Type Member](#EnumerationTypeMember)| qualified name of enumeration type followed by a segment containing the name of a child element| <pre>`MySchema.MyEnumType/MyMember`</pre>
[Function](#Function) overload| qualified name of function followed by parentheses containing the comma-separated list of the parameter types of a bound or unbound function overload in the order of their definition in the function overload| <pre>`MySchema.MyFunction(MySchema.MyBindingParamType,` <br>` First.NonBinding.ParamType)` <br>`MySchema.MyFunction(First.NonBinding.ParamType,` <br>` Second.NonBinding.ParamType)`</pre>
all overloads of a [Function](#Function)| qualified name of function| <pre>`MySchema.MyFunction`</pre>
bound [Function](#Function) overload via container| Navigation Property via container or Property via container, followed by bound Function overload| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyComplexProperty` <br>` /MySchema.MyFunction(MySchema.MyBindingType)`</pre>
all bound [Function](#Function) overloads of given binding type via container| Navigation Property via container or Property via container, followed by all overloads of a Function| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyComplexProperty` <br>` /MySchema.MyFunction`</pre>
[Function Import](#FunctionImport)| qualified name of entity container followed by a segment containing the function import name| <pre>`MySchema.MyEntityContainer/MyFunctionImport`
[Navigation Property](#NavigationProperty) via container| qualified name of entity container followed by a segment containing a singleton or entity set name and zero or more segments containing the name of a structural or navigation property, or a type-cast or term-cast| <pre>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyNavigationProperty` <br>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MySchema.MyEntityType/MyNavProperty` <br>`MySchema.MyEntityContainer/MyEntitySet` <br>` /MyComplexProperty/MyNavProperty` <br>`MySchema.MyEntityContainer/MySingleton` <br>` /MyComplexProperty/MyNavProperty`</pre>
[Navigation Property](#NavigationProperty) via structured type| qualified name of structured type followed by zero or more segments containing the name of a structural or navigation property, or a type-cast or term-cast| <pre>`MySchema.MyEntityType/MyNavigationProperty` <br>`MySchema.MyComplexType/MyNavigationProperty`</pre>
Expand All @@ -3684,6 +3688,15 @@ properties of singletons or entities in a particular entity set. These
annotations override annotations on the properties or navigation
properties targeted via the declaring structured type.

External targeting is also possible for action and function overloads that
are bound to properties or navigation properties of singletons or entities in
a particular entity set. These annotations override annotations targeting the
action or function overloads directly.

Note "all bound Action or Function overloads of given binding type via
container" references all overloads where the binding parameter is an instance
or a collection of the given type.

## <a name="ConstantExpression" href="#ConstantExpression">14.3 Constant Expression</a>

Constant expressions allow assigning a constant value to an applied
Expand Down
29 changes: 29 additions & 0 deletions odata-csdl/14 Vocabulary and Annotation.md
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,16 @@ qualified name of action followed by parentheses containing the binding paramete
all overloads of an [Action](#Action)|
qualified name of action|
<pre>`MySchema.MyAction`</pre>
bound [Action](#Action) overload via container|
Navigation Property via container or Property via container, followed by bound Action overload|
<pre>`MySchema.MyEntityContainer/MyEntitySet`
<br>` /MyNavigationProperty`
ralfhandl marked this conversation as resolved.
Show resolved Hide resolved
<br>` /MySchema.MyAction(Collection(MySchema.MyBindingType))`</pre>
HeikoTheissen marked this conversation as resolved.
Show resolved Hide resolved
all bound [Action](#Action) overloads with given binding type via container|
Navigation Property via container or Property via container, followed by all overloads of an Action|
<pre>`MySchema.MyEntityContainer/MyEntitySet`
<br>` /MyNavigationProperty`
<br>` /MySchema.MyAction`</pre>
[Action Import](#ActionImport)|
qualified name of entity container followed by a segment containing the action import name|
<pre>`MySchema.MyEntityContainer/MyActionImport`</pre>
Expand Down Expand Up @@ -614,6 +624,16 @@ qualified name of function followed by parentheses containing the comma-separate
all overloads of a [Function](#Function)|
qualified name of function|
<pre>`MySchema.MyFunction`</pre>
bound [Function](#Function) overload via container|
Navigation Property via container or Property via container, followed by bound Function overload|
<pre>`MySchema.MyEntityContainer/MyEntitySet`
<br>` /MyComplexProperty`
ralfhandl marked this conversation as resolved.
Show resolved Hide resolved
<br>` /MySchema.MyFunction(MySchema.MyBindingType)`</pre>
all bound [Function](#Function) overloads of given binding type via container|
Navigation Property via container or Property via container, followed by all overloads of a Function|
<pre>`MySchema.MyEntityContainer/MyEntitySet`
<br>` /MyComplexProperty`
<br>` /MySchema.MyFunction`</pre>
[Function Import](#FunctionImport)|
qualified name of entity container followed by a segment containing the function import name|
<pre>`MySchema.MyEntityContainer/MyFunctionImport`
Expand Down Expand Up @@ -674,6 +694,15 @@ properties of singletons or entities in a particular entity set. These
annotations override annotations on the properties or navigation
properties targeted via the declaring structured type.

External targeting is also possible for action and function overloads that
are bound to properties or navigation properties of singletons or entities in
HeikoTheissen marked this conversation as resolved.
Show resolved Hide resolved
a particular entity set. These annotations override annotations targeting the
action or function overloads directly.

Note "all bound Action or Function overloads of given binding type via
container" references all overloads where the binding parameter is an instance
or a collection of the given type.

## ##subsec Constant Expression

Constant expressions allow assigning a constant value to an applied
Expand Down