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 2017/09/15 14:31:22 UTC
[2/4] syncope git commit: Fixing ConnObjects' paginated list
Fixing ConnObjects' paginated list
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/4866d921
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/4866d921
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/4866d921
Branch: refs/heads/2_0_X
Commit: 4866d9219eeda81f1fe8d77da651afcf860991aa
Parents: eac8414
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Sep 15 16:30:55 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Sep 15 16:30:55 2017 +0200
----------------------------------------------------------------------
.../apache/syncope/core/logic/ResourceLogic.java | 12 +++---------
.../syncope/core/provisioning/api/Connector.java | 7 +++++--
.../provisioning/java/ConnectorFacadeProxy.java | 19 ++++++++++++-------
3 files changed, 20 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/4866d921/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
index 24136aa..e3777cb 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
@@ -75,9 +75,9 @@ import org.identityconnectors.framework.common.objects.ConnectorObject;
import org.identityconnectors.framework.common.objects.Name;
import org.identityconnectors.framework.common.objects.ObjectClass;
import org.identityconnectors.framework.common.objects.OperationOptions;
+import org.identityconnectors.framework.common.objects.ResultsHandler;
import org.identityconnectors.framework.common.objects.SearchResult;
import org.identityconnectors.framework.common.objects.Uid;
-import org.identityconnectors.framework.spi.SearchResultsHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Component;
@@ -403,19 +403,13 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
options = MappingUtils.buildOperationOptions(mapItems);
}
- final SearchResult[] searchResult = new SearchResult[1];
final List<ConnObjectTO> connObjects = new ArrayList<>();
- connFactory.getConnector(resource).search(objectClass, null, new SearchResultsHandler() {
+ SearchResult searchResult = connFactory.getConnector(resource).search(objectClass, null, new ResultsHandler() {
private int count;
@Override
- public void handleResult(final SearchResult result) {
- searchResult[0] = result;
- }
-
- @Override
public boolean handle(final ConnectorObject connectorObject) {
connObjects.add(connObjectUtils.getConnObjectTO(connectorObject));
// safety protection against uncontrolled result size
@@ -424,7 +418,7 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
}
}, size, pagedResultsCookie, orderBy, options);
- return ImmutablePair.of(searchResult[0], connObjects);
+ return ImmutablePair.of(searchResult, connObjects);
}
@PreAuthorize("hasRole('" + StandardEntitlement.CONNECTOR_READ + "')")
http://git-wip-us.apache.org/repos/asf/syncope/blob/4866d921/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
index 324c1d9..901cdc7 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
@@ -33,6 +33,7 @@ import org.identityconnectors.framework.common.objects.SyncToken;
import org.identityconnectors.framework.common.objects.Uid;
import org.identityconnectors.framework.common.objects.filter.Filter;
import org.apache.syncope.core.provisioning.api.pushpull.ReconciliationFilterBuilder;
+import org.identityconnectors.framework.common.objects.SearchResult;
/**
* Entry point for making requests on underlying connector bundles.
@@ -153,8 +154,9 @@ public interface Connector {
* @param filter search filter
* @param handler class responsible for working with the objects returned from the search; may be null.
* @param options ConnId's OperationOptions
+ * @return search result
*/
- void search(
+ SearchResult search(
ObjectClass objectClass,
Filter filter,
ResultsHandler handler,
@@ -172,8 +174,9 @@ public interface Connector {
* @param orderBy the sort keys which should be used for ordering the {@link ConnectorObject} returned by
* search request
* @param options ConnId's OperationOptions
+ * @return search result
*/
- void search(
+ SearchResult search(
ObjectClass objectClass,
Filter filter,
ResultsHandler handler,
http://git-wip-us.apache.org/repos/asf/syncope/blob/4866d921/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
index 2b42e91..de4aeba 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
@@ -421,15 +421,18 @@ public class ConnectorFacadeProxy implements Connector {
}
@Override
- public void search(
+ public SearchResult search(
final ObjectClass objectClass,
final Filter filter,
final ResultsHandler handler,
final OperationOptions options) {
+ SearchResult result = null;
+
if (connInstance.getCapabilities().contains(ConnectorCapability.SEARCH)) {
if (options.getPageSize() == null && options.getPagedResultsCookie() == null) {
- OperationOptionsBuilder builder = new OperationOptionsBuilder(options).setPageSize(DEFAULT_PAGE_SIZE);
+ OperationOptionsBuilder builder = new OperationOptionsBuilder(options).
+ setPageSize(DEFAULT_PAGE_SIZE).setPagedResultsOffset(-1);
final String[] cookies = new String[] { null };
do {
@@ -437,7 +440,7 @@ public class ConnectorFacadeProxy implements Connector {
builder.setPagedResultsCookie(cookies[0]);
}
- connector.search(objectClass, filter, new SearchResultsHandler() {
+ result = connector.search(objectClass, filter, new SearchResultsHandler() {
@Override
public void handleResult(final SearchResult result) {
@@ -454,16 +457,18 @@ public class ConnectorFacadeProxy implements Connector {
}, builder.build());
} while (cookies[0] != null);
} else {
- connector.search(objectClass, filter, handler, options);
+ result = connector.search(objectClass, filter, handler, options);
}
} else {
LOG.info("Search was attempted, although the connector only has these capabilities: {}. No action.",
connInstance.getCapabilities());
}
+
+ return result;
}
@Override
- public void search(
+ public SearchResult search(
final ObjectClass objectClass,
final Filter filter,
final ResultsHandler handler,
@@ -472,7 +477,7 @@ public class ConnectorFacadeProxy implements Connector {
final List<OrderByClause> orderBy,
final OperationOptions options) {
- OperationOptionsBuilder builder = new OperationOptionsBuilder().setPageSize(pageSize);
+ OperationOptionsBuilder builder = new OperationOptionsBuilder().setPageSize(pageSize).setPagedResultsOffset(-1);
if (pagedResultsCookie != null) {
builder.setPagedResultsCookie(pagedResultsCookie);
}
@@ -486,7 +491,7 @@ public class ConnectorFacadeProxy implements Connector {
builder.setAttributesToGet(options.getAttributesToGet());
- search(objectClass, filter, handler, builder.build());
+ return search(objectClass, filter, handler, builder.build());
}
@Override