From 8fc3f2da154625a76aee085523d2f97f3b1e2afb Mon Sep 17 00:00:00 2001 From: rbygrave Date: Wed, 4 Feb 2015 23:13:53 +1300 Subject: [PATCH] #238 - unsuccessful attempt to reproduce issue 238 --- .../com/avaje/tests/model/prnt/MPrinter.java | 99 +++++++++++++++++++ .../tests/model/prnt/MPrinterListener.java | 25 +++++ .../avaje/tests/model/prnt/MPrinterState.java | 51 ++++++++++ .../model/prnt/TestPrinterStateIssue.java | 41 ++++++++ 4 files changed, 216 insertions(+) create mode 100644 src/test/java/com/avaje/tests/model/prnt/MPrinter.java create mode 100644 src/test/java/com/avaje/tests/model/prnt/MPrinterListener.java create mode 100644 src/test/java/com/avaje/tests/model/prnt/MPrinterState.java create mode 100644 src/test/java/com/avaje/tests/model/prnt/TestPrinterStateIssue.java diff --git a/src/test/java/com/avaje/tests/model/prnt/MPrinter.java b/src/test/java/com/avaje/tests/model/prnt/MPrinter.java new file mode 100644 index 000000000..b0f3e6e95 --- /dev/null +++ b/src/test/java/com/avaje/tests/model/prnt/MPrinter.java @@ -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; + } +} diff --git a/src/test/java/com/avaje/tests/model/prnt/MPrinterListener.java b/src/test/java/com/avaje/tests/model/prnt/MPrinterListener.java new file mode 100644 index 000000000..2423ab97a --- /dev/null +++ b/src/test/java/com/avaje/tests/model/prnt/MPrinterListener.java @@ -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); + } +} diff --git a/src/test/java/com/avaje/tests/model/prnt/MPrinterState.java b/src/test/java/com/avaje/tests/model/prnt/MPrinterState.java new file mode 100644 index 000000000..0d3e804f3 --- /dev/null +++ b/src/test/java/com/avaje/tests/model/prnt/MPrinterState.java @@ -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; + } +} diff --git a/src/test/java/com/avaje/tests/model/prnt/TestPrinterStateIssue.java b/src/test/java/com/avaje/tests/model/prnt/TestPrinterStateIssue.java new file mode 100644 index 000000000..9f2368c37 --- /dev/null +++ b/src/test/java/com/avaje/tests/model/prnt/TestPrinterStateIssue.java @@ -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 changedProps = beanState.getChangedProps(); +// System.out.println("changed: "+changedProps); + + Ebean.save(printer1); + + } +}