#238 - unsuccessful attempt to reproduce issue 238

This commit is contained in:
rbygrave
2015-02-04 23:13:53 +13:00
parent a838bc38c5
commit 8fc3f2da15
4 changed files with 216 additions and 0 deletions
@@ -0,0 +1,99 @@
package com.avaje.tests.model.prnt;
import javax.persistence.*;
@Entity
public class MPrinter {
@Id
Long id;
@Version
Long version;
String name;
@Column(name="flags", nullable=false)
long allFlags=0L;
@JoinColumn(name="current_state_id")
@ManyToOne
MPrinterState currentState;
@JoinColumn(name="last_swap_cyan_id") @OneToOne private MPrinterState lastTonerSwapCyan;
@JoinColumn(name="last_swap_magenta_id") @OneToOne private MPrinterState lastTonerSwapMagenta;
@JoinColumn(name="last_swap_yellow_id") @OneToOne private MPrinterState lastTonerSwapYellow;
@JoinColumn(name="last_swap_black_id") @OneToOne private MPrinterState lastTonerSwapBlack;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getAllFlags() {
return allFlags;
}
public void setAllFlags(long allFlags) {
this.allFlags = allFlags;
}
public MPrinterState getCurrentState() {
return currentState;
}
public void setCurrentState(MPrinterState currentState) {
this.currentState = currentState;
}
public MPrinterState getLastTonerSwapCyan() {
return lastTonerSwapCyan;
}
public void setLastTonerSwapCyan(MPrinterState lastTonerSwapCyan) {
this.lastTonerSwapCyan = lastTonerSwapCyan;
}
public MPrinterState getLastTonerSwapMagenta() {
return lastTonerSwapMagenta;
}
public void setLastTonerSwapMagenta(MPrinterState lastTonerSwapMagenta) {
this.lastTonerSwapMagenta = lastTonerSwapMagenta;
}
public MPrinterState getLastTonerSwapYellow() {
return lastTonerSwapYellow;
}
public void setLastTonerSwapYellow(MPrinterState lastTonerSwapYellow) {
this.lastTonerSwapYellow = lastTonerSwapYellow;
}
public MPrinterState getLastTonerSwapBlack() {
return lastTonerSwapBlack;
}
public void setLastTonerSwapBlack(MPrinterState lastTonerSwapBlack) {
this.lastTonerSwapBlack = lastTonerSwapBlack;
}
}
@@ -0,0 +1,25 @@
package com.avaje.tests.model.prnt;
import com.avaje.ebean.event.BeanPersistAdapter;
import com.avaje.ebean.event.BeanPersistRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MPrinterListener extends BeanPersistAdapter {
Logger logger = LoggerFactory.getLogger(MPrinterListener.class);
@Override
public boolean isRegisterFor(Class<?> cls) {
return cls.isAssignableFrom(MPrinter.class);
}
@Override
public boolean preUpdate(BeanPersistRequest<?> request) {
logger.info("preUpdate ...");
logger.info("preUpdate ..."+request.getUpdatedValues());
request.getUpdatedProperties();
return super.preUpdate(request);
}
}
@@ -0,0 +1,51 @@
package com.avaje.tests.model.prnt;
import javax.persistence.*;
@Entity
public class MPrinterState {
@Id
Long id;
@Version
Long version;
long flags;
@JoinColumn(name="printer_id")
@ManyToOne
MPrinter printer;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
public long getFlags() {
return flags;
}
public void setFlags(long flags) {
this.flags = flags;
}
public MPrinter getPrinter() {
return printer;
}
public void setPrinter(MPrinter printer) {
this.printer = printer;
}
}
@@ -0,0 +1,41 @@
package com.avaje.tests.model.prnt;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import org.junit.Test;
public class TestPrinterStateIssue extends BaseTestCase {
@Test
public void test() {
MPrinter printer = new MPrinter();
printer.setName("foo");
printer.setAllFlags(20L);
Ebean.save(printer);
MPrinterState state = new MPrinterState();
state.setFlags(10L);
state.setPrinter(printer);
Ebean.save(state);
printer.setCurrentState(state);
Ebean.save(printer);
MPrinter printer1 = Ebean.find(MPrinter.class, printer.getId());
MPrinterState state1 = printer1.getCurrentState();
state1.setFlags(9L);
printer1.setAllFlags(99L);
// BeanState beanState = Ebean.getBeanState(printer1);
// Set<String> changedProps = beanState.getChangedProps();
// System.out.println("changed: "+changedProps);
Ebean.save(printer1);
}
}