Class ControllerEntityLinks

java.lang.Object
org.springframework.hateoas.server.core.AbstractEntityLinks
org.springframework.hateoas.server.core.ControllerEntityLinks
All Implemented Interfaces:
EntityLinks, org.springframework.plugin.core.Plugin<Class<?>>

public class ControllerEntityLinks extends AbstractEntityLinks
EntityLinks implementation which assumes a certain URI mapping structure:
  1. A class-level ExposesResourceFor annotation to declare that the annotated controller exposes collection and item resources for.
  2. An RequestMapping annotation to form the base URI of the collection resource.
  3. A controller method with a mapping annotation to actually handle at least one HTTP method.
  4. A controller method that maps a subordinate resource taking a path variable to identify an item resource.
 @Controller
 @ExposesResourceFor(Order.class)
 @RequestMapping("/orders")
 class OrderController {

   @GetMapping
   ResponseEntity orders(…) { … }

   @GetMapping("/{id}")
   ResponseEntity order(@PathVariable("id") … ) { … }
 }
 
Author:
Oliver Gierke
  • Constructor Details

    • ControllerEntityLinks

      public ControllerEntityLinks(Iterable<? extends Class<?>> controllerTypes, LinkBuilderFactory<? extends LinkBuilder> linkBuilderFactory)
      Creates a new ControllerEntityLinks inspecting the configured classes for the given annotation.
      Parameters:
      controllerTypes - the controller classes to be inspected, must not be null.
      linkBuilderFactory - the LinkBuilder to use to create links, must not be null.
  • Method Details

    • linkFor

      public LinkBuilder linkFor(Class<?> entity)
      Description copied from interface: EntityLinks
      Returns a LinkBuilder able to create links to the controller managing the given entity type. Expects a controller being mapped to a fully expanded URI template (i.e. not path variables being used).
      Parameters:
      entity - the entity type to point to, must not be null.
      Returns:
      the LinkBuilder pointing to the collection resource. Will never be null.
    • linkFor

      public LinkBuilder linkFor(Class<?> entity, Object... parameters)
      Description copied from interface: EntityLinks
      Returns a LinkBuilder able to create links to the controller managing the given entity type, unfolding the given parameters into the URI template the backing controller is mapped to.
      Parameters:
      entity - the entity type to point to, must not be null.
      Returns:
      the LinkBuilder pointing to the collection resource.
    • linkToCollectionResource

      public Link linkToCollectionResource(Class<?> entity)
      Description copied from interface: EntityLinks
      Creates a Link pointing to the collection resource of the given type. The relation type of the link will be determined by the implementation class and should be defaulted to IanaLinkRelations.SELF.
      Parameters:
      entity - the entity type to point to, must not be null.
      Returns:
      the Link pointing to the collection resource exposed for the given entity. Will never be null.
    • linkToItemResource

      public Link linkToItemResource(Class<?> entity, Object id)
      Description copied from interface: EntityLinks
      Creates a Link pointing to item resource backing the given entity type and id. The relation type of the link will be determined by the implementation class and should be defaulted to IanaLinkRelations.SELF.
      Parameters:
      entity - the entity type to point to, must not be null.
      id - the identifier of the entity of the given type
      Returns:
      the Link pointing to the resource exposed for the entity with the given type and id. Will never be null.
    • supports

      public boolean supports(Class<?> delimiter)