#1516 - Support for NamingBase in property translation for HAL.
We now also support the newly NamingBase introduced in Jackson 2.12 as a replacement for PropertyNamingStrategyBase.
This commit is contained in:
@@ -53,6 +53,7 @@ import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonToken;
|
||||
import com.fasterxml.jackson.core.Version;
|
||||
import com.fasterxml.jackson.databind.*;
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies.NamingBase;
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategy.PropertyNamingStrategyBase;
|
||||
import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
|
||||
import com.fasterxml.jackson.databind.deser.std.ContainerDeserializerBase;
|
||||
@@ -843,12 +844,13 @@ public class Jackson2HalModule extends SimpleModule {
|
||||
*/
|
||||
public EmbeddedMapper with(@Nullable PropertyNamingStrategy strategy) {
|
||||
|
||||
if (!(strategy instanceof PropertyNamingStrategyBase)) {
|
||||
return this;
|
||||
}
|
||||
Function<String, String> mapper = strategy instanceof PropertyNamingStrategyBase
|
||||
? ((PropertyNamingStrategyBase) strategy)::translate
|
||||
: strategy instanceof NamingBase ? ((NamingBase) strategy)::translate : null;
|
||||
|
||||
return new EmbeddedMapper(relProvider, curieProvider, preferCollectionRels,
|
||||
((PropertyNamingStrategyBase) strategy)::translate);
|
||||
return mapper == null
|
||||
? this
|
||||
: new EmbeddedMapper(relProvider, curieProvider, preferCollectionRels, mapper);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -59,6 +59,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.JavaType;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.databind.type.TypeFactory;
|
||||
@@ -643,6 +644,13 @@ class Jackson2HalIntegrationTest {
|
||||
.writeValueAsString(new RepresentationModel<>().add(Link.of("/href")));
|
||||
}
|
||||
|
||||
@Test // #1516
|
||||
void considersNamingBase() throws Exception {
|
||||
|
||||
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)
|
||||
.writeValueAsString(new RepresentationModel<>().add(Link.of("/href", "fooBar")));
|
||||
}
|
||||
|
||||
@Relation(collectionRelation = "someSample")
|
||||
static class SomeSample {
|
||||
@JsonProperty String name;
|
||||
|
||||
Reference in New Issue
Block a user