Skip to content

Commit bd41b48

Browse files
committed
DATAREST-1205 - Upgrade to Spring HATEOAS 1.0
1 parent c316334 commit bd41b48

File tree

6 files changed

+21
-22
lines changed

6 files changed

+21
-22
lines changed

spring-data-rest-core/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<properties>
1919
<springplugin>1.2.0.RELEASE</springplugin>
2020
<evoinflector>1.2.2</evoinflector>
21+
<spring-hateoas>1.0.0.BUILD-SNAPSHOT</spring-hateoas>
2122
<java-module-name>spring.data.rest.core</java-module-name>
2223
</properties>
2324

spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/AbstractRepositoryRestController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ protected Link resourceLink(RootResourceInformation resourceLink, Resource resou
6363

6464
ResourceMetadata repoMapping = resourceLink.getResourceMetadata();
6565

66-
Link selfLink = resource.getLink("self");
66+
Link selfLink = resource.getRequiredLink(Link.REL_SELF);
6767
String rel = repoMapping.getItemResourceRel();
6868

6969
return new Link(selfLink.getHref(), rel);

spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryPropertyReferenceController.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,11 @@ public ResponseEntity<ResourceSupport> followPropertyReference(final RootResourc
134134
} else {
135135

136136
PersistentEntityResource resource = assembler.toResource(it);
137-
headers.set("Content-Location", resource.getId().getHref());
137+
headers.set("Content-Location", resource.getRequiredLink(Link.REL_SELF).getHref());
138138
return resource;
139139
}
140140

141-
}).orElseThrow(() -> new ResourceNotFoundException());
141+
}).orElseThrow(ResourceNotFoundException::new);
142142

143143
return ControllerUtils.toResponseEntity(HttpStatus.OK, headers, //
144144
doWithReferencedProperty(repoRequest, id, property, handler, HttpMethod.GET));
@@ -187,7 +187,7 @@ public ResponseEntity<ResourceSupport> followPropertyReference(RootResourceInfor
187187
if (propertyId.equals(accessor1.getIdentifier().toString())) {
188188

189189
PersistentEntityResource resource1 = assembler.toResource(obj);
190-
headers.set("Content-Location", resource1.getId().getHref());
190+
headers.set("Content-Location", resource1.getRequiredLink(Link.REL_SELF).getHref());
191191
return resource1;
192192
}
193193
}
@@ -200,18 +200,18 @@ public ResponseEntity<ResourceSupport> followPropertyReference(RootResourceInfor
200200
if (propertyId.equals(accessor2.getIdentifier().toString())) {
201201

202202
PersistentEntityResource resource2 = assembler.toResource(entry.getValue());
203-
headers.set("Content-Location", resource2.getId().getHref());
203+
headers.set("Content-Location", resource2.getRequiredLink(Link.REL_SELF).getHref());
204204
return resource2;
205205
}
206206
}
207207

208208
} else {
209-
return new Resource<Object>(prop.propertyValue);
209+
return new Resource<>(prop.propertyValue);
210210
}
211211

212212
throw new ResourceNotFoundException();
213213

214-
}).orElseThrow(() -> new ResourceNotFoundException());
214+
}).orElseThrow(ResourceNotFoundException::new);
215215

216216
return ControllerUtils.toResponseEntity(HttpStatus.OK, headers, //
217217
doWithReferencedProperty(repoRequest, id, property, handler, HttpMethod.GET));
@@ -254,7 +254,7 @@ public ResponseEntity<ResourceSupport> followPropertyReferenceCompact(RootResour
254254
Map<Object, Resource<?>> map = (Map<Object, Resource<?>>) content;
255255

256256
for (Entry<Object, Resource<?>> entry : map.entrySet()) {
257-
Link l = new Link(entry.getValue().getLink("self").getHref(), entry.getKey().toString());
257+
Link l = new Link(entry.getValue().getRequiredLink(Link.REL_SELF).getHref(), entry.getKey().toString());
258258
links.add(l);
259259
}
260260
}

spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositorySearchController.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -344,23 +344,20 @@ private Optional<Object> executeQueryMethod(final RepositoryInvoker invoker,
344344
List<TypeInformation<?>> parameterTypeInformations = ClassTypeInformation.from(method.getDeclaringClass())
345345
.getParameterTypes(method);
346346

347-
for (Entry<String, List<Object>> entry : parameters.entrySet()) {
347+
parameters.entrySet().forEach(entry ->
348348

349-
MethodParameter parameter = methodParameters.getParameter(entry.getKey());
349+
methodParameters.getParameter(entry.getKey()).ifPresent(parameter -> {
350350

351-
if (parameter == null) {
352-
continue;
353-
}
354-
355-
int parameterIndex = parameterList.indexOf(parameter);
356-
TypeInformation<?> domainType = parameterTypeInformations.get(parameterIndex).getActualType();
351+
int parameterIndex = parameterList.indexOf(parameter);
352+
TypeInformation<?> domainType = parameterTypeInformations.get(parameterIndex).getActualType();
357353

358-
ResourceMetadata metadata = mappings.getMetadataFor(domainType.getType());
354+
ResourceMetadata metadata = mappings.getMetadataFor(domainType.getType());
359355

360-
if (metadata != null && metadata.isExported()) {
361-
result.put(parameter.getParameterName(), prepareUris(entry.getValue()));
356+
if (metadata != null && metadata.isExported()) {
357+
result.put(parameter.getParameterName(), prepareUris(entry.getValue()));
358+
}
362359
}
363-
}
360+
));
364361

365362
return invoker.invokeQueryMethod(method, result, pageable.getPageable(), sort);
366363
}

spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@
131131
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;
132132
import org.springframework.hateoas.core.EvoInflectorRelProvider;
133133
import org.springframework.hateoas.hal.CurieProvider;
134+
import org.springframework.hateoas.hal.HalConfiguration;
134135
import org.springframework.hateoas.hal.Jackson2HalModule;
135136
import org.springframework.hateoas.hal.Jackson2HalModule.HalHandlerInstantiator;
136137
import org.springframework.hateoas.mvc.ResourceProcessorInvoker;
@@ -533,7 +534,7 @@ public ObjectMapper halObjectMapper() {
533534
RelProvider defaultedRelProvider = this.relProvider != null ? this.relProvider : new EvoInflectorRelProvider();
534535

535536
HalHandlerInstantiator instantiator = new HalHandlerInstantiator(defaultedRelProvider, curieProvider,
536-
resourceDescriptionMessageSourceAccessor(), applicationContext.getAutowireCapableBeanFactory());
537+
resourceDescriptionMessageSourceAccessor(), true, new HalConfiguration());
537538

538539
ObjectMapper mapper = basicObjectMapper();
539540
mapper.registerModule(persistentEntityJackson2Module());

spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/mapping/LinkCollector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ private Links addSelfLinkIfNecessary(Object object, List<Link> existing) {
141141
private Link createSelfLink(Object object, Links existing) {
142142

143143
if (existing.hasLink(Link.REL_SELF)) {
144-
return existing.getLink(Link.REL_SELF);
144+
return existing.getLink(Link.REL_SELF).get();
145145
}
146146

147147
return links.createSelfLinkFor(object).withSelfRel();

0 commit comments

Comments
 (0)