[CVS nanning] Added Prevayler test with callback.
Jon Tirsen <[email protected]> Mon, 11 Aug 2003 09:52:41 -0500
| Newsgroups | gmane.comp.java.nanning.devel |
|---|---|
| Message-ID | <200308111452.h7BEqfp13412__34923.9865121946$1060613206@codehaus.org> |
Commit in nanning/src/frameworks/prevayler/src/test/org/codehaus/nanning/prevayler on MAIN
MySystem.java +5 1.2 -> 1.3
MySystemImpl.java +6 1.2 -> 1.3
PrevaylerTest.java +87 1.4 -> 1.5
+98
3 modified files
Added Prevayler test with callback.
----------
nanning/src/frameworks/prevayler/src/test/org/codehaus/nanning/prevayler
MySystem.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- MySystem.java 10 Aug 2003 16:18:18 -0000 1.2
+++ MySystem.java 11 Aug 2003 14:52:41 -0000 1.3
@@ -27,4 +27,9 @@
void setSimpleString(String string);
String getSimpleString();
+
+ /**
+ * @transaction
+ */
+ void add(Object o);
}
----------
nanning/src/frameworks/prevayler/src/test/org/codehaus/nanning/prevayler
MySystemImpl.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- MySystemImpl.java 10 Aug 2003 16:18:18 -0000 1.2
+++ MySystemImpl.java 11 Aug 2003 14:52:41 -0000 1.3
@@ -3,6 +3,7 @@
import java.io.Serializable;
import java.util.Collection;
import java.util.ArrayList;
+import java.util.List;
import org.codehaus.nanning.Aspects;
import org.codehaus.nanning.prevayler.MyObject;
@@ -11,6 +12,7 @@
public class MySystemImpl extends BasicIdentifyingSystem implements MySystem, Serializable {
private MyObject myObject;
private String simpleString;
+ private List objects = new ArrayList();
public MyObject createMyObject() {
return (MyObject) Aspects.getCurrentAspectFactory().newInstance(MyObject.class);
@@ -40,6 +42,10 @@
public String getSimpleString() {
return simpleString;
+ }
+
+ public void add(Object o) {
+ objects.add(o);
}
public void setSimpleString(String simpleString) {
----------
nanning/src/frameworks/prevayler/src/test/org/codehaus/nanning/prevayler
PrevaylerTest.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- PrevaylerTest.java 10 Aug 2003 16:18:18 -0000 1.4
+++ PrevaylerTest.java 11 Aug 2003 14:52:41 -0000 1.5
@@ -16,6 +16,7 @@
import org.codehaus.nanning.config.AspectSystem;
import org.codehaus.nanning.config.FindTargetMixinAspect;
import org.prevayler.PrevaylerFactory;
+import org.prevayler.Prevayler;
public class PrevaylerTest extends AbstractAttributesTest {
@@ -69,6 +70,92 @@
CurrentPrevayler.withPrevayler(loadedPrevayler, new PrevaylerAction() {
public Object run() throws Exception {
assertEquals("string", currentMySystem().getSimpleString());
+ return null;
+ }
+ });
+ }
+
+ /**
+ * @entity
+ */
+ public static interface CallingBack {
+ /**
+ * @transaction
+ */
+ void callback(CalledBack arg, String valueMadePersistent);
+ }
+
+ public static class CallingBackImpl implements CallingBack, Serializable {
+ public void callback(CalledBack arg, String valueMadePersistent) {
+ arg.setValue(valueMadePersistent);
+ arg.setCallingBack((CallingBack) Aspects.getThis());
+ }
+ }
+
+ /**
+ * @entity
+ */
+ public static interface CalledBack {
+ /**
+ * @transaction
+ */
+ void setValue(String value);
+ String getValue();
+ /**
+ * @transaction
+ */
+ void setCallingBack(CallingBack callingBack);
+ CallingBack getCallingBack();
+ }
+
+ public static class CalledBackImpl implements CalledBack, Serializable {
+ String value;
+ CallingBack callingBack;
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public CallingBack getCallingBack() {
+ return callingBack;
+ }
+
+ public void setCallingBack(CallingBack callingBack) {
+ this.callingBack = callingBack;
+ }
+ }
+
+
+ public void testMethodCallingBackOnArgumentIsMadePersistent() throws Exception {
+ Prevayler prevayler = newPrevayler();
+ final CallingBack callingBack = (CallingBack) aspectFactory.newInstance(CallingBack.class);
+ final CalledBack calledBack = (CalledBack) aspectFactory.newInstance(CalledBack.class);
+
+ CurrentPrevayler.withPrevayler(prevayler, new PrevaylerAction() {
+ public Object run() throws Exception {
+ currentMySystem().add(callingBack);
+ currentMySystem().add(calledBack);
+
+ callingBack.callback(calledBack, "value");
+ assertEquals("value", calledBack.getValue());
+ return null;
+ }
+ });
+
+ final long calledBackId = ((IdentifyingSystem) prevayler.prevalentSystem()).getObjectID(calledBack);
+ final long callingBackId = ((IdentifyingSystem) prevayler.prevalentSystem()).getObjectID(callingBack);
+
+ Prevayler loadedPrevayler = newPrevayler();
+ CurrentPrevayler.withPrevayler(loadedPrevayler, new PrevaylerAction() {
+ public Object run() throws Exception {
+ CalledBack calledBack = (CalledBack) currentMySystem().getObjectWithID(calledBackId);
+ CallingBack callingBack = (CallingBack) currentMySystem().getObjectWithID(callingBackId);
+ assertEquals("value", calledBack.getValue());
+ assertSame(callingBack, calledBack.getCallingBack());
return null;
}
});