2017-01-30 8 views
0

Я использую рамки HAL-Спецификация:Halarious - Встроенные имена полей ресурсов не преобразуются стратегии пользовательских имен

https://github.com/surech/halarious

http://confluence.surech.ch/display/HAL/halarious+Home

http://stateless.co/hal_specification.html

Представляется, что внедренный ресурсное поле имена неправильно преобразуются при использовании пользовательской стратегии именования. Преобразуются только поля «не-HAL».

Вопрос: Существует ли способ обеспечить, чтобы пользовательские соглашения об именах применялись к встроенным ресурсам, а не только к обычным полям?

У меня есть следующая конфигурация Gson в пользовательской MessageBodyWriter ...

GsonBuilder builder = new GsonBuilder(); 
builder.setFieldNamingStrategy(new AllLowercaseFieldNamingStrategy()); 
builder.registerTypeAdapter(HalResource.class, new HalSerializer()); 
builder.setExclusionStrategies(new HalExclusionStrategy()); 
Gson gson = builder.create(); 
try (OutputStreamWriter writer = new OutputStreamWriter(entityStream)) { 
    writer.write(gson.toJson(resource, HalResource.class)); 
} 

AllLowercaseFieldNamingStrategy реализация просто преобразует имя поля в нижнем регистре, как так @Override public String translateName(Field f) { return f.getName().toLowerCase(); }

Например:

public class MyResource implements HalResource { 
    private final String myField; 
    private final MyResource myEmbeddedResource; 
    ... 
} 

приводит к непоследовательным именам полей (должен быть все нижний регистр на основе стратегии именования) ...

{ 
    "myfield": "...", 
    "_embedded": { 
     "myEmbeddedResource": {...} 
    } 
} 

ответ

0

Мое решение было временное решение использовать @HalEmbedded аннотацию и присвоить строчной имя непосредственно.

public class MyResource implements HalResource { 
    private final String myField; 
    @HalEmbedded(name = "myembeddedresource") 
    private final MyResource myEmbeddedResource; 
    ... 
} 

Вопрос был создан для проекта: https://github.com/surech/halarious/issues/21

Смежные вопросы