You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/03/02 11:47:21 UTC
[02/11] syncope git commit: Adding pagination support to sample
groovy script for usage with Scripted REST connector
Adding pagination support to sample groovy script for usage with Scripted REST connector
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/990a4651
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/990a4651
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/990a4651
Branch: refs/heads/2_0_X
Commit: 990a4651596a30eab683e5051149b600e5973439
Parents: 3e2ebb9
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 1 17:21:15 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 1 17:21:15 2018 +0100
----------------------------------------------------------------------
.../src/test/resources/rest/SearchScript.groovy | 40 ++++++++++++++++++--
1 file changed, 37 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/990a4651/fit/core-reference/src/test/resources/rest/SearchScript.groovy
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/resources/rest/SearchScript.groovy b/fit/core-reference/src/test/resources/rest/SearchScript.groovy
index 118da8a..ba7a2e8 100644
--- a/fit/core-reference/src/test/resources/rest/SearchScript.groovy
+++ b/fit/core-reference/src/test/resources/rest/SearchScript.groovy
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode
import javax.ws.rs.core.Response
import org.apache.cxf.jaxrs.client.WebClient
import org.identityconnectors.common.security.GuardedString
+import org.identityconnectors.framework.common.objects.OperationOptions;
// Parameters:
// The connector sends the following:
@@ -66,6 +67,24 @@ def buildConnectorObject(node) {
log.info("Entering " + action + " Script");
+// ----------------
+// Manage pagination
+// ----------------
+def offset = options[OperationOptions.OP_PAGED_RESULTS_COOKIE] == null
+? 0
+: options[OperationOptions.OP_PAGED_RESULTS_COOKIE].toInteger();
+
+def pageSize = options[OperationOptions.OP_PAGE_SIZE] == null
+? 100
+: options[OperationOptions.OP_PAGE_SIZE].toInteger();
+
+def limit = offset + pageSize;
+
+log.ok("pagedResultsCookie: " + offset);
+log.ok("pageSize: " + pageSize);
+log.ok("limit: " + limit);
+// ----------------
+
WebClient webClient = client;
ObjectMapper mapper = new ObjectMapper();
@@ -76,10 +95,11 @@ case "__ACCOUNT__":
if (query == null || (!query.get("left").equals("__UID__") && !query.get("conditionType").equals("EQUALS"))) {
webClient.path("/users");
Response response = webClient.get();
- ArrayNode node = mapper.readTree(response.getEntity());
+ ArrayNode nodes = mapper.readTree(response.getEntity());
- for (i = 0; i < node.size(); i++) {
- result.add(buildConnectorObject(node.get(i)));
+ // beware: this is not enforcing any server-side pagination feature
+ for (i = offset; i < (limit < nodes.size() ? limit: nodes.size()); i++) {
+ result.add(buildConnectorObject(nodes.get(i)));
}
} else {
webClient.path("/users/" + query.get("right"));
@@ -98,4 +118,18 @@ default:
result;
}
+// ----------------
+// Return paged result cookie
+// ----------------
+def pagedResultCookieLine = [:]
+if (pageSize > result.size()) {
+ // no more results
+ pagedResultCookieLine.put(OperationOptions.OP_PAGED_RESULTS_COOKIE, null);
+} else {
+ pagedResultCookieLine.put(OperationOptions.OP_PAGED_RESULTS_COOKIE, "" + limit);
+}
+
+result.add(pagedResultCookieLine);
+// ----------------
+
return result;