Search in sources :

Example 31 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class SerializationTest method testCompareSpeedAndSize.

@Test
@Ignore
public void testCompareSpeedAndSize() 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();
    // warm up
    kryoSerialization.serialize(user);
    StandardSerialization standardSerialization = new StandardSerialization();
    // warm up
    standardSerialization.serialize(user);
    int kryoLength = 0;
    long start = System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
        kryoLength = kryoSerialization.serialize(user).length;
    }
    long end = System.currentTimeMillis();
    long kryoTime = end - start;
    System.out.printf("Kryo:\t\tSize [%d]. Time [%d]\n", kryoLength, kryoTime);
    int standardLength = 0;
    start = System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
        standardLength = standardSerialization.serialize(user).length;
    }
    end = System.currentTimeMillis();
    long standardTime = end - start;
    System.out.printf("Standard:\t\tSize [%d]. Time [%d]\n", standardLength, standardTime);
    assertTrue(kryoTime < standardTime);
    assertTrue(kryoLength < standardLength);
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) User(com.haulmont.cuba.security.entity.User) Transaction(com.haulmont.cuba.core.Transaction) View(com.haulmont.cuba.core.global.View)

Example 32 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class QueryCacheTestClass method testLoadingWithNotPartialView.

@Test
public void testLoadingWithNotPartialView() throws Exception {
    appender.clearMessages();
    User user;
    List<User> resultList;
    // load with view: one parameter login
    View userLoginView = new View(User.class).addProperty("login");
    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");
    View userGroupView = new View(User.class).addProperty("group", groupView);
    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());
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) View(com.haulmont.cuba.core.global.View)

Example 33 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class FetchJoinTest method testNotLoadingJoinB.

@Test
public void testNotLoadingJoinB() throws Exception {
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.persistence().getEntityManager();
        View fView = new View(JoinF.class).addProperty("name");
        View eView = new View(JoinE.class).addProperty("name").addProperty("f", fView, FetchMode.JOIN);
        View dView = new View(JoinD.class).addProperty("name");
        View cView = new View(JoinC.class).addProperty("name").addProperty("d", dView, FetchMode.JOIN).addProperty("e", eView, FetchMode.JOIN);
        View bView = new View(JoinB.class).addProperty("name").addProperty("c", cView, FetchMode.JOIN);
        View aView = new View(JoinA.class).addProperty("name").addProperty("b", bView, FetchMode.JOIN);
        JoinA loadedA = em.find(JoinA.class, joinA.getId(), aView);
        assertNotNull(loadedA);
        assertNotNull(loadedA.getB().getC().getD());
        assertNotNull(loadedA.getB().getC().getE());
        assertNotNull(loadedA.getB().getC().getE().getF());
        tx.commit();
    }
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) View(com.haulmont.cuba.core.global.View) Test(org.junit.Test)

Example 34 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class EclipseLinkDetachedTest method testSerializedFetchGroup.

@Test
public void testSerializedFetchGroup() throws Exception {
    Transaction tx;
    EntityManager em;
    User user;
    tx = cont.persistence().createTransaction();
    try {
        em = cont.persistence().getEntityManager();
        View view = new View(User.class).addProperty("login").setLoadPartialEntities(true);
        user = em.find(User.class, userId, view);
        assertNotNull(user);
        tx.commit();
    } finally {
        tx.end();
    }
    user = reserialize(user);
    assertEquals("testLogin", user.getLogin());
    // exception on getting not loaded references
    try {
        user.getName();
        fail();
    } catch (Exception ignored) {
    }
    try {
        user.getGroup();
        fail();
    } catch (Exception ignored) {
    }
    try {
        user.getUserRoles().size();
        fail();
    } catch (Exception ignored) {
    }
}
Also used : User(com.haulmont.cuba.security.entity.User) View(com.haulmont.cuba.core.global.View) Test(org.junit.Test)

Example 35 with View

use of com.haulmont.cuba.core.global.View in project cuba by cuba-platform.

the class EclipseLinkDetachedTest method testNotSerializedFetchGroup.

@Test
public void testNotSerializedFetchGroup() throws Exception {
    Transaction tx;
    EntityManager em;
    User user;
    tx = cont.persistence().createTransaction();
    try {
        em = cont.persistence().getEntityManager();
        View view = new View(User.class).addProperty("login").setLoadPartialEntities(true);
        user = em.find(User.class, userId, view);
        assertNotNull(user);
        tx.commit();
    } finally {
        tx.end();
    }
    assertEquals("testLogin", user.getLogin());
    // unfetched
    try {
        user.getName();
        fail();
    } catch (IllegalStateException ignored) {
    }
    try {
        user.getGroup();
        fail();
    } catch (IllegalStateException ignored) {
    }
}
Also used : User(com.haulmont.cuba.security.entity.User) View(com.haulmont.cuba.core.global.View) Test(org.junit.Test)

Aggregations

View (com.haulmont.cuba.core.global.View)55 Test (org.junit.Test)24 EntityManager (com.haulmont.cuba.core.EntityManager)22 Transaction (com.haulmont.cuba.core.Transaction)21 User (com.haulmont.cuba.security.entity.User)19 Group (com.haulmont.cuba.security.entity.Group)10 MetaClass (com.haulmont.chile.core.model.MetaClass)5 ViewProperty (com.haulmont.cuba.core.global.ViewProperty)5 UserRole (com.haulmont.cuba.security.entity.UserRole)5 SoftDeleteOneToOneA (com.haulmont.cuba.testmodel.softdelete_one_to_one.SoftDeleteOneToOneA)3 MetaProperty (com.haulmont.chile.core.model.MetaProperty)2 Entity (com.haulmont.cuba.core.entity.Entity)2 ViewRepository (com.haulmont.cuba.core.global.ViewRepository)2 Role (com.haulmont.cuba.security.entity.Role)2 SoftDeleteOneToOneB (com.haulmont.cuba.testmodel.softdelete_one_to_one.SoftDeleteOneToOneB)2 QueryRunner (com.haulmont.bali.db.QueryRunner)1 MetadataObject (com.haulmont.chile.core.model.MetadataObject)1 DynamicAttributesMetaProperty (com.haulmont.cuba.core.app.dynamicattributes.DynamicAttributesMetaProperty)1 QueryResult (com.haulmont.cuba.core.entity.QueryResult)1 Server (com.haulmont.cuba.core.entity.Server)1