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 additionalProperties

The digested form will contain the list of members from properties and patternProperties, unless this keyword is true or a schema, in which case additional properties are always allowed.

public final class AdditionalPropertiesDigester
    extends AbstractDigester
    private static final Digester INSTANCE = new AdditionalPropertiesDigester();
    public static Digester getInstance()
    {
        return ;
    }
    {
        super("additionalProperties".);
    }
    @Override
    public JsonNode digest(final JsonNode schema)
    {
        final ObjectNode ret = .objectNode();
        final ArrayNode properties = .arrayNode();
        final ArrayNode patternProperties = .arrayNode();
        /*
         * Start by presuming that additional properties are allowed. This will
         * not be the case if and only if it has boolean value false.
         */
        ret.put(true);
        ret.put("properties"properties);
        ret.put("patternProperties"patternProperties);
        if (schema.get().asBoolean(true))
            return ret;
        /*
         * OK, it is false... Therefore collect the list of defined property
         * names and regexes. Put them in order, we don't want to generate two
         * different digests for properties p, q and q, p.
         */
        ret.put(false);
        List<Stringlist;
        list = Lists.newArrayList(schema.path("properties").fieldNames());
        Collections.sort(list);
        for (final String slist)
            properties.add(s);
        list = Lists.newArrayList(schema.path("patternProperties")
            .fieldNames());
        Collections.sort(list);
        for (final String slist)
            patternProperties.add(s);
        return ret;
    }
New to GrepCode? Check out our FAQ X