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 2020/01/31 16:44:46 UTC
[syncope] branch 2_1_X updated (ed768c3 -> a4d851e)
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a change to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git.
from ed768c3 Proper CHECKSTYLE ON / OFF comments (space missing)
new dc746f4 Allowing fluent client TLS settings
new a4d851e [SYNCOPE-1538] Introducing realm search
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../cli/commands/realm/RealmSyncopeOperations.java | 3 +-
.../syncope/client/console/pages/Realms.java | 3 +-
.../client/console/rest/RealmRestClient.java | 3 +-
.../client/enduser/resources/RealmResource.java | 5 +--
.../client/lib/SyncopeClientFactoryBean.java | 3 +-
.../api/beans/{ExecQuery.java => RealmQuery.java} | 42 +++++++++++-----------
.../common/rest/api/service/RealmService.java | 10 ++++--
.../org/apache/syncope/core/logic/RealmLogic.java | 18 ++++++++--
.../syncope/core/persistence/api/dao/RealmDAO.java | 2 ++
.../core/persistence/jpa/dao/JPARealmDAO.java | 28 +++++++++------
.../java/data/RealmDataBinderImpl.java | 14 +++-----
.../core/rest/cxf/service/RealmServiceImpl.java | 6 ++--
.../syncope/fit/core/MultitenancyITCase.java | 7 ++--
.../org/apache/syncope/fit/core/RealmITCase.java | 16 ++++++---
.../org/apache/syncope/fit/core/UserITCase.java | 3 +-
.../apache/syncope/fit/core/UserIssuesITCase.java | 7 ++--
16 files changed, 105 insertions(+), 65 deletions(-)
copy common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/{ExecQuery.java => RealmQuery.java} (67%)
[syncope] 01/02: Allowing fluent client TLS settings
Posted by il...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
commit dc746f4037126b74747120f8f1d2dbbaa68433ed
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Jan 31 13:34:17 2020 +0100
Allowing fluent client TLS settings
---
.../java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
index f055f83..f34c5f8 100644
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
+++ b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
@@ -234,8 +234,9 @@ public class SyncopeClientFactoryBean {
*
* @param tlsClientParameters client TLS configuration
*/
- public void setTlsClientParameters(final TLSClientParameters tlsClientParameters) {
+ public SyncopeClientFactoryBean setTlsClientParameters(final TLSClientParameters tlsClientParameters) {
this.tlsClientParameters = tlsClientParameters;
+ return this;
}
public TLSClientParameters getTlsClientParameters() {
[syncope] 02/02: [SYNCOPE-1538] Introducing realm search
Posted by il...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
commit a4d851e7a84b3d02a3aa5f5b48b138650c7c7086
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Jan 31 16:58:29 2020 +0100
[SYNCOPE-1538] Introducing realm search
---
.../cli/commands/realm/RealmSyncopeOperations.java | 3 +-
.../syncope/client/console/pages/Realms.java | 3 +-
.../client/console/rest/RealmRestClient.java | 3 +-
.../client/enduser/resources/RealmResource.java | 5 +-
.../syncope/common/rest/api/beans/RealmQuery.java | 80 ++++++++++++++++++++++
.../common/rest/api/service/RealmService.java | 10 ++-
.../org/apache/syncope/core/logic/RealmLogic.java | 18 ++++-
.../syncope/core/persistence/api/dao/RealmDAO.java | 2 +
.../core/persistence/jpa/dao/JPARealmDAO.java | 28 +++++---
.../java/data/RealmDataBinderImpl.java | 14 ++--
.../core/rest/cxf/service/RealmServiceImpl.java | 6 +-
.../syncope/fit/core/MultitenancyITCase.java | 7 +-
.../org/apache/syncope/fit/core/RealmITCase.java | 16 +++--
.../org/apache/syncope/fit/core/UserITCase.java | 3 +-
.../apache/syncope/fit/core/UserIssuesITCase.java | 7 +-
15 files changed, 162 insertions(+), 43 deletions(-)
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmSyncopeOperations.java
index 19af12f..75c07fe 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/realm/RealmSyncopeOperations.java
@@ -20,6 +20,7 @@ package org.apache.syncope.client.cli.commands.realm;
import java.util.List;
import org.apache.syncope.client.cli.SyncopeServices;
+import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.RealmTO;
import org.apache.syncope.common.rest.api.service.RealmService;
@@ -28,7 +29,7 @@ public class RealmSyncopeOperations {
private final RealmService realmService = SyncopeServices.get(RealmService.class);
public List<RealmTO> list() {
- return realmService.list();
+ return realmService.list(SyncopeConstants.ROOT_REALM);
}
public boolean exists(final String realm) {
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
index 2fcc2cf..c9a255e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
@@ -73,8 +73,9 @@ public class Realms extends BasePage {
@Override
protected Serializable onApplyInternal(
final TemplatableTO targetObject, final String type, final AnyTO anyTO) {
+
targetObject.getTemplates().put(type, anyTO);
- new RealmRestClient().update(RealmTO.class.cast(targetObject));
+ realmRestClient.update(RealmTO.class.cast(targetObject));
return targetObject;
}
};
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/RealmRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/RealmRestClient.java
index 2d23df6..6a96b20 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/RealmRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/RealmRestClient.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.rest;
import java.util.List;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response;
+import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.DynRealmTO;
import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.RealmTO;
@@ -35,7 +36,7 @@ public class RealmRestClient extends BaseRestClient {
private static final long serialVersionUID = -8549081557283519638L;
public List<RealmTO> list() {
- return getService(RealmService.class).list();
+ return getService(RealmService.class).list(SyncopeConstants.ROOT_REALM);
}
public List<DynRealmTO> listDynReams() {
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java
index 8c6d74a..0a5aab3 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/RealmResource.java
@@ -26,6 +26,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.client.enduser.SyncopeEnduserSession;
import org.apache.syncope.client.enduser.annotations.Resource;
+import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.RealmTO;
import org.apache.syncope.common.rest.api.service.RealmService;
import org.apache.wicket.request.resource.AbstractResource;
@@ -49,7 +50,8 @@ public class RealmResource extends BaseResource {
return response;
}
- final List<RealmTO> realmTOs = SyncopeEnduserSession.get().getService(RealmService.class).list();
+ List<RealmTO> realmTOs = SyncopeEnduserSession.get().
+ getService(RealmService.class).list(SyncopeConstants.ROOT_REALM);
response.setTextEncoding(StandardCharsets.UTF_8.name());
@@ -72,5 +74,4 @@ public class RealmResource extends BaseResource {
return response;
}
-
}
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/RealmQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/RealmQuery.java
new file mode 100644
index 0000000..f32d6d7
--- /dev/null
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/RealmQuery.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.common.rest.api.beans;
+
+import java.io.Serializable;
+import javax.ws.rs.QueryParam;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
+public class RealmQuery implements Serializable {
+
+ private static final long serialVersionUID = -2278419397595186866L;
+
+ public static class Builder {
+
+ private final RealmQuery instance = new RealmQuery();
+
+ public Builder keyword(final String keyword) {
+ instance.setKeyword(keyword);
+ return this;
+ }
+
+ public RealmQuery build() {
+ return instance;
+ }
+ }
+
+ private String keyword;
+
+ public String getKeyword() {
+ return keyword;
+ }
+
+ @QueryParam("keyword")
+ public void setKeyword(final String keyword) {
+ this.keyword = keyword;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ RealmQuery other = (RealmQuery) obj;
+ return new EqualsBuilder().
+ appendSuper(super.equals(obj)).
+ append(keyword, other.keyword).
+ build();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().
+ appendSuper(super.hashCode()).
+ append(keyword).
+ build();
+ }
+}
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java
index c7617a9..0790b7c 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java
@@ -30,6 +30,7 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirements;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
import javax.validation.constraints.NotNull;
+import javax.ws.rs.BeanParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -44,6 +45,7 @@ import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.RealmTO;
import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.beans.RealmQuery;
/**
* REST operations for realms.
@@ -56,13 +58,15 @@ import org.apache.syncope.common.rest.api.RESTHeaders;
public interface RealmService extends JAXRSService {
/**
- * Returns a list of all realms.
+ * Returns a paged list of existing realms matching the given query.
*
- * @return list of all realms.
+ * @param query query conditions
+ * @return paged list of existing realms matching the given query
*/
@GET
+ @Path("search")
@Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
- List<RealmTO> list();
+ List<RealmTO> search(@BeanParam RealmQuery query);
/**
* Returns realms rooted at the given path.
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
index bc7a274..c590a0c 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
@@ -20,6 +20,7 @@ package org.apache.syncope.core.logic;
import java.lang.reflect.Method;
import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -70,6 +71,20 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
@Autowired
private PropagationTaskExecutor taskExecutor;
+ @PreAuthorize("hasRole('" + StandardEntitlement.REALM_LIST + "')")
+ @Transactional(readOnly = true)
+ public List<RealmTO> search(final String keyword) {
+ Set<String> bases = AuthContextUtils.getAuthorizations().get(StandardEntitlement.REALM_LIST);
+
+ return realmDAO.findMatching(keyword).stream().
+ filter(realm -> bases.stream().anyMatch(base -> realm.getFullPath().startsWith(base))).
+ flatMap(realm -> realmDAO.findDescendants(realm).stream()).
+ distinct().
+ map(realm -> binder.getRealmTO(realm, true)).
+ sorted(Comparator.comparing(RealmTO::getFullPath)).
+ collect(Collectors.toList());
+ }
+
@PreAuthorize("isAuthenticated()")
@Transactional(readOnly = true)
public List<RealmTO> list(final String fullPath) {
@@ -80,7 +95,7 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
throw new NotFoundException(fullPath);
}
- final boolean admin = AuthContextUtils.getAuthorizations().keySet().contains(StandardEntitlement.REALM_LIST);
+ boolean admin = AuthContextUtils.getAuthorizations().keySet().contains(StandardEntitlement.REALM_LIST);
return realmDAO.findDescendants(realm).stream().
map(descendant -> binder.getRealmTO(descendant, admin)).collect(Collectors.toList());
}
@@ -223,5 +238,4 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> {
throw new UnresolvedReferenceException();
}
-
}
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java
index 800b493..9daabb1 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java
@@ -41,6 +41,8 @@ public interface RealmDAO extends DAO<Realm> {
List<Realm> findByResource(ExternalResource resource);
+ List<Realm> findMatching(String keyword);
+
<T extends Policy> List<Realm> findByPolicy(T policy);
List<Realm> findByLogicActions(Implementation logicActions);
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
index 1c4ff91..34e1fe4 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
@@ -102,16 +102,15 @@ public class JPARealmDAO extends AbstractDAO<Realm> implements RealmDAO {
private <T extends Policy> List<Realm> findSamePolicyChildren(final Realm realm, final T policy) {
List<Realm> result = new ArrayList<>();
- for (Realm child : findChildren(realm)) {
- if ((policy instanceof AccountPolicy
- && child.getAccountPolicy() == null || policy.equals(child.getAccountPolicy()))
- || (policy instanceof PasswordPolicy
- && child.getPasswordPolicy() == null || policy.equals(child.getPasswordPolicy()))) {
-
- result.add(child);
- result.addAll(findSamePolicyChildren(child, policy));
- }
- }
+ findChildren(realm).stream().
+ filter(child -> (policy instanceof AccountPolicy
+ && child.getAccountPolicy() == null || policy.equals(child.getAccountPolicy()))
+ || (policy instanceof PasswordPolicy
+ && child.getPasswordPolicy() == null || policy.equals(child.getPasswordPolicy()))).
+ forEach(child -> {
+ result.add(child);
+ result.addAll(findSamePolicyChildren(child, policy));
+ });
return result;
}
@@ -135,6 +134,15 @@ public class JPARealmDAO extends AbstractDAO<Realm> implements RealmDAO {
}
@Override
+ public List<Realm> findMatching(final String keyword) {
+ TypedQuery<Realm> query = entityManager().createQuery("SELECT e FROM " + JPARealm.class.getSimpleName() + " e "
+ + "WHERE e.name LIKE :keyword", Realm.class);
+ query.setParameter("keyword", keyword);
+
+ return query.getResultList();
+ }
+
+ @Override
public <T extends Policy> List<Realm> findByPolicy(final T policy) {
if (ProvisioningPolicy.class.isAssignableFrom(policy.getClass())) {
return Collections.<Realm>emptyList();
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
index 0202571..adaeeaf 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
@@ -229,20 +229,14 @@ public class RealmDataBinderImpl implements RealmDataBinder {
realmTO.setAccountPolicy(realm.getAccountPolicy() == null ? null : realm.getAccountPolicy().getKey());
realmTO.setPasswordPolicy(realm.getPasswordPolicy() == null ? null : realm.getPasswordPolicy().getKey());
- realm.getActions().forEach(action -> {
- realmTO.getActions().add(action.getKey());
- });
+ realm.getActions().forEach(action -> realmTO.getActions().add(action.getKey()));
- realm.getTemplates().forEach(template -> {
- realmTO.getTemplates().put(template.getAnyType().getKey(), template.get());
- });
+ realm.getTemplates().forEach(
+ template -> realmTO.getTemplates().put(template.getAnyType().getKey(), template.get()));
- realm.getResources().forEach(resource -> {
- realmTO.getResources().add(resource.getKey());
- });
+ realm.getResources().forEach(resource -> realmTO.getResources().add(resource.getKey()));
}
return realmTO;
}
-
}
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
index e937278..5767ad2 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
@@ -26,6 +26,7 @@ import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.RealmTO;
import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.beans.RealmQuery;
import org.apache.syncope.common.rest.api.service.RealmService;
import org.apache.syncope.core.logic.RealmLogic;
import org.springframework.beans.factory.annotation.Autowired;
@@ -38,8 +39,9 @@ public class RealmServiceImpl extends AbstractServiceImpl implements RealmServic
private RealmLogic logic;
@Override
- public List<RealmTO> list() {
- return list(StringUtils.EMPTY);
+ public List<RealmTO> search(final RealmQuery query) {
+ String keyword = query.getKeyword() == null ? null : query.getKeyword().replace('*', '%');
+ return logic.search(keyword);
}
@Override
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index 6c74240..f63e3ac 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -57,6 +57,7 @@ import org.apache.syncope.common.lib.types.PullMode;
import org.apache.syncope.common.lib.types.SchemaType;
import org.apache.syncope.common.lib.types.TaskType;
import org.apache.syncope.common.rest.api.beans.AnyQuery;
+import org.apache.syncope.common.rest.api.beans.RealmQuery;
import org.apache.syncope.common.rest.api.beans.ReconQuery;
import org.apache.syncope.common.rest.api.beans.SchemaQuery;
import org.apache.syncope.common.rest.api.beans.TaskQuery;
@@ -126,14 +127,16 @@ public class MultitenancyITCase extends AbstractITCase {
@Test
public void readRealm() {
- List<RealmTO> realms = adminClient.getService(RealmService.class).list();
+ List<RealmTO> realms = adminClient.getService(RealmService.class).
+ search(new RealmQuery.Builder().keyword("*").build());
assertEquals(1, realms.size());
assertEquals(SyncopeConstants.ROOT_REALM, realms.get(0).getName());
}
@Test
public void createUser() {
- assertNull(adminClient.getService(RealmService.class).list().get(0).getPasswordPolicy());
+ assertNull(adminClient.getService(RealmService.class).
+ search(new RealmQuery.Builder().keyword("*").build()).get(0).getPasswordPolicy());
UserTO user = new UserTO();
user.setRealm(SyncopeConstants.ROOT_REALM);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RealmITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RealmITCase.java
index 320f038..73ec846 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RealmITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RealmITCase.java
@@ -43,9 +43,11 @@ import org.apache.syncope.common.lib.types.ImplementationType;
import org.apache.syncope.common.lib.types.PolicyType;
import org.apache.syncope.common.lib.types.ExecStatus;
import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.beans.RealmQuery;
import org.apache.syncope.common.rest.api.service.RealmService;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
import org.apache.syncope.fit.AbstractITCase;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class RealmITCase extends AbstractITCase {
@@ -55,13 +57,17 @@ public class RealmITCase extends AbstractITCase {
}
@Test
+ public void search() {
+ List<RealmTO> match = realmService.search(new RealmQuery.Builder().keyword("*o*").build());
+ assertTrue(match.stream().allMatch(realm -> realm.getName().contains("o")));
+ }
+
+ @Test
public void list() {
- List<RealmTO> realms = realmService.list();
+ List<RealmTO> realms = realmService.list(SyncopeConstants.ROOT_REALM);
assertNotNull(realms);
assertFalse(realms.isEmpty());
- realms.forEach(realm -> {
- assertNotNull(realm);
- });
+ realms.forEach(Assertions::assertNotNull);
try {
realmService.list("a name");
@@ -106,7 +112,7 @@ public class RealmITCase extends AbstractITCase {
assertNotNull(actual);
assertEquals("/odd/last", actual.getFullPath());
- assertEquals(1, realmService.list().stream().
+ assertEquals(1, realmService.list(SyncopeConstants.ROOT_REALM).stream().
filter(object -> realm.getName().equals(object.getName())).count());
// 4. create under invalid path
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
index 2553993..257c5c1 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
@@ -85,6 +85,7 @@ import org.apache.syncope.common.lib.types.TaskType;
import org.apache.syncope.common.rest.api.RESTHeaders;
import org.apache.syncope.common.rest.api.batch.BatchResponseItem;
import org.apache.syncope.common.rest.api.beans.AnyQuery;
+import org.apache.syncope.common.rest.api.beans.RealmQuery;
import org.apache.syncope.common.rest.api.beans.TaskQuery;
import org.apache.syncope.common.rest.api.service.ResourceService;
import org.apache.syncope.common.rest.api.service.UserSelfService;
@@ -977,7 +978,7 @@ public class UserITCase extends AbstractITCase {
passwordPolicy = createPolicy(PolicyType.PASSWORD, passwordPolicy);
assertNotNull(passwordPolicy);
- RealmTO realm = realmService.list("/even/two").get(0);
+ RealmTO realm = realmService.search(new RealmQuery.Builder().keyword("two").build()).get(0);
String oldAccountPolicy = realm.getAccountPolicy();
realm.setAccountPolicy(accountPolicy.getKey());
String oldPasswordPolicy = realm.getPasswordPolicy();
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
index e78d26d..7fe994a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
@@ -75,6 +75,7 @@ import org.apache.syncope.common.lib.types.PatchOperation;
import org.apache.syncope.common.lib.types.PolicyType;
import org.apache.syncope.common.lib.types.ExecStatus;
import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.beans.RealmQuery;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
import org.apache.syncope.core.provisioning.java.propagation.DBPasswordPropagationActions;
import org.apache.syncope.core.provisioning.java.propagation.LDAPPasswordPropagationActions;
@@ -815,7 +816,7 @@ public class UserIssuesITCase extends AbstractITCase {
}
assertNotNull(logicActions);
- RealmTO realm = realmService.list("/even/two").iterator().next();
+ RealmTO realm = realmService.search(new RealmQuery.Builder().keyword("two").build()).get(0);
assertNotNull(realm);
realm.getActions().add(logicActions.getKey());
realmService.update(realm);
@@ -1240,7 +1241,7 @@ public class UserIssuesITCase extends AbstractITCase {
passwordPolicy = createPolicy(PolicyType.PASSWORD, passwordPolicy);
assertNotNull(passwordPolicy);
- RealmTO realm = realmService.list("/even/two").get(0);
+ RealmTO realm = realmService.search(new RealmQuery.Builder().keyword("two").build()).get(0);
String oldPasswordPolicy = realm.getPasswordPolicy();
realm.setPasswordPolicy(passwordPolicy.getKey());
realmService.update(realm);
@@ -1569,6 +1570,6 @@ public class UserIssuesITCase extends AbstractITCase {
UserTO userTO = userService.read("1417acbe-cbf6-4277-9372-e75e04f97000");
assertFalse(userTO.getResources().contains(RESOURCE_NAME_TESTDB), "Should not contain removed resources");
assertFalse(userTO.getAuxClasses().contains("csv"), "Should not contain removed auxiliary classes");
- assertFalse(userTO.getRoles().contains("Other"),"Should not contain removed roles");
+ assertFalse(userTO.getRoles().contains("Other"), "Should not contain removed roles");
}
}