0

I have a very loosely couplet system that takes about any json payload and saves in a mongo colection.

There are no entities to expose as resouces, but only controller endpoints eg.

 @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> publish(@RequestBody Map<String, Object> jsonBody) {
.. save the body in mongo
....}

I still want to build a hypermedia driven app. with links for navigation and paging.

The controller therefor implements ResourceProcessor

public class PublicationController implements ResourceProcessor<RepositoryLinksResource> {
....
 @Override
public RepositoryLinksResource process(RepositoryLinksResource resource) {
    resource.add(linkTo(methodOn(PublicationController.class).getPublications()).withRel("publications"));
    return resource;
}

The problem is that the processor never gets called ?? Putting @EnableWebMvc on a configuration class solves it (the processor gets called), but firstly that should not be necessary, and secondary the format of HAL links seems broken

eg. gets formattet as a list

links: [
{
"links":[
    {
        "rel":"self",
        "href":"http://localhost:8080/api/publications/121212"
    },
    {
        "rel":"findByStartTimeBetween",
        "href":"http://localhost:8080/api/publications/search/findStartTimeBetween?timeStart=2015-04-10T13:44:56.437&timeEnd=2015-04-10T13:44:56.439"
    }
]

}

Are there alternatives to @enableWebMvc so the processor gets called ?

Currently I'm running Spring boot v. 1.2.3

Preben
  • 63
  • 2
  • 9

1 Answers1

0

Well it turns out that the answer was quite simple. The problem was that I had static content (resources/static/index.html) This will suppress the hypermedia links from the root. Moving the static content made everything thing work great.

Preben
  • 63
  • 2
  • 9