Browse Source

DATAMONGO-980 - Use meta annotations from commons for @Score.

We now use Spring Data Commons' @ReadOnlyProperty to meta-annotate @Score to mark it as read-only property.

Original pull request: #201.
Related tickets: DATACMNS-534.
pull/205/merge
Christoph Strobl 12 years ago committed by Oliver Gierke
parent
commit
11417144bd
  1. 2
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java
  2. 9
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java
  3. 38
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/Calculated.java
  4. 9
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java
  5. 4
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/TextScore.java
  6. 4
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java

2
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java

@ -385,7 +385,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App @@ -385,7 +385,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App
entity.doWithProperties(new PropertyHandler<MongoPersistentProperty>() {
public void doWithPersistentProperty(MongoPersistentProperty prop) {
if (prop.equals(idProperty) || prop.isCalculatedProperty()) {
if (prop.equals(idProperty) || !prop.isWritable()) {
return;
}

9
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java

@ -201,13 +201,4 @@ public class BasicMongoPersistentProperty extends AnnotationBasedPersistentPrope @@ -201,13 +201,4 @@ public class BasicMongoPersistentProperty extends AnnotationBasedPersistentPrope
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);
}
}

38
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/Calculated.java

@ -1,38 +0,0 @@ @@ -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. <br/>
* <b>NOTE</b>: 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 {
}

9
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java

@ -78,15 +78,6 @@ public interface MongoPersistentProperty extends PersistentProperty<MongoPersist @@ -78,15 +78,6 @@ public interface MongoPersistentProperty extends PersistentProperty<MongoPersist
*/
boolean isTextScoreProperty();
/**
* Returns wheter the property is calculated eiter internally or on the server and therefore must not be written when
* saved.
*
* @return
* @since 1.6
*/
boolean isCalculatedProperty();
/**
* Returns the {@link DBRef} if the property is a reference.
*

4
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/TextScore.java

@ -21,6 +21,8 @@ import java.lang.annotation.Retention; @@ -21,6 +21,8 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.data.annotation.ReadOnlyProperty;
/**
* {@link TextScore} marks the property to be considered as the on server calculated {@literal textScore} when doing
* full text search. <br />
@ -29,7 +31,7 @@ import java.lang.annotation.Target; @@ -29,7 +31,7 @@ import java.lang.annotation.Target;
* @author Christoph Strobl
* @since 1.6
*/
@Calculated
@ReadOnlyProperty
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)

4
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentPropertyUnitTests.java

@ -167,13 +167,13 @@ public class BasicMongoPersistentPropertyUnitTests { @@ -167,13 +167,13 @@ public class BasicMongoPersistentPropertyUnitTests {
* @see DATAMONGO-976
*/
@Test
public void shouldDetectTextScoreAsCalculatedProperty() {
public void shouldDetectTextScoreAsReadOnlyProperty() {
BasicMongoPersistentEntity<DocumentWithTextScoreProperty> persistentEntity = new BasicMongoPersistentEntity<DocumentWithTextScoreProperty>(
ClassTypeInformation.from(DocumentWithTextScoreProperty.class));
MongoPersistentProperty property = getPropertyFor(persistentEntity, "score");
assertThat(property.isCalculatedProperty(), is(true));
assertThat(property.isWritable(), is(false));
}
private MongoPersistentProperty getPropertyFor(Field field) {

Loading…
Cancel
Save