#130 - Removed @Inherited annotation from @EnableHypermediaSupport.

This commit is contained in:
Oliver Gierke
2013-12-20 18:59:27 +01:00
parent 7ed46deb7b
commit dfa30398b6
2 changed files with 36 additions and 17 deletions

View File

@@ -17,7 +17,6 @@ package org.springframework.hateoas.config;
import java.lang.annotation.Documented;
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;
@@ -44,7 +43,6 @@ import org.springframework.hateoas.LinkDiscoverer;
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
@Documented
@Import(HypermediaSupportBeanDefinitionRegistrar.class)
public @interface EnableHypermediaSupport {

View File

@@ -29,6 +29,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.hateoas.EntityLinks;
import org.springframework.hateoas.LinkDiscoverer;
import org.springframework.hateoas.LinkDiscoverers;
@@ -56,21 +57,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
public class EnableHypermediaSupportIntegrationTest {
@Test
@SuppressWarnings({ "unchecked" })
public void bootstrapHalConfiguration() {
ApplicationContext context = new AnnotationConfigApplicationContext(HalConfig.class);
assertEntityLinksSetUp(context);
assertThat(context.getBean(LinkDiscoverer.class), is(instanceOf(HalLinkDiscoverer.class)));
assertThat(context.getBean(ObjectMapper.class), is(notNullValue()));
RequestMappingHandlerAdapter rmha = context.getBean(RequestMappingHandlerAdapter.class);
assertThat(rmha.getMessageConverters(), Matchers.<HttpMessageConverter<?>> hasItems(
instanceOf(MappingJackson2HttpMessageConverter.class), instanceOf(MappingJacksonHttpMessageConverter.class)));
AnnotationMethodHandlerAdapter amha = context.getBean(AnnotationMethodHandlerAdapter.class);
assertThat(Arrays.asList(amha.getMessageConverters()), Matchers.<HttpMessageConverter<?>> hasItems(
instanceOf(MappingJackson2HttpMessageConverter.class), instanceOf(MappingJacksonHttpMessageConverter.class)));
assertHalSetupForConfigClass(HalConfig.class);
}
@Test
@@ -84,6 +72,11 @@ public class EnableHypermediaSupportIntegrationTest {
assertRelProvidersSetUp(context);
}
@Test
public void foo() {
assertHalSetupForConfigClass(ExtendedHalConfig.class);
}
private static void assertEntityLinksSetUp(ApplicationContext context) {
Map<String, EntityLinks> discoverers = context.getBeansOfType(EntityLinks.class);
@@ -96,8 +89,25 @@ public class EnableHypermediaSupportIntegrationTest {
assertThat(discoverers.values(), Matchers.<RelProvider> hasItem(instanceOf(DelegatingRelProvider.class)));
}
@SuppressWarnings({ "unchecked" })
private static void assertHalSetupForConfigClass(Class<?> configClass) {
ApplicationContext context = new AnnotationConfigApplicationContext(configClass);
assertEntityLinksSetUp(context);
assertThat(context.getBean(LinkDiscoverer.class), is(instanceOf(HalLinkDiscoverer.class)));
assertThat(context.getBean(ObjectMapper.class), is(notNullValue()));
RequestMappingHandlerAdapter rmha = context.getBean(RequestMappingHandlerAdapter.class);
assertThat(rmha.getMessageConverters(), Matchers.<HttpMessageConverter<?>> hasItems(
instanceOf(MappingJackson2HttpMessageConverter.class), instanceOf(MappingJacksonHttpMessageConverter.class)));
AnnotationMethodHandlerAdapter amha = context.getBean(AnnotationMethodHandlerAdapter.class);
assertThat(Arrays.asList(amha.getMessageConverters()), Matchers.<HttpMessageConverter<?>> hasItems(
instanceOf(MappingJackson2HttpMessageConverter.class), instanceOf(MappingJacksonHttpMessageConverter.class)));
}
@Configuration
@EnableHypermediaSupport(type = HypermediaType.HAL)
@Import(DelegateConfig.class)
static class HalConfig {
static int numberOfMessageConverters = 0;
@@ -117,4 +127,15 @@ public class EnableHypermediaSupportIntegrationTest {
return adapter;
}
}
@Configuration
static class ExtendedHalConfig extends HalConfig {
}
@Configuration
@EnableHypermediaSupport(type = HypermediaType.HAL)
static class DelegateConfig {
}
}