Заполнить ненулевое поле в объекте JSON

Наш REST API получает входные данные некоторых объектов JSON, где некоторые поля должны быть не нулевыми. Это может быть либо String / Integer, либо даже другой экземпляр класса в качестве ссылки.

Мы пытаемся найти способ заставить эти поля быть не нулевыми вместо альтернативного способа проверки на нуль в API. Текущий:

    if (myObject.getSomeOtherObject() == null)
    throw new SomeException();

То, что мы хотим иметь, это что-то вроде:

    class MyObject{
    @Required
    OtherObject someOtherObject;
    ...
    }

Мы попробовали 3 вещи:

Upgrade to jackson 2.0.6 and use annotation com.fasterxml.jackson.annotation.JsonProperty But, this just looks not working. Found those references: http://jira.codehaus.org/browse/JACKSON-767

Extending JsonDeserializer to check null but the problem is that it does not even executed on the null input.

    public class NotNullDeserializer<T> extends JsonDeserializer<T> {

        @Override
        public T deserialize(JsonParser jsonparser, DeserializationContext deserializationcontext) throws IOException, JsonProcessingException {

            ParameterizedType superClass = (ParameterizedType) getClass().getGenericSuperclass();
            Class type = (Class) superClass.getActualTypeArguments()[0];

            T t = jsonparser.readValueAs(type);

            if (t == null){
                String classNameField = type.getName();
                String field = jsonparser.getCurrentName();
                throw new WrongInputException("The field '"+field+"' of type '"+classNameField+"' should not be null.");
            }

            return t;
        }

    }

    public class NotNullAddressDeserializer extends NotNullDeserializer<Address> {

    }

    @JsonDeserialize(using=NotNullAddressDeserializer.class)
        Address to;

Writing our own @Required annotation and trying to check with ResourceFilter, but it seems I cannot get the actual object from the ContainerRequest and even if we could, not sure how to execute deep check of null reference in object.otherObject.someObject.fieldNotNullable
    private class Filter implements ResourceFilter, ContainerRequestFilter {

        private final ArrayList requiredParameters;

        protected Filter() {
            requiredParameters = null;
        }

        protected Filter(ArrayList requiredParameters) {
            this.requiredParameters = requiredParameters;
        }

        @Override
        public ContainerRequestFilter getRequestFilter() {
            return this;
        }

        @Override
        public ContainerResponseFilter getResponseFilter() {
            return null;
        }


        @Override
        public ContainerRequest filter(ContainerRequest request) {
            if (requiredParameters != null && requiredParameters.size() > 0) {
                MultivaluedMap params = request.getQueryParameters();
                params.putAll(request.getFormParameters());
                StringBuffer missingParams = new StringBuffer();
                for (String reqParam : requiredParameters) {
                    List paramValues = params.get(reqParam);
                    if (paramValues == null || paramValues != null && paramValues.size() == 0)
                        missingParams.append(reqParam + ",");
                }
                if (missingParams.length() > 0)
                    throw new WrongInputException("Required parameters are missing: " + missingParams);
            }
            return request;
        }
    }


Любая помощь и понимание приветствуется.

Ответы на вопрос(4)

Ваш ответ на вопрос