From 46d6dffdd46c5b29addc76170de614ad3bfe3121 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Tue, 7 Jun 2011 11:42:53 -0700 Subject: [PATCH] DATADOC-167 - @Documentation annotation is now inherited into subclasses --- .../document/mongodb/mapping/Document.java | 4 +- .../BasicMongoPersistentEntityUnitTests.java | 47 +++++++++++++++++++ src/main/resources/changelog.txt | 6 +++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasicMongoPersistentEntityUnitTests.java diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/Document.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/Document.java index 6784b0280..3ff7547dc 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/Document.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/Document.java @@ -17,6 +17,7 @@ package org.springframework.data.document.mongodb.mapping; import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @@ -27,12 +28,13 @@ import org.springframework.data.annotation.Persistent; * Identifies a domain object to be persisted to MongoDB. * * @author Jon Brisbin + * @author Oliver Gierke ogierke@vmware.com */ @Persistent +@Inherited @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.TYPE }) public @interface Document { String collection() default ""; - } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasicMongoPersistentEntityUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasicMongoPersistentEntityUnitTests.java new file mode 100644 index 000000000..b4882cc9f --- /dev/null +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasicMongoPersistentEntityUnitTests.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2011 by the original author(s). + * + * 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.document.mongodb.mapping; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.*; + +import org.junit.Test; +import org.springframework.data.util.ClassTypeInformation; + +/** + * Unit tests for {@link BasicMongoPersistentEntity}. + * + * @author Oliver Gierke + */ +public class BasicMongoPersistentEntityUnitTests { + + @Test + public void subclassInheritsAtDocumentAnnotation() { + + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + ClassTypeInformation.from(Person.class)); + assertThat(entity.getCollection(), is("contacts")); + } + + @Document(collection = "contacts") + class Contact { + + } + + class Person extends Contact { + + } +} diff --git a/src/main/resources/changelog.txt b/src/main/resources/changelog.txt index d117d01fe..4143402fb 100644 --- a/src/main/resources/changelog.txt +++ b/src/main/resources/changelog.txt @@ -1,6 +1,12 @@ Spring Data Document Changelog ============================================= +Changes in version 1.0.0.RC1 MongoDB (2011-??-??) +------------------------------------------------- + +Mapping +* [DATADOC-167] - @Documentation annotation is now inherited into subclasses + Changes in version 1.0.0.M3 MongoDB (2011-06-02) ------------------------------------------------