I have this old code implemented in hateoas:1.0
public class StaticPathLinkBuilder extends LinkBuilderSupport<StaticPathLinkBuilder> {
@Override
protected StaticPathLinkBuilder createNewInstance(UriComponentsBuilder builder) {
return new StaticPathLinkBuilder(builder);
}
I updated my code to hateoas 2.6.7 but the code is changed this way:
public class StaticPathLinkBuilder extends LinkBuilderSupport<StaticPathLinkBuilder> {
@Override
protected StaticPathLinkBuilder createNewInstance(UriComponents components, List<Affordance> affordances) {
return null;
}
What is the proper way to implement this change? I tried this:
@Override
protected StaticPathLinkBuilder createNewInstance(UriComponents components, List<Affordance> affordances) {
return new StaticPathLinkBuilder(UriComponentsBuilder.newInstance().uriComponents(components));
}
But it's not clear how I have to implement the code that I can send affordances
.
Can you advice what is the proper way to implement this?
CodePudding user response:
As you can see in its source code LinkBuilderSupport
already provides a constructor with the two required arguments, UriComponents
and List<Affordance>
.
In the own library codebase, different LinkBuilder
s implementations as BasicLinkBuilder
or TemplateVariableAwareLinkBuilderSupport
already takes advantage of this fact in their implementations.
In your use case, you could try something similar to this:
public class StaticPathLinkBuilder extends LinkBuilderSupport<StaticPathLinkBuilder> {
private StaticPathLinkBuilder(UriComponents components, List<Affordance> affordances) {
super(components, affordances);
}
@Override
protected StaticPathLinkBuilder createNewInstance(UriComponents components, List<Affordance> affordances) {
return new StaticPathLinkBuilder(components, affordances);
}
}