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 2022/10/14 08:19:30 UTC
[syncope] branch master updated: A few optimizations around incremental pull task execution
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new c7d3c995db A few optimizations around incremental pull task execution
c7d3c995db is described below
commit c7d3c995dbc972f619652ce45a84900eb238095c
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Oct 14 10:19:22 2022 +0200
A few optimizations around incremental pull task execution
---
.../syncope/core/logic/ReconciliationLogic.java | 2 +-
.../apache/syncope/core/logic/ResourceLogic.java | 6 ++--
.../persistence/api/entity/ExternalResource.java | 5 ++--
.../jpa/entity/JPAExternalResource.java | 7 ++---
.../core/persistence/jpa/inner/AnyTypeTest.java | 2 +-
.../core/persistence/jpa/inner/PolicyTest.java | 13 +++++----
.../core/persistence/jpa/inner/ResourceTest.java | 32 +++++++++++-----------
.../persistence/jpa/outer/PlainSchemaTest.java | 11 +++-----
.../core/persistence/jpa/outer/ResourceTest.java | 20 ++++++--------
.../core/persistence/jpa/outer/VirSchemaTest.java | 7 +++--
.../provisioning/java/DefaultMappingManager.java | 4 +--
.../provisioning/java/DefaultVirAttrHandler.java | 2 +-
.../java/data/AbstractAnyDataBinder.java | 4 +--
.../java/data/ResourceDataBinderImpl.java | 2 +-
.../java/data/SchemaDataBinderImpl.java | 2 +-
.../provisioning/java/data/UserDataBinderImpl.java | 4 +--
.../java/job/report/ReconciliationReportlet.java | 2 +-
.../AbstractPropagationTaskExecutor.java | 5 ++--
.../propagation/DefaultPropagationManager.java | 12 ++++----
.../LDAPMembershipPropagationActions.java | 2 +-
.../pushpull/AbstractProvisioningJobDelegate.java | 9 +++---
.../java/pushpull/AbstractPullResultHandler.java | 3 +-
.../java/pushpull/AbstractPushResultHandler.java | 3 +-
.../provisioning/java/pushpull/InboundMatcher.java | 2 +-
.../java/pushpull/LDAPMembershipPullActions.java | 3 +-
.../java/pushpull/PullJobDelegate.java | 13 +++++++--
.../java/DefaultMappingManagerTest.java | 6 ++--
.../java/data/ResourceDataBinderTest.java | 16 +++++------
.../pushpull/LDAPMembershipPullActionsTest.java | 4 +--
.../core/spring/security/AuthDataAccessor.java | 13 ++-------
.../core/spring/security/WebSecurityContext.java | 3 --
31 files changed, 108 insertions(+), 111 deletions(-)
diff --git a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
index 5223b589ac..ec8e974a8e 100644
--- a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
+++ b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
@@ -177,7 +177,7 @@ public class ReconciliationLogic extends AbstractTransactionalLogic<EntityTO> {
if (resource == null) {
throw new NotFoundException("Resource '" + resourceKey + "'");
}
- Provision provision = resource.getProvision(anyType.getKey()).
+ Provision provision = resource.getProvisionByAnyType(anyType.getKey()).
orElseThrow(() -> new NotFoundException(
"Provision for " + anyType + " on Resource '" + resourceKey + "'"));
if (provision.getMapping() == null) {
diff --git a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
index 5407d59136..1fd59b9b63 100644
--- a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
+++ b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
@@ -206,7 +206,7 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
if (anyType == null) {
throw new NotFoundException("AnyType '" + anyTypeKey + '\'');
}
- Provision provision = resource.getProvision(anyType.getKey()).
+ Provision provision = resource.getProvisionByAnyType(anyType.getKey()).
orElseThrow(() -> new NotFoundException(
"Provision for AnyType '" + anyTypeKey + "' in Resource '" + key + '\''));
@@ -239,7 +239,7 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
if (anyType == null) {
throw new NotFoundException("AnyType '" + anyTypeKey + '\'');
}
- Provision provision = resource.getProvision(anyType.getKey()).
+ Provision provision = resource.getProvisionByAnyType(anyType.getKey()).
orElseThrow(() -> new NotFoundException(
"Provision for AnyType '" + anyTypeKey + "' in Resource '" + key + '\''));
@@ -302,7 +302,7 @@ public class ResourceLogic extends AbstractTransactionalLogic<ResourceTO> {
if (resource == null) {
throw new NotFoundException("Resource '" + resourceKey + "'");
}
- Provision provision = resource.getProvision(anyType.getKey()).
+ Provision provision = resource.getProvisionByAnyType(anyType.getKey()).
orElseThrow(() -> new NotFoundException(
"Provision for " + anyType + " on Resource '" + resourceKey + "'"));
if (provision.getMapping() == null) {
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ExternalResource.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ExternalResource.java
index 370c1932cc..657d16d098 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ExternalResource.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ExternalResource.java
@@ -31,7 +31,6 @@ import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
-import org.identityconnectors.framework.common.objects.ObjectClass;
public interface ExternalResource extends ProvidedKeyEntity {
@@ -105,9 +104,9 @@ public interface ExternalResource extends ProvidedKeyEntity {
void setRandomPwdIfNotProvided(boolean condition);
- Optional<Provision> getProvision(String anyType);
+ Optional<Provision> getProvisionByAnyType(String anyType);
- Optional<Provision> getProvision(ObjectClass objectClass);
+ Optional<Provision> getProvisionByObjectClass(String objectClass);
List<Provision> getProvisions();
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java
index 5a5b1602a1..339ff1484a 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAExternalResource.java
@@ -66,7 +66,6 @@ import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPullPolicy;
import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPushPolicy;
import org.apache.syncope.core.persistence.jpa.validation.entity.ExternalResourceCheck;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.identityconnectors.framework.common.objects.ObjectClass;
/**
* Resource for propagation and pull.
@@ -202,15 +201,15 @@ public class JPAExternalResource extends AbstractProvidedKeyEntity implements Ex
}
@Override
- public Optional<Provision> getProvision(final String anyType) {
+ public Optional<Provision> getProvisionByAnyType(final String anyType) {
return getProvisions().stream().
filter(provision -> provision.getAnyType().equals(anyType)).findFirst();
}
@Override
- public Optional<Provision> getProvision(final ObjectClass objectClass) {
+ public Optional<Provision> getProvisionByObjectClass(final String objectClass) {
return getProvisions().stream().
- filter(provision -> provision.getObjectClass().equals(objectClass.getObjectClassValue())).findFirst();
+ filter(provision -> provision.getObjectClass().equals(objectClass)).findFirst();
}
@Override
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyTypeTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyTypeTest.java
index d962da7141..1605e9c884 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyTypeTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyTypeTest.java
@@ -116,6 +116,6 @@ public class AnyTypeTest extends AbstractTest {
@Test
public void deleteInvalid() {
- assertThrows(IllegalArgumentException.class, () -> anyTypeDAO.delete(anyTypeDAO.findUser().getKey()));
+ assertThrows(IllegalArgumentException.class, () -> anyTypeDAO.delete(AnyTypeKind.USER.name()));
}
}
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
index 6fa39397fb..190b55817a 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
@@ -33,6 +33,7 @@ import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
import org.apache.syncope.common.lib.policy.DefaultPullCorrelationRuleConf;
import org.apache.syncope.common.lib.policy.DefaultPushCorrelationRuleConf;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.BackOffStrategy;
import org.apache.syncope.common.lib.types.ConflictResolutionAction;
import org.apache.syncope.common.lib.types.IdMImplementationType;
@@ -90,7 +91,7 @@ public class PolicyTest extends AbstractTest {
PullPolicy pullPolicy = policyDAO.find("880f8553-069b-4aed-9930-2cd53873f544");
assertNotNull(pullPolicy);
- PullCorrelationRuleEntity pullCR = pullPolicy.getCorrelationRule(anyTypeDAO.findUser().getKey()).orElse(null);
+ PullCorrelationRuleEntity pullCR = pullPolicy.getCorrelationRule(AnyTypeKind.USER.name()).orElse(null);
assertNotNull(pullCR);
DefaultPullCorrelationRuleConf pullCRConf =
POJOHelper.deserialize(pullCR.getImplementation().getBody(), DefaultPullCorrelationRuleConf.class);
@@ -102,7 +103,7 @@ public class PolicyTest extends AbstractTest {
PushPolicy pushPolicy = policyDAO.find("fb6530e5-892d-4f47-a46b-180c5b6c5c83");
assertNotNull(pushPolicy);
- PushCorrelationRuleEntity pushCR = pushPolicy.getCorrelationRule(anyTypeDAO.findUser().getKey()).orElse(null);
+ PushCorrelationRuleEntity pushCR = pushPolicy.getCorrelationRule(AnyTypeKind.USER.name()).orElse(null);
assertNotNull(pushCR);
DefaultPushCorrelationRuleConf pushCRConf =
POJOHelper.deserialize(pushCR.getImplementation().getBody(), DefaultPushCorrelationRuleConf.class);
@@ -214,9 +215,9 @@ public class PolicyTest extends AbstractTest {
assertNotNull(pullPolicy);
assertEquals(pullURuleName,
- pullPolicy.getCorrelationRule(anyTypeDAO.findUser().getKey()).get().getImplementation().getKey());
+ pullPolicy.getCorrelationRule(AnyTypeKind.USER.name()).get().getImplementation().getKey());
assertEquals(pullGRuleName,
- pullPolicy.getCorrelationRule(anyTypeDAO.findGroup().getKey()).get().getImplementation().getKey());
+ pullPolicy.getCorrelationRule(AnyTypeKind.GROUP.name()).get().getImplementation().getKey());
}
@Test
@@ -258,9 +259,9 @@ public class PolicyTest extends AbstractTest {
assertNotNull(pushPolicy);
assertEquals(pushURuleName,
- pushPolicy.getCorrelationRule(anyTypeDAO.findUser().getKey()).get().getImplementation().getKey());
+ pushPolicy.getCorrelationRule(AnyTypeKind.USER.name()).get().getImplementation().getKey());
assertEquals(pushGRuleName,
- pushPolicy.getCorrelationRule(anyTypeDAO.findGroup().getKey()).get().getImplementation().getKey());
+ pushPolicy.getCorrelationRule(AnyTypeKind.GROUP.name()).get().getImplementation().getKey());
}
@Test
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
index 8a9677e4ed..0cd2b02fdb 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
@@ -32,11 +32,11 @@ import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.Item;
import org.apache.syncope.common.lib.to.Mapping;
import org.apache.syncope.common.lib.to.Provision;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.EntityViolationType;
import org.apache.syncope.common.lib.types.IdMEntitlement;
import org.apache.syncope.common.lib.types.MappingPurpose;
import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
-import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
import org.apache.syncope.core.persistence.api.entity.ExternalResource;
@@ -58,9 +58,6 @@ public class ResourceTest extends AbstractTest {
@Autowired
private ExternalResourceDAO resourceDAO;
- @Autowired
- private AnyTypeDAO anyTypeDAO;
-
@Test
public void findById() {
ExternalResource resource = resourceDAO.find("ws-target-resource-1");
@@ -71,7 +68,7 @@ public class ResourceTest extends AbstractTest {
assertEquals("net.tirasa.connid.bundles.soap.WebServiceConnector", connector.getConnectorName());
assertEquals("net.tirasa.connid.bundles.soap", connector.getBundleName());
- Mapping mapping = resource.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping();
+ Mapping mapping = resource.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping();
assertFalse(mapping.getItems().isEmpty());
assertTrue(mapping.getItems().stream().
@@ -117,7 +114,7 @@ public class ResourceTest extends AbstractTest {
public void getConnObjectKey() {
ExternalResource resource = resourceDAO.find("ws-target-resource-2");
assertNotNull(resource);
- assertEquals("fullname", resource.getProvision(anyTypeDAO.findUser().getKey()).get().
+ assertEquals("fullname", resource.getProvisionByAnyType(AnyTypeKind.USER.name()).get().
getMapping().getConnObjectKeyItem().get().getIntAttrName());
}
@@ -128,7 +125,7 @@ public class ResourceTest extends AbstractTest {
resource.setPropagationPriority(2);
Provision provision = new Provision();
- provision.setAnyType(anyTypeDAO.findUser().getKey());
+ provision.setAnyType(AnyTypeKind.USER.name());
provision.setObjectClass(ObjectClass.ACCOUNT_NAME);
resource.getProvisions().add(provision);
@@ -149,8 +146,10 @@ public class ResourceTest extends AbstractTest {
entityManager().flush();
assertNotNull(actual);
assertNotNull(actual.getConnector());
- assertNotNull(actual.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping());
- assertFalse(actual.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems().isEmpty());
+ assertNotNull(actual.getProvisionByAnyType(AnyTypeKind.USER.name()).
+ get().getMapping());
+ assertFalse(actual.getProvisionByAnyType(AnyTypeKind.USER.name()).
+ get().getMapping().getItems().isEmpty());
assertEquals(Integer.valueOf(2), actual.getPropagationPriority());
}
@@ -164,7 +163,7 @@ public class ResourceTest extends AbstractTest {
resource.setConnector(connector);
Provision provision = new Provision();
- provision.setAnyType(anyTypeDAO.findUser().getKey());
+ provision.setAnyType(AnyTypeKind.USER.name());
provision.setObjectClass(ObjectClass.ACCOUNT_NAME);
resource.getProvisions().add(provision);
@@ -190,7 +189,7 @@ public class ResourceTest extends AbstractTest {
resource.setConnector(connector);
Provision provision = new Provision();
- provision.setAnyType(anyTypeDAO.findUser().getKey());
+ provision.setAnyType(AnyTypeKind.USER.name());
provision.setObjectClass(ObjectClass.ACCOUNT_NAME);
resource.getProvisions().add(provision);
@@ -217,7 +216,7 @@ public class ResourceTest extends AbstractTest {
resource.setKey("invalidProvision");
Provision provision = new Provision();
- provision.setAnyType(anyTypeDAO.findUser().getKey());
+ provision.setAnyType(AnyTypeKind.USER.name());
provision.setObjectClass(ObjectClass.ACCOUNT_NAME);
resource.getProvisions().add(provision);
@@ -231,7 +230,7 @@ public class ResourceTest extends AbstractTest {
mapping.setConnObjectKeyItem(connObjectKey);
provision = new Provision();
- provision.setAnyType(anyTypeDAO.findGroup().getKey());
+ provision.setAnyType(AnyTypeKind.GROUP.name());
provision.setObjectClass(ObjectClass.ACCOUNT_NAME);
resource.getProvisions().add(provision);
@@ -250,7 +249,7 @@ public class ResourceTest extends AbstractTest {
resource.setPropagationPriority(2);
Provision provision = new Provision();
- provision.setAnyType(anyTypeDAO.findUser().getKey());
+ provision.setAnyType(AnyTypeKind.USER.name());
provision.setObjectClass(ObjectClass.ACCOUNT_NAME);
resource.getProvisions().add(provision);
@@ -284,7 +283,7 @@ public class ResourceTest extends AbstractTest {
resource.setConnector(connector);
Provision provision = new Provision();
- provision.setAnyType(anyTypeDAO.findUser().getKey());
+ provision.setAnyType(AnyTypeKind.USER.name());
provision.setObjectClass(ObjectClass.ACCOUNT_NAME);
resource.getProvisions().add(provision);
@@ -314,7 +313,8 @@ public class ResourceTest extends AbstractTest {
entityManager().flush();
assertNotNull(actual);
- assertEquals(3, actual.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems().size());
+ assertEquals(3, actual.getProvisionByAnyType(AnyTypeKind.USER.name()).
+ get().getMapping().getItems().size());
}
@Test
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java
index c107d59093..388e4369cd 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java
@@ -32,10 +32,10 @@ import java.util.stream.Stream;
import javax.persistence.EntityExistsException;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.Item;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.AttrSchemaType;
import org.apache.syncope.common.lib.types.IdMEntitlement;
import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
@@ -59,9 +59,6 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional("Master")
public class PlainSchemaTest extends AbstractTest {
- @Autowired
- private AnyTypeDAO anyTypeDAO;
-
@Autowired
private UserDAO userDAO;
@@ -123,7 +120,7 @@ public class PlainSchemaTest extends AbstractTest {
// fullname is mapped as ConnObjectKey for ws-target-resource-2, need to swap it otherwise validation errors
// will be raised
resourceDAO.find("ws-target-resource-2").
- getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems().
+ getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping().getItems().
forEach(item -> {
if ("fullname".equals(item.getIntAttrName())) {
item.setConnObjectKey(false);
@@ -192,12 +189,12 @@ public class PlainSchemaTest extends AbstractTest {
@Test
public void deleteFirstname() {
int pre = resourceDAO.find("resource-db-pull").
- getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems().size();
+ getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping().getItems().size();
plainSchemaDAO.delete("firstname");
assertNull(plainSchemaDAO.find("firstname"));
assertEquals(pre - 1, resourceDAO.find("resource-db-pull").
- getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems().size());
+ getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping().getItems().size());
}
}
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
index dc7a929cbe..8b9dc51a0a 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
@@ -30,9 +30,9 @@ import java.util.stream.Collectors;
import org.apache.syncope.common.lib.to.Item;
import org.apache.syncope.common.lib.to.Mapping;
import org.apache.syncope.common.lib.to.Provision;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.MappingPurpose;
import org.apache.syncope.common.lib.types.TaskType;
-import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
@@ -58,9 +58,6 @@ public class ResourceTest extends AbstractTest {
@Autowired
private ConnInstanceDAO connInstanceDAO;
- @Autowired
- private AnyTypeDAO anyTypeDAO;
-
@Autowired
private UserDAO userDAO;
@@ -108,7 +105,7 @@ public class ResourceTest extends AbstractTest {
resource.setConnector(connector);
Provision provision = new Provision();
- provision.setAnyType(anyTypeDAO.findUser().getKey());
+ provision.setAnyType(AnyTypeKind.USER.name());
provision.setObjectClass(ObjectClass.ACCOUNT_NAME);
resource.getProvisions().add(provision);
@@ -142,7 +139,7 @@ public class ResourceTest extends AbstractTest {
ExternalResource actual = resourceDAO.save(resource);
entityManager().flush();
assertNotNull(actual);
- assertNotNull(actual.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping());
+ assertNotNull(actual.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping());
entityManager().flush();
resourceDAO.detach(actual);
@@ -170,8 +167,8 @@ public class ResourceTest extends AbstractTest {
assertTrue(resource.getConnector().equals(connector));
// check mappings
- List<Item> items = resource.getProvision(
- anyTypeDAO.findUser().getKey()).get().getMapping().getItems();
+ List<Item> items = resource.getProvisionByAnyType(
+ AnyTypeKind.USER.name()).get().getMapping().getItems();
assertNotNull(items);
assertEquals(5, items.size());
@@ -240,13 +237,14 @@ public class ResourceTest extends AbstractTest {
ExternalResource csv = resourceDAO.find("resource-csv");
assertNotNull(csv);
- int origMapItems = csv.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems().size();
+ int origMapItems = csv.getProvisionByAnyType(
+ AnyTypeKind.USER.name()).get().getMapping().getItems().size();
Item newMapItem = new Item();
newMapItem.setIntAttrName("TEST");
newMapItem.setExtAttrName("TEST");
newMapItem.setPurpose(MappingPurpose.PROPAGATION);
- csv.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().add(newMapItem);
+ csv.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping().add(newMapItem);
resourceDAO.save(csv);
entityManager().flush();
@@ -255,6 +253,6 @@ public class ResourceTest extends AbstractTest {
assertNotNull(csv);
assertEquals(
origMapItems + 1,
- csv.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems().size());
+ csv.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping().getItems().size());
}
}
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/VirSchemaTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/VirSchemaTest.java
index 7fab7be0c3..ba1ecd9a5a 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/VirSchemaTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/VirSchemaTest.java
@@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.apache.syncope.common.lib.to.Item;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
@@ -51,7 +52,7 @@ public class VirSchemaTest extends AbstractTest {
ExternalResource resource = resourceDAO.find("ws-target-resource-1");
assertNotNull(resource);
assertTrue(virSchemaDAO.find(resource).isEmpty());
- assertTrue(virSchemaDAO.find(resource.getKey(), anyTypeDAO.findUser().getKey()).isEmpty());
+ assertTrue(virSchemaDAO.find(resource.getKey(), AnyTypeKind.USER.name()).isEmpty());
VirSchema virSchema = entityFactory.newEntity(VirSchema.class);
virSchema.setKey("vSchema");
@@ -71,8 +72,8 @@ public class VirSchemaTest extends AbstractTest {
assertFalse(virSchemaDAO.find(resource).isEmpty());
assertTrue(virSchemaDAO.find(resource).contains(virSchema.getKey()));
- assertFalse(virSchemaDAO.find(resource.getKey(), anyTypeDAO.findUser().getKey()).isEmpty());
- assertTrue(virSchemaDAO.find(resource.getKey(), anyTypeDAO.findUser().getKey()).contains(virSchema));
+ assertFalse(virSchemaDAO.find(resource.getKey(), AnyTypeKind.USER.name()).isEmpty());
+ assertTrue(virSchemaDAO.find(resource.getKey(), AnyTypeKind.USER.name()).contains(virSchema));
Item item = virSchema.asLinkingMappingItem();
assertNotNull(item);
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
index 41a7274ef8..35b54b32a2 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
@@ -736,10 +736,10 @@ public class DefaultMappingManager implements MappingManager {
case "userOwner":
case "groupOwner":
- Mapping uMappingTO = provision.getAnyType().equals(anyTypeDAO.findUser().getKey())
+ Mapping uMappingTO = provision.getAnyType().equals(AnyTypeKind.USER.name())
? provision.getMapping()
: null;
- Mapping gMappingTO = provision.getAnyType().equals(anyTypeDAO.findGroup().getKey())
+ Mapping gMappingTO = provision.getAnyType().equals(AnyTypeKind.GROUP.name())
? provision.getMapping()
: null;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultVirAttrHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultVirAttrHandler.java
index bd578a9a1b..0bd8cc5b34 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultVirAttrHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultVirAttrHandler.java
@@ -113,7 +113,7 @@ public class DefaultVirAttrHandler implements VirAttrHandler {
LOG.debug("Found in cache: {}={}", cacheKey, cacheValue);
result.put(schema, cacheValue.getValues());
} else if (schema.getAnyType().equals(any.getType())) {
- schema.getResource().getProvision(schema.getAnyType().getKey()).ifPresent(provision -> {
+ schema.getResource().getProvisionByAnyType(schema.getAnyType().getKey()).ifPresent(provision -> {
Set<VirSchema> schemasToRead = toRead.get(Pair.of(schema.getResource(), provision));
if (schemasToRead == null) {
schemasToRead = new HashSet<>();
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
index 97ad8f378b..c8a89310f8 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
@@ -200,7 +200,7 @@ abstract class AbstractAnyDataBinder {
Map<String, ConnObject> onResources = new HashMap<>();
resources.stream().map(resourceDAO::find).filter(Objects::nonNull).forEach(resource -> {
- resource.getProvision(any.getType().getKey()).
+ resource.getProvisionByAnyType(any.getType().getKey()).
ifPresent(provision -> MappingUtils.getConnObjectKeyItem(provision).ifPresent(keyItem -> {
Pair<String, Set<Attribute>> prepared = mappingManager.prepareAttrsFromAny(
@@ -319,7 +319,7 @@ abstract class AbstractAnyDataBinder {
SyncopeClientException reqValMissing = SyncopeClientException.build(ClientExceptionType.RequiredValuesMissing);
resources.forEach(resource -> {
- Optional<Provision> provision = resource.getProvision(any.getType().getKey());
+ Optional<Provision> provision = resource.getProvisionByAnyType(any.getType().getKey());
if (resource.isEnforceMandatoryCondition() && provision.isPresent()) {
List<String> missingAttrNames = evaluateMandatoryCondition(resource, provision.get(), any);
if (!missingAttrNames.isEmpty()) {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
index 0d76a4b79a..4927d4c5a0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
@@ -149,7 +149,7 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
LOG.debug("Invalid {} specified {}, ignoring...",
AnyType.class.getSimpleName(), provisionTO.getAnyType());
} else {
- Provision provision = resource.getProvision(anyType.getKey()).orElse(null);
+ Provision provision = resource.getProvisionByAnyType(anyType.getKey()).orElse(null);
if (provision == null) {
provision = new Provision();
provision.setAnyType(anyType.getKey());
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
index 131ed2483d..89ceae71cc 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
@@ -356,7 +356,7 @@ public class SchemaDataBinderImpl implements SchemaDataBinder {
sce.getElements().add("AnyType " + schemaTO.getAnyType() + " not found");
throw sce;
}
- Provision provision = resource.getProvision(anyType.getKey()).orElse(null);
+ Provision provision = resource.getProvisionByAnyType(anyType.getKey()).orElse(null);
if (provision == null) {
SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidSchemaDefinition);
sce.getElements().add("Provision for AnyType" + schemaTO.getAnyType()
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
index a9c0c36faf..b61320990a 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
@@ -443,7 +443,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
}
protected boolean isPasswordMapped(final ExternalResource resource) {
- return resource.getProvision(anyTypeDAO.findUser().getKey()).
+ return resource.getProvisionByAnyType(AnyTypeKind.USER.name()).
filter(provision -> provision.getMapping() != null).
map(provision -> provision.getMapping().getItems().stream().anyMatch(Item::isPassword)).
orElse(false);
@@ -747,7 +747,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
propByRes.addAll(
ResourceOperation.UPDATE,
anyUtils.getAllResources(saved).stream().
- map(resource -> resource.getProvision(saved.getType().getKey()).
+ map(resource -> resource.getProvisionByAnyType(saved.getType().getKey()).
filter(mappingManager::hasMustChangePassword).
map(provision -> resource.getKey()).
orElse(null)).
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReconciliationReportlet.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReconciliationReportlet.java
index c939275259..9bc0f66502 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReconciliationReportlet.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReconciliationReportlet.java
@@ -285,7 +285,7 @@ public class ReconciliationReportlet extends AbstractReportlet {
AnyUtils anyUtils = anyUtilsFactory.getInstance(any);
anyUtils.getAllResources(any).forEach(resource -> {
- Provision provision = resource.getProvision(any.getType().getKey()).orElse(null);
+ Provision provision = resource.getProvisionByAnyType(any.getType().getKey()).orElse(null);
Optional<Item> connObjectKeyItem = MappingUtils.getConnObjectKeyItem(provision);
String connObjectKeyValue = connObjectKeyItem.isPresent()
? mappingManager.getConnObjectKeyValue(any, resource, provision).get()
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
index bd75358897..91be9326c3 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
@@ -197,7 +197,7 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
Uid result = connector.create(taskInfo.getObjectClass(), attributes, null, propagationAttempted);
- taskInfo.getResource().getProvision(taskInfo.getAnyType()).
+ taskInfo.getResource().getProvisionByAnyType(taskInfo.getAnyType()).
filter(provision -> provision.getUidOnCreate() != null).
ifPresent(provision -> anyUtilsFactory.getInstance(taskInfo.getAnyTypeKind()).addAttr(
validator,
@@ -511,7 +511,8 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
Uid uid = null;
Result result;
try {
- provision = taskInfo.getResource().getProvision(taskInfo.getObjectClass()).orElse(null);
+ provision = taskInfo.getResource().
+ getProvisionByObjectClass(taskInfo.getObjectClass().getObjectClassValue()).orElse(null);
orgUnit = taskInfo.getResource().getOrgUnit();
if (taskInfo.getBeforeObj().isEmpty()) {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java
index 6bb431bc78..bf367e3668 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java
@@ -468,7 +468,7 @@ public class DefaultPropagationManager implements PropagationManager {
propByRes.asMap().forEach((resourceKey, operation) -> {
ExternalResource resource = resourceDAO.find(resourceKey);
Provision provision = Optional.ofNullable(resource).
- flatMap(externalResource -> externalResource.getProvision(any.getType().getKey())).orElse(null);
+ flatMap(r -> r.getProvisionByAnyType(any.getType().getKey())).orElse(null);
Stream<Item> mappingItems = provision == null
? Stream.empty()
: MappingUtils.getPropagationItems(provision.getMapping().getItems().stream());
@@ -514,7 +514,7 @@ public class DefaultPropagationManager implements PropagationManager {
Provision provision = account == null || account.getResource() == null
? null
- : account.getResource().getProvision(AnyTypeKind.USER.name()).orElse(null);
+ : account.getResource().getProvisionByAnyType(AnyTypeKind.USER.name()).orElse(null);
Stream<Item> mappingItems = provision == null
? Stream.empty()
: MappingUtils.getPropagationItems(provision.getMapping().getItems().stream());
@@ -621,7 +621,7 @@ public class DefaultPropagationManager implements PropagationManager {
anyUtilsFactory.getInstance(kind).dao().findAllResourceKeys(key).stream().
map(resourceDAO::find).
filter(resource -> !excludedResources.contains(resource.getKey())
- && resource.getProvision(any.getType().getKey()).isPresent()
+ && resource.getProvisionByAnyType(any.getType().getKey()).isPresent()
&& resource.getPropagationPolicy() != null && resource.getPropagationPolicy().isUpdateDelta()).
forEach(resource -> {
Pair<String, Set<Attribute>> preparedAttrs = mappingManager.prepareAttrsFromAny(
@@ -630,7 +630,7 @@ public class DefaultPropagationManager implements PropagationManager {
changePwd,
enable,
resource,
- resource.getProvision(any.getType().getKey()).get());
+ resource.getProvisionByAnyType(any.getType().getKey()).get());
attrs.put(
Pair.of(resource.getKey(), preparedAttrs.getLeft()),
preparedAttrs.getRight());
@@ -639,7 +639,7 @@ public class DefaultPropagationManager implements PropagationManager {
if (any instanceof User) {
((User) any).getLinkedAccounts().stream().
filter(account -> !excludedResources.contains(account.getResource().getKey())
- && account.getResource().getProvision(any.getType().getKey()).isPresent()
+ && account.getResource().getProvisionByAnyType(any.getType().getKey()).isPresent()
&& account.getResource().getPropagationPolicy() != null
&& account.getResource().getPropagationPolicy().isUpdateDelta()).
forEach(account -> {
@@ -648,7 +648,7 @@ public class DefaultPropagationManager implements PropagationManager {
account,
password,
true,
- account.getResource().getProvision(any.getType().getKey()).get());
+ account.getResource().getProvisionByAnyType(any.getType().getKey()).get());
attrs.put(
Pair.of(account.getResource().getKey(), account.getConnObjectKeyValue()),
preparedAttrs);
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
index 9cb4215b3f..2a0cd1297e 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
@@ -110,7 +110,7 @@ public class LDAPMembershipPropagationActions implements PropagationActions {
return;
}
- Optional<Provision> groupProvision = taskInfo.getResource().getProvision(AnyTypeKind.GROUP.name());
+ Optional<Provision> groupProvision = taskInfo.getResource().getProvisionByAnyType(AnyTypeKind.GROUP.name());
if (groupProvision.isPresent() && groupProvision.get().getMapping() != null
&& StringUtils.isNotBlank(groupProvision.get().getMapping().getConnObjectLink())) {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
index 5b654a0c6a..7155fcfa56 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
@@ -28,6 +28,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.common.lib.to.Mapping;
import org.apache.syncope.common.lib.to.Provision;
import org.apache.syncope.common.lib.to.ProvisioningReport;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.TraceLevel;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
@@ -404,11 +405,11 @@ public abstract class AbstractProvisioningJobDelegate<T extends ProvisioningTask
}
// Summary, also to be included for FAILURE and ALL, so create it anyway.
- boolean includeUser = resource.getProvision(anyTypeDAO.findUser().getKey()).isPresent();
- boolean includeGroup = resource.getProvision(anyTypeDAO.findGroup().getKey()).isPresent();
+ boolean includeUser = resource.getProvisionByAnyType(AnyTypeKind.USER.name()).isPresent();
+ boolean includeGroup = resource.getProvisionByAnyType(AnyTypeKind.GROUP.name()).isPresent();
boolean includeAnyObject = resource.getProvisions().stream().anyMatch(
- provision -> !provision.getAnyType().equals(anyTypeDAO.findUser().getKey())
- && !provision.getAnyType().equals(anyTypeDAO.findGroup().getKey()));
+ provision -> !provision.getAnyType().equals(AnyTypeKind.USER.name())
+ && !provision.getAnyType().equals(AnyTypeKind.GROUP.name()));
boolean includeRealm = resource.getOrgUnit() != null;
if (includeUser) {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
index f9204488d5..440d0cfb18 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
@@ -132,7 +132,8 @@ public abstract class AbstractPullResultHandler extends AbstractSyncopeResultHan
public boolean handle(final SyncDelta delta) {
Provision provision = null;
try {
- provision = profile.getTask().getResource().getProvision(delta.getObject().getObjectClass()).
+ provision = profile.getTask().getResource().
+ getProvisionByObjectClass(delta.getObject().getObjectClass().getObjectClassValue()).
orElseThrow(() -> new JobExecutionException(
"No provision found on " + profile.getTask().getResource()
+ " for " + delta.getObject().getObjectClass()));
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
index 7911d3529e..8069984a92 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
@@ -212,7 +212,8 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan
try {
any = getAnyUtils().dao().authFind(anyKey);
- Provision provision = profile.getTask().getResource().getProvision(any.getType().getKey()).orElse(null);
+ Provision provision = profile.getTask().getResource().
+ getProvisionByAnyType(any.getType().getKey()).orElse(null);
if (provision == null) {
throw new JobExecutionException("No provision found on " + profile.getTask().getResource() + " for "
+ any.getType().getKey());
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
index 3ca42deca6..1dce092727 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
@@ -140,7 +140,7 @@ public class InboundMatcher {
final ExternalResource resource,
final Connector connector) {
- Optional<Provision> provision = resource.getProvision(anyType.getKey());
+ Optional<Provision> provision = resource.getProvisionByAnyType(anyType.getKey());
if (provision.isEmpty()) {
return Optional.empty();
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java
index 3815d16729..3bb5a9cc86 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java
@@ -29,6 +29,7 @@ import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.syncope.common.lib.to.Provision;
import org.apache.syncope.common.lib.to.ProvisioningReport;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
import org.apache.syncope.core.persistence.api.dao.PullMatch;
@@ -165,7 +166,7 @@ public class LDAPMembershipPullActions extends SchedulingPullActions {
}
Optional<Provision> provision = profile.getTask().getResource().
- getProvision(anyTypeDAO.findUser().getKey()).filter(p -> p.getMapping() != null);
+ getProvisionByAnyType(AnyTypeKind.USER.name()).filter(p -> p.getMapping() != null);
if (provision.isEmpty()) {
super.after(profile, delta, entity, result);
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java
index 5b74e44abc..055449838d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java
@@ -336,6 +336,7 @@ public class PullJobDelegate extends AbstractProvisioningJobDelegate<PullTask> i
handler.setProfile(profile);
handler.setPullExecutor(this);
+ boolean setSyncTokens = false;
try {
Set<String> moreAttrsToGet = new HashSet<>();
profile.getActions().forEach(a -> moreAttrsToGet.addAll(a.moreAttrsToGet(profile, provision)));
@@ -361,9 +362,7 @@ public class PullJobDelegate extends AbstractProvisioningJobDelegate<PullTask> i
options);
if (!dryRun) {
- provision.setSyncToken(
- ConnObjectUtils.toString(latestSyncTokens.get(provision.getObjectClass())));
- resourceDAO.save(pullTask.getResource());
+ setSyncTokens = true;
}
break;
@@ -396,6 +395,14 @@ public class PullJobDelegate extends AbstractProvisioningJobDelegate<PullTask> i
}
} catch (Throwable t) {
throw new JobExecutionException("While pulling from connector", t);
+ } finally {
+ if (setSyncTokens) {
+ latestSyncTokens.forEach((objectClass, syncToken) -> {
+ pullTask.getResource().getProvisionByObjectClass(objectClass).
+ ifPresent(p -> p.setSyncToken(ConnObjectUtils.toString(syncToken)));
+ });
+ resourceDAO.save(pullTask.getResource());
+ }
}
}
try {
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/DefaultMappingManagerTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/DefaultMappingManagerTest.java
index e15ed0c937..e6e6a0cb71 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/DefaultMappingManagerTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/DefaultMappingManagerTest.java
@@ -92,7 +92,7 @@ public class DefaultMappingManagerTest extends AbstractTest {
public void prepareAttrsForUser() {
User bellini = userDAO.findByUsername("bellini");
ExternalResource ldap = resourceDAO.find("resource-ldap");
- Provision provision = ldap.getProvision(AnyTypeKind.USER.name()).get();
+ Provision provision = ldap.getProvisionByAnyType(AnyTypeKind.USER.name()).get();
assertNotEquals(CipherAlgorithm.AES, bellini.getCipherAlgorithm());
@@ -171,7 +171,7 @@ public class DefaultMappingManagerTest extends AbstractTest {
public void prepareAttrsForLinkedAccount() {
User vivaldi = userDAO.findByUsername("vivaldi");
ExternalResource ldap = resourceDAO.find("resource-ldap");
- Provision provision = ldap.getProvision(AnyTypeKind.USER.name()).get();
+ Provision provision = ldap.getProvisionByAnyType(AnyTypeKind.USER.name()).get();
LinkedAccount account = entityFactory.newEntity(LinkedAccount.class);
account.setConnObjectKeyValue("admin");
@@ -281,7 +281,7 @@ public class DefaultMappingManagerTest extends AbstractTest {
// 3. check propagation attrs
ExternalResource csv = resourceDAO.find("resource-csv");
- Provision provision = csv.getProvision(AnyTypeKind.USER.name()).get();
+ Provision provision = csv.getProvisionByAnyType(AnyTypeKind.USER.name()).get();
assertNotNull(provision);
Pair<String, Set<Attribute>> attrs = mappingManager.prepareAttrsFromAny(
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderTest.java
index 14f08b61d3..b1866fd0ac 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderTest.java
@@ -91,10 +91,10 @@ public class ResourceDataBinderTest extends AbstractTest {
Set<Item> beforeUserIdMappings = new HashSet<>();
for (ExternalResource res : resourceDAO.findAll()) {
- if (res.getProvision(anyTypeDAO.findUser().getKey()).isPresent()
- && res.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping() != null) {
+ if (res.getProvisionByAnyType(AnyTypeKind.USER.name()).isPresent()
+ && res.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping() != null) {
- for (Item mapItem : res.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems()) {
+ for (Item mapItem : res.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping().getItems()) {
if (userId.getKey().equals(mapItem.getIntAttrName())) {
beforeUserIdMappings.add(mapItem);
}
@@ -127,8 +127,8 @@ public class ResourceDataBinderTest extends AbstractTest {
resource = resourceDAO.save(resource);
entityManager().flush();
assertNotNull(resource);
- assertNotNull(resource.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping());
- assertEquals(1, resource.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems().size());
+ assertNotNull(resource.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping());
+ assertEquals(1, resource.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping().getItems().size());
ExternalResource actual = resourceDAO.find("resource-issue42");
entityManager().flush();
@@ -139,10 +139,10 @@ public class ResourceDataBinderTest extends AbstractTest {
Set<Item> afterUserIdMappings = new HashSet<>();
for (ExternalResource res : resourceDAO.findAll()) {
- if (res.getProvision(anyTypeDAO.findUser().getKey()).isPresent()
- && res.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping() != null) {
+ if (res.getProvisionByAnyType(AnyTypeKind.USER.name()).isPresent()
+ && res.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping() != null) {
- for (Item mapItem : res.getProvision(anyTypeDAO.findUser().getKey()).get().getMapping().getItems()) {
+ for (Item mapItem : res.getProvisionByAnyType(AnyTypeKind.USER.name()).get().getMapping().getItems()) {
if (userId.getKey().equals(mapItem.getIntAttrName())) {
afterUserIdMappings.add(mapItem);
}
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActionsTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActionsTest.java
index 87ef0b5de8..a4d6ce0030 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActionsTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActionsTest.java
@@ -197,7 +197,7 @@ public class LDAPMembershipPullActionsTest extends AbstractTest {
entity = new GroupTO();
when(connectorObj.getAttributeByName(anyString())).thenReturn(attribute);
- when(externalResource.getProvision(anyString())).thenAnswer(ic -> Optional.of(mock(Provision.class)));
+ when(externalResource.getProvisionByAnyType(anyString())).thenAnswer(ic -> Optional.of(mock(Provision.class)));
ldapMembershipPullActions.after(profile, syncDelta, entity, result);
@@ -212,7 +212,7 @@ public class LDAPMembershipPullActionsTest extends AbstractTest {
List<String> expected = List.of(expectedUid);
when(connectorObj.getAttributeByName(anyString())).thenReturn(attribute);
- when(externalResource.getProvision(anyString())).thenAnswer(ic -> Optional.empty());
+ when(externalResource.getProvisionByAnyType(anyString())).thenAnswer(ic -> Optional.empty());
when(inboundMatcher.match(any(AnyType.class), anyString(), any(ExternalResource.class), any(Connector.class))).
thenReturn(Optional.of(new PullMatch(MatchType.ANY, user)));
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
index 437a1abbc1..1ff38fbe5a 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
@@ -43,7 +43,6 @@ import org.apache.syncope.common.lib.types.IdRepoEntitlement;
import org.apache.syncope.core.persistence.api.ImplementationLookup;
import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
-import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.DelegationDAO;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
import org.apache.syncope.core.persistence.api.dao.RealmDAO;
@@ -52,7 +51,6 @@ import org.apache.syncope.core.persistence.api.dao.UserDAO;
import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
import org.apache.syncope.core.persistence.api.entity.AccessToken;
-import org.apache.syncope.core.persistence.api.entity.AnyType;
import org.apache.syncope.core.persistence.api.entity.Delegation;
import org.apache.syncope.core.persistence.api.entity.DynRealm;
import org.apache.syncope.core.persistence.api.entity.ExternalResource;
@@ -104,8 +102,6 @@ public class AuthDataAccessor {
protected final GroupDAO groupDAO;
- protected final AnyTypeDAO anyTypeDAO;
-
protected final AnySearchDAO anySearchDAO;
protected final AccessTokenDAO accessTokenDAO;
@@ -131,7 +127,6 @@ public class AuthDataAccessor {
final RealmDAO realmDAO,
final UserDAO userDAO,
final GroupDAO groupDAO,
- final AnyTypeDAO anyTypeDAO,
final AnySearchDAO anySearchDAO,
final AccessTokenDAO accessTokenDAO,
final ConfParamOps confParamOps,
@@ -146,7 +141,6 @@ public class AuthDataAccessor {
this.realmDAO = realmDAO;
this.userDAO = userDAO;
this.groupDAO = groupDAO;
- this.anyTypeDAO = anyTypeDAO;
this.anySearchDAO = anySearchDAO;
this.accessTokenDAO = accessTokenDAO;
this.confParamOps = confParamOps;
@@ -289,13 +283,12 @@ public class AuthDataAccessor {
ExternalResource resource = itor.next();
String connObjectKey = null;
try {
- AnyType userType = anyTypeDAO.findUser();
- Provision provision = resource.getProvision(userType.getKey()).
+ Provision provision = resource.getProvisionByAnyType(AnyTypeKind.USER.name()).
orElseThrow(() -> new AccountNotFoundException(
- "Unable to locate provision for user type " + userType.getKey()));
+ "Unable to locate provision for user type " + AnyTypeKind.USER.name()));
connObjectKey = mappingManager.getConnObjectKeyValue(user, resource, provision).
orElseThrow(() -> new AccountNotFoundException(
- "Unable to locate conn object key value for " + userType.getKey()));
+ "Unable to locate conn object key value for " + AnyTypeKind.USER.name()));
Uid uid = connectorManager.getConnector(resource).authenticate(connObjectKey, password, null);
if (uid != null) {
authenticated = true;
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
index e9ffb1b855..938a2b6709 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
@@ -23,7 +23,6 @@ import org.apache.syncope.common.keymaster.client.api.DomainOps;
import org.apache.syncope.core.persistence.api.ImplementationLookup;
import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
-import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.DelegationDAO;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
import org.apache.syncope.core.persistence.api.dao.RealmDAO;
@@ -171,7 +170,6 @@ public class WebSecurityContext {
final RealmDAO realmDAO,
final UserDAO userDAO,
final GroupDAO groupDAO,
- final AnyTypeDAO anyTypeDAO,
final AnySearchDAO anySearchDAO,
final AccessTokenDAO accessTokenDAO,
final ConfParamOps confParamOps,
@@ -187,7 +185,6 @@ public class WebSecurityContext {
realmDAO,
userDAO,
groupDAO,
- anyTypeDAO,
anySearchDAO,
accessTokenDAO,
confParamOps,