You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2020/09/15 13:19:25 UTC
[sling-org-apache-sling-graphql-core] 02/02: trivial: reformatted
some README.md sections
This is an automated email from the ASF dual-hosted git repository.
radu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-graphql-core.git
commit 4789c4ab2684ac3395ba4e47f578ddcdb4c556fe
Author: Radu Cotescu <co...@adobe.com>
AuthorDate: Tue Sep 15 15:18:27 2020 +0200
trivial: reformatted some README.md sections
---
README.md | 68 +++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 38 insertions(+), 30 deletions(-)
diff --git a/README.md b/README.md
index 1419891..ef2f229 100644
--- a/README.md
+++ b/README.md
@@ -43,19 +43,23 @@ See also the _caching_ section later in this file.
Schemas are provided by `SchemaProvider` services:
- public interface SchemaProvider {
+```java
+@ProviderType
+public interface SchemaProvider {
- /** Get a GraphQL Schema definition for the given resource and optional selectors
- *
- * @param r The Resource to which the schema applies
- * @param selectors Optional set of Request Selectors that can influence the schema selection
- * @return a GraphQL schema that can be annotated to define the data fetchers to use, see
- * this module's documentation. Can return null if a schema cannot be provided, in which
- * case a different provider should be used.
- */
- @Nullable
- String getSchema(@NotNull Resource r, @Nullable String [] selectors) throws IOException;
- }
+ /** Get a GraphQL Schema definition for the given resource and optional selectors
+ *
+ * @param r The Resource to which the schema applies
+ * @param selectors Optional set of Request Selectors that can influence the schema selection
+ * @return a GraphQL schema that can be annotated to define the data fetchers to use, see
+ * this module's documentation. Can return null if a schema cannot be provided, in which
+ * case a different provider should be used.
+ * @throws java.io.IOException if the schema cannot be retrieved
+ */
+ @Nullable
+ String getSchema(@NotNull Resource r, @Nullable String [] selectors) throws IOException;
+}
+```
The default provider makes an internal Sling request with for the current Resource with a `.GQLschema` extension.
@@ -105,22 +109,22 @@ The `<options>` and `<source>` arguments of the directive can be used by the
Besides Java, `SlingDataFetcher` scripts can be written in any scripting language that supported by the Sling instance's configuration.
-Here's an example from the test code.
-
-The schema contains the following statement:
+Here's an example from the test code. The schema contains the following statement:
scriptedFetcher (testing : String) : Test @fetcher(name:"scripted/example")
And here's the data fetcher code:
- var result = {
- boolValue: true,
- resourcePath: "From the test script: " + resource.path,
- testingArgument: environment.getArgument("testing"),
- anotherValue: 450 + 1
- };
+```javascript
+var result = {
+ boolValue: true,
+ resourcePath: "From the test script: " + resource.path,
+ testingArgument: environment.getArgument("testing"),
+ anotherValue: 450 + 1
+};
- result;
+result;
+```
The data fetcher provider then looks for a script that handles the `graphql/fetchers/scripted/example` resource type with a `fetcher`script name. `graphql/fetchers`is a prefix (hardcoded for now) and `scripted/example` comes from the above schema's `@fetcher` directive.
@@ -150,17 +154,21 @@ the parameter becoming too large for HTTP services and intermediates.
#### Persisted Query Hash
-The hash that's part of the `persisted` URL is computed on the POSTed GraphQL query by the active `GraphQLCacheProvider` service. By
-default this is the `SimpleGraphQLCacheProvider` which computes it as follows:
+The hash that's part of the `persisted` URL is computed on the POSTed GraphQL query by the
+active `GraphQLCacheProvider` service. By default, this is the `SimpleGraphQLCacheProvider`
+which computes it as follows:
- MessageDigest digest = MessageDigest.getInstance("SHA-256");
- byte[] hash = digest.digest(query.getBytes(StandardCharsets.UTF_8));
+```java
+MessageDigest digest = MessageDigest.getInstance("SHA-256");
+byte[] hash = digest.digest(query.getBytes(StandardCharsets.UTF_8));
+```
-And encodes it in hex to build the persisted query's path.
+and encodes it in hex to build the persisted query's path.
-This means that, if desired, an optimistic client can compute the hash itself and try a GET to the `persisted/<hash>` URL without doing
-a POST first. If the query is already cache this saves the POST request, and if not the client gets a 404 status and has to POST the
-query first.
+This means that, if desired, an optimistic client can compute the hash itself and try a GET to
+the `persisted/<hash>` URL without doing a POST first. If the query already exists in the cache
+this saves the POST request, and if not the client gets a 404 status and has to POST the query
+first.
#### Example HTTP interactions with persisted queries enabled