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:21 UTC
[1/4] syncope git commit: Fixing propagation tasks pagination
Repository: syncope
Updated Branches:
refs/heads/2_0_X e06b0f251 -> 4866d9219
refs/heads/master 6da490da5 -> 2cb546fe0
Fixing propagation tasks pagination
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/eac8414e
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/eac8414e
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/eac8414e
Branch: refs/heads/2_0_X
Commit: eac8414e23a6adc38c4f21dd466e6dc54eb9b427
Parents: e06b0f2
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Sep 15 16:22:34 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Sep 15 16:22:34 2017 +0200
----------------------------------------------------------------------
.../syncope/client/console/commons/TaskDataProvider.java | 11 +----------
.../console/tasks/NotificationTaskDirectoryPanel.java | 7 ++++++-
.../console/tasks/PropagationTaskDirectoryPanel.java | 7 ++++++-
.../client/console/tasks/SchedTaskDirectoryPanel.java | 9 +++++++--
4 files changed, 20 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/eac8414e/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
index 5e917d1..46312cb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console.commons;
-import org.apache.syncope.client.console.rest.TaskRestClient;
import org.apache.syncope.common.lib.to.AbstractTaskTO;
import org.apache.syncope.common.lib.types.TaskType;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
@@ -33,12 +32,9 @@ public abstract class TaskDataProvider<T extends AbstractTaskTO> extends Directo
protected final TaskType taskType;
- private final TaskRestClient taskRestClient;
-
- public TaskDataProvider(final int paginatorRows, final TaskType taskType, final TaskRestClient taskRestClient) {
+ public TaskDataProvider(final int paginatorRows, final TaskType taskType) {
super(paginatorRows);
- this.taskRestClient = taskRestClient;
setSort("start", SortOrder.ASCENDING);
comparator = new SortableDataProviderComparator<>(this);
this.taskType = taskType;
@@ -49,11 +45,6 @@ public abstract class TaskDataProvider<T extends AbstractTaskTO> extends Directo
}
@Override
- public long size() {
- return taskRestClient.count(taskType);
- }
-
- @Override
public IModel<T> model(final T object) {
return new CompoundPropertyModel<>(object);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/eac8414e/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
index eb859a6..d8ffb71 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
@@ -210,13 +210,18 @@ public abstract class NotificationTaskDirectoryPanel
final String entityKey,
final int paginatorRows) {
- super(paginatorRows, TaskType.NOTIFICATION, restClient);
+ super(paginatorRows, TaskType.NOTIFICATION);
this.notification = notification;
this.anyTypeKind = anyTypeKind;
this.entityKey = entityKey;
}
@Override
+ public long size() {
+ return restClient.count(TaskType.NOTIFICATION);
+ }
+
+ @Override
public Iterator<NotificationTaskTO> iterator(final long first, final long count) {
final int page = ((int) first / paginatorRows);
http://git-wip-us.apache.org/repos/asf/syncope/blob/eac8414e/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
index 0db71d5..1c63efd 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
@@ -206,7 +206,12 @@ public abstract class PropagationTaskDirectoryPanel
private static final long serialVersionUID = 4725679400450513556L;
public PropagationTasksProvider(final int paginatorRows) {
- super(paginatorRows, TaskType.PROPAGATION, restClient);
+ super(paginatorRows, TaskType.PROPAGATION);
+ }
+
+ @Override
+ public long size() {
+ return restClient.count(resource, TaskType.PROPAGATION);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/eac8414e/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
index 7663235..c19940e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
@@ -309,13 +309,18 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
private final Class<T> reference;
- public SchedTasksProvider(final Class<T> reference, final TaskType id, final int paginatorRows) {
- super(paginatorRows, id, restClient);
+ public SchedTasksProvider(final Class<T> reference, final TaskType taskType, final int paginatorRows) {
+ super(paginatorRows, taskType);
setSort("name", SortOrder.ASCENDING);
this.reference = reference;
}
@Override
+ public long size() {
+ return restClient.count(taskType);
+ }
+
+ @Override
public Iterator<T> iterator(final long first, final long count) {
int page = ((int) first / paginatorRows);
[2/4] syncope git commit: Fixing ConnObjects' paginated list
Posted by il...@apache.org.
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
[3/4] syncope git commit: Fixing propagation tasks pagination
Posted by il...@apache.org.
Fixing propagation tasks pagination
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/1fb88619
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/1fb88619
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/1fb88619
Branch: refs/heads/master
Commit: 1fb88619787848f144b42d16d56228c2c3b2c339
Parents: 6da490d
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Sep 15 16:22:34 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Sep 15 16:31:05 2017 +0200
----------------------------------------------------------------------
.../syncope/client/console/commons/TaskDataProvider.java | 11 +----------
.../console/tasks/NotificationTaskDirectoryPanel.java | 7 ++++++-
.../console/tasks/PropagationTaskDirectoryPanel.java | 7 ++++++-
.../client/console/tasks/SchedTaskDirectoryPanel.java | 9 +++++++--
4 files changed, 20 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/1fb88619/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
index 5e917d1..46312cb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console.commons;
-import org.apache.syncope.client.console.rest.TaskRestClient;
import org.apache.syncope.common.lib.to.AbstractTaskTO;
import org.apache.syncope.common.lib.types.TaskType;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
@@ -33,12 +32,9 @@ public abstract class TaskDataProvider<T extends AbstractTaskTO> extends Directo
protected final TaskType taskType;
- private final TaskRestClient taskRestClient;
-
- public TaskDataProvider(final int paginatorRows, final TaskType taskType, final TaskRestClient taskRestClient) {
+ public TaskDataProvider(final int paginatorRows, final TaskType taskType) {
super(paginatorRows);
- this.taskRestClient = taskRestClient;
setSort("start", SortOrder.ASCENDING);
comparator = new SortableDataProviderComparator<>(this);
this.taskType = taskType;
@@ -49,11 +45,6 @@ public abstract class TaskDataProvider<T extends AbstractTaskTO> extends Directo
}
@Override
- public long size() {
- return taskRestClient.count(taskType);
- }
-
- @Override
public IModel<T> model(final T object) {
return new CompoundPropertyModel<>(object);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1fb88619/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
index fd73ab0..70dae9b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
@@ -210,13 +210,18 @@ public abstract class NotificationTaskDirectoryPanel
final String entityKey,
final int paginatorRows) {
- super(paginatorRows, TaskType.NOTIFICATION, restClient);
+ super(paginatorRows, TaskType.NOTIFICATION);
this.notification = notification;
this.anyTypeKind = anyTypeKind;
this.entityKey = entityKey;
}
@Override
+ public long size() {
+ return restClient.count(TaskType.NOTIFICATION);
+ }
+
+ @Override
public Iterator<NotificationTaskTO> iterator(final long first, final long count) {
final int page = ((int) first / paginatorRows);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1fb88619/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
index 5d37b79..ba3b122 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
@@ -206,7 +206,12 @@ public abstract class PropagationTaskDirectoryPanel
private static final long serialVersionUID = 4725679400450513556L;
public PropagationTasksProvider(final int paginatorRows) {
- super(paginatorRows, TaskType.PROPAGATION, restClient);
+ super(paginatorRows, TaskType.PROPAGATION);
+ }
+
+ @Override
+ public long size() {
+ return restClient.count(resource, TaskType.PROPAGATION);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/1fb88619/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
index ca540b6..069e34b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
@@ -309,13 +309,18 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
private final Class<T> reference;
- public SchedTasksProvider(final Class<T> reference, final TaskType id, final int paginatorRows) {
- super(paginatorRows, id, restClient);
+ public SchedTasksProvider(final Class<T> reference, final TaskType taskType, final int paginatorRows) {
+ super(paginatorRows, taskType);
setSort("name", SortOrder.ASCENDING);
this.reference = reference;
}
@Override
+ public long size() {
+ return restClient.count(taskType);
+ }
+
+ @Override
public Iterator<T> iterator(final long first, final long count) {
int page = ((int) first / paginatorRows);
[4/4] syncope git commit: Fixing ConnObjects' paginated list
Posted by il...@apache.org.
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/2cb546fe
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/2cb546fe
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/2cb546fe
Branch: refs/heads/master
Commit: 2cb546fe0ea641a484c2dc1b561a7e63ed8b361e
Parents: 1fb8861
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:31:09 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/2cb546fe/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 16d2882..87a0c43 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
@@ -72,9 +72,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;
@@ -390,19 +390,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
@@ -411,7 +405,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/2cb546fe/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/2cb546fe/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 10f2e03..b122c9e 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
@@ -412,15 +412,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 {
@@ -428,7 +431,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) {
@@ -445,16 +448,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,
@@ -463,7 +468,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);
}
@@ -473,7 +478,7 @@ public class ConnectorFacadeProxy implements Connector {
builder.setAttributesToGet(options.getAttributesToGet());
- search(objectClass, filter, handler, builder.build());
+ return search(objectClass, filter, handler, builder.build());
}
@Override