diff --git a/spring-data-document-parent/pom.xml b/spring-data-document-parent/pom.xml
index 5d08af334..077bf9455 100644
--- a/spring-data-document-parent/pom.xml
+++ b/spring-data-document-parent/pom.xml
@@ -16,6 +16,8 @@
1.8.4
1.5.10
3.0.5.RELEASE
+ 1.0.0.BUILD-SNAPSHOT
+ 1.6.11.M2
@@ -111,6 +113,11 @@
spring-tx
${org.springframework.version}
+
+ org.springframework
+ spring-orm
+ ${org.springframework.version}
+
org.springframework
spring-test
@@ -119,6 +126,16 @@
+
+ org.springframework.data
+ spring-data-commons-core
+ ${data.commons.version}
+
+
+ org.springframework.data
+ spring-data-commons-aspects
+ ${data.commons.version}
+
org.springframework.data
spring-data-document-core
diff --git a/spring-data-mongodb-cross-store/.classpath b/spring-data-mongodb-cross-store/.classpath
new file mode 100644
index 000000000..399cc9b91
--- /dev/null
+++ b/spring-data-mongodb-cross-store/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-data-mongodb-cross-store/.project b/spring-data-mongodb-cross-store/.project
new file mode 100644
index 000000000..20315de9a
--- /dev/null
+++ b/spring-data-mongodb-cross-store/.project
@@ -0,0 +1,24 @@
+
+
+ spring-data-mongodb-cross-store
+
+
+
+
+
+ org.eclipse.ajdt.core.ajbuilder
+
+
+
+
+ org.maven.ide.eclipse.maven2Builder
+
+
+
+
+
+ org.eclipse.ajdt.ui.ajnature
+ org.eclipse.jdt.core.javanature
+ org.maven.ide.eclipse.maven2Nature
+
+
diff --git a/spring-data-mongodb-cross-store/.settings/org.eclipse.jdt.core.prefs b/spring-data-mongodb-cross-store/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..2bafcc110
--- /dev/null
+++ b/spring-data-mongodb-cross-store/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,6 @@
+#Mon Feb 28 16:26:01 EST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/spring-data-mongodb-cross-store/.settings/org.maven.ide.eclipse.prefs b/spring-data-mongodb-cross-store/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 000000000..e53ed8823
--- /dev/null
+++ b/spring-data-mongodb-cross-store/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,8 @@
+#Mon Feb 28 16:25:59 EST 2011
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml
new file mode 100644
index 000000000..ae18b6747
--- /dev/null
+++ b/spring-data-mongodb-cross-store/pom.xml
@@ -0,0 +1,203 @@
+
+ 4.0.0
+
+ org.springframework.data
+ spring-data-document-parent
+ 1.0.0.BUILD-SNAPSHOT
+ ../spring-data-document-parent/pom.xml
+
+ spring-data-mongodb-cross-store
+ jar
+ Spring Data MongoDB Cross-store Persistence Support
+
+
+
+
+ org.springframework
+ spring-beans
+
+
+ org.springframework
+ spring-tx
+
+
+ org.springframework
+ spring-orm
+
+
+
+
+ org.springframework.data
+ spring-data-commons-core
+
+
+ org.springframework.data
+ spring-data-commons-aspects
+
+
+ org.springframework.data
+ spring-data-mongodb
+
+
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.slf4j
+ jcl-over-slf4j
+ compile
+
+
+ org.slf4j
+ slf4j-log4j12
+ runtime
+
+
+ log4j
+ log4j
+
+
+ javax.mail
+ mail
+
+
+ javax.jms
+ jms
+
+
+ com.sun.jdmk
+ jmxtools
+
+
+ com.sun.jmx
+ jmxri
+
+
+ runtime
+
+
+
+ javax.annotation
+ jsr250-api
+ true
+
+
+
+ org.mockito
+ mockito-all
+ test
+
+
+
+ junit
+ junit
+
+
+
+ org.aspectj
+ aspectjrt
+ ${aspectj.version}
+
+
+ cglib
+ cglib
+ 2.2
+
+
+
+
+ org.hibernate.javax.persistence
+ hibernate-jpa-2.0-api
+ 1.0.0.Final
+
+
+
+
+ org.hibernate
+ hibernate-entitymanager
+ 3.5.5-Final
+ test
+
+
+ hsqldb
+ hsqldb
+ 1.8.0.10
+ test
+
+
+ javax.validation
+ validation-api
+ 1.0.0.GA
+
+
+ org.hibernate
+ hibernate-validator
+ 4.0.2.GA
+ test
+
+
+
+
+
+ jboss-repository
+ JBoss Public Repository
+ http://repository.jboss.org/nexus/content/groups/public-jboss
+
+
+ spring-maven-snapshot
+
+ true
+
+ Springframework Maven SNAPSHOT Repository
+ http://maven.springframework.org/snapshot
+
+
+
+
+
+ org.codehaus.mojo
+ aspectj-maven-plugin
+ 1.2
+
+
+ org.aspectj
+ aspectjrt
+ ${aspectj.version}
+
+
+ org.aspectj
+ aspectjtools
+ ${aspectj.version}
+
+
+
+
+
+ compile
+ test-compile
+
+
+
+
+ true
+
+
+ org.springframework
+ spring-aspects
+
+
+
+ 1.6
+ 1.6
+
+
+
+
+
diff --git a/spring-data-mongodb-cross-store/src/main/java/org/springframework/persistence/document/DocumentEntity.java b/spring-data-mongodb-cross-store/src/main/java/org/springframework/persistence/document/DocumentEntity.java
new file mode 100644
index 000000000..b3130164e
--- /dev/null
+++ b/spring-data-mongodb-cross-store/src/main/java/org/springframework/persistence/document/DocumentEntity.java
@@ -0,0 +1,19 @@
+package org.springframework.persistence.document;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation to denote an object that should be transparently persisted
+ * using MongoDB
+ *
+ * @author Thomas Risberg
+ */
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface DocumentEntity {
+
+}
diff --git a/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/Account.java b/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/Account.java
new file mode 100644
index 000000000..26edd39f3
--- /dev/null
+++ b/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/Account.java
@@ -0,0 +1,49 @@
+package org.springframework.data.document.persistence;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Account {
+
+ private String name;
+
+ private float balance;
+
+ private String friendlyName;
+
+ private String whatever;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public float getBalance() {
+ return balance;
+ }
+
+ public void setBalance(float balance) {
+ this.balance = balance;
+ }
+
+ public String getFriendlyName() {
+ return friendlyName;
+ }
+
+ public void setFriendlyName(String friendlyName) {
+ this.friendlyName = friendlyName;
+ }
+
+ public String getWhatever() {
+ return whatever;
+ }
+
+ public void setWhatever(String whatever) {
+ this.whatever = whatever;
+ }
+
+
+}
diff --git a/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/CrossStoreMongoTests.java b/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/CrossStoreMongoTests.java
new file mode 100644
index 000000000..6cc76521d
--- /dev/null
+++ b/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/CrossStoreMongoTests.java
@@ -0,0 +1,33 @@
+package org.springframework.data.document.persistence;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.Rollback;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.mongodb.Mongo;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = "classpath:/META-INF/spring/applicationContext.xml")
+public class CrossStoreMongoTests {
+
+ @Autowired
+ private Mongo mongo;
+
+ @Test
+// @Transactional
+// @Rollback(false)
+ public void testUserConstructor() {
+ int age = 33;
+ MongoPerson p = new MongoPerson("Thomas", age);
+ //Assert.assertEquals(p.getRedisValue().getString("RedisPerson.name"), p.getName());
+ Assert.assertEquals(age, p.getAge());
+ p.birthday();
+ Assert.assertEquals(1 + age, p.getAge());
+ }
+
+}
diff --git a/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/MongoPerson.java b/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/MongoPerson.java
new file mode 100644
index 000000000..c1a32ee02
--- /dev/null
+++ b/spring-data-mongodb-cross-store/src/test/java/org/springframework/data/document/persistence/MongoPerson.java
@@ -0,0 +1,63 @@
+package org.springframework.data.document.persistence;
+
+import org.springframework.persistence.RelatedEntity;
+import org.springframework.persistence.document.DocumentEntity;
+
+@DocumentEntity
+public class MongoPerson {
+
+ // TODO only public because of AspectJ bug
+ public String name;
+
+ public int age;
+
+ public java.util.Date birthDate;
+
+ // TODO only public to check weaving bug--
+ // seems to work whereas private didn't
+ @RelatedEntity
+ public Account account;
+
+ public MongoPerson(String name, int age) {
+ this.name = name;
+ this.age = age;
+ this.birthDate = new java.util.Date();
+ }
+
+ public void birthday() {
+ ++age;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public java.util.Date getBirthDate() {
+ return birthDate;
+ }
+
+ public void setBirthDate(java.util.Date birthDate) {
+ this.birthDate = birthDate;
+ }
+
+ public Account getAccount() {
+ return account;
+ }
+
+ public void setAccount(Account account) {
+ this.account = account;
+ }
+
+}
diff --git a/spring-data-mongodb-cross-store/src/test/resources/META-INF/spring/applicationContext.xml b/spring-data-mongodb-cross-store/src/test/resources/META-INF/spring/applicationContext.xml
new file mode 100644
index 000000000..0e0d85184
--- /dev/null
+++ b/spring-data-mongodb-cross-store/src/test/resources/META-INF/spring/applicationContext.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 3d2b56fdd..1fa14284d 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -35,7 +35,6 @@
org.springframework.data
spring-data-commons-core
- 1.0.0.BUILD-SNAPSHOT