mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
WIP update/refactoring on caching
This commit is contained in:
@@ -19,7 +19,7 @@ import com.avaje.tests.model.basic.Customer.Status;
|
||||
public class TestCacheBeanData extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
public void testCacheBeanExtractAndLoad() {
|
||||
|
||||
SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
|
||||
BeanDescriptor<Customer> desc = server.getBeanDescriptor(Customer.class);
|
||||
@@ -42,8 +42,7 @@ public class TestCacheBeanData extends BaseTestCase {
|
||||
((EntityBean)c)._ebean_getIntercept().setNewBeanForUpdate();
|
||||
|
||||
CachedBeanData cacheData = CachedBeanDataFromBean.extract(desc, (EntityBean)c);
|
||||
//BeanProperty idProperty = desc.getBeanProperty("id");
|
||||
//Assert.assertTrue(cacheData.isLoaded(idProperty.getPropertyIndex()));
|
||||
|
||||
|
||||
Assert.assertNotNull(cacheData);
|
||||
|
||||
@@ -54,6 +53,19 @@ public class TestCacheBeanData extends BaseTestCase {
|
||||
Assert.assertEquals(c.getId(), newCustomer.getId());
|
||||
Assert.assertEquals(c.getName(), newCustomer.getName());
|
||||
Assert.assertEquals(c.getStatus(), newCustomer.getStatus());
|
||||
Assert.assertEquals(c.getSmallnote(), newCustomer.getSmallnote());
|
||||
Assert.assertEquals(c.getCretime(), newCustomer.getCretime());
|
||||
Assert.assertEquals(c.getUpdtime(), newCustomer.getUpdtime());
|
||||
Assert.assertEquals(c.getBillingAddress().getId(), newCustomer.getBillingAddress().getId());
|
||||
|
||||
Assert.assertNotNull(newCustomer.getId());
|
||||
Assert.assertNotNull(newCustomer.getName());
|
||||
Assert.assertNotNull(newCustomer.getStatus());
|
||||
Assert.assertNotNull(newCustomer.getSmallnote());
|
||||
Assert.assertNotNull(newCustomer.getCretime());
|
||||
Assert.assertNotNull(newCustomer.getUpdtime());
|
||||
Assert.assertNotNull(newCustomer.getBillingAddress());
|
||||
Assert.assertNotNull(newCustomer.getBillingAddress().getId());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public class TestDeleteByIdList extends BaseTestCase {
|
||||
|
||||
OrderDetail dummy = Ebean.getReference(OrderDetail.class, 1);
|
||||
SpiEbeanServer server = (SpiEbeanServer) Ebean.getServer(null);
|
||||
server.getBeanDescriptor(OrderDetail.class).cachePutBean(dummy);
|
||||
server.getBeanDescriptor(OrderDetail.class).cacheBeanPut(dummy);
|
||||
|
||||
Customer c0 = ResetBasicData.createCustAndOrder("DelIdList-0");
|
||||
Assert.assertNotNull(c0);
|
||||
|
||||
@@ -22,7 +22,7 @@ public class TestDeleteCascadeById extends BaseTestCase {
|
||||
|
||||
OrderDetail dummy = Ebean.getReference(OrderDetail.class, 1);
|
||||
SpiEbeanServer server = (SpiEbeanServer) Ebean.getServer(null);
|
||||
server.getBeanDescriptor(OrderDetail.class).cachePutBean(dummy);
|
||||
server.getBeanDescriptor(OrderDetail.class).cacheBeanPut(dummy);
|
||||
|
||||
Customer cust = ResetBasicData.createCustAndOrder("DelCas");
|
||||
Assert.assertNotNull(cust);
|
||||
|
||||
+47
-18
@@ -2,29 +2,35 @@ package com.avaje.tests.cache;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.avaje.ebeaninternal.server.cache.CachedManyIds;
|
||||
import com.avaje.tests.model.basic.*;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.ebean.cache.ServerCache;
|
||||
import com.avaje.ebean.cache.ServerCacheManager;
|
||||
import com.avaje.ebeaninternal.server.cache.CachedManyIds;
|
||||
import com.avaje.tests.model.basic.Contact;
|
||||
import com.avaje.tests.model.basic.Country;
|
||||
import com.avaje.tests.model.basic.Customer;
|
||||
import com.avaje.tests.model.basic.OCachedBean;
|
||||
import com.avaje.tests.model.basic.ResetBasicData;
|
||||
|
||||
public class TestCacheCollectionIds extends BaseTestCase {
|
||||
|
||||
ServerCacheManager cacheManager = Ebean.getServerCacheManager();
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
ServerCache custCache = Ebean.getServerCacheManager().getBeanCache(Customer.class);
|
||||
ServerCache contactCache = Ebean.getServerCacheManager().getBeanCache(Contact.class);
|
||||
ServerCache custManyIdsCache = Ebean.getServerCacheManager().getCollectionIdsCache(
|
||||
Customer.class, "contacts");
|
||||
ServerCache custCache = cacheManager.getBeanCache(Customer.class);
|
||||
ServerCache contactCache = cacheManager.getBeanCache(Contact.class);
|
||||
ServerCache custManyIdsCache = cacheManager.getCollectionIdsCache(Customer.class, "contacts");
|
||||
|
||||
// Ebean.getServerCacheManager().setCaching(Customer.class, true);
|
||||
// Ebean.getServerCacheManager().setCaching(Contact.class, true);
|
||||
// cacheManager.setCaching(Customer.class, true);
|
||||
// cacheManager.setCaching(Contact.class, true);
|
||||
|
||||
custCache.clear();
|
||||
custManyIdsCache.clear();
|
||||
@@ -94,21 +100,21 @@ public class TestCacheCollectionIds extends BaseTestCase {
|
||||
// arrange
|
||||
ResetBasicData.reset();
|
||||
|
||||
CachedBean cachedBean = new CachedBean();
|
||||
OCachedBean cachedBean = new OCachedBean();
|
||||
cachedBean.getCountries().add(Ebean.find(Country.class, "NZ"));
|
||||
cachedBean.getCountries().add(Ebean.find(Country.class, "AU"));
|
||||
|
||||
Ebean.save(cachedBean);
|
||||
|
||||
// act
|
||||
CachedBean loadedBean = Ebean.find(CachedBean.class, cachedBean.getId());
|
||||
OCachedBean loadedBean = Ebean.find(OCachedBean.class, cachedBean.getId());
|
||||
loadedBean.getCountries().clear();
|
||||
loadedBean.getCountries().add(Ebean.find(Country.class, "AU"));
|
||||
|
||||
Ebean.save(cachedBean);
|
||||
|
||||
CachedBean result = Ebean.find(CachedBean.class, cachedBean.getId());
|
||||
ServerCache cachedBeanCountriesCache = Ebean.getServerCacheManager().getCollectionIdsCache(CachedBean.class, "countries");
|
||||
OCachedBean result = Ebean.find(OCachedBean.class, cachedBean.getId());
|
||||
ServerCache cachedBeanCountriesCache = cacheManager.getCollectionIdsCache(OCachedBean.class, "countries");
|
||||
CachedManyIds cachedManyIds = (CachedManyIds) cachedBeanCountriesCache.get(result.getId());
|
||||
|
||||
|
||||
@@ -127,21 +133,44 @@ public class TestCacheCollectionIds extends BaseTestCase {
|
||||
// arrange
|
||||
ResetBasicData.reset();
|
||||
|
||||
CachedBean cachedBean = new CachedBean();
|
||||
OCachedBean cachedBean = new OCachedBean();
|
||||
cachedBean.setName("cachedBeanTest");
|
||||
cachedBean.getCountries().add(Ebean.find(Country.class, "NZ"));
|
||||
cachedBean.getCountries().add(Ebean.find(Country.class, "AU"));
|
||||
|
||||
Ebean.save(cachedBean);
|
||||
|
||||
// act
|
||||
CachedBean update = new CachedBean();
|
||||
// clear the cache
|
||||
ServerCache cachedBeanCountriesCache = cacheManager.getCollectionIdsCache(OCachedBean.class, "countries");
|
||||
cachedBeanCountriesCache.clear();
|
||||
Assert.assertEquals(0, cachedBeanCountriesCache.size());
|
||||
|
||||
// load the cache
|
||||
OCachedBean dummyLoad = Ebean.find(OCachedBean.class, cachedBean.getId());
|
||||
List<Country> dummyCountries = dummyLoad.getCountries();
|
||||
Assert.assertEquals(2, dummyCountries.size());
|
||||
|
||||
// assert that the cache contains the expected entry
|
||||
Assert.assertEquals("countries cache now loaded with 1 entry", 1, cachedBeanCountriesCache.size());
|
||||
CachedManyIds dummyEntry = (CachedManyIds) cachedBeanCountriesCache.get(dummyLoad.getId());
|
||||
Assert.assertNotNull(dummyEntry);
|
||||
Assert.assertEquals("2 ids in the entry", 2, dummyEntry.getIdList().size());
|
||||
Assert.assertTrue(dummyEntry.getIdList().contains("NZ"));
|
||||
Assert.assertTrue(dummyEntry.getIdList().contains("AU"));
|
||||
|
||||
|
||||
// act - this should invalidate our cache entry
|
||||
OCachedBean update = new OCachedBean();
|
||||
update.setId(cachedBean.getId());
|
||||
update.setName("modified");
|
||||
update.getCountries().add(Ebean.find(Country.class, "AU"));
|
||||
|
||||
Ebean.update(cachedBean);
|
||||
Ebean.update(update);
|
||||
|
||||
Assert.assertEquals("countries entry was invalidated", 0, cachedBeanCountriesCache.size());
|
||||
|
||||
|
||||
CachedBean result = Ebean.find(CachedBean.class, cachedBean.getId());
|
||||
ServerCache cachedBeanCountriesCache = Ebean.getServerCacheManager().getCollectionIdsCache(CachedBean.class, "countries");
|
||||
OCachedBean result = Ebean.find(OCachedBean.class, cachedBean.getId());
|
||||
CachedManyIds cachedManyIds = (CachedManyIds) cachedBeanCountriesCache.get(result.getId());
|
||||
|
||||
|
||||
|
||||
+15
-5
@@ -1,14 +1,14 @@
|
||||
package com.avaje.tests.model.basic;
|
||||
|
||||
import com.avaje.ebean.annotation.CacheStrategy;
|
||||
import com.avaje.ebean.annotation.CacheTuning;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.ManyToMany;
|
||||
import javax.persistence.Table;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.avaje.ebean.annotation.CacheStrategy;
|
||||
|
||||
/**
|
||||
* Cached bean for testing caching implementation.
|
||||
@@ -16,11 +16,13 @@ import java.util.List;
|
||||
@CacheStrategy
|
||||
@Entity
|
||||
@Table(name = "o_cached_bean")
|
||||
public class CachedBean {
|
||||
public class OCachedBean {
|
||||
|
||||
@Id
|
||||
Long id;
|
||||
|
||||
String name;
|
||||
|
||||
@ManyToMany
|
||||
List<Country> countries = new ArrayList<Country>();
|
||||
|
||||
@@ -32,6 +34,14 @@ public class CachedBean {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public List<Country> getCountries() {
|
||||
return countries;
|
||||
}
|
||||
Reference in New Issue
Block a user