Search in sources :

Example 1 with PersistenceWeaved

use of org.eclipse.persistence.internal.weaving.PersistenceWeaved in project eclipselink by eclipse-ee4j.

the class LobJUnitTestCase method testRead.

public void testRead() throws Exception {
    clearCache();
    EntityManager em = createEntityManager();
    beginTransaction(em);
    Image image = em.find(Image.class, imageId);
    try {
        assertTrue(image.getId() == imageId);
        // Check lazy loading of lob, if agent was used.
        if (image instanceof PersistenceWeaved) {
            Field field = image.getClass().getDeclaredField("audio");
            field.setAccessible(true);
            if (field.get(image) != null) {
                fail("Lazy basic should not be fetched.");
            }
        }
        commitTransaction(em);
    } catch (RuntimeException e) {
        if (isTransactionActive(em)) {
            rollbackTransaction(em);
        }
        throw e;
    } finally {
        closeEntityManager(em);
    }
    // entity manager has been closed - image is detached object.
    assertTrue("byte-arrays do not match", Helper.compareByteArrays(image.getAudio(), originalImage.getAudio()));
    assertTrue("char-arrays do not match", Helper.compareCharArrays(image.getCommentary(), originalImage.getCommentary()));
    assertTrue("Byte-arrays do not match", Helper.compareArrays(image.getPicture(), originalImage.getPicture()));
    assertTrue(image.getScript().equals(originalImage.getScript()));
}
Also used : Field(java.lang.reflect.Field) EntityManager(jakarta.persistence.EntityManager) PersistenceWeaved(org.eclipse.persistence.internal.weaving.PersistenceWeaved) Image(org.eclipse.persistence.testing.models.jpa.lob.Image)

Example 2 with PersistenceWeaved

use of org.eclipse.persistence.internal.weaving.PersistenceWeaved in project eclipselink by eclipse-ee4j.

the class EntityManagerJUnitTestSuite method testIsLoadedWithoutReference.

public void testIsLoadedWithoutReference() {
    EntityManager em = createEntityManager();
    beginTransaction(em);
    try {
        Employee emp = new Employee();
        emp.setFirstName("Abe");
        emp.setLastName("Jones");
        Address addr = new Address();
        addr.setCity("Palo Alto");
        emp.setAddress(addr);
        PhoneNumber pn = new PhoneNumber();
        pn.setNumber("1234456");
        pn.setType("Home");
        emp.addPhoneNumber(pn);
        pn.setOwner(emp);
        Employee manager = new Employee();
        manager.addManagedEmployee(emp);
        emp.setManager(manager);
        em.persist(emp);
        em.flush();
        em.clear();
        clearCache();
        ProviderUtil util = (new PersistenceProvider()).getProviderUtil();
        if (emp instanceof PersistenceWeaved) {
            assertTrue("ProviderUtil did not return LOADED for isLoaded when it should.", util.isLoaded(emp).equals(LoadState.LOADED));
            emp = em.getReference(Employee.class, emp.getId());
            // If fetch group weaving is off then we will load EAGER mappings and LOADED will be returned.
            if (isWeavingForFetchGroupsEnabled()) {
                assertTrue("ProviderUtil did not return NOT_LOADED for isLoaded when it should.", util.isLoaded(emp).equals(LoadState.NOT_LOADED));
            } else {
                assertTrue("ProviderUtil did not return LOADED for isLoaded when it should.", util.isLoaded(emp).equals(LoadState.LOADED));
            }
        } else {
            assertTrue("(NonWeaved) ProviderUtil did not return UNKNOWN for isLoaded when it should.", util.isLoaded(emp).equals(LoadState.UNKNOWN));
            emp = em.getReference(Employee.class, emp.getId());
            assertTrue("(NonWeaved)  ProviderUtil did not return UNKNOWN for isLoaded when it should.", util.isLoaded(emp).equals(LoadState.UNKNOWN));
        }
        assertTrue("ProviderUtil did not return UNKNOWN for isLoaded when it should.", util.isLoaded(new NonEntity()).equals(LoadState.UNKNOWN));
    } finally {
        rollbackTransaction(em);
    }
}
Also used : EntityManager(jakarta.persistence.EntityManager) JpaEntityManager(org.eclipse.persistence.jpa.JpaEntityManager) ProviderUtil(jakarta.persistence.spi.ProviderUtil) Employee(org.eclipse.persistence.testing.models.jpa.advanced.Employee) PersistenceWeaved(org.eclipse.persistence.internal.weaving.PersistenceWeaved) Address(org.eclipse.persistence.testing.models.jpa.advanced.Address) PersistenceProvider(org.eclipse.persistence.jpa.PersistenceProvider) PhoneNumber(org.eclipse.persistence.testing.models.jpa.advanced.PhoneNumber) NonEntity(org.eclipse.persistence.testing.models.jpa.advanced.NonEntity)

Example 3 with PersistenceWeaved

use of org.eclipse.persistence.internal.weaving.PersistenceWeaved in project eclipselink by eclipse-ee4j.

the class EntityManagerJUnitTestSuite method testIsLoadedWithReference.

public void testIsLoadedWithReference() {
    EntityManager em = createEntityManager();
    beginTransaction(em);
    try {
        Employee emp = new Employee();
        emp.setFirstName("Abe");
        emp.setLastName("Jones");
        Address addr = new Address();
        addr.setCity("Palo Alto");
        emp.setAddress(addr);
        PhoneNumber pn = new PhoneNumber();
        pn.setNumber("1234456");
        pn.setType("Home");
        emp.addPhoneNumber(pn);
        pn.setOwner(emp);
        Employee manager = new Employee();
        manager.addManagedEmployee(emp);
        emp.setManager(manager);
        em.persist(emp);
        em.flush();
        em.clear();
        clearCache();
        emp = em.find(Employee.class, emp.getId());
        emp.getAddress().getCity();
        emp.getPhoneNumbers().size();
        ProviderUtil util = (new PersistenceProvider()).getProviderUtil();
        assertTrue("ProviderUtil did not return LOADED for isLoaded for address when it should.", util.isLoadedWithReference(emp, "address").equals(LoadState.LOADED));
        assertTrue("ProviderUtil did not return LOADED for isLoaded for phoneNumbers when it should.", util.isLoadedWithReference(emp, "phoneNumbers").equals(LoadState.LOADED));
        if (emp instanceof PersistenceWeaved) {
            assertTrue("ProviderUtil did not return NOT_LOADED for isLoaded for manager when it should.", util.isLoadedWithReference(emp, "manager").equals(LoadState.NOT_LOADED));
        } else {
            assertTrue("(NonWeaved) ProviderUtil did not return LOADED for isLoaded for manager when it should.", util.isLoadedWithReference(emp, "manager").equals(LoadState.LOADED));
        }
        assertTrue("ProviderUtil did not return NOT_LOADED for isLoaded for projects when it should.", util.isLoadedWithReference(emp, "projects").equals(LoadState.NOT_LOADED));
    } finally {
        rollbackTransaction(em);
    }
}
Also used : EntityManager(jakarta.persistence.EntityManager) JpaEntityManager(org.eclipse.persistence.jpa.JpaEntityManager) ProviderUtil(jakarta.persistence.spi.ProviderUtil) Employee(org.eclipse.persistence.testing.models.jpa.composite.advanced.member_2.Employee) PersistenceWeaved(org.eclipse.persistence.internal.weaving.PersistenceWeaved) Address(org.eclipse.persistence.testing.models.jpa.composite.advanced.member_1.Address) PersistenceProvider(org.eclipse.persistence.jpa.PersistenceProvider) PhoneNumber(org.eclipse.persistence.testing.models.jpa.composite.advanced.member_3.PhoneNumber)

Example 4 with PersistenceWeaved

use of org.eclipse.persistence.internal.weaving.PersistenceWeaved in project eclipselink by eclipse-ee4j.

the class EntityManagerJUnitTestSuite method testIsLoadedWithoutReferenceAttribute.

public void testIsLoadedWithoutReferenceAttribute() {
    EntityManager em = createEntityManager();
    beginTransaction(em);
    try {
        Employee emp = new Employee();
        emp.setFirstName("Abe");
        emp.setLastName("Jones");
        Address addr = new Address();
        addr.setCity("Palo Alto");
        emp.setAddress(addr);
        PhoneNumber pn = new PhoneNumber();
        pn.setNumber("1234456");
        pn.setType("Home");
        emp.addPhoneNumber(pn);
        pn.setOwner(emp);
        Employee manager = new Employee();
        manager.addManagedEmployee(emp);
        emp.setManager(manager);
        em.persist(emp);
        em.flush();
        em.clear();
        clearCache();
        emp = em.find(Employee.class, emp.getId());
        emp.getAddress().getCity();
        emp.getPhoneNumbers().size();
        ProviderUtil util = (new PersistenceProvider()).getProviderUtil();
        if (emp instanceof PersistenceWeaved) {
            assertTrue("ProviderUtil did not return LOADED for isLoaded for address when it should.", util.isLoadedWithReference(emp, "address").equals(LoadState.LOADED));
            assertTrue("ProviderUtil did not return NOT_LOADED for isLoaded for manager when it should.", util.isLoadedWithReference(emp, "manager").equals(LoadState.NOT_LOADED));
        } else {
            assertTrue("(Unweaved) ProviderUtil did not return LOADED for isLoaded for address when it should.", util.isLoadedWithReference(emp, "address").equals(LoadState.LOADED));
            assertTrue("(Unweaved) ProviderUtil did not return LOADED for isLoaded for manager when it should.", util.isLoadedWithReference(emp, "manager").equals(LoadState.LOADED));
        }
        assertTrue("ProviderUtil did not return LOADED for isLoaded for phoneNumbers when it should.", util.isLoadedWithReference(emp, "phoneNumbers").equals(LoadState.LOADED));
        assertTrue("ProviderUtil did not return NOT_LOADED for isLoaded for projects when it should.", util.isLoadedWithReference(emp, "projects").equals(LoadState.NOT_LOADED));
        assertTrue("ProviderUtil did not return UNKNOWN for isLoaded when it should.", util.isLoaded(new NonEntity()).equals(LoadState.UNKNOWN));
    } finally {
        rollbackTransaction(em);
    }
}
Also used : EntityManager(jakarta.persistence.EntityManager) JpaEntityManager(org.eclipse.persistence.jpa.JpaEntityManager) ProviderUtil(jakarta.persistence.spi.ProviderUtil) Employee(org.eclipse.persistence.testing.models.jpa.composite.advanced.member_2.Employee) PersistenceWeaved(org.eclipse.persistence.internal.weaving.PersistenceWeaved) Address(org.eclipse.persistence.testing.models.jpa.composite.advanced.member_1.Address) PersistenceProvider(org.eclipse.persistence.jpa.PersistenceProvider) PhoneNumber(org.eclipse.persistence.testing.models.jpa.composite.advanced.member_3.PhoneNumber) NonEntity(org.eclipse.persistence.testing.models.jpa.composite.advanced.member_1.NonEntity)

Example 5 with PersistenceWeaved

use of org.eclipse.persistence.internal.weaving.PersistenceWeaved in project eclipselink by eclipse-ee4j.

the class EntityManagerJUnitTestSuite method testIsLoadedWithoutReferenceAttribute.

public void testIsLoadedWithoutReferenceAttribute() {
    EntityManager em = createEntityManager();
    beginTransaction(em);
    try {
        Employee emp = new Employee();
        emp.setFirstName("Abe");
        emp.setLastName("Jones");
        Address addr = new Address();
        addr.setCity("Palo Alto");
        emp.setAddress(addr);
        PhoneNumber pn = new PhoneNumber();
        pn.setNumber("1234456");
        pn.setType("Home");
        emp.addPhoneNumber(pn);
        pn.setOwner(emp);
        Employee manager = new Employee();
        manager.addManagedEmployee(emp);
        emp.setManager(manager);
        em.persist(emp);
        em.flush();
        em.clear();
        clearCache();
        emp = em.find(Employee.class, emp.getId());
        emp.getAddress().getCity();
        emp.getPhoneNumbers().size();
        ProviderUtil util = (new PersistenceProvider()).getProviderUtil();
        if (emp instanceof PersistenceWeaved) {
            assertTrue("ProviderUtil did not return LOADED for isLoaded for address when it should.", util.isLoadedWithReference(emp, "address").equals(LoadState.LOADED));
            assertTrue("ProviderUtil did not return NOT_LOADED for isLoaded for manager when it should.", util.isLoadedWithReference(emp, "manager").equals(LoadState.NOT_LOADED));
        } else {
            assertTrue("(Unweaved) ProviderUtil did not return LOADED for isLoaded for address when it should.", util.isLoadedWithReference(emp, "address").equals(LoadState.LOADED));
            assertTrue("(Unweaved) ProviderUtil did not return LOADED for isLoaded for manager when it should.", util.isLoadedWithReference(emp, "manager").equals(LoadState.LOADED));
        }
        assertTrue("ProviderUtil did not return LOADED for isLoaded for phoneNumbers when it should.", util.isLoadedWithReference(emp, "phoneNumbers").equals(LoadState.LOADED));
        assertTrue("ProviderUtil did not return NOT_LOADED for isLoaded for projects when it should.", util.isLoadedWithReference(emp, "projects").equals(LoadState.NOT_LOADED));
        assertTrue("ProviderUtil did not return UNKNOWN for isLoaded when it should.", util.isLoaded(new NonEntity()).equals(LoadState.UNKNOWN));
    } finally {
        rollbackTransaction(em);
    }
}
Also used : EntityManager(jakarta.persistence.EntityManager) JpaEntityManager(org.eclipse.persistence.jpa.JpaEntityManager) ProviderUtil(jakarta.persistence.spi.ProviderUtil) Employee(org.eclipse.persistence.testing.models.jpa.advanced.Employee) PersistenceWeaved(org.eclipse.persistence.internal.weaving.PersistenceWeaved) Address(org.eclipse.persistence.testing.models.jpa.advanced.Address) PersistenceProvider(org.eclipse.persistence.jpa.PersistenceProvider) PhoneNumber(org.eclipse.persistence.testing.models.jpa.advanced.PhoneNumber) NonEntity(org.eclipse.persistence.testing.models.jpa.advanced.NonEntity)

Aggregations

EntityManager (jakarta.persistence.EntityManager)9 PersistenceWeaved (org.eclipse.persistence.internal.weaving.PersistenceWeaved)9 JpaEntityManager (org.eclipse.persistence.jpa.JpaEntityManager)8 ProviderUtil (jakarta.persistence.spi.ProviderUtil)6 PersistenceProvider (org.eclipse.persistence.jpa.PersistenceProvider)6 Address (org.eclipse.persistence.testing.models.jpa.advanced.Address)4 Employee (org.eclipse.persistence.testing.models.jpa.advanced.Employee)4 PhoneNumber (org.eclipse.persistence.testing.models.jpa.advanced.PhoneNumber)4 Address (org.eclipse.persistence.testing.models.jpa.composite.advanced.member_1.Address)4 Employee (org.eclipse.persistence.testing.models.jpa.composite.advanced.member_2.Employee)4 PhoneNumber (org.eclipse.persistence.testing.models.jpa.composite.advanced.member_3.PhoneNumber)4 EntityManagerFactory (jakarta.persistence.EntityManagerFactory)2 PersistenceUnitUtil (jakarta.persistence.PersistenceUnitUtil)2 JpaEntityManagerFactory (org.eclipse.persistence.jpa.JpaEntityManagerFactory)2 NonEntity (org.eclipse.persistence.testing.models.jpa.advanced.NonEntity)2 NonEntity (org.eclipse.persistence.testing.models.jpa.composite.advanced.member_1.NonEntity)2 Field (java.lang.reflect.Field)1 SmallProject (org.eclipse.persistence.testing.models.jpa.advanced.SmallProject)1 SmallProject (org.eclipse.persistence.testing.models.jpa.composite.advanced.member_3.SmallProject)1 Image (org.eclipse.persistence.testing.models.jpa.lob.Image)1