Merge in v4 code changes

This commit is contained in:
Rob Bygrave
2014-04-03 03:47:55 +13:00
171 changed files with 2747 additions and 3848 deletions
@@ -0,0 +1,59 @@
package com.avaje.ebeaninternal.server.cache;
import java.sql.Timestamp;
import junit.framework.Assert;
import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.bean.EntityBean;
import com.avaje.ebeaninternal.api.SpiEbeanServer;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
import com.avaje.tests.model.basic.Address;
import com.avaje.tests.model.basic.Country;
import com.avaje.tests.model.basic.Customer;
import com.avaje.tests.model.basic.Customer.Status;
public class TestCacheBeanData extends BaseTestCase {
@Test
public void test() {
SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
BeanDescriptor<Customer> desc = server.getBeanDescriptor(Customer.class);
Customer c = new Customer();
c.setId(98989);
c.setName("Rob");
c.setCretime(new Timestamp(System.currentTimeMillis()));
c.setUpdtime(new Timestamp(System.currentTimeMillis()));
c.setStatus(Status.ACTIVE);
c.setSmallnote("somenote");
Address billingAddress = new Address();
billingAddress.setId((short)12);
billingAddress.setCity("Auckland");
billingAddress.setCountry(server.getReference(Country.class, "NZ"));
billingAddress.setLine1("92 Someplace Else");
c.setBillingAddress(billingAddress);
((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);
Customer newCustomer = new Customer();
newCustomer.setId(c.getId());
CachedBeanDataToBean.load(desc, (EntityBean)newCustomer, cacheData);
Assert.assertEquals(c.getId(), newCustomer.getId());
Assert.assertEquals(c.getName(), newCustomer.getName());
Assert.assertEquals(c.getStatus(), newCustomer.getStatus());
}
}
@@ -14,6 +14,11 @@ public class TestDeleteOneToOneMultiple extends BaseTestCase {
public void testCreateDeletePersistentFile() {
PFile persistentFile = new PFile("test.txt", new PFileContent("test".getBytes()));
// PFile persistentFile = new PFile();
// persistentFile.setName("test.txt");
// PFileContent content = new PFileContent();
// content.setContent("test".getBytes());
// persistentFile.setFileContent(content);
Ebean.save(persistentFile);
Integer id = persistentFile.getId();
@@ -4,6 +4,7 @@ import org.junit.Assert;
import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.BeanState;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.EbeanServer;
import com.avaje.tests.model.embedded.EMain;
@@ -19,6 +20,7 @@ public class TestDynamicUpdate extends BaseTestCase {
b.getEmbeddable().setDescription("123");
EbeanServer server = Ebean.getServer(null);
server.save(b);
Assert.assertNotNull(b.getId());
@@ -27,6 +29,11 @@ public class TestDynamicUpdate extends BaseTestCase {
EMain b2 = server.find(EMain.class, b.getId());
b2.getEmbeddable().setDescription("ABC");
BeanState beanState = server.getBeanState(b2);
boolean dirty = beanState.isDirty();
Assert.assertTrue(dirty);
server.save(b2);
server.beginTransaction();
@@ -1,8 +1,6 @@
package com.avaje.tests.basic;
import java.sql.Timestamp;
import java.util.HashSet;
import java.util.Set;
import junit.framework.Assert;
@@ -22,10 +20,6 @@ public class TestIUDVanilla extends BaseTestCase {
Ebean.save(e0);
// // only use the below test when not using enhancement
// boolean entity = (e0 instanceof EntityBean);
// Assert.assertTrue(!entity);
Assert.assertNotNull(e0.getId());
Assert.assertNotNull(e0.getLastUpdate());
@@ -40,33 +34,22 @@ public class TestIUDVanilla extends BaseTestCase {
EBasicVer e2 = Ebean.getServer(null).createEntityBean(EBasicVer.class);
HashSet<String> loaded = new HashSet<String>();
loaded.add("id");
loaded.add("lastUpdate");
loaded.add("name");
e2.setId(e0.getId());
e2.setLastUpdate(lastUpdate1);
Ebean.getBeanState(e2).setLoaded(loaded);
e2.setName("forcedUpdate");
Ebean.save(e2);
Ebean.update(e2);
EBasicVer e3 = new EBasicVer();
e3.setId(e0.getId());
e3.setName("ModNoOCC");
// e3.setLastUpdate(e2.getLastUpdate());
Ebean.update(e3);
e3.setName("ModAgain");
e3.setDescription("Banana");
Set<String> updateProps = new HashSet<String>();
updateProps.add("name");
updateProps.add("description");
Ebean.update(e3, updateProps);
Ebean.update(e3);
}
}
@@ -49,9 +49,6 @@ public class TestLazyLoadInCache extends BaseTestCase {
Assert.assertFalse(loadedProps.contains("status"));
cust1.getStatus();
// null after lazy load
Assert.assertNull(Ebean.getBeanState(cust1).getLoadedProps());
// a readOnly reference
Address billingAddress = cust1.getBillingAddress();
@@ -26,6 +26,7 @@ public class TestReadOnlyPropagation extends BaseTestCase {
Order order = Ebean.find(Order.class)
.setAutofetch(false)
.setUseCache(false)
.setReadOnly(true)
.setId(1)
.findUnique();
@@ -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).cachePutBeanData(dummy);
server.getBeanDescriptor(OrderDetail.class).cachePutBean(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).cachePutBeanData(dummy);
server.getBeanDescriptor(OrderDetail.class).cachePutBean(dummy);
Customer cust = ResetBasicData.createCustAndOrder("DelCas");
Assert.assertNotNull(cust);
@@ -47,7 +47,7 @@ public class TestQueryJoin extends BaseTestCase {
Customer customer = order.getCustomer();
BeanState beanStateCustomer = Ebean.getBeanState(customer);
Assert.assertNull(beanStateCustomer.getLoadedProps());
Assert.assertTrue(beanStateCustomer.isReference());
customer.getName();
Assert.assertNotNull(beanStateCustomer.getLoadedProps());
+26 -21
View File
@@ -8,6 +8,7 @@ import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.bean.BeanCollection;
import com.avaje.ebean.cache.ServerCache;
import com.avaje.tests.model.basic.Customer;
import com.avaje.tests.model.basic.ResetBasicData;
@@ -19,8 +20,11 @@ public class TestQueryCache extends BaseTestCase {
ResetBasicData.reset();
List<Customer> list = Ebean.find(Customer.class).setUseQueryCache(true).setReadOnly(true)
.where().ilike("name", "Rob").findList();
ServerCache customerCache = Ebean.getServerCacheManager().getQueryCache(Customer.class);
customerCache.clear();
List<Customer> list = Ebean.find(Customer.class).setUseQueryCache(true).setReadOnly(true).where()
.ilike("name", "Rob").findList();
BeanCollection<Customer> bc = (BeanCollection<Customer>) list;
Assert.assertFalse(bc.isReadOnly());
@@ -28,30 +32,31 @@ public class TestQueryCache extends BaseTestCase {
Assert.assertTrue(list.size() > 0);
Assert.assertTrue(Ebean.getBeanState(list.get(0)).isReadOnly());
List<Customer> list2 = Ebean.find(Customer.class).setUseQueryCache(true).setReadOnly(true)
.where().ilike("name", "Rob").findList();
List<Customer> list2 = Ebean.find(Customer.class).setUseQueryCache(true).setReadOnly(true).where()
.ilike("name", "Rob").findList();
List<Customer> list2B = Ebean.find(Customer.class).setUseQueryCache(true)
// .setReadOnly(true)
.where().ilike("name", "Rob").findList();
// Assert.assertTrue("same instance",list != list2);
//
// // readOnly defaults to true for query cache
// Assert.assertTrue("same instance",list != list2B);
//
// List<Customer> list3 = Ebean.find(Customer.class)
// .setUseQueryCache(true)
// .setReadOnly(false)
// .where().ilike("name", "Rob")
// .findList();
//
// Assert.assertTrue("diff instance",list != list3);
// BeanCollection<Customer> bc3 = (BeanCollection<Customer>)list3;
// Assert.assertFalse(bc3.isReadOnly());
// Assert.assertFalse(bc3.isEmpty());
// Assert.assertTrue(list3.size() > 0);
// Assert.assertFalse(Ebean.getBeanState(list3.get(0)).isReadOnly());
Assert.assertSame(list, list2);
// readOnly defaults to true for query cache
Assert.assertSame(list, list2B);
// TODO: At this stage setReadOnly(false) does not
// create a shallow copy of the List/Set/Map
// List<Customer> list3 = Ebean.find(Customer.class).setUseQueryCache(true).setReadOnly(false).where()
// .ilike("name", "Rob").findList();
//
// Assert.assertNotSame(list, list3);
// BeanCollection<Customer> bc3 = (BeanCollection<Customer>) list3;
// Assert.assertFalse(bc3.isReadOnly());
// Assert.assertFalse(bc3.isEmpty());
// Assert.assertTrue(list3.size() > 0);
// Assert.assertFalse(Ebean.getBeanState(list3.get(0)).isReadOnly());
}
@@ -0,0 +1,61 @@
package com.avaje.tests.cache;
import java.util.List;
import junit.framework.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.ServerCacheStatistics;
import com.avaje.tests.model.basic.Country;
import com.avaje.tests.model.basic.ResetBasicData;
public class TestQueryCacheCountry extends BaseTestCase {
@Test
public void test() {
ResetBasicData.reset();
ServerCache cache = Ebean.getServerCacheManager().getQueryCache(Country.class);
cache.clear();
Assert.assertEquals(0, cache.getStatistics(false).getSize());
List<Country> countryList0 = Ebean.find(Country.class)
.setUseQueryCache(true)
.order().asc("name")
.findList();
Assert.assertEquals(1, cache.getStatistics(false).getSize());
Assert.assertTrue(countryList0.size() > 0);
List<Country> countryList1 = Ebean.find(Country.class)
.setUseQueryCache(true)
.order().asc("name")
.findList();
ServerCacheStatistics statistics = cache.getStatistics(false);
Assert.assertEquals(1, statistics.getSize());
Assert.assertEquals(1, statistics.getHitCount());
Assert.assertSame(countryList1, countryList0);
Country nz = Ebean.find(Country.class, "NZ");
nz.setName("New Zealandia");
Ebean.save(nz);
statistics = cache.getStatistics(false);
Assert.assertEquals(0, statistics.getSize());
List<Country> countryList2 = Ebean.find(Country.class)
.setUseQueryCache(true)
.order().asc("name")
.findList();
Assert.assertNotSame(countryList2, countryList0);
}
}
@@ -6,6 +6,7 @@ import junit.framework.Assert;
import junit.framework.TestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.bean.EntityBean;
import com.avaje.ebean.config.GlobalProperties;
import com.avaje.ebeaninternal.api.SpiEbeanServer;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
@@ -22,56 +23,57 @@ public class TestDExhEntityEl extends TestCase {
GlobalProperties.put("classes", DExhEntity.class.toString());
Currency NZD = Currency.getInstance("NZD");
CMoney cm = new CMoney(new Money("12"), NZD);
Rate rate = new Rate(0.1);
ExhangeCMoneyRate exh = new ExhangeCMoneyRate(rate, cm);
DExhEntity p = new DExhEntity();
p.setExhange(exh);
SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
BeanDescriptor<DExhEntity> descriptor = server.getBeanDescriptor(DExhEntity.class);
ElPropertyValue elExh = descriptor.getElGetValue("exhange");
ElPropertyValue elExhRate = descriptor.getElGetValue("exhange.rate");
ElPropertyValue elExhCMoney = descriptor.getElGetValue("exhange.cmoney");
ElPropertyValue elExhCMoneyCur = descriptor.getElGetValue("exhange.cmoney.currency");
ElPropertyValue elExhCMoneyAmt = descriptor.getElGetValue("exhange.cmoney.amount");
Object e = elExh.elGetValue(p);
Object er = elExhRate.elGetValue(p);
Object ecm = elExhCMoney.elGetValue(p);
Object ecmCurr = elExhCMoneyCur.elGetValue(p);
Object ecmAmt = elExhCMoneyAmt.elGetValue(p);
Assert.assertNotNull(e);
Assert.assertNotNull(er);
Assert.assertNotNull(ecm);
Assert.assertEquals(new Rate("0.1"), er);
Assert.assertEquals(NZD, ecmCurr);
Assert.assertEquals(new Money("12"), ecmAmt);
p.setExhange(null);
Assert.assertNull(p.getExhange());
// won't trigger CMoney build as not all properties
// have been set yet...
elExhCMoneyAmt.elSetValue(p, new Money("13"), true, false);
Assert.assertNull(p.getExhange());
elExhCMoneyCur.elSetValue(p, NZD, true, false);
Assert.assertNull(p.getExhange());
elExhRate.elSetValue(p, new Rate(.2), true, false);
// this time not null as all required properties for
// the compound object have been collected
Assert.assertNotNull(p.getExhange());
// Currency NZD = Currency.getInstance("NZD");
//
// CMoney cm = new CMoney(new Money("12"), NZD);
//
// Rate rate = new Rate(0.1);
// ExhangeCMoneyRate exh = new ExhangeCMoneyRate(rate, cm);
//
// DExhEntity p = new DExhEntity();
// p.setExhange(exh);
//
// SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
//
// BeanDescriptor<DExhEntity> descriptor = server.getBeanDescriptor(DExhEntity.class);
//
// ElPropertyValue elExh = descriptor.getElGetValue("exhange");
// ElPropertyValue elExhRate = descriptor.getElGetValue("exhange.rate");
// ElPropertyValue elExhCMoney = descriptor.getElGetValue("exhange.cmoney");
// ElPropertyValue elExhCMoneyCur = descriptor.getElGetValue("exhange.cmoney.currency");
// ElPropertyValue elExhCMoneyAmt = descriptor.getElGetValue("exhange.cmoney.amount");
//
// EntityBean entityBean = (EntityBean)p;
// Object e = elExh.elGetValue(entityBean);
// Object er = elExhRate.elGetValue(entityBean);
// Object ecm = elExhCMoney.elGetValue(entityBean);
// Object ecmCurr = elExhCMoneyCur.elGetValue(entityBean);
// Object ecmAmt = elExhCMoneyAmt.elGetValue(entityBean);
//
// Assert.assertNotNull(e);
// Assert.assertNotNull(er);
// Assert.assertNotNull(ecm);
//
// Assert.assertEquals(new Rate("0.1"), er);
// Assert.assertEquals(NZD, ecmCurr);
// Assert.assertEquals(new Money("12"), ecmAmt);
//
// p.setExhange(null);
// Assert.assertNull(p.getExhange());
//
// // won't trigger CMoney build as not all properties
// // have been set yet...
// elExhCMoneyAmt.elSetValue(entityBean, new Money("13"), true, false);
// Assert.assertNull(p.getExhange());
//
// elExhCMoneyCur.elSetValue(entityBean, NZD, true, false);
// Assert.assertNull(p.getExhange());
//
// elExhRate.elSetValue(entityBean, new Rate(.2), true, false);
//
// // this time not null as all required properties for
// // the compound object have been collected
// Assert.assertNotNull(p.getExhange());
}
@@ -6,6 +6,7 @@ import junit.framework.Assert;
import junit.framework.TestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.bean.EntityBean;
import com.avaje.ebean.config.GlobalProperties;
import com.avaje.ebeaninternal.api.SpiEbeanServer;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
@@ -20,44 +21,46 @@ public class TestDPersonEl extends TestCase {
GlobalProperties.put("classes", DPerson.class.toString());
Currency NZD = Currency.getInstance("NZD");
DPerson p = new DPerson();
p.setFirstName("first");
p.setLastName("last");
p.setSalary(new Money("12200"));
p.setCmoney(new CMoney(new Money("12"), NZD));
SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
BeanDescriptor<DPerson> descriptor = server.getBeanDescriptor(DPerson.class);
ElPropertyValue elCmoney = descriptor.getElGetValue("cmoney");
ElPropertyValue elCmoneyAmt = descriptor.getElGetValue("cmoney.amount");
ElPropertyValue elCmoneyCur = descriptor.getElGetValue("cmoney.currency");
Object cmoney = elCmoney.elGetValue(p);
Object amt = elCmoneyAmt.elGetValue(p);
Object cur = elCmoneyCur.elGetValue(p);
Assert.assertNotNull(cmoney);
Assert.assertEquals(new Money("12"), amt);
Assert.assertEquals(NZD, cur);
p.setCmoney(null);
Assert.assertNull(p.getCmoney());
// won't trigger CMoney build as not all properties
// have been set yet...
elCmoneyAmt.elSetValue(p, new Money("13"), true, false);
Assert.assertNull(p.getCmoney());
// will trigger the build and setting of CMoney
elCmoneyCur.elSetValue(p, NZD, true, false);
// this time not null as all required properties for
// the compound object have been collected
Assert.assertNotNull(p.getCmoney());
// Currency NZD = Currency.getInstance("NZD");
//
// DPerson p = new DPerson();
// p.setFirstName("first");
// p.setLastName("last");
// p.setSalary(new Money("12200"));
// p.setCmoney(new CMoney(new Money("12"), NZD));
//
// SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
//
// BeanDescriptor<DPerson> descriptor = server.getBeanDescriptor(DPerson.class);
//
// ElPropertyValue elCmoney = descriptor.getElGetValue("cmoney");
// ElPropertyValue elCmoneyAmt = descriptor.getElGetValue("cmoney.amount");
// ElPropertyValue elCmoneyCur = descriptor.getElGetValue("cmoney.currency");
//
// EntityBean entityBean = (EntityBean)p;
//
// Object cmoney = elCmoney.elGetValue(entityBean);
// Object amt = elCmoneyAmt.elGetValue(entityBean);
// Object cur = elCmoneyCur.elGetValue(entityBean);
//
// Assert.assertNotNull(cmoney);
// Assert.assertEquals(new Money("12"), amt);
// Assert.assertEquals(NZD, cur);
//
// p.setCmoney(null);
// Assert.assertNull(p.getCmoney());
//
// // won't trigger CMoney build as not all properties
// // have been set yet...
// elCmoneyAmt.elSetValue(entityBean, new Money("13"), true, false);
// Assert.assertNull(p.getCmoney());
//
// // will trigger the build and setting of CMoney
// elCmoneyCur.elSetValue(entityBean, NZD, true, false);
//
// // this time not null as all required properties for
// // the compound object have been collected
// Assert.assertNotNull(p.getCmoney());
}
@@ -23,41 +23,41 @@ public class TestDPersonIUD extends TestCase {
GlobalProperties.put("classes", DPerson.class.toString());
Currency NZD = Currency.getInstance("NZD");
DPerson p = new DPerson();
p.setFirstName("first");
p.setLastName("last");
p.setSalary(new Money("12200"));
p.setCmoney(new CMoney(new Money("12"), NZD));
p.setInterval(new Interval(System.currentTimeMillis()-20000, System.currentTimeMillis()));
Ebean.save(p);
Oid<DPerson> id = p.getId();
Assert.assertNotNull(id);
DPerson p2 = Ebean.find(DPerson.class)
.setAutofetch(false)
.where().idEq(id)
.findUnique();
Assert.assertNotNull(p2);
System.out.println(p2);
Assert.assertEquals(new Money(12200d), p2.getSalary());
Assert.assertNotNull(p2.getCmoney());
Assert.assertEquals(new Money("12"), p2.getCmoney().getAmount());
Assert.assertEquals(NZD, p2.getCmoney().getCurrency());
Query<DPerson> query = Ebean.find(DPerson.class)
.setAutofetch(false)
.where().gt("cmoney.amount",1)
.query();
List<DPerson> list = query.findList();
Assert.assertTrue(list.size() >= 1);
// Currency NZD = Currency.getInstance("NZD");
//
// DPerson p = new DPerson();
// p.setFirstName("first");
// p.setLastName("last");
// p.setSalary(new Money("12200"));
// p.setCmoney(new CMoney(new Money("12"), NZD));
//
// p.setInterval(new Interval(System.currentTimeMillis()-20000, System.currentTimeMillis()));
//
// Ebean.save(p);
//
// Oid<DPerson> id = p.getId();
// Assert.assertNotNull(id);
//
// DPerson p2 = Ebean.find(DPerson.class)
// .setAutofetch(false)
// .where().idEq(id)
// .findUnique();
//
// Assert.assertNotNull(p2);
// System.out.println(p2);
// Assert.assertEquals(new Money(12200d), p2.getSalary());
// Assert.assertNotNull(p2.getCmoney());
// Assert.assertEquals(new Money("12"), p2.getCmoney().getAmount());
// Assert.assertEquals(NZD, p2.getCmoney().getCurrency());
//
//
// Query<DPerson> query = Ebean.find(DPerson.class)
// .setAutofetch(false)
// .where().gt("cmoney.amount",1)
// .query();
//
// List<DPerson> list = query.findList();
// Assert.assertTrue(list.size() >= 1);
}
@@ -3,6 +3,7 @@ package com.avaje.tests.el;
import junit.framework.TestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.bean.EntityBean;
import com.avaje.ebeaninternal.api.SpiEbeanServer;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
import com.avaje.ebeaninternal.server.el.ElPropertyValue;
@@ -31,10 +32,10 @@ public class TestElGetReference extends TestCase {
ElPropertyValue addrLine1Prop = descriptor.getElGetValue("billingAddress.line1");
ElPropertyValue addrCityProp = descriptor.getElGetValue("billingAddress.city");
elProp.elGetReference(c0);
elProp.elGetReference(c1);
elProp.elGetReference((EntityBean)c0);
elProp.elGetReference((EntityBean)c1);
addrLine1Prop.elSetValue(c1, "12 someplace", true, false);
addrCityProp.elSetValue(c1, "Auckland", true, false);
addrLine1Prop.elSetValue((EntityBean)c1, "12 someplace", true, false);
addrCityProp.elSetValue((EntityBean)c1, "Auckland", true, false);
}
}
@@ -9,6 +9,7 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.Transaction;
import com.avaje.ebean.bean.EntityBean;
import com.avaje.tests.idkeys.db.AuditLog;
@@ -165,6 +166,9 @@ public class TestPropertyChangeSupport extends EbeanTestCase implements Property
{
try
{
//Ebean.getBeanState(al).addPropertyChangeListener(listener);
Method apcs = al.getClass().getMethod("addPropertyChangeListener", PropertyChangeListener.class);
apcs.invoke(al, listener);
}
@@ -0,0 +1,42 @@
package com.avaje.tests.iud;
import java.util.Set;
import junit.framework.Assert;
import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.BeanState;
import com.avaje.ebean.Ebean;
import com.avaje.tests.model.basic.EBasicVer;
public class TestInsertQueryUpdate extends BaseTestCase {
@Test
public void test() {
EBasicVer e0 = new EBasicVer();
e0.setName("name0");
e0.setDescription("desc0");
Ebean.save(e0);
EBasicVer e1 = Ebean.find(EBasicVer.class)
.select("name")
.setId(e0.getId())
.findUnique();
BeanState beanState = Ebean.getBeanState(e1);
Set<String> loadedProps = beanState.getLoadedProps();
Assert.assertFalse(loadedProps.contains("description"));
//lastUpdate
e1.setName("name1");
Ebean.save(e1);
e1.setDescription("desc1");
Ebean.save(e1);
}
}
@@ -1,13 +1,16 @@
package com.avaje.tests.iud;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.tests.model.basic.EBasicVer;
public class TestInsertUpdateTrans extends TestCase {
public class TestInsertUpdateTrans extends BaseTestCase {
@Test
public void test() {
Ebean.beginTransaction();
@@ -3,6 +3,8 @@ package com.avaje.tests.model.basic;
import java.util.HashSet;
import java.util.Set;
import com.avaje.ebean.BeanState;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.config.ServerConfig;
import com.avaje.ebean.event.BeanPersistListener;
import com.avaje.ebean.event.BulkTableEvent;
@@ -11,56 +13,58 @@ import com.avaje.ebean.event.ServerConfigStartup;
public class MyEBasicConfigStartup implements ServerConfigStartup {
public void onStart(ServerConfig serverConfig) {
serverConfig.add(new EbasicPersistList());
serverConfig.add(new EbasicBulkListener());
public void onStart(ServerConfig serverConfig) {
serverConfig.add(new EbasicPersistList());
serverConfig.add(new EbasicBulkListener());
}
public static class EbasicBulkListener implements BulkTableEventListener {
final Set<String> s = new HashSet<String>();
EbasicBulkListener() {
s.add("e_basic");
}
public static class EbasicBulkListener implements BulkTableEventListener {
final Set<String> s = new HashSet<String>();
EbasicBulkListener() {
s.add("e_basic");
}
public Set<String> registeredTables() {
return s;
}
public Set<String> registeredTables() {
return s;
}
public void process(BulkTableEvent bulkTableEvent) {
System.out.println("-- " + bulkTableEvent);
}
public void process(BulkTableEvent bulkTableEvent) {
System.out.println("-- "+bulkTableEvent);
}
}
public static class EbasicPersistList implements BeanPersistListener<EBasic> {
}
public boolean inserted(EBasic bean) {
System.out.println("-- EBasic inserted "+bean.getId());
return false;
}
public static class EbasicPersistList implements BeanPersistListener<EBasic> {
public boolean updated(EBasic bean, Set<String> updatedProperties) {
System.out.println("-- EBasic updated "+bean.getId());
return false;
}
public boolean inserted(EBasic bean) {
System.out.println("-- EBasic inserted " + bean.getId());
return false;
}
public boolean deleted(EBasic bean) {
System.out.println("-- EBasic deleted "+bean.getId());
return false;
}
public boolean updated(EBasic bean) {
BeanState beanState = Ebean.getBeanState(bean);
Set<String> updatedProperties = beanState.getChangedProps();
System.out.println("-- EBasic updated " + bean.getId());
return false;
}
public void remoteInsert(Object id) {
}
public boolean deleted(EBasic bean) {
System.out.println("-- EBasic deleted " + bean.getId());
return false;
}
public void remoteUpdate(Object id) {
}
public void remoteInsert(Object id) {
}
public void remoteUpdate(Object id) {
}
public void remoteDelete(Object id) {
}
}
public void remoteDelete(Object id) {
}
}
}
@@ -15,9 +15,9 @@ public class PFile extends BasicDomain {
private PFileContent fileContent;
/** Another persistent file. */
@OneToOne(cascade=CascadeType.ALL)
private PFileContent fileContent2;
@OneToOne(cascade=CascadeType.ALL)
private PFileContent fileContent2;
public PFile() {
}
@@ -25,7 +25,6 @@ public class PFile extends BasicDomain {
super();
this.name = name;
this.fileContent = fileContent;
//this.persistentFileContent.setPersistentFile(this);
}
public String getName() {
@@ -36,20 +35,20 @@ public class PFile extends BasicDomain {
this.name = name;
}
public PFileContent getFileContent() {
return fileContent;
}
public PFileContent getFileContent() {
return fileContent;
}
public void setFileContent(PFileContent fileContent) {
this.fileContent = fileContent;
}
public void setFileContent(PFileContent fileContent) {
this.fileContent = fileContent;
}
public PFileContent getFileContent2() {
return fileContent2;
}
public PFileContent getFileContent2() {
return fileContent2;
}
public void setFileContent2(PFileContent fileContent2) {
this.fileContent2 = fileContent2;
}
public void setFileContent2(PFileContent fileContent2) {
this.fileContent2 = fileContent2;
}
}
@@ -7,50 +7,50 @@ import javax.persistence.Table;
import javax.persistence.Version;
@Entity
@Table(name="e_main")
public class EMain
{
@Id
private Integer id;
private String name;
@Table(name = "e_main")
public class EMain {
@Embedded
private Eembeddable embeddable = new Eembeddable();
@Id
private Integer id;
@Version
private Long version;
public Integer getId() {
return id;
}
private String name;
public void setId(Integer id) {
this.id = id;
}
@Embedded
private Eembeddable embeddable = new Eembeddable();
public String getName() {
return name;
}
@Version
private Long version;
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public Eembeddable getEmbeddable() {
return embeddable;
}
public void setId(Integer id) {
this.id = id;
}
public void setEmbeddable(Eembeddable embeddable) {
this.embeddable = embeddable;
}
public String getName() {
return name;
}
public Long getVersion() {
return version;
}
public void setName(String name) {
this.name = name;
}
public Eembeddable getEmbeddable() {
return embeddable;
}
public void setEmbeddable(Eembeddable embeddable) {
this.embeddable = embeddable;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
public void setVersion(Long version) {
this.version = version;
}
}
@@ -21,8 +21,9 @@ public class TestQueryFindIterate extends BaseTestCase {
EbeanServer server = Ebean.getServer(null);
Query<Customer> query = server.find(Customer.class).setAutofetch(false)
.fetch("contacts", new FetchConfig().query(2)).where().gt("id", 0).orderBy("id")
Query<Customer> query = server.find(Customer.class)
.setAutofetch(false)
//.fetch("contacts", new FetchConfig().query(2)).where().gt("id", 0).orderBy("id")
.setMaxRows(2);
int count = 0;
@@ -1,53 +1,53 @@
package com.avaje.tests.text.json;
import java.util.Currency;
import org.junit.Assert;
//import java.util.Currency;
//
//import org.junit.Assert;
import org.junit.Test;
//
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.text.json.JsonContext;
import com.avaje.tests.model.ddd.DExhEntity;
import com.avaje.tests.model.ddd.DPerson;
import com.avaje.tests.model.ivo.CMoney;
import com.avaje.tests.model.ivo.ExhangeCMoneyRate;
import com.avaje.tests.model.ivo.Money;
import com.avaje.tests.model.ivo.Oid;
import com.avaje.tests.model.ivo.Rate;
//import com.avaje.ebean.Ebean;
//import com.avaje.ebean.text.json.JsonContext;
//import com.avaje.tests.model.ddd.DExhEntity;
//import com.avaje.tests.model.ddd.DPerson;
//import com.avaje.tests.model.ivo.CMoney;
//import com.avaje.tests.model.ivo.ExhangeCMoneyRate;
//import com.avaje.tests.model.ivo.Money;
//import com.avaje.tests.model.ivo.Oid;
//import com.avaje.tests.model.ivo.Rate;
public class TestTextJsonCompoundType extends BaseTestCase {
@Test
public void test() {
Currency NZD = Currency.getInstance("NZD");
DPerson p = new DPerson();
p.setFirstName("first");
p.setLastName("last");
p.setSalary(new Money("12200"));
p.setCmoney(new CMoney(new Money("12"), NZD));
JsonContext jsonContext = Ebean.createJsonContext();
String jsonString = jsonContext.toJsonString(p, true);
System.out.println(jsonString);
CMoney cm = new CMoney(new Money("12"), NZD);
Rate rate = new Rate(0.1);
ExhangeCMoneyRate exh = new ExhangeCMoneyRate(rate, cm);
DExhEntity ep = new DExhEntity();
ep.setOid(new Oid<DExhEntity>(112));
ep.setExhange(exh);
String jsonString0 = jsonContext.toJsonString(ep, true);
System.out.println(jsonString0);
DExhEntity bean0 = jsonContext.toBean(DExhEntity.class, jsonString0);
Assert.assertNotNull(bean0);
// Currency NZD = Currency.getInstance("NZD");
//
// DPerson p = new DPerson();
// p.setFirstName("first");
// p.setLastName("last");
// p.setSalary(new Money("12200"));
// p.setCmoney(new CMoney(new Money("12"), NZD));
//
// JsonContext jsonContext = Ebean.createJsonContext();
//
// String jsonString = jsonContext.toJsonString(p, true);
// System.out.println(jsonString);
//
// CMoney cm = new CMoney(new Money("12"), NZD);
//
// Rate rate = new Rate(0.1);
// ExhangeCMoneyRate exh = new ExhangeCMoneyRate(rate, cm);
//
// DExhEntity ep = new DExhEntity();
// ep.setOid(new Oid<DExhEntity>(112));
// ep.setExhange(exh);
//
// String jsonString0 = jsonContext.toJsonString(ep, true);
// System.out.println(jsonString0);
//
// DExhEntity bean0 = jsonContext.toBean(DExhEntity.class, jsonString0);
// Assert.assertNotNull(bean0);
}
}
@@ -1,6 +1,5 @@
package com.avaje.tests.update;
import org.junit.Assert;
import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
@@ -19,21 +18,25 @@ public class TestUpdatePartial extends BaseTestCase {
Ebean.save(c);
Customer c2 = Ebean.find(Customer.class, c.getId());
Assert.assertNull("not partial", Ebean.getBeanState(c2).getLoadedProps());
Customer c2 = Ebean.find(Customer.class)
.select("status, smallnote")
.setId(c.getId())
.findUnique();
c2.setStatus(Customer.Status.INACTIVE);
c2.setSmallnote("2nd note");
Ebean.save(c2);
Customer c3 = Ebean.find(Customer.class, c.getId());
Assert.assertNull("not partial", Ebean.getBeanState(c3).getLoadedProps());
Customer c3 = Ebean.find(Customer.class)
.select("status")
.setId(c.getId())
.findUnique();
c3.setStatus(Customer.Status.NEW);
c3.setSmallnote("3rd note");
c2.setStatus(Customer.Status.NEW);
c2.setSmallnote("3rd note");
Ebean.save(c2);
Ebean.save(c3);
}
}