[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;
}
});