Skip to content

Commit

Permalink
refactor(#130): catch NoSuchMessageException if message is not available
Browse files Browse the repository at this point in the history
  • Loading branch information
ingogriebsch committed Oct 22, 2020
1 parent 83001cb commit 78d4545
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import org.springframework.context.NoSuchMessageException;
import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.RepresentationModel;

Expand Down Expand Up @@ -91,7 +92,13 @@ protected List<LinkRelation> rels(RepresentationModel<?> model, SerializerProvid
}

protected String title(Class<?> type) {
return serializerFacilities.getMessageResolver().resolve(SirenEntity.TitleResolvable.of(type));
String title;
try {
title = serializerFacilities.getMessageResolver().resolve(SirenEntity.TitleResolvable.of(type));
} catch (NoSuchMessageException e) {
title = null;
}
return title;
}

protected Object setAttribute(String key, Object value, SerializerProvider provider) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@

import de.ingogriebsch.spring.hateoas.siren.SirenAction.Field;
import lombok.RequiredArgsConstructor;
import org.springframework.context.MessageSourceResolvable;
import org.springframework.context.NoSuchMessageException;
import org.springframework.hateoas.Affordance;
import org.springframework.hateoas.AffordanceModel.InputPayloadMetadata;
import org.springframework.hateoas.AffordanceModel.PropertyMetadata;
Expand Down Expand Up @@ -131,17 +133,27 @@ private String title(Link link) {

LinkRelation rel = link.getRel();
if (rel != null) {
return messageResolver.resolve(SirenLink.TitleResolvable.of(link.getRel()));
return title(SirenLink.TitleResolvable.of(link.getRel()));
}
return null;
}

private String actionTitle(String name) {
return name != null ? messageResolver.resolve(SirenAction.TitleResolvable.of(name)) : null;
return name != null ? title(SirenAction.TitleResolvable.of(name)) : null;
}

private String fieldTitle(String name) {
return name != null ? messageResolver.resolve(SirenAction.Field.TitleResolvable.of(name)) : null;
return name != null ? title(SirenAction.Field.TitleResolvable.of(name)) : null;
}

private String title(MessageSourceResolvable resolvable) {
String title;
try {
title = messageResolver.resolve(resolvable);
} catch (NoSuchMessageException e) {
title = null;
}
return title;
}

private String fieldType(PropertyMetadata propertyMetadata, MediaType actionType) {
Expand Down
1 change: 1 addition & 0 deletions src/test/resources/rest-messages.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Simple trick to ensure that NoSuchMessageException's are catched if a message is not available!

0 comments on commit 78d4545

Please sign in to comment.