From 09341f6eec00f8b2e6374d46e41c64eaf44256df Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 7 Jul 2014 20:30:30 +0200 Subject: [PATCH 1/3] DATAMONGO-980 - Use meta annotations from commons for @Score. Prepare issue branch. --- pom.xml | 4 ++-- spring-data-mongodb-cross-store/pom.xml | 4 ++-- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb-log4j/pom.xml | 2 +- spring-data-mongodb/pom.xml | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index a5b1a5ba1d..164436e1ce 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 1.6.0.BUILD-SNAPSHOT + 1.6.0.DATAMONGO-980-SNAPSHOT pom Spring Data MongoDB @@ -29,7 +29,7 @@ multi spring-data-mongodb - 1.9.0.BUILD-SNAPSHOT + 1.9.0.DATACMNS-534-SNAPSHOT 2.12.1 2.12.1 diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml index df9b2107a0..c6f8541f9c 100644 --- a/spring-data-mongodb-cross-store/pom.xml +++ b/spring-data-mongodb-cross-store/pom.xml @@ -6,7 +6,7 @@ org.springframework.data spring-data-mongodb-parent - 1.6.0.BUILD-SNAPSHOT + 1.6.0.DATAMONGO-980-SNAPSHOT ../pom.xml @@ -48,7 +48,7 @@ org.springframework.data spring-data-mongodb - 1.6.0.BUILD-SNAPSHOT + 1.6.0.DATAMONGO-980-SNAPSHOT diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 90e912f679..145a344d3c 100644 --- a/spring-data-mongodb-distribution/pom.xml +++ b/spring-data-mongodb-distribution/pom.xml @@ -13,7 +13,7 @@ org.springframework.data spring-data-mongodb-parent - 1.6.0.BUILD-SNAPSHOT + 1.6.0.DATAMONGO-980-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml index 82ecfa46d5..a1f4882a48 100644 --- a/spring-data-mongodb-log4j/pom.xml +++ b/spring-data-mongodb-log4j/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 1.6.0.BUILD-SNAPSHOT + 1.6.0.DATAMONGO-980-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 25453a7917..da5bfe69e2 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -11,7 +11,7 @@ org.springframework.data spring-data-mongodb-parent - 1.6.0.BUILD-SNAPSHOT + 1.6.0.DATAMONGO-980-SNAPSHOT ../pom.xml From 0361450d758102dc473ce8a68e05904e94055520 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 7 Jul 2014 21:49:18 +0200 Subject: [PATCH 2/3] DATAMONGO-980 - Use meta annotations from commons for @Score. Remove obsolete meta annotation @Calculated and replace it with @ReadingProperty from spring data commons. Additionally MappingMongoConverter makes use of doWithWritingProperties for selecting properties to be written into the DBObject saved in mongodb. --- .../core/convert/MappingMongoConverter.java | 4 +- .../mapping/BasicMongoPersistentProperty.java | 9 ----- .../data/mongodb/core/mapping/Calculated.java | 38 ------------------- .../core/mapping/MongoPersistentProperty.java | 9 ----- .../data/mongodb/core/mapping/TextScore.java | 4 +- ...BasicMongoPersistentPropertyUnitTests.java | 2 +- .../MongoPersistentEntityTestDummy.java | 10 +++++ 7 files changed, 16 insertions(+), 60 deletions(-) delete mode 100644 spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/Calculated.java diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 2902b9c91e..2b565f9055 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -382,10 +382,10 @@ protected void writeInternal(Object obj, final DBObject dbo, MongoPersistentEnti } // Write the properties - entity.doWithProperties(new PropertyHandler() { + entity.doWithWritingProperties(new PropertyHandler() { public void doWithPersistentProperty(MongoPersistentProperty prop) { - if (prop.equals(idProperty) || prop.isCalculatedProperty()) { + if (prop.equals(idProperty)) { return; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java index c44e780147..bd2aab0eb8 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java @@ -201,13 +201,4 @@ public boolean isLanguageProperty() { public boolean isTextScoreProperty() { return isAnnotationPresent(TextScore.class); } - - /* - * (non-Javadoc) - * @see org.springframework.data.mongodb.core.mapping.MongoPersistentProperty#isCalculatedProperty() - */ - @Override - public boolean isCalculatedProperty() { - return isAnnotationPresent(Calculated.class); - } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/Calculated.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/Calculated.java deleted file mode 100644 index a38cc9e125..0000000000 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/Calculated.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2014 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.mongodb.core.mapping; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Meta-annotation to be used to annotate {@link java.lang.annotation.Annotation}s that mark properties either - * calculated internally or on server.
- * NOTE: Different to {@link org.springframework.data.annotation.Transient}, {@link Calculated} properties are - * considered when reading from the store. - * - * @author Christoph Strobl - * @since 1.6 - */ -@Documented -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.ANNOTATION_TYPE) -public @interface Calculated { - -} diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java index 9b1ce2a00d..7887a1586b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java @@ -78,15 +78,6 @@ public interface MongoPersistentProperty extends PersistentProperty @@ -29,7 +31,7 @@ * @author Christoph Strobl * @since 1.6 */ -@Calculated +@ReadingProperty @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java index 89388ed776..5df4c6792e 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java @@ -173,7 +173,7 @@ public void shouldDetectTextScoreAsCalculatedProperty() { ClassTypeInformation.from(DocumentWithTextScoreProperty.class)); MongoPersistentProperty property = getPropertyFor(persistentEntity, "score"); - assertThat(property.isCalculatedProperty(), is(true)); + assertThat(property.isReading(), is(true)); } private MongoPersistentProperty getPropertyFor(Field field) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/MongoPersistentEntityTestDummy.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/MongoPersistentEntityTestDummy.java index 7577edd136..bac3eaa006 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/MongoPersistentEntityTestDummy.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/MongoPersistentEntityTestDummy.java @@ -214,4 +214,14 @@ public MongoPersistentEntityTestDummy build() { public String getLanguage() { return null; } + + @Override + public void doWithWritingProperties(PropertyHandler handler) { + doWithProperties(handler); + } + + @Override + public void doWithReadingProperties(PropertyHandler handler) { + doWithProperties(handler); + } } From ddb29f479cc4b38e2cde2d63841e3a46ccfa8b45 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 8 Jul 2014 20:19:38 +0200 Subject: [PATCH 3/3] DATAMONGO-980 - Use meta annotations from commons for @Score. Remove obsolete meta annotation @Calculated and replace it with @ReadOnlyProperty from spring data commons. MappingMongoConverter makes use of .shallBePersisted for selecting properties to be written into the DBObject that is saved in mongodb. --- .../data/mongodb/core/convert/MappingMongoConverter.java | 4 ++-- .../springframework/data/mongodb/core/mapping/TextScore.java | 4 ++-- .../core/mapping/BasicMongoPersistentPropertyUnitTests.java | 2 +- .../mongodb/core/mapping/MongoPersistentEntityTestDummy.java | 4 ---- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 2b565f9055..5ad850973d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -382,10 +382,10 @@ protected void writeInternal(Object obj, final DBObject dbo, MongoPersistentEnti } // Write the properties - entity.doWithWritingProperties(new PropertyHandler() { + entity.doWithProperties(new PropertyHandler() { public void doWithPersistentProperty(MongoPersistentProperty prop) { - if (prop.equals(idProperty)) { + if (prop.equals(idProperty) || !prop.shallBePersisted()) { return; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/TextScore.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/TextScore.java index 9449dc65b3..4dafd56442 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/TextScore.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/TextScore.java @@ -21,7 +21,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.springframework.data.annotation.ReadingProperty; +import org.springframework.data.annotation.ReadOnlyProperty; /** * {@link TextScore} marks the property to be considered as the on server calculated {@literal textScore} when doing @@ -31,7 +31,7 @@ * @author Christoph Strobl * @since 1.6 */ -@ReadingProperty +@ReadOnlyProperty @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java index 5df4c6792e..3ebdd15c43 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java @@ -173,7 +173,7 @@ public void shouldDetectTextScoreAsCalculatedProperty() { ClassTypeInformation.from(DocumentWithTextScoreProperty.class)); MongoPersistentProperty property = getPropertyFor(persistentEntity, "score"); - assertThat(property.isReading(), is(true)); + assertThat(property.isReadOnly(), is(true)); } private MongoPersistentProperty getPropertyFor(Field field) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/MongoPersistentEntityTestDummy.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/MongoPersistentEntityTestDummy.java index bac3eaa006..697d4d31de 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/MongoPersistentEntityTestDummy.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/MongoPersistentEntityTestDummy.java @@ -220,8 +220,4 @@ public void doWithWritingProperties(PropertyHandler han doWithProperties(handler); } - @Override - public void doWithReadingProperties(PropertyHandler handler) { - doWithProperties(handler); - } }