use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.
the class EntityManagerTest method testFindSeparateViews.
@Test
public void testFindSeparateViews() throws Exception {
View view1 = new View(User.class, false).addProperty("name").addProperty("login");
View view2 = new View(User.class, false).addProperty("name").addProperty("login").addProperty("group", new View(Group.class).addProperty("name"));
User user1, user2;
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.persistence().getEntityManager();
user1 = em.find(User.class, userId, view1);
user2 = em.find(User.class, user2Id, view2);
tx.commit();
}
user1 = reserialize(user1);
user2 = reserialize(user2);
assertNotNull(user1);
assertNotNull(user1.getCreatedBy());
try {
user1.getGroup();
fail();
} catch (Exception ignored) {
}
assertNotNull(user2);
assertNotNull(user2.getCreatedBy());
assertNotNull(user2.getGroup());
}
use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.
the class SerializationTest method testDetachedSerialization.
@Test
public void testDetachedSerialization() throws Exception {
View view = getView();
User user;
Transaction tx = cont.persistence().createTransaction();
try {
EntityManager em = cont.persistence().getEntityManager();
user = em.find(User.class, userId, view);
assertNotNull(user);
tx.commit();
} finally {
tx.end();
}
KryoSerialization kryoSerialization = new KryoSerialization();
User kryoUser = (User) kryoSerialization.deserialize(kryoSerialization.serialize(user));
StandardSerialization standardSerialization = new StandardSerialization();
User standardUser = (User) standardSerialization.deserialize(standardSerialization.serialize(user));
assertEquals(standardUser, kryoUser);
assertEquals(standardUser.getLogin(), kryoUser.getLogin());
assertEquals(standardUser.getName(), kryoUser.getName());
assertEquals(standardUser.getPosition(), kryoUser.getPosition());
assertEquals(standardUser.getGroup(), kryoUser.getGroup());
assertEquals(standardUser.getGroup().getName(), kryoUser.getGroup().getName());
assertEquals(standardUser.getUserRoles().get(0), kryoUser.getUserRoles().get(0));
assertEquals(standardUser.getUserRoles().get(0).getRole(), kryoUser.getUserRoles().get(0).getRole());
assertEquals(standardUser.getUserRoles().get(0).getRole().getName(), kryoUser.getUserRoles().get(0).getRole().getName());
}
use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.
the class SerializationTest method getView.
protected View getView() {
Metadata metadata = AppBeans.get(Metadata.NAME);
ViewRepository viewRepository = metadata.getViewRepository();
View userLocalView = viewRepository.getView(User.class, View.LOCAL);
View roleLocalView = viewRepository.getView(Role.class, View.LOCAL);
return new View(userLocalView, "test", true).addProperty("group", viewRepository.getView(Group.class, View.LOCAL)).addProperty("userRoles", new View(UserRole.class).addProperty("user", userLocalView).addProperty("role", roleLocalView));
}
use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.
the class QueryCacheTestClass method testLoadingWithPartialView.
@Test
public void testLoadingWithPartialView() throws Exception {
appender.clearMessages();
User user;
List<User> resultList;
// load with view: one parameter login
View userLoginView = new View(User.class).addProperty("login").setLoadPartialEntities(true);
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.entityManager();
TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
query.setCacheable(true);
query.setView(userLoginView);
resultList = query.getResultList();
assertEquals(resultList.size(), 2);
tx.commit();
}
user = reserialize(resultList.get(0));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
user = reserialize(resultList.get(1));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
// user
assertEquals(1, appender.filterMessages(m -> m.contains("> SELECT")).count());
appender.clearMessages();
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.entityManager();
TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
query.setCacheable(true);
query.setView(userLoginView);
resultList = query.getResultList();
assertEquals(resultList.size(), 2);
tx.commit();
}
user = reserialize(resultList.get(0));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
user = reserialize(resultList.get(1));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
// user
assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
appender.clearMessages();
// load with view: group
View groupView = new View(Group.class, false).addProperty("name").setLoadPartialEntities(true);
View userGroupView = new View(User.class).addProperty("group", groupView).setLoadPartialEntities(true);
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.entityManager();
TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
query.setCacheable(true);
query.setView(userGroupView);
resultList = query.getResultList();
assertEquals(resultList.size(), 2);
tx.commit();
}
user = reserialize(resultList.get(0));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
assertEquals(user.getGroup(), group);
assertEquals(user.getGroup().getName(), group.getName());
user = reserialize(resultList.get(1));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
assertEquals(user.getGroup(), group);
assertEquals(user.getGroup().getName(), group.getName());
assertEquals(1, appender.filterMessages(m -> m.contains("> SELECT") && m.contains("SEC_GROUP")).count());
appender.clearMessages();
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.entityManager();
TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
query.setCacheable(true);
query.setView(userGroupView);
resultList = query.getResultList();
assertEquals(resultList.size(), 2);
tx.commit();
}
user = reserialize(resultList.get(0));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
assertEquals(user.getGroup(), group);
assertEquals(user.getGroup().getName(), group.getName());
user = reserialize(resultList.get(1));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
assertEquals(user.getGroup(), group);
assertEquals(user.getGroup().getName(), group.getName());
assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
appender.clearMessages();
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.entityManager();
TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
query.setCacheable(true);
query.setView(userLoginView);
resultList = query.getResultList();
assertEquals(resultList.size(), 2);
tx.commit();
}
user = reserialize(resultList.get(0));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
assertFail(user::getGroup);
user = reserialize(resultList.get(1));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
assertFail(user::getGroup);
assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
appender.clearMessages();
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.entityManager();
TypedQuery<User> query = em.createQuery("select u from sec$User u where u.login like 'ECTest-%' order by u.name asc", User.class);
query.setCacheable(true);
query.setView(userGroupView);
resultList = query.getResultList();
assertEquals(resultList.size(), 2);
tx.commit();
}
user = reserialize(resultList.get(0));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
assertEquals(user.getGroup(), group);
assertEquals(user.getGroup().getName(), group.getName());
user = reserialize(resultList.get(1));
assertNotNull(user.getLogin());
assertNotNull(user.getName());
assertEquals(user.getGroup(), group);
assertEquals(user.getGroup().getName(), group.getName());
assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
}
use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.
the class FetchJoinTest method testNotLoadingCustomer.
@Test
public void testNotLoadingCustomer() throws Exception {
try (Transaction tx = cont.persistence().createTransaction()) {
EntityManager em = cont.persistence().getEntityManager();
View partyView = new View(Party.class).addProperty("name");
View productView = new View(Product.class).addProperty("name");
View customerView = new View(Customer.class).addProperty("customerNumber").addProperty("party", partyView);
View salesPersonView = new View(SalesPerson.class).addProperty("salespersonNumber").addProperty("party", partyView);
View orderView = new View(Order.class).addProperty("orderNumber").addProperty("customer", customerView).addProperty("salesPerson", salesPersonView);
View orderLineView = new View(OrderLine.class).addProperty("order", orderView).addProperty("product", productView);
OrderLine reloadedOrderLine = em.find(OrderLine.class, orderLine.getId(), orderLineView);
assertNotNull(reloadedOrderLine);
assertNotNull(reloadedOrderLine.getOrder().getCustomer());
assertEquals(partyCustomer, reloadedOrderLine.getOrder().getCustomer().getParty());
assertNotNull(reloadedOrderLine.getOrder().getSalesPerson());
assertEquals(partyPerson, reloadedOrderLine.getOrder().getSalesPerson().getParty());
tx.commit();
}
}
Aggregations