@@ -112,25 +112,25 @@ <h2>Approach</h2>
112
112
< h2 > Capturing control information as patterns</ h2 >
113
113
< p > I mentioned patterns several times already. Let me make this more concrete. As we discussed before in the OData mailing list, we’re adding support for annotations to metadata using vocabularies. In order to support this JSON-based “light” format we introduce a vocabulary that captures how to derive all bits of control information from the regular object data. We’ll have the details of every pattern documented in the official spec, but here are a few to show what they look like.</ p >
114
114
< p > This one shows the base URL for the service, and is used for all relative URLs in other patterns:</ p >
115
- < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation</ span > < span style ="color: #ff0000 "> Term</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> odata.urls.baseurlexpression</ span > "< span style ="color: #ff0000 " > Target</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> ODataDemo.DemoService</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
115
+ < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation </ span > < span style ="color: #e50000 "> Term</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> odata.urls.baseurlexpression</ span > "< span style ="color: #e50000 " > Target</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> ODataDemo.DemoService</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
116
116
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> String</ span > < span style ="color: #0000ff "> >https://services.odata.org/OData/OData.svc/</< span > < span style ="color: #a31515 "> String</ span > </ span > </ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
117
117
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > </</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
118
118
< p > These two show two URL construction rules, one to obtain the URL of a collection (a set) and one to obtain the URL of an individual element within that collection:</ p >
119
- < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation</ span > < span style ="color: #ff0000 "> Term</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> odata.urls.setexpression</ span > "< span style ="color: #ff0000 " > Target</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> ODataDemo.DemoService.Products</ span > </ span > < span > "</ span > </ span > </ p >
120
- < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > </ span > </ span > < span > < span style ="color: #ff0000 "> String</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> Products/</ span > "</ span > < span style ="color: #0000ff "> /></ span > </ span > </ p >
119
+ < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation </ span > < span style ="color: #e50000 "> Term</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> odata.urls.setexpression</ span > "< span style ="color: #e50000 " > Target</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> ODataDemo.DemoService.Products</ span > </ span > < span > "</ span > </ span > </ p >
120
+ < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > </ span > </ span > < span > < span style ="color: #e50000 "> String</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> Products/</ span > "</ span > < span style ="color: #0000ff "> /></ span > </ span > </ p >
121
121
< p > < span style ="font-family: Lucida Console "> < span > </ span > </ span > </ p >
122
- < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation</ span > < span style ="color: #ff0000 "> Term</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> odata.urls.keylookupexpression</ span > "< span style ="color: #ff0000 " > Target</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> ODataDemo.DemoService.Products</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
123
- < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> Apply</ span > < span style ="color: #ff0000 "> Function</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> KeyConcat</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
122
+ < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation </ span > < span style ="color: #e50000 "> Term</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> odata.urls.keylookupexpression</ span > "< span style ="color: #e50000 " > Target</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> ODataDemo.DemoService.Products</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
123
+ < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> Apply </ span > < span style ="color: #e50000 "> Function</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> KeyConcat</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
124
124
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> String</ span > < span style ="color: #0000ff "> ></ span > (< span style ="color: #0000ff "> </</ span > < span style ="color: #a31515 "> String</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
125
125
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> Path</ span > < span style ="color: #0000ff "> ></ span > ID< span style ="color: #0000ff "> </</ span > < span style ="color: #a31515 "> Path</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
126
126
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> String</ span > < span style ="color: #0000ff "> ></ span > )/< span style ="color: #0000ff "> </</ span > < span style ="color: #a31515 "> String</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
127
127
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > </</ span > </ span > < span > < span style ="color: #a31515 "> Apply</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
128
128
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > </</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > < span style ="font-family: Lucida Console "> < span > </ span > </ span > </ p >
129
129
< p > Finally, here’s one that’s not a URL but a plain value, in this case the ETag for each element (doesn’t apply to the “Product” type, but included here as an example):</ p >
130
- < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation</ span > < span style ="color: #ff0000 "> Term</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> odata.json.etagexpression</ span > "< span style ="color: #ff0000 " > Target</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> ODataDemo.DemoService.Products</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
131
- < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> Apply</ span > < span style ="color: #ff0000 "> Function</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> Concat</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
130
+ < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> ValueAnnotation </ span > < span style ="color: #e50000 "> Term</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> odata.json.etagexpression</ span > "< span style ="color: #e50000 " > Target</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> ODataDemo.DemoService.Products</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
131
+ < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> Apply </ span > < span style ="color: #e50000 "> Function</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> Concat</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
132
132
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> String</ span > < span style ="color: #0000ff "> ></ span > W/"< span style ="color: #0000ff "> </</ span > < span style ="color: #a31515 "> String</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
133
- < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> Apply</ span > < span style ="color: #ff0000 "> Function</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> RawValue</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
133
+ < p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> Apply </ span > < span style ="color: #e50000 "> Function</ span > < span style ="color: #0000ff "> =</ span > "< span style ="color: #0000ff "> RawValue</ span > "</ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
134
134
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> Path</ span > < span style ="color: #0000ff "> ></ span > Version< span style ="color: #0000ff "> </</ span > < span style ="color: #a31515 "> Path</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
135
135
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > </</ span > </ span > < span > < span style ="color: #a31515 "> Apply</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
136
136
< p > < span style ="font-family: Lucida Console "> < span style ="color: #0000ff "> < span > <</ span > </ span > < span > < span style ="color: #a31515 "> String</ span > < span style ="color: #0000ff "> ></ span > "< span style ="color: #0000ff "> </</ span > < span style ="color: #a31515 "> String</ span > </ span > < span style ="color: #0000ff "> ></ span > </ span > </ p >
0 commit comments