Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2014, Francis Galiegue (fgaliegue@gmail.com)
   *
   * This software is dual-licensed under:
   *
   * - the Lesser General Public License (LGPL) version 3.0 or, at your option, any
   *   later version;
   * - the Apache Software License (ASL) version 2.0.
   *
  * The text of this file and of both licenses is available at the root of this
  * project or, if you have the jar distribution, in directory META-INF/, under
  * the names LGPL-3.0.txt and ASL-2.0.txt respectively.
  *
  * Direct link to the sources:
  *
  * - LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt
  * - ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
  */
 
 package com.github.fge.jsonschema.keyword.validator.common;
 
 
 import java.util.Set;

Keyword validator for additionalProperties
 
 public final class AdditionalPropertiesValidator
     extends AbstractKeywordValidator
 {
     private static final Joiner TOSTRING_JOINER = Joiner.on("; or ");
 
     private final boolean additionalOK;
     private final Set<Stringproperties;
     private final Set<StringpatternProperties;
 
     public AdditionalPropertiesValidator(final JsonNode digest)
     {
         super("additionalProperties");
          = digest.get().booleanValue();
 
         ImmutableSet.Builder<Stringbuilder;
 
         builder = ImmutableSet.builder();
         for (final JsonNode nodedigest.get("properties"))
             builder.add(node.textValue());
          = builder.build();
 
         builder = ImmutableSet.builder();
         for (final JsonNode nodedigest.get("patternProperties"))
             builder.add(node.textValue());
          = builder.build();
     }
 
     @Override
     public void validate(final Processor<FullDataFullDataprocessor,
         final ProcessingReport reportfinal MessageBundle bundle,
         final FullData data)
         throws ProcessingException
     {
         if ()
             return;
 
         final JsonNode instance = data.getInstance().getNode();
         final Set<Stringfields = Sets.newHashSet(instance.fieldNames());
 
         fields.removeAll();
 
         final Set<Stringtmp = Sets.newHashSet();
 
         for (final String fieldfields)
             for (final String regex)
                 if (RhinoHelper.regMatch(regexfield))
                     tmp.add(field);
 
         fields.removeAll(tmp);
 
         if (fields.isEmpty())
             return;
 
         /*
          * Display extra properties in order in the report
          */
         final ArrayNode node = JacksonUtils.nodeFactory().arrayNode();
         for (final String field: Ordering.natural().sortedCopy(fields))
            node.add(field);
        report.error(newMsg(databundle,
            "err.common.additionalProperties.notAllowed")
            .putArgument("unwanted"node));
    }
    @Override
    public String toString()
    {
        final StringBuilder sb = new StringBuilder( + ": ");
        if ()
            return sb.append("allowed").toString();
        sb.append("none");
        if (.isEmpty() && .isEmpty())
            return sb.toString();
        sb.append(", unless: ");
        final Set<Stringfurther = Sets.newLinkedHashSet();
        if (!.isEmpty())
            further.add("one property is any of: " + );
        if (!.isEmpty())
            further.add("a property matches any regex among: "
                + );
        sb.append(.join(further));
        return sb.toString();
    }
New to GrepCode? Check out our FAQ X