2015-09-22 2 views
0

я сумел получить Джерси декларативных гиперссылка работают, однако, я хотел бы иметь результат этого кода:джерси декларативного гиперссылок настройки получившегося URL

@InjectLink(resource = UserResource.class, method="getUserApplications", bindings ={@Binding(name = "id", value = "${instance.id}")}, style = InjectLink.Style.ABSOLUTE) 
private String applications; 

Будьте это:

"account": { 
    "applications":{ "href":"https://localhost:8080/IMREST/api/accounts/55fb111629d40123a811ad0e/applications"} 
} 

вместо этого:

"account": { 
    "applications" : "http://localhost:8080/IMREST/api/accounts/55fb111629d40123a811ad0e/applications" 
} 

кто-нибудь есть идеи, как я могу это сделать?

Я думал, что могу расширить интерфейс @InjectLink, но я не уверен, что это сработает. В настоящее время я использую JacksonFeature в Glassfish для сортировки объектов модели и единственной настройки, которую я видел до сих пор с Declarative Hyperlinking, было использование объектов Wrapper. Я бы предпочел избежать этого маршрута.

ответ

1

Для тех, кто ищет, я нашел ответ here from peeskillet по другому вопросу (второй ответ).

TL; DR мне нужно реализовать LinkSerializer, который я сделал, как модуль таким образом:

public class LinkSerializerModule extends SimpleModule { 

    public LinkSerializerModule() { 
     super("LinkSerializerModule", new Version(0, 1, 0, "alpha", "net.galtech.id", "IMREST")); 
     this.addSerializer(Link.class, new LinkSerializer()); 
    } 

    public class LinkSerializer extends JsonSerializer<Link> { 

     @Override 
     public void serialize(Link link, JsonGenerator jg, SerializerProvider sp) 
       throws IOException, JsonProcessingException { 
      jg.writeStartObject(); 
      jg.writeStringField("href", link.getUri().toString()); 
      jg.writeEndObject(); 
     } 
    } 
} 
Смежные вопросы