Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright (c) 2013, Francis Galiegue <fgaliegue@gmail.com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the Lesser GNU General Public License as
  * published by the Free Software Foundation, either version 3 of the
  * License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * Lesser GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.github.fge.jsonschema.keyword.digest.common;
Digester for additionalItems

The digested form is very simple: additional items are always allowed unless the keword is false and items is an array. In this last case, the size of the items array is stored.

public final class AdditionalItemsDigester
    extends AbstractDigester
    private static final Digester INSTANCE
        = new AdditionalItemsDigester();
    public static Digester getInstance()
    {
        return ;
    }
    private AdditionalItemsDigester()
    {
        super("additionalItems".);
    }
    @Override
    public JsonNode digest(final JsonNode schema)
    {
        final ObjectNode ret = .objectNode();
        /*
         * First, let's assume that additionalItems is true or a schema
         */
        ret.put(true);
        ret.put("itemsSize", 0);
        /*
         * If it is false:
         *
         * - if "items" is an object, nevermind;
         * - but if it is an array, set it to false and include the array size.
         *
         * We use .asBoolean() here since it does what we want: we know the
         * syntax is correct, so this will return false if and only if
         * additionalItems itself is boolean false. We return true as the
         * default value.
         */
        if (schema.get().asBoolean(true))
            return ret;
        final JsonNode itemsNode = schema.path("items");
        if (!itemsNode.isArray())
            return ret;
        /*
         * OK, "items" is there and it is an array, include its size
         */
        ret.put(false);
        ret.put("itemsSize"itemsNode.size());
        return ret;
    }
New to GrepCode? Check out our FAQ X