From 0f4718afdc3a899ec306da77351a6ccf3bb55b15 Mon Sep 17 00:00:00 2001 From: Radek Felcman Date: Tue, 26 Mar 2024 09:17:56 +0100 Subject: [PATCH] EntityManagerFactory.setCacheRetrieveMode() setCacheStoreMode() and NPE fix plus unit test (#2104) Signed-off-by: Radek Felcman --- .../jpa/persistence32/EntityManagerTest.java | 25 +++++++++++++++++-- .../internal/jpa/EntityManagerImpl.java | 6 +++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/jpa/eclipselink.jpa.testapps/jpa.test.persistence32/src/test/java/org/eclipse/persistence/testing/tests/jpa/persistence32/EntityManagerTest.java b/jpa/eclipselink.jpa.testapps/jpa.test.persistence32/src/test/java/org/eclipse/persistence/testing/tests/jpa/persistence32/EntityManagerTest.java index f37412b1e2..beea0dd33b 100644 --- a/jpa/eclipselink.jpa.testapps/jpa.test.persistence32/src/test/java/org/eclipse/persistence/testing/tests/jpa/persistence32/EntityManagerTest.java +++ b/jpa/eclipselink.jpa.testapps/jpa.test.persistence32/src/test/java/org/eclipse/persistence/testing/tests/jpa/persistence32/EntityManagerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at @@ -14,6 +14,8 @@ import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import jakarta.persistence.CacheRetrieveMode; +import jakarta.persistence.CacheStoreMode; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.EntityTransaction; @@ -46,7 +48,9 @@ public static Test suite() { new EntityManagerTest("testGetReferenceForExistingEntity"), new EntityManagerTest("testGetReferenceForNotExistingEntity"), new EntityManagerTest("testLockOptionUtilsUnknownClass"), - new EntityManagerTest("testLockPessimisticWriteWithTimeout") + new EntityManagerTest("testLockPessimisticWriteWithTimeout"), + new EntityManagerTest("testSetCacheRetrieveMode"), + new EntityManagerTest("testSetCacheStoreMode") ); } @@ -169,4 +173,21 @@ public void run() { } } + public void testSetCacheRetrieveMode() { + try (EntityManager em = emf.createEntityManager();) { + em.setCacheRetrieveMode(CacheRetrieveMode.BYPASS); + assertEquals(CacheRetrieveMode.BYPASS, em.getCacheRetrieveMode()); + } catch (Exception e) { + throw e; + } + } + + public void testSetCacheStoreMode() { + try (EntityManager em = emf.createEntityManager();) { + em.setCacheStoreMode(CacheStoreMode.USE); + assertEquals(CacheStoreMode.USE, em.getCacheStoreMode()); + } catch (Exception e) { + throw e; + } + } } diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java index 857e8f215f..7248e1cf42 100644 --- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java +++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java @@ -2970,6 +2970,9 @@ public CacheRetrieveMode getCacheRetrieveMode() { @Override public void setCacheRetrieveMode(CacheRetrieveMode cacheRetrieveMode) { + if (this.properties == null) { + this.properties = new HashMap<>(); + } FindOptionUtils.setCacheRetrieveMode(properties, cacheRetrieveMode); } @@ -2980,6 +2983,9 @@ public CacheStoreMode getCacheStoreMode() { @Override public void setCacheStoreMode(CacheStoreMode cacheStoreMode) { + if (this.properties == null) { + this.properties = new HashMap<>(); + } FindOptionUtils.setCacheStoreMode(properties, cacheStoreMode); }