use of com.haulmont.cuba.security.entity.Group in project cuba by cuba-platform.
the class EntityStateTest method testSerialization.
@Test
public void testSerialization() throws Exception {
User user;
Group group;
// serialize new
user = new User();
assertTrue(BaseEntityInternalAccess.isNew(user));
assertFalse(BaseEntityInternalAccess.isManaged(user));
assertFalse(BaseEntityInternalAccess.isDetached(user));
user = reserialize(user);
assertTrue(BaseEntityInternalAccess.isNew(user));
assertFalse(BaseEntityInternalAccess.isManaged(user));
assertFalse(BaseEntityInternalAccess.isDetached(user));
// serialize managed
Transaction tx = cont.persistence().createTransaction();
try {
EntityManager em = cont.persistence().getEntityManager();
user = new User();
userId = user.getId();
user.setName("testUser");
user.setLogin("testLogin");
user.setGroup(em.find(Group.class, UUID.fromString("0fa2b1a5-1d68-4d69-9fbd-dff348347f93")));
em.persist(user);
tx.commit();
} finally {
tx.end();
}
tx = cont.persistence().createTransaction();
try {
EntityManager em = cont.persistence().getEntityManager();
user = em.find(User.class, userId);
assertNotNull(user);
assertFalse(BaseEntityInternalAccess.isNew(user));
assertTrue(BaseEntityInternalAccess.isManaged(user));
assertFalse(BaseEntityInternalAccess.isDetached(user));
group = user.getGroup();
assertNotNull(group);
assertFalse(BaseEntityInternalAccess.isNew(group));
assertTrue(BaseEntityInternalAccess.isManaged(group));
assertFalse(BaseEntityInternalAccess.isDetached(group));
user = reserialize(user);
assertFalse(BaseEntityInternalAccess.isNew(user));
assertFalse(BaseEntityInternalAccess.isManaged(user));
assertTrue(BaseEntityInternalAccess.isDetached(user));
tx.commit();
} finally {
tx.end();
}
user.setName("changed name");
// merge changed and serialize
tx = cont.persistence().createTransaction();
try {
EntityManager em = cont.persistence().getEntityManager();
user = em.merge(user);
assertFalse(BaseEntityInternalAccess.isNew(user));
assertTrue(BaseEntityInternalAccess.isManaged(user));
assertFalse(BaseEntityInternalAccess.isDetached(user));
tx.commit();
} finally {
tx.end();
}
assertFalse(BaseEntityInternalAccess.isNew(user));
assertFalse(BaseEntityInternalAccess.isManaged(user));
assertTrue(BaseEntityInternalAccess.isDetached(user));
user = reserialize(user);
assertFalse(BaseEntityInternalAccess.isNew(user));
assertFalse(BaseEntityInternalAccess.isManaged(user));
assertTrue(BaseEntityInternalAccess.isDetached(user));
}
use of com.haulmont.cuba.security.entity.Group in project cuba by cuba-platform.
the class GetReferenceIdTest method testWithFetchGroup.
@Test
public void testWithFetchGroup() throws Exception {
User user = null;
// not in a view
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.persistence().getEntityManager();
Query q = em.createQuery("select u from sec$User u where u.id = ?1");
q.setView(new View(User.class, false).addProperty("login").addProperty("userRoles", new View(UserRole.class).addProperty("role", new View(Role.class).addProperty("name"))).setLoadPartialEntities(true));
q.setParameter(1, this.user.getId());
List<User> list = q.getResultList();
if (!list.isEmpty()) {
user = list.get(0);
PersistenceTools.RefId refId = cont.persistence().getTools().getReferenceId(user, "group");
assertFalse(refId.isLoaded());
try {
refId.getValue();
fail();
} catch (IllegalStateException e) {
// ok
}
}
tx.commit();
}
user = reserialize(user);
assertNotNull(user);
assertNotNull(user.getUserRoles());
user.getUserRoles().size();
// in a view
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.persistence().getEntityManager();
Query q = em.createQuery("select u from sec$User u where u.id = ?1");
q.setView(new View(User.class, false).addProperty("login").addProperty("group", new View(Group.class).addProperty("name")).addProperty("userRoles", new View(UserRole.class).addProperty("role", new View(Role.class).addProperty("name"))).setLoadPartialEntities(true));
q.setParameter(1, this.user.getId());
List<User> list = q.getResultList();
if (!list.isEmpty()) {
user = list.get(0);
PersistenceTools.RefId refId = cont.persistence().getTools().getReferenceId(user, "group");
assertTrue(refId.isLoaded());
assertEquals(TestSupport.COMPANY_GROUP_ID, refId.getValue());
}
tx.commit();
}
user = reserialize(user);
assertNotNull(user);
assertNotNull(user.getUserRoles());
user.getUserRoles().size();
}
use of com.haulmont.cuba.security.entity.Group in project cuba by cuba-platform.
the class TestBeforeCommitTxListener method createEntity.
private void createEntity(Collection<Entity> managedEntities, EntityManager entityManager) {
Group companyGroup = entityManager.find(Group.class, TestSupport.COMPANY_GROUP_ID);
User u = metadata.create(User.class);
createdEntityId = u.getId();
u.setLogin("TxLstnrTst-" + u.getId());
u.setLoginLowerCase(u.getLogin().toLowerCase());
u.setGroup(companyGroup);
entityManager.persist(u);
}
use of com.haulmont.cuba.security.entity.Group in project cuba by cuba-platform.
the class NonDetachedTest method testCreateNew_DM.
@Test
public void testCreateNew_DM() throws Exception {
// check versioned entity
Group companyGroupCopy = metadata.getTools().copy(companyGroup);
assertTrue(PersistenceHelper.isNew(companyGroupCopy));
PersistenceHelper.makeDetached(companyGroupCopy);
User user = persistence.callInTransaction((em) -> em.find(User.class, this.user.getId()));
User userCopy = metadata.getTools().copy(user);
assertNull(userCopy.getGroup());
assertTrue(PersistenceHelper.isNew(userCopy));
PersistenceHelper.makeDetached(userCopy);
userCopy.setId(UuidProvider.createUuid());
userCopy.setVersion(null);
userCopy.setGroup(companyGroupCopy);
userCopy.setName("new name");
try {
AppBeans.get(DataManager.class).commit(userCopy);
user = persistence.callInTransaction((em) -> em.find(User.class, userCopy.getId()));
assertEquals("new name", user.getName());
} finally {
cont.deleteRecord(userCopy);
}
// check non-versioned entity
Server server = metadata.create(Server.class);
server.setName("server-" + server.getId());
assertTrue(PersistenceHelper.isNew(server));
PersistenceHelper.makeDetached(server);
try {
AppBeans.get(DataManager.class).commit(server);
Server loaded = persistence.callInTransaction(em -> em.find(Server.class, server.getId()));
assertNotNull(loaded);
} finally {
cont.deleteRecord(server);
}
}
use of com.haulmont.cuba.security.entity.Group in project cuba by cuba-platform.
the class NonDetachedTest method testSaveNotDetached_DM.
@Test
public void testSaveNotDetached_DM() throws Exception {
Group companyGroupCopy = metadata.getTools().copy(companyGroup);
assertTrue(PersistenceHelper.isNew(companyGroupCopy));
PersistenceHelper.makeDetached(companyGroupCopy);
User user = persistence.callInTransaction((em) -> em.find(User.class, this.user.getId()));
User userCopy = metadata.getTools().copy(user);
assertNull(userCopy.getGroup());
assertTrue(PersistenceHelper.isNew(userCopy));
PersistenceHelper.makeDetached(userCopy);
userCopy.setGroup(companyGroupCopy);
userCopy.setName("new name");
AppBeans.get(DataManager.class).commit(userCopy);
user = persistence.callInTransaction((em) -> em.find(User.class, this.user.getId()));
assertEquals("new name", user.getName());
}
Aggregations