You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/11/20 12:18:59 UTC
[syncope] 01/02: Avoiding any EntityManager#flush call
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 d5aaa6e2a30f99319b44457161dcfdd2eb15289f
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Tue Nov 20 13:11:29 2018 +0100
Avoiding any EntityManager#flush call
---
.../syncope/core/persistence/api/dao/DAO.java | 2 --
.../core/persistence/jpa/dao/AbstractDAO.java | 5 ---
.../core/persistence/jpa/dao/JPAUserDAO.java | 11 +++---
.../core/persistence/jpa/inner/AnySearchTest.java | 2 +-
.../persistence/jpa/inner/ApplicationTest.java | 4 +--
.../jpa/inner/RelationshipTypeTest.java | 2 +-
.../persistence/jpa/inner/RemediationTest.java | 2 +-
.../persistence/jpa/outer/AccessTokenTest.java | 4 +--
.../core/persistence/jpa/outer/AnySearchTest.java | 4 +--
.../persistence/jpa/outer/AnyTypeClassTest.java | 6 ++--
.../core/persistence/jpa/outer/AnyTypeTest.java | 5 ++-
.../core/persistence/jpa/outer/ConfTest.java | 2 +-
.../jpa/outer/ConnInstanceHistoryConfTest.java | 4 +--
.../persistence/jpa/outer/ConnInstanceTest.java | 3 +-
.../core/persistence/jpa/outer/DynRealmTest.java | 4 +--
.../core/persistence/jpa/outer/GroupTest.java | 19 +++++-----
.../core/persistence/jpa/outer/PlainAttrTest.java | 4 +--
.../persistence/jpa/outer/PlainSchemaTest.java | 8 ++---
.../core/persistence/jpa/outer/RealmTest.java | 2 +-
.../core/persistence/jpa/outer/ReportTest.java | 8 ++---
.../jpa/outer/ResourceHistoryConfTest.java | 4 +--
.../core/persistence/jpa/outer/ResourceTest.java | 12 +++----
.../core/persistence/jpa/outer/RoleTest.java | 8 ++---
.../jpa/outer/SecurityQuestionTest.java | 4 +--
.../core/persistence/jpa/outer/TaskTest.java | 12 +++----
.../core/persistence/jpa/outer/UserTest.java | 41 +++++++++++++---------
.../core/persistence/jpa/outer/VirSchemaTest.java | 2 +-
.../java/notification/NotificationManagerImpl.java | 2 --
.../AbstractPropagationTaskExecutor.java | 2 --
.../core/provisioning/java/AbstractTest.java | 15 ++++++++
.../provisioning/java/ResourceDataBinderTest.java | 2 +-
31 files changed, 108 insertions(+), 97 deletions(-)
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java
index 04ea153..c0f0dca 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DAO.java
@@ -26,7 +26,5 @@ public interface DAO<E extends Entity> {
void detach(E entity);
- void flush();
-
void clear();
}
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java
index 5b16737..fd87b30 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractDAO.java
@@ -55,11 +55,6 @@ public abstract class AbstractDAO<E extends Entity> implements DAO<E> {
}
@Override
- public void flush() {
- entityManager().flush();
- }
-
- @Override
public void clear() {
entityManager().clear();
}
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
index 01e90c7..ede1df0 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
@@ -31,6 +31,7 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.NoResultException;
+import javax.persistence.PersistenceException;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -321,6 +322,8 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
user.getPasswordHistory().remove(i);
}
}
+ } catch (PersistenceException | InvalidEntityException e) {
+ throw e;
} catch (Exception e) {
LOG.error("Invalid password for {}", user, e);
throw new InvalidEntityException(User.class, EntityViolationType.InvalidPassword, e.getMessage());
@@ -361,10 +364,9 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
&& user.getFailedLogins() > policy.getMaxAuthenticationAttempts() && !user.isSuspended();
propagateSuspension |= policy.isPropagateSuspension();
}
+ } catch (PersistenceException | InvalidEntityException e) {
+ throw e;
} catch (Exception e) {
- if (e instanceof InvalidEntityException) {
- throw (InvalidEntityException) e;
- }
LOG.error("Invalid username for {}", user, e);
throw new InvalidEntityException(User.class, EntityViolationType.InvalidUsername, e.getMessage());
}
@@ -376,9 +378,8 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
// 1. save clear password value before save
String clearPwd = user.getClearPassword();
- // 2. save and flush to trigger entity validation
+ // 2. save
User merged = super.save(user);
- entityManager().flush();
// 3. set back the sole clear password value
JPAUser.class.cast(merged).setClearPassword(clearPwd);
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
index 089b7b4..2c2f4d1 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
@@ -702,7 +702,7 @@ public class AnySearchTest extends AbstractTest {
anyObject.add(membership);
anyObjectDAO.save(anyObject);
- anyObjectDAO.flush();
+ entityManager().flush();
MembershipCond groupCond = new MembershipCond();
groupCond.setGroup("citizen");
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java
index 057b2e7..eef08cb 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ApplicationTest.java
@@ -97,7 +97,7 @@ public class ApplicationTest extends AbstractTest {
applicationDAO.save(application);
- applicationDAO.flush();
+ entityManager().flush();
application = applicationDAO.find(application.getKey());
assertNotNull(application);
@@ -107,7 +107,7 @@ public class ApplicationTest extends AbstractTest {
// 3. delete application
applicationDAO.delete(application);
- applicationDAO.flush();
+ entityManager().flush();
assertNull(applicationDAO.find(application.getKey()));
assertNull(applicationDAO.findPrivilege(privilege1Key));
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RelationshipTypeTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RelationshipTypeTest.java
index dce3e09..c1dead2 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RelationshipTypeTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RelationshipTypeTest.java
@@ -99,7 +99,7 @@ public class RelationshipTypeTest extends AbstractTest {
relationshipTypeDAO.delete("neighborhood");
- relationshipTypeDAO.flush();
+ entityManager().flush();
anyObject = anyObjectDAO.find("fc6dbc3a-6c07-4965-8781-921e7401a4a5");
assertNotNull(anyObject);
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RemediationTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RemediationTest.java
index cb2484a..15e3e5b 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RemediationTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RemediationTest.java
@@ -120,7 +120,7 @@ public class RemediationTest extends AbstractTest {
taskDAO.delete(remediation.getPullTask());
- remediationDAO.flush();
+ entityManager().flush();
remediation = remediationDAO.find(remediation.getKey());
assertNull(remediation.getPullTask());
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AccessTokenTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AccessTokenTest.java
index 276eef5..9272302 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AccessTokenTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AccessTokenTest.java
@@ -48,7 +48,7 @@ public class AccessTokenTest extends AbstractTest {
accessToken = accessTokenDAO.save(accessToken);
assertNotNull(accessToken);
- accessTokenDAO.flush();
+ entityManager().flush();
accessToken = accessTokenDAO.findByOwner("bellini");
assertNotNull(accessToken);
@@ -56,7 +56,7 @@ public class AccessTokenTest extends AbstractTest {
accessTokenDAO.deleteExpired();
- accessTokenDAO.flush();
+ entityManager().flush();
accessToken = accessTokenDAO.findByOwner("bellini");
assertNull(accessToken);
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
index 5d0d6a5..3c0d484 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
@@ -61,7 +61,7 @@ public class AnySearchTest extends AbstractTest {
for (Group group : groupDAO.findAll(1, 100)) {
groupDAO.delete(group.getKey());
}
- groupDAO.flush();
+ entityManager().flush();
AttributeCond coolLeafCond = new AttributeCond(AttributeCond.Type.EQ);
coolLeafCond.setSchema("cool");
@@ -96,7 +96,7 @@ public class AnySearchTest extends AbstractTest {
role = roleDAO.saveAndRefreshDynMemberships(role);
assertNotNull(role);
- roleDAO.flush();
+ entityManager().flush();
// 2. search user by this dynamic role
RoleCond roleCond = new RoleCond();
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnyTypeClassTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnyTypeClassTest.java
index 3b9b69d..b4ccb19 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnyTypeClassTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnyTypeClassTest.java
@@ -49,7 +49,7 @@ public class AnyTypeClassTest extends AbstractTest {
plainSchemaDAO.save(newSchema);
- plainSchemaDAO.flush();
+ entityManager().flush();
newSchema = plainSchemaDAO.find(newSchema.getKey());
assertNotNull(newSchema);
@@ -60,7 +60,7 @@ public class AnyTypeClassTest extends AbstractTest {
anyTypeClassDAO.save(newClass);
- anyTypeClassDAO.flush();
+ entityManager().flush();
newClass = anyTypeClassDAO.find(newClass.getKey());
assertNotNull(newClass);
@@ -84,7 +84,7 @@ public class AnyTypeClassTest extends AbstractTest {
plainSchemaDAO.delete("surname");
- anyTypeClassDAO.flush();
+ entityManager().flush();
minimalUser = anyTypeClassDAO.find("minimal user");
assertNotNull(minimalUser);
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnyTypeTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnyTypeTest.java
index 95a1ad6..5efb5d1 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnyTypeTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnyTypeTest.java
@@ -55,7 +55,7 @@ public class AnyTypeTest extends AbstractTest {
group.add(other);
anyTypeDAO.save(group);
- anyTypeDAO.flush();
+ entityManager().flush();
user = anyTypeDAO.findUser();
assertTrue(user.getClasses().contains(other));
@@ -67,7 +67,7 @@ public class AnyTypeTest extends AbstractTest {
anyTypeClassDAO.delete("other");
- anyTypeDAO.flush();
+ entityManager().flush();
user = anyTypeDAO.findUser();
assertEquals(userClassesBefore, user.getClasses().size() + 1);
@@ -75,5 +75,4 @@ public class AnyTypeTest extends AbstractTest {
group = anyTypeDAO.findGroup();
assertEquals(groupClassesBefore, group.getClasses().size() + 1);
}
-
}
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConfTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConfTest.java
index 17e35bb..fefa7ff 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConfTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConfTest.java
@@ -65,7 +65,7 @@ public class ConfTest extends AbstractTest {
add(attr, String.valueOf(value));
confDAO.save(expireTime);
- confDAO.flush();
+ entityManager().flush();
CPlainAttr actual = confDAO.find("token.expireTime").get();
assertEquals(expireTime, actual);
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceHistoryConfTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceHistoryConfTest.java
index fd20122..1377edd 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceHistoryConfTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceHistoryConfTest.java
@@ -58,7 +58,7 @@ public class ConnInstanceHistoryConfTest extends AbstractTest {
ldapHistory = connInstanceHistoryConfDAO.save(ldapHistory);
assertNotNull(ldapHistory.getKey());
- connInstanceHistoryConfDAO.flush();
+ entityManager().flush();
List<ConnInstanceHistoryConf> history = connInstanceHistoryConfDAO.findByEntity(ldapConnector);
assertEquals(1, history.size());
@@ -66,7 +66,7 @@ public class ConnInstanceHistoryConfTest extends AbstractTest {
connInstanceHistoryConfDAO.delete(ldapHistory.getKey());
- connInstanceHistoryConfDAO.flush();
+ entityManager().flush();
assertNull(connInstanceHistoryConfDAO.find(ldapHistory.getKey()));
assertTrue(connInstanceHistoryConfDAO.findByEntity(ldapConnector).isEmpty());
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java
index 26ac5c3..8573ed9 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceTest.java
@@ -25,7 +25,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.List;
-import java.util.UUID;
import org.apache.syncope.common.lib.types.ConnectorCapability;
import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
@@ -56,7 +55,7 @@ public class ConnInstanceTest extends AbstractTest {
connInstanceDAO.delete(connInstance.getKey());
- connInstanceDAO.flush();
+ entityManager().flush();
ConnInstance actual = connInstanceDAO.find("fcf9f2b0-f7d6-42c9-84a6-61b28255a42b");
assertNull(actual);
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
index e20587f..12451db 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
@@ -63,7 +63,7 @@ public class DynRealmTest extends AbstractTest {
memb.setDynRealm(dynRealm);
memb.setAnyType(anyTypeDAO.findUser());
memb.setFIQLCond("cool==true");
-
+
dynRealm.add(memb);
memb.setDynRealm(dynRealm);
@@ -79,7 +79,7 @@ public class DynRealmTest extends AbstractTest {
DynRealm actual = dynRealmDAO.saveAndRefreshDynMemberships(dynRealm);
assertNotNull(actual);
- dynRealmDAO.flush();
+ entityManager().flush();
DynRealmCond dynRealmCond = new DynRealmCond();
dynRealmCond.setDynRealm(actual.getKey());
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
index e596e2d..c25aead 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
@@ -135,7 +135,7 @@ public class GroupTest extends AbstractTest {
groupDAO.save(group);
- groupDAO.flush();
+ entityManager().flush();
group = groupDAO.findByName("new");
assertNotNull(group);
@@ -150,14 +150,14 @@ public class GroupTest extends AbstractTest {
group.setRealm(realmDAO.findByFullPath(SyncopeConstants.ROOT_REALM));
groupDAO.save(group);
- groupDAO.flush();
+ entityManager().flush();
}
@Test
public void delete() {
groupDAO.delete("b1f7c12d-ec83-441f-a50e-1691daaedf3b");
- groupDAO.flush();
+ entityManager().flush();
assertNull(groupDAO.find("b1f7c12d-ec83-441f-a50e-1691daaedf3b"));
assertEquals(userDAO.findAllGroups(userDAO.findByUsername("verdi")).size(), 2);
@@ -223,7 +223,7 @@ public class GroupTest extends AbstractTest {
Group actual = groupDAO.saveAndRefreshDynMemberships(group);
assertNotNull(actual);
- groupDAO.flush();
+ entityManager().flush();
// 2. verify that dynamic membership is there
actual = groupDAO.find(actual.getKey());
@@ -247,7 +247,7 @@ public class GroupTest extends AbstractTest {
// 4. delete the new user and verify that dynamic membership was updated
userDAO.delete(newUserKey);
- userDAO.flush();
+ entityManager().flush();
actual = groupDAO.find(actual.getKey());
members = groupDAO.findUDynMembers(actual);
@@ -259,7 +259,7 @@ public class GroupTest extends AbstractTest {
groupDAO.delete(actual);
- groupDAO.flush();
+ entityManager().flush();
assertNull(entityManager().find(JPAUDynGroupMembership.class, dynMembershipKey));
@@ -325,7 +325,7 @@ public class GroupTest extends AbstractTest {
Group actual = groupDAO.saveAndRefreshDynMemberships(group);
assertNotNull(actual);
- groupDAO.flush();
+ entityManager().flush();
// 2. verify that dynamic membership is there
actual = groupDAO.find(actual.getKey());
@@ -351,7 +351,7 @@ public class GroupTest extends AbstractTest {
// 4. delete the new any object and verify that dynamic membership was updated
anyObjectDAO.delete(newAnyObjectKey);
- anyObjectDAO.flush();
+ entityManager().flush();
actual = groupDAO.find(actual.getKey());
members = groupDAO.findADynMembers(actual).stream().filter(object
@@ -364,12 +364,11 @@ public class GroupTest extends AbstractTest {
groupDAO.delete(actual);
- groupDAO.flush();
+ entityManager().flush();
assertNull(entityManager().find(JPAADynGroupMembership.class, dynMembershipKey));
dynGroupMemberships = findDynGroups(anyObject);
assertTrue(dynGroupMemberships.isEmpty());
}
-
}
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainAttrTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainAttrTest.java
index 58771ca..4dcb57c 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainAttrTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainAttrTest.java
@@ -48,7 +48,7 @@ public class PlainAttrTest extends AbstractTest {
public void deleteAttr() {
plainAttrDAO.delete(findPlainAttr("35f407a2-d254-4890-9e45-5a7dd8c8df7d", UPlainAttr.class));
- plainAttrDAO.flush();
+ entityManager().flush();
assertNull(findPlainAttr("35f407a2-d254-4890-9e45-5a7dd8c8df7d", UPlainAttr.class));
assertNull(findPlainAttrValue("0c67225a-030a-4c56-b337-17cf7a311f0f", UPlainAttrValue.class));
@@ -66,7 +66,7 @@ public class PlainAttrTest extends AbstractTest {
// by removing all values, the related attribute is not valid any more
try {
- plainAttrValueDAO.flush();
+ entityManager().flush();
fail();
} catch (InvalidEntityException e) {
assertNotNull(e);
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 39aa303..e84f882 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
@@ -103,7 +103,7 @@ public class PlainSchemaTest extends AbstractTest {
plainSchemaDAO.save(schema);
try {
- plainSchemaDAO.flush();
+ entityManager().flush();
fail("This should not happen");
} catch (Exception e) {
assertTrue(e instanceof EntityExistsException || e.getCause() instanceof EntityExistsException);
@@ -146,7 +146,7 @@ public class PlainSchemaTest extends AbstractTest {
// delete user schema fullname
plainSchemaDAO.delete("fullname");
- plainSchemaDAO.flush();
+ entityManager().flush();
// check for schema deletion
schema = plainSchemaDAO.find("fullname");
@@ -205,7 +205,7 @@ public class PlainSchemaTest extends AbstractTest {
// delete user schema fullname
plainSchemaDAO.delete("surname");
- plainSchemaDAO.flush();
+ entityManager().flush();
// check for schema deletion
schema = plainSchemaDAO.find("surname");
@@ -224,7 +224,7 @@ public class PlainSchemaTest extends AbstractTest {
plainSchemaDAO.delete("firstname");
assertNull(plainSchemaDAO.find("firstname"));
- plainSchemaDAO.flush();
+ entityManager().flush();
assertEquals(5, resourceDAO.find("resource-db-pull").
getProvision(anyTypeDAO.findUser()).get().getMapping().getItems().size());
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RealmTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RealmTest.java
index 971f9a2..3184e57 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RealmTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RealmTest.java
@@ -63,7 +63,7 @@ public class RealmTest extends AbstractTest {
realmDAO.delete(realm);
- realmDAO.flush();
+ entityManager().flush();
role = roleDAO.find("User reviewer");
assertEquals(beforeSize - 1, role.getRealms().size());
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java
index f3ac215..76ae60f 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java
@@ -73,7 +73,7 @@ public class ReportTest extends AbstractTest {
report.setTemplate(reportTemplateDAO.find("sample"));
reportDAO.save(report);
- reportDAO.flush();
+ entityManager().flush();
});
}
@@ -92,7 +92,7 @@ public class ReportTest extends AbstractTest {
report.add(reportExec);
reportDAO.save(report);
- reportDAO.flush();
+ entityManager().flush();
report = reportDAO.find("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
assertNotNull(report);
@@ -103,7 +103,7 @@ public class ReportTest extends AbstractTest {
public void deleteReport() {
reportDAO.delete("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
- reportDAO.flush();
+ entityManager().flush();
assertNull(reportDAO.find("0062ea9c-924d-4ecf-9961-4492a8cc6d1b"));
assertNull(reportExecDAO.find("0062ea9c-924d-4ecf-9961-4492a8cc6d1b"));
@@ -116,7 +116,7 @@ public class ReportTest extends AbstractTest {
reportExecDAO.delete("c13f39c5-0d35-4bff-ba79-3cd5de940369");
- reportExecDAO.flush();
+ entityManager().flush();
assertNull(reportExecDAO.find("0062ea9c-924d-4ecf-9961-4492a8cc6d1b"));
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceHistoryConfTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceHistoryConfTest.java
index d5cad6d..8689ddd 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceHistoryConfTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceHistoryConfTest.java
@@ -58,7 +58,7 @@ public class ResourceHistoryConfTest extends AbstractTest {
ldapHistory = resourceHistoryConfDAO.save(ldapHistory);
assertNotNull(ldapHistory.getKey());
- resourceHistoryConfDAO.flush();
+ entityManager().flush();
List<ExternalResourceHistoryConf> history = resourceHistoryConfDAO.findByEntity(ldapResource);
assertEquals(1, history.size());
@@ -66,7 +66,7 @@ public class ResourceHistoryConfTest extends AbstractTest {
resourceHistoryConfDAO.delete(ldapHistory.getKey());
- resourceHistoryConfDAO.flush();
+ entityManager().flush();
assertNull(resourceHistoryConfDAO.find(ldapHistory.getKey()));
assertTrue(resourceHistoryConfDAO.findByEntity(ldapResource).isEmpty());
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 5fa8b8c..559a041 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
@@ -157,7 +157,7 @@ public class ResourceTest extends AbstractTest {
assertNotNull(actual);
assertNotNull(actual.getProvision(anyTypeDAO.findUser()).get().getMapping());
- resourceDAO.flush();
+ entityManager().flush();
resourceDAO.detach(actual);
connInstanceDAO.detach(connector);
@@ -167,7 +167,7 @@ public class ResourceTest extends AbstractTest {
user.add(actual);
- resourceDAO.flush();
+ entityManager().flush();
// retrieve resource
resource = resourceDAO.find(actual.getKey());
@@ -224,7 +224,7 @@ public class ResourceTest extends AbstractTest {
resourceDAO.delete(resource.getKey());
// close the transaction
- resourceDAO.flush();
+ entityManager().flush();
// resource must be removed
ExternalResource actual = resourceDAO.find("resource-testdb");
@@ -272,7 +272,7 @@ public class ResourceTest extends AbstractTest {
ldap.getProvisions().remove(groupProvision);
resourceDAO.save(ldap);
- resourceDAO.flush();
+ entityManager().flush();
itemKeys.forEach(itemKey -> assertNull(entityManager().find(JPAMappingItem.class, itemKey)));
}
@@ -290,7 +290,7 @@ public class ResourceTest extends AbstractTest {
resource.setOrgUnit(null);
resourceDAO.save(resource);
- resourceDAO.flush();
+ entityManager().flush();
resource = resourceDAO.find("resource-ldap-orgunit");
assertNull(resource.getOrgUnit());
@@ -312,7 +312,7 @@ public class ResourceTest extends AbstractTest {
csv.getProvision(anyTypeDAO.findUser()).get().getMapping().add(newMapItem);
resourceDAO.save(csv);
- resourceDAO.flush();
+ entityManager().flush();
csv = resourceDAO.find("resource-csv");
assertNotNull(csv);
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
index 0150ff7..5c21a76 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
@@ -124,7 +124,7 @@ public class RoleTest extends AbstractTest {
Role actual = roleDAO.saveAndRefreshDynMemberships(role);
assertNotNull(actual);
- roleDAO.flush();
+ entityManager().flush();
// 2. verify that dynamic membership is there
actual = roleDAO.find(actual.getKey());
@@ -149,7 +149,7 @@ public class RoleTest extends AbstractTest {
// 4. delete the new user and verify that dynamic membership was updated
userDAO.delete(newUserKey);
- userDAO.flush();
+ entityManager().flush();
actual = roleDAO.find(actual.getKey());
members = roleDAO.findDynMembers(actual);
@@ -161,7 +161,7 @@ public class RoleTest extends AbstractTest {
roleDAO.delete(actual);
- roleDAO.flush();
+ entityManager().flush();
assertNull(entityManager().find(JPADynRoleMembership.class, dynMembershipKey));
@@ -194,7 +194,7 @@ public class RoleTest extends AbstractTest {
// 2. remove role
roleDAO.delete(role);
- userDAO.flush();
+ entityManager().flush();
// 3. verify that role was removed from user
user = userDAO.find(user.getKey());
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/SecurityQuestionTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/SecurityQuestionTest.java
index 3d49e96..2c03942 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/SecurityQuestionTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/SecurityQuestionTest.java
@@ -47,11 +47,11 @@ public class SecurityQuestionTest extends AbstractTest {
user.setSecurityAnswer("Rossi");
userDAO.save(user);
- userDAO.flush();
+ entityManager().flush();
securityQuestionDAO.delete("887028ea-66fc-41e7-b397-620d7ea6dfbb");
- userDAO.flush();
+ entityManager().flush();
user = userDAO.findByUsername("bellini");
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
index d48cdf9..6785746 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
@@ -133,7 +133,7 @@ public class TaskTest extends AbstractTest {
PropagationTask actual = taskDAO.find(task.getKey());
assertEquals(task, actual);
- taskDAO.flush();
+ entityManager().flush();
resource = resourceDAO.find("ws-target-resource-1");
assertTrue(taskDAO.findAll(
@@ -155,7 +155,7 @@ public class TaskTest extends AbstractTest {
task.add(execution);
taskDAO.save(task);
- taskDAO.flush();
+ entityManager().flush();
task = taskDAO.find("1e697572-b896-484c-ae7f-0c8f63fcbc6c");
assertNotNull(task);
@@ -178,7 +178,7 @@ public class TaskTest extends AbstractTest {
task.add(execution);
taskDAO.save(task);
- taskDAO.flush();
+ entityManager().flush();
task = taskDAO.find("c41b9b71-9bfa-4f90-89f2-84787def4c5c");
assertNotNull(task);
@@ -201,7 +201,7 @@ public class TaskTest extends AbstractTest {
task.add(execution);
taskDAO.save(task);
- taskDAO.flush();
+ entityManager().flush();
task = taskDAO.find("af558be4-9d2f-4359-bf85-a554e6e90be1");
assertNotNull(task);
@@ -213,7 +213,7 @@ public class TaskTest extends AbstractTest {
public void deleteTask() {
taskDAO.delete("1e697572-b896-484c-ae7f-0c8f63fcbc6c");
- taskDAO.flush();
+ entityManager().flush();
assertNull(taskDAO.find("1e697572-b896-484c-ae7f-0c8f63fcbc6c"));
assertNull(taskExecDAO.find("e58ca1c7-178a-4012-8a71-8aa14eaf0655"));
@@ -226,7 +226,7 @@ public class TaskTest extends AbstractTest {
taskExecDAO.delete("e58ca1c7-178a-4012-8a71-8aa14eaf0655");
- taskExecDAO.flush();
+ entityManager().flush();
assertNull(taskExecDAO.find("e58ca1c7-178a-4012-8a71-8aa14eaf0655"));
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/UserTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/UserTest.java
index e6281b9..46c2444 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/UserTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/UserTest.java
@@ -75,7 +75,7 @@ public class UserTest extends AbstractTest {
userDAO.delete("c9b2dec2-00a7-4855-97c0-d854842b4b24");
- userDAO.flush();
+ entityManager().flush();
assertNull(userDAO.findByUsername("bellini"));
assertNull(findPlainAttr(UUID.randomUUID().toString(), UPlainAttr.class));
@@ -104,7 +104,7 @@ public class UserTest extends AbstractTest {
userDAO.save(user);
- userDAO.flush();
+ entityManager().flush();
user = userDAO.findByUsername("bellini");
assertEquals(1, user.getMemberships().size());
@@ -126,7 +126,7 @@ public class UserTest extends AbstractTest {
userDAO.save(user);
- userDAO.flush();
+ entityManager().flush();
user = userDAO.findByUsername("bellini");
assertEquals(1, user.getRelationships().size());
@@ -136,10 +136,10 @@ public class UserTest extends AbstractTest {
}
@Test
- public void membershipWithAttrs() {
+ public void membershipWithAttrNotAllowed() {
User user = userDAO.findByUsername("vivaldi");
assertNotNull(user);
- assertTrue(user.getMemberships().isEmpty());
+ user.getMemberships().clear();
// add 'obscure' to user (no membership): works because 'obscure' is from 'other', default class for USER
UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
@@ -168,15 +168,24 @@ public class UserTest extends AbstractTest {
} catch (InvalidEntityException e) {
assertNotNull(e);
}
+ entityManager().flush();
+ }
- // replace 'artDirector' with 'additional', which defines type extension with class 'other' and 'csv':
- // now it works
- membership = user.getMembership(groupDAO.findByName("artDirector").getKey()).get();
- user.remove(user.getPlainAttr("obscure", membership).get());
- user.getMemberships().remove(membership);
- membership.setLeftEnd(null);
+ @Test
+ public void membershipWithAttr() {
+ User user = userDAO.findByUsername("vivaldi");
+ assertNotNull(user);
+ user.getMemberships().clear();
- membership = entityFactory.newEntity(UMembership.class);
+ // add 'obscure' (no membership): works because 'obscure' is from 'other', default class for USER
+ UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
+ attr.setOwner(user);
+ attr.setSchema(plainSchemaDAO.find("obscure"));
+ attr.add("testvalue", anyUtilsFactory.getInstance(AnyTypeKind.USER));
+ user.add(attr);
+
+ // add 'obscure' (via 'additional' membership): that group defines type extension with classes 'other' and 'csv'
+ UMembership membership = entityFactory.newEntity(UMembership.class);
membership.setLeftEnd(user);
membership.setRightEnd(groupDAO.findByName("additional"));
user.add(membership);
@@ -189,7 +198,7 @@ public class UserTest extends AbstractTest {
user.add(attr);
userDAO.save(user);
- userDAO.flush();
+ entityManager().flush();
user = userDAO.findByUsername("vivaldi");
assertEquals(1, user.getMemberships().size());
@@ -215,7 +224,7 @@ public class UserTest extends AbstractTest {
prefix.setExpression("'k' + firstname");
derSchemaDAO.save(prefix);
- derSchemaDAO.flush();
+ entityManager().flush();
// create derived attribute (literal as suffix)
DerSchema suffix = entityFactory.newEntity(DerSchema.class);
@@ -223,7 +232,7 @@ public class UserTest extends AbstractTest {
suffix.setExpression("firstname + 'k'");
derSchemaDAO.save(suffix);
- derSchemaDAO.flush();
+ entityManager().flush();
// add derived attributes to user
User owner = userDAO.findByUsername("vivaldi");
@@ -255,7 +264,7 @@ public class UserTest extends AbstractTest {
userDAO.save(user);
- userDAO.flush();
+ entityManager().flush();
user = userDAO.findByUsername("rossini");
Date afterwards = user.getLastChangeDate();
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 7522f45..b9e6f40 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
@@ -59,7 +59,7 @@ public class VirSchemaTest extends AbstractTest {
virSchema.setProvision(provision);
virSchemaDAO.save(virSchema);
- virSchemaDAO.flush();
+ entityManager().flush();
virSchema = virSchemaDAO.find("vSchema");
assertNotNull(virSchema);
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
index 67b97ed..8647287 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
@@ -445,8 +445,6 @@ public class NotificationManagerImpl implements NotificationManager {
task.add(execution);
task.setExecuted(true);
taskDAO.save(task);
- // this flush call is needed to generate a value for the execution key
- taskDAO.flush();
return execution;
}
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 805b772..7127fa0 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
@@ -500,8 +500,6 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
task.add(execution);
taskDAO.save(task);
- // needed to generate a value for the execution key
- taskDAO.flush();
}
if (reporter != null) {
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java
index c8147ee..ad660e7 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java
@@ -18,6 +18,10 @@
*/
package org.apache.syncope.core.provisioning.java;
+import javax.persistence.EntityManager;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.springframework.orm.jpa.EntityManagerFactoryUtils;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@SpringJUnitConfig(locations = {
@@ -27,4 +31,15 @@ import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
"classpath:provisioningTest.xml"
})
public abstract class AbstractTest {
+
+ protected EntityManager entityManager() {
+ EntityManager entityManager = EntityManagerFactoryUtils.getTransactionalEntityManager(
+ EntityManagerFactoryUtils.findEntityManagerFactory(
+ ApplicationContextProvider.getBeanFactory(), AuthContextUtils.getDomain()));
+ if (entityManager == null) {
+ throw new IllegalStateException("Could not find EntityManager for domain " + AuthContextUtils.getDomain());
+ }
+
+ return entityManager;
+ }
}
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java
index 3677094..4ebb037 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java
@@ -129,7 +129,7 @@ public class ResourceDataBinderTest extends AbstractTest {
assertNotNull(resource.getProvision(anyTypeDAO.findUser()).get().getMapping());
assertEquals(1, resource.getProvision(anyTypeDAO.findUser()).get().getMapping().getItems().size());
- resourceDAO.flush();
+ entityManager().flush();
ExternalResource actual = resourceDAO.find("resource-issue42");
assertNotNull(actual);