Add @EnableEntityLinks to hypermedia support

This commit is contained in:
Dave Syer 2014-06-16 18:19:51 +01:00
parent 2ddf322a65
commit 571a82fe90
2 changed files with 21 additions and 4 deletions

View File

@ -23,11 +23,14 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.hateoas.EntityLinks;
import org.springframework.hateoas.LinkDiscoverers;
import org.springframework.hateoas.Resource;
import org.springframework.hateoas.config.EnableEntityLinks;
import org.springframework.hateoas.config.EnableHypermediaSupport;
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;
import org.springframework.plugin.core.Plugin;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* {@link EnableAutoConfiguration Auto-configuration} for Spring HATEOAS's
@ -38,17 +41,21 @@ import org.springframework.plugin.core.Plugin;
* @since 1.1.0
*/
@Configuration
@ConditionalOnClass(Resource.class)
@ConditionalOnMissingBean(LinkDiscoverers.class)
@ConditionalOnClass({ Resource.class, RequestMapping.class, Plugin.class })
@ConditionalOnWebApplication
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class HypermediaAutoConfiguration {
@Configuration
@ConditionalOnMissingBean(LinkDiscoverers.class)
@EnableHypermediaSupport(type = HypermediaType.HAL)
@ConditionalOnClass(Plugin.class)
@ConditionalOnWebApplication
protected static class HypermediaConfiguration {
}
@Configuration
@ConditionalOnMissingBean(EntityLinks.class)
@EnableEntityLinks
protected static class EntityLinksConfiguration {
}
}

View File

@ -19,6 +19,7 @@ package org.springframework.boot.autoconfigure.hateoas;
import org.junit.After;
import org.junit.Test;
import org.springframework.context.annotation.Configuration;
import org.springframework.hateoas.EntityLinks;
import org.springframework.hateoas.LinkDiscoverer;
import org.springframework.hateoas.LinkDiscoverers;
import org.springframework.hateoas.MediaTypes;
@ -58,6 +59,15 @@ public class HypermediaAutoConfigurationTests {
assertTrue(HalLinkDiscoverer.class.isInstance(discoverer));
}
@Test
public void entityLinksCreated() throws Exception {
this.context = new AnnotationConfigWebApplicationContext();
this.context.register(HypermediaAutoConfiguration.class);
this.context.refresh();
EntityLinks discoverers = this.context.getBean(EntityLinks.class);
assertNotNull(discoverers);
}
@Test
public void doesBackOffIfEnableHypermediaSupportIsDeclaredManually() {