From 571a82fe9016a0d5bea13814927bfec0b6f237a1 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 16 Jun 2014 18:19:51 +0100 Subject: [PATCH] Add @EnableEntityLinks to hypermedia support --- .../hateoas/HypermediaAutoConfiguration.java | 15 +++++++++++---- .../hateoas/HypermediaAutoConfigurationTests.java | 10 ++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfiguration.java index ad1a5f977c..4fbd88563b 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfiguration.java @@ -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 { } } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfigurationTests.java index c0961f6cfd..e33c4398d9 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfigurationTests.java @@ -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() {