diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/mapping/TypeBasedCollectionResourceMapping.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/mapping/TypeBasedCollectionResourceMapping.java index 9f682b8db..176b00369 100644 --- a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/mapping/TypeBasedCollectionResourceMapping.java +++ b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/mapping/TypeBasedCollectionResourceMapping.java @@ -15,6 +15,8 @@ */ package org.springframework.data.rest.repository.mapping; +import java.lang.reflect.Modifier; + import org.springframework.core.annotation.AnnotationUtils; import org.springframework.data.rest.core.Path; import org.springframework.data.rest.repository.annotation.RestResource; @@ -78,7 +80,7 @@ public class TypeBasedCollectionResourceMapping implements CollectionResourceMap */ @Override public Boolean isExported() { - return annotation == null ? true : annotation.exported(); + return annotation == null ? Modifier.isPublic(type.getModifiers()) : annotation.exported(); } /* diff --git a/spring-data-rest-repository/src/test/java/org/springframework/data/rest/repository/mapping/RepositoryCollectionResourceMappingUnitTests.java b/spring-data-rest-repository/src/test/java/org/springframework/data/rest/repository/mapping/RepositoryCollectionResourceMappingUnitTests.java index b5206ecd9..696d8ec55 100644 --- a/spring-data-rest-repository/src/test/java/org/springframework/data/rest/repository/mapping/RepositoryCollectionResourceMappingUnitTests.java +++ b/spring-data-rest-repository/src/test/java/org/springframework/data/rest/repository/mapping/RepositoryCollectionResourceMappingUnitTests.java @@ -64,12 +64,12 @@ public class RepositoryCollectionResourceMappingUnitTests { assertThat(mapping.isExported(), is(true)); } - static class Person {} + public static class Person {} @RestResource(path = "bar", rel = "foo", exported = false) static class AnnotatedPerson {} - interface PersonRepository extends Repository {} + public interface PersonRepository extends Repository {} interface AnnotatedPersonRepository extends Repository {} diff --git a/spring-data-rest-repository/src/test/java/org/springframework/data/rest/repository/mapping/TypeBasedCollectionResourceMappingUnitTest.java b/spring-data-rest-repository/src/test/java/org/springframework/data/rest/repository/mapping/TypeBasedCollectionResourceMappingUnitTest.java index e91cc9e0c..24d57be68 100644 --- a/spring-data-rest-repository/src/test/java/org/springframework/data/rest/repository/mapping/TypeBasedCollectionResourceMappingUnitTest.java +++ b/spring-data-rest-repository/src/test/java/org/springframework/data/rest/repository/mapping/TypeBasedCollectionResourceMappingUnitTest.java @@ -51,12 +51,23 @@ public class TypeBasedCollectionResourceMappingUnitTest { assertThat(mapping.isExported(), is(true)); } - class Sample { + /** + * @see DATAREST-99 + */ + @Test + public void doesNotExportNonPublicTypesByDefault() { + CollectionResourceMapping mapping = new TypeBasedCollectionResourceMapping(HiddenSample.class); + + assertThat(mapping.isExported(), is(false)); } + public interface Sample {} + + interface HiddenSample {} + @RestResource(rel = "myRel") - class CustomizedSample { + interface CustomizedSample { } }