Nie można deserializować instancji java.util.ArrayList z VALUE_STRING

Mam usługę REST zbudowaną z Jersey i wdrożoną w AppEngine. Usługa REST implementuje czasownik PUT, który zużywa typ nośnika aplikacji / json. Powiązanie danych wykonuje Jackson.

Czasownik zużywa relację działów przedsiębiorstwa reprezentowaną w JSON as

{"name":"myEnterprise", "departments":["HR","IT","SC"]}

Po stronie klienta używam gson do konwersji reprezentacji JSON na obiekt java. Następnie przekazuję obiekt do mojej usługi REST i działa poprawnie.

Problem:

Kiedy moja reprezentacja JSON ma tylko jedną pozycję w kolekcji

{"name":"myEnterprise", "departments":["HR"]}

usługa nie może deserializować obiektu.

ATTENTION: /enterprise/enterprise: org.codehaus.jackson.map.JsonMappingException: 
Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token at 
[Source: org.mortbay.jetty.HttpParser$Input@5a9c5842; line: 1, column: 2

Jak informują inni użytkownicy, rozwiązaniem jest dodanie flagi ACCEPT_SINGLE_VALUE_AS_ARRAY (np.Jersey: Nie można deserializować instancji ArrayList poza String). Niemniej jednak nie kontroluję ObjectMapper, ponieważ po stronie usługi jest ona przezroczysta przez Jacksona.

Pytanie:

Czy istnieje sposób na skonfigurowanie ObjectMapper po stronie usługi, aby włączyć ACCEPT_SINGLE_VALUE_AS_ARRAY? adnotacje? web.xml?

Szczegóły kodu

Obiekt Java:

@XmlRootElement
public class Enterprise {
    private String name;
    private List<String> departments;

    public Enterprise() {}

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<String> getDepartments() {
        return departments;
    }
    public void setDepartments(List<String> departments) {
        this.departments = departments;
    }
}

Strona usługi REST:

    @PUT
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/enterprise") 
    public Response putEnterprise(Enterprise enterprise,
            @Context HttpServletRequest req){
         ...
    }

Strona klienta:

...
String jsonString = "{\"name\":\"myEnterprise\", \"departments\":[\"HR\"]}";
Enterprise enterprise = gson.fromJson(jsonString, Enterprise.class);
System.out.println(gson.toJson(enterprise));
response = webResource              
           .type(MediaType.APPLICATION_JSON)
           .put(ClientResponse.class,enterprise);
if (response.getStatus() >= 400) {
        throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}
...

questionAnswers(4)

yourAnswerToTheQuestion