spring-projects / spring-projects/spring-hateoas

The AnnotationRelProvider forces the @Relation annotation to be put in the Entity/DTO class instead of on the Controller

Open
#232 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
1.1k
Forks
476
PR merge metrics
No merged PRs in 30d

Description

The problem here is that in a modular environment the @Relation annotation is a "detail" that the domain layer should not know about.

It would seem that it would be cleaner to put the @Relation annotation on the same class that the @ExposesResourceFor is on, i.e. the controller.

I modified the AnnotationRelProvider to look first on the controller and only if it isn't found, to then look on the entity.

We could create our own class to do this, but it seems like this change would be useful to other people. It could also be in a new class, possibly ControllerAnnotationRelProvider" if there is concern that the AnnotationRelProvider should not know about controllers.

I've created a pull request for this change.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with AnnotationRelProvider and the controller carrying @ExposesResourceFor; inspect how @Relation is currently resolved on Entity/DTO classes. Done means the provider can discover @Relation on the controller while preserving the existing entity lookup behavior, with the proposed controller-specific provider considered if separation is needed.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, spring
Domain
api, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.