diff --git a/about/glossary.md b/about/glossary.md index 1bbcf97d9..13d90bfdc 100644 --- a/about/glossary.md +++ b/about/glossary.md @@ -48,11 +48,11 @@ CAP-related Terms and Acronyms {.subtitle} --- -[JSON](http://json.org) — JavaScript Object Notation +[JSON](https://json.org) — JavaScript Object Notation : a lightweight data-interchange format. Although based on a minimal subset of JavaScript, JSON is meanwhile broadly adopted in all major languages. -[YAML](http://yaml.org) — YAML Ain't Markup Language -: a human-friendly data-serialization language and alternative to [JSON](http://json.org). +[YAML](https://yaml.org) — YAML Ain't Markup Language +: a human-friendly data-serialization language and alternative to [JSON](https://json.org). Original: _Yet Another Markup Language_ --- @@ -60,13 +60,13 @@ Original: _Yet Another Markup Language_ [OData](../advanced/odata) — The OData Standard : Languages and protocols to expose and consume data-oriented REST services -[CSDL](http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html) — Common Schema Definition Language +[CSDL](https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html) — Common Schema Definition Language : the language within [OData](../advanced/odata) to declare service interfaces -[EDM](http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html) — Entity Data Model +[EDM](https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html) — Entity Data Model : the meta model of [OData](../advanced/odata) definitions -[EDMX](http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html) — Entity Data Model XML +[EDMX](https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html) — Entity Data Model XML : the metadata file of [OData](../advanced/odata) definitions in XML format diff --git a/advanced/fiori.md b/advanced/fiori.md index 2e4c788b0..5096acfb4 100644 --- a/advanced/fiori.md +++ b/advanced/fiori.md @@ -338,7 +338,7 @@ When you open an annotation file, all language-dependent string values are check ### Prefer `@title` and `@description` -Influenced by the [JSON Schema](http://json-schema.org), CDS supports the [common annotations](../cds/annotations#common-annotations) `@title` and `@description`, which are mapped to corresponding [OData annotations](./odata#annotations) as follows: +Influenced by the [JSON Schema](https://json-schema.org), CDS supports the [common annotations](../cds/annotations#common-annotations) `@title` and `@description`, which are mapped to corresponding [OData annotations](./odata#annotations) as follows: | CDS | JSON Schema | OData | |----------------|---------------|---------------------| diff --git a/advanced/hana.md b/advanced/hana.md index 198c8392c..d33807df6 100644 --- a/advanced/hana.md +++ b/advanced/hana.md @@ -260,7 +260,7 @@ The following is the definition of a calculation view `data.model.bookshop.CalcB ::: code-group ```xml [existing-calc-view-quoted.hdbcalculationview] - + diff --git a/advanced/odata.md b/advanced/odata.md index a8014a8eb..df2d63063 100644 --- a/advanced/odata.md +++ b/advanced/odata.md @@ -44,7 +44,7 @@ OData is an OASIS standard, which essentially enhances plain REST with standardi - (1) The elements to be searched are specified with the [`@cds.search` annotation](../guides/providing-services#searching-data). - (2) The navigation path identifying the collection can only contain one segment. -System query options can also be applied to an [expanded navigation property](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#_Toc31361039) (nested within `$expand`): +System query options can also be applied to an [expanded navigation property](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#_Toc31361039) (nested within `$expand`): | Query Options | Remarks | Node.js | Java | |----------------|-------------------------------------------|----------|--------| @@ -100,7 +100,7 @@ Content-Type: application/json } ``` -PATCH requests with delta payload are executed using batch delete and [upsert](../java/query-api#bulk-upsert) statements, and are more efficient than OData [batch requests](http://docs.oasis-open.org/odata/odata/v4.01/csprd02/part1-protocol/odata-v4.01-csprd02-part1-protocol.html#sec_BatchRequests). +PATCH requests with delta payload are executed using batch delete and [upsert](../java/query-api#bulk-upsert) statements, and are more efficient than OData [batch requests](https://docs.oasis-open.org/odata/odata/v4.01/csprd02/part1-protocol/odata-v4.01-csprd02-part1-protocol.html#sec_BatchRequests). Use PATCH on entity collections for uploading mass data using a dedicated service, which is secured using [role-based authorization](../java/security#role-based-auth). Delta updates must be explicitly enabled by annotating the entity with @@ -264,7 +264,7 @@ For each annotated target definition in CSN, the rules for restructuring from CS ### Qualified Annotations -OData foresees [qualified annotations](http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part3-csdl/odata-v4.0-errata03-os-part3-csdl-complete.html#_Toc453752511), which essentially allow to specify different values for a given property. CDS syntax for annotations was extended to also allow appending OData-style qualifiers after a `#` sign to an annotation key, but always only as the last component of a key in the syntax. +OData foresees [qualified annotations](https://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part3-csdl/odata-v4.0-errata03-os-part3-csdl-complete.html#_Toc453752511), which essentially allow to specify different values for a given property. CDS syntax for annotations was extended to also allow appending OData-style qualifiers after a `#` sign to an annotation key, but always only as the last component of a key in the syntax. For example, this is supported: @@ -582,13 +582,13 @@ In any case, the resulting EDMX is: ### Dynamic Expressions { #dynamic-expressions} OData supports dynamic expressions in annotations. CDS syntax doesn't allow writing expressions -in annotation values, but for OData annotations you can use the "edm-json inline mechanism" by providing a [dynamic expression](http://docs.oasis-open.org/odata/odata-csdl-json/v4.01/odata-csdl-json-v4.01.html#_Toc38466479) as defined -in the [JSON representation of the OData Common Schema Language](http://docs.oasis-open.org/odata/odata-csdl-json/v4.01/odata-csdl-json-v4.01.html) enclosed in `{ $edmJson: { ... }}`. +in annotation values, but for OData annotations you can use the "edm-json inline mechanism" by providing a [dynamic expression](https://docs.oasis-open.org/odata/odata-csdl-json/v4.01/odata-csdl-json-v4.01.html#_Toc38466479) as defined +in the [JSON representation of the OData Common Schema Language](https://docs.oasis-open.org/odata/odata-csdl-json/v4.01/odata-csdl-json-v4.01.html) enclosed in `{ $edmJson: { ... }}`. Note that here the CDS syntax for string literals with single quotes (`'foo'`) applies, and that paths are not automatically recognized but need to be written as `{$Path: 'fieldName'}`. The CDS compiler translates the expression into the corresponding -[XML representation](http://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530421). +[XML representation](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#_Toc38530421). For example, the CDS annotation: @@ -791,7 +791,7 @@ This request operates on the books of the order with ID 10. First it filters out #### `concat` -The [`concat` transformation](http://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/cs02/odata-data-aggregation-ext-v4.0-cs02.html#_Toc435016581) applies additional transformation sequences to the input set and concatenates the result: +The [`concat` transformation](https://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/cs02/odata-data-aggregation-ext-v4.0-cs02.html#_Toc435016581) applies additional transformation sequences to the input set and concatenates the result: ```http GET /Books?$apply= diff --git a/cds/cdl.md b/cds/cdl.md index a40530d75..75f55994c 100644 --- a/cds/cdl.md +++ b/cds/cdl.md @@ -1435,7 +1435,7 @@ service MyOrders { ``` ::: tip -The notion of actions and functions in CDS adopts that of [OData](http://docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html#_Toc372793737); actions and functions on service-level are _unbound_ ones. +The notion of actions and functions in CDS adopts that of [OData](https://docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html#_Toc372793737); actions and functions on service-level are _unbound_ ones. ::: diff --git a/get-started/in-a-nutshell.md b/get-started/in-a-nutshell.md index 9150e741a..1dded2739 100644 --- a/get-started/in-a-nutshell.md +++ b/get-started/in-a-nutshell.md @@ -307,7 +307,7 @@ Open __ in your browser and see the generic _index.html_ ### Compiling APIs (Optional) { #repl} -You can also compile service definitions explicitly, for example to an [OData model](http:/docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html): +You can also compile service definitions explicitly, for example to an [OData model](https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html): ```sh cds srv/cat-service.cds -2 edmx diff --git a/guides/databases.md b/guides/databases.md index 7adbb3b21..9bf2a3121 100644 --- a/guides/databases.md +++ b/guides/databases.md @@ -585,7 +585,7 @@ Find here a collection of resources on selected databases and their reference do * [SAP HANA SQL Reference Guide for SAP HANA Platform (Cloud Version)](https://help.sap.com/docs/HANA_SERVICE_CF/7c78579ce9b14a669c1f3295b0d8ca16/28bcd6af3eb6437892719f7c27a8a285.html) * [SAP HANA SQL Reference Guide for SAP HANA Cloud](https://help.sap.com/docs/HANA_CLOUD_DATABASE/c1d3f60099654ecfb3fe36ac93c121bb/28bcd6af3eb6437892719f7c27a8a285.html) * [SQLite Keywords](https://www.sqlite.org/lang_keywords.html) -* [H2 Keywords/Reserved Words](http://www.h2database.com/html/advanced.html#keywords) +* [H2 Keywords/Reserved Words](https://www.h2database.com/html/advanced.html#keywords) [There are also reserved words related to SAP Fiori.](../advanced/fiori#reserved-words){.learn-more} diff --git a/guides/domain-modeling.md b/guides/domain-modeling.md index 1346aca4d..7edefb1ce 100644 --- a/guides/domain-modeling.md +++ b/guides/domain-modeling.md @@ -314,7 +314,7 @@ This eases the implementation of generic functions that can apply the same ways ### Prefer UUIDs for Keys -While UUIDs certainly come with an overhead and a performance penalty when looking at single databases, they have several advantages when we consider the total bill. So, you can avoid [the evil of premature optimization](http://wiki.c2.com/?PrematureOptimization) by at least considering these points: +While UUIDs certainly come with an overhead and a performance penalty when looking at single databases, they have several advantages when we consider the total bill. So, you can avoid [the evil of premature optimization](https://wiki.c2.com/?PrematureOptimization) by at least considering these points: * **UUIDs are universal** — that means that they’re unique across every system in the world, while sequences are only unique in the source system's boundaries. Whenever you want to exchange data with other systems you'd anyways add something to make your records 'universally' addressable. diff --git a/guides/providing-services.md b/guides/providing-services.md index 2b10a086b..3e374522b 100644 --- a/guides/providing-services.md +++ b/guides/providing-services.md @@ -512,7 +512,7 @@ GET .../Books?$skiptoken=1000 On firing this query, you get the second set of 1,000 records with a link to the next page, and so on, until the last page is returned, with the response not containing a `nextLink`. ::: warning -Per OData specification for [Server Side Paging](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_ServerDrivenPaging), the value of the `nextLink` returned by the server must not be interpreted or changed by the clients. +Per OData specification for [Server Side Paging](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_ServerDrivenPaging), the value of the `nextLink` returned by the server must not be interpreted or changed by the clients. ::: ### Reliable Pagination diff --git a/guides/using-services.md b/guides/using-services.md index fb761eb00..2be9104ce 100644 --- a/guides/using-services.md +++ b/guides/using-services.md @@ -615,7 +615,7 @@ extend service RiskService with { CAP automatically tries to delegate queries to database entities, which don't exist as you're pointing to an external service. That behavior would produce an error like this: ```xml - + 500 SQLITE_ERROR: no such table: RiskService_BusinessPartners in: SELECT BusinessPartner, Customer, Supplier, AcademicTitle, AuthorizationGroup, BusinessPartnerCategory, BusinessPartnerFullName, BusinessPartnerGrouping, BusinessPartnerName, BusinessPartnerUUID, CorrespondenceLanguage, CreatedByUser, CreationDate, (...) FROM RiskService_BusinessPartner ALIAS_1 ORDER BY BusinessPartner COLLATE NOCASE ASC LIMIT 11 diff --git a/java/indicating-errors.md b/java/indicating-errors.md index f02d71a17..3bd536fe6 100644 --- a/java/indicating-errors.md +++ b/java/indicating-errors.md @@ -88,7 +88,7 @@ If the CDS property [`cds.errors.combined`](../java/development/properties#cds-e ## Formatting and Localization Texts passed to both `ServiceException` and the `Messages` API can be formatted and localized. -By default you can use [SLF4J's messaging formatting style](http://www.slf4j.org/api/org/slf4j/helpers/MessageFormatter.html) to format strings passed to both APIs. +By default you can use [SLF4J's messaging formatting style](https://www.slf4j.org/api/org/slf4j/helpers/MessageFormatter.html) to format strings passed to both APIs. ```java // message with placeholders diff --git a/java/observability.md b/java/observability.md index 8e3a6f89d..ec1a36321 100644 --- a/java/observability.md +++ b/java/observability.md @@ -32,7 +32,7 @@ Various logging frameworks for Java have evolved and are widely used in Open Sou - Hierarchical logger components that can be configured independently. - Separation of log input (messages, parameters, context) and log output (format, destination). -CAP Java SDK seamlessly integrates with Simple Logging Facade for Java ([SLF4J](http://www.slf4j.org)), which provides an abstraction layer for logging APIs. Applications compiled against SLF4J are free to choose a concrete logging framework implementation at deployment time. Most famous libraries have a native integration to SLF4J, but it also has the capability to bridge legacy logging API calls: +CAP Java SDK seamlessly integrates with Simple Logging Facade for Java ([SLF4J](https://www.slf4j.org)), which provides an abstraction layer for logging APIs. Applications compiled against SLF4J are free to choose a concrete logging framework implementation at deployment time. Most famous libraries have a native integration to SLF4J, but it also has the capability to bridge legacy logging API calls: @@ -292,7 +292,7 @@ cf ssh -N -T -L :localhost: Afterwards, connect to `localhost:` in the JMX client. Common JMX clients are: -- [JConsole](http://openjdk.java.net/tools/svc/jconsole/), which is part of the JDK delivery. +- [JConsole](https://openjdk.java.net/tools/svc/jconsole/), which is part of the JDK delivery. - [OpenJDK Mission Control](https://github.com/openjdk/jmc), which can be installed separately. diff --git a/java/persistence-services.md b/java/persistence-services.md index fc4e19be8..ee7ea4f33 100644 --- a/java/persistence-services.md +++ b/java/persistence-services.md @@ -43,7 +43,7 @@ CAP Java SDK is tested on [PostgreSQL](https://www.postgresql.org/) 15 and suppo 1. H2 only supports database level collation. Lexicographical sorting on character-based columns isn’t supported. 2. Case-insensitive comparison isn’t yet supported. 3. By default, views aren’t updatable on H2. However, the CAP Java SDK supports some views to be updatable as described [here](query-execution#updatable-views). -4. Although referential and foreign key constraints are supported, H2 [doesn't support deferred checking](http://www.h2database.com/html/grammar.html#referential_action). As a consequence, schema SQL is never generated with referential constraints. +4. Although referential and foreign key constraints are supported, H2 [doesn't support deferred checking](https://www.h2database.com/html/grammar.html#referential_action). As a consequence, schema SQL is never generated with referential constraints. 5. In [pessimistic locking](query-execution#pessimistic-locking), _shared_ locks are not supported but an _exclusive_ lock is used instead. 6. The CDS type `UInt8` can't be used with H2, as there is no `TINYINT`. Use `Int16` instead. @@ -165,7 +165,7 @@ To generate a `schema.sql` for H2, use the dialect `h2` with the `cds deploy` co ``` -In Spring, H2 is automatically initialized in-memory when present on the classpath. See the official [documentation](http://www.h2database.com/html/features.html) for H2 for file-based database configuration. +In Spring, H2 is automatically initialized in-memory when present on the classpath. See the official [documentation](https://www.h2database.com/html/features.html) for H2 for file-based database configuration. The `cds-maven-plugin` provides the goal `add` that can be used to add H2 support to the CAP Java project: ```sh @@ -192,7 +192,7 @@ To generate a `schema.sql` for SQLite, use the dialect `sqlite` with the `cds de ``` -Enable support for [session context variables](../guides/databases-sqlite#session-variables) +Enable support for [session context variables](../guides/databases-sqlite#session-variables) - First enable compiler support in _.cdsrc.json_: diff --git a/node.js/authentication.md b/node.js/authentication.md index 1d94d7589..7cd14a132 100644 --- a/node.js/authentication.md +++ b/node.js/authentication.md @@ -279,7 +279,7 @@ In contrast to [mocked authentication](#mocked), no default users are automatica This is the default strategy used in production. User identity, as well as assigned roles and user attributes, are provided at runtime, by a bound instance of the ['user account and authentication'](https://help.sap.com/products/BTP/65de2977205c403bbc107264b8eccf4b/419ae2ef1ddd49dca9eb65af2d67c6ec.html) service (UAA). This is done in form of a JWT token in the `Authorization` header of incoming HTTP requests. -**Prerequisites:** You need to add [passport](http://www.passportjs.org/) to your project: +**Prerequisites:** You need to add [passport](https://www.passportjs.org/) to your project: ```sh npm add passport ``` @@ -335,7 +335,7 @@ This is an additional authentication strategy using the [Identity Authentication To allow forwarding to remote services, JWT tokens issued by IAS service don't contain authorization information. In particular, no scopes are included. Closing this gap is up to you as application developer. -**Prerequisites:** You need to add [passport](http://www.passportjs.org/) to your project: +**Prerequisites:** You need to add [passport](https://www.passportjs.org/) to your project: ```sh npm add passport ``` diff --git a/node.js/cds-compile.md b/node.js/cds-compile.md index 01a6a1520..1b49c6de0 100644 --- a/node.js/cds-compile.md +++ b/node.js/cds-compile.md @@ -185,7 +185,7 @@ Renders the given model to a formatted JSON or YAML string. ### .to .edmx() {.method} -Compiles and returns an OData v4 [EDM](http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html), respectively [EDMX](http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html) model object for the passed in model, which is expected to contain at least one service definition. +Compiles and returns an OData v4 [EDM](https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html), respectively [EDMX](https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part3-csdl.html) model object for the passed in model, which is expected to contain at least one service definition. Accepted `options` the same [as documented for `cds.compile.for.odata`](#for-odata) above, with one addition: If the model contains more than one service definition, use `{service:...}` option parameter to: diff --git a/node.js/cds-log.md b/node.js/cds-log.md index 4df62d73e..a783400f9 100644 --- a/node.js/cds-log.md +++ b/node.js/cds-log.md @@ -220,7 +220,7 @@ You can assign different implementations by exchanging the factory with your own ### *Using `winston` Loggers* {#winston} -**Prerequisites:** You need to add [winston](https:/www.npmjs.com/package/winston) to your project: +**Prerequisites:** You need to add [winston](https://www.npmjs.com/package/winston) to your project: ```sh npm add winston ``` diff --git a/node.js/events.md b/node.js/events.md index 0b0764413..f7b2d4d43 100644 --- a/node.js/events.md +++ b/node.js/events.md @@ -224,16 +224,16 @@ Additional note about OData: For requests that are part of a changeset, the even Class `cds.Request` extends [`cds.Event`] with additional features to represent and deal with synchronous requests to services in [event handlers](./core-services#srv-handle-event), such as the [query](#query), additional [request parameters](#params), the [authenticated user](#user), and [methods to send responses](#req-reply). -[Router]: http://expressjs.com/en/4x/api.html#router -[routing]: http://expressjs.com/en/guide/routing.html -[middleware]: http://expressjs.com/en/guide/using-middleware.html +[Router]: https://expressjs.com/en/4x/api.html#router +[routing]: https://expressjs.com/en/guide/routing.html +[middleware]: https://expressjs.com/en/guide/using-middleware.html ### . _ {.property} -Provides access to original inbound protocol-specific request objects. For events triggered by an HTTP request, it contains the original `req` and `res` objects as obtained from [express.js](http://expressjs.com). {.indent} +Provides access to original inbound protocol-specific request objects. For events triggered by an HTTP request, it contains the original `req` and `res` objects as obtained from [express.js](https://expressjs.com). {.indent} ::: warning Please refrain from using internal properties of that object, that is the ones starting with '_'. They might be removed in any future release without notice. @@ -420,7 +420,7 @@ req.error ({ Additional properties can be added as well, for example to be used in [custom error handlers](core-services#srv-on-error). -> In OData responses, notifications get collected and put into HTTP response header `sap-messages` as a stringified array, while the others are collected in the respective response body properties (→ see [OData Error Responses](http://docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html#_Toc372793091)). +> In OData responses, notifications get collected and put into HTTP response header `sap-messages` as a stringified array, while the others are collected in the respective response body properties (→ see [OData Error Responses](https://docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html#_Toc372793091)). #### Error Sanitization diff --git a/node.js/services.md b/node.js/services.md index 7a1745c7d..e3878d5af 100644 --- a/node.js/services.md +++ b/node.js/services.md @@ -580,7 +580,7 @@ srv.on('READ','Books', (req)=> [ ... ]) ```js srv.on('READ','Books', ()=> SELECT.from(Books)) ``` -4. Call `next` as in [express.js](http:/expressjs.com) to delegate to handlers down the chain: +4. Call `next` as in [express.js](https://expressjs.com) to delegate to handlers down the chain: ```js srv.on('READ','Books', (req,next)=>{ if (...) return SELECT.from(Books) //> ... handle req my own @@ -627,7 +627,7 @@ cds.serve('cat-service') .with (function(){ #### Single handlers for multiple events -Omit the `` argument to register handlers for all entities. Or add handlers for all events as well as [standard express.js middlewares](http://expressjs.com/en/guide/writing-middleware.html) with method `.use`: +Omit the `` argument to register handlers for all entities. Or add handlers for all events as well as [standard express.js middlewares](https://expressjs.com/en/guide/writing-middleware.html) with method `.use`: ```js cds.serve('cat-service') .with (function(){