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.validator.common;
 
 
 import java.util.Set;
 
 import static com.github.fge.jsonschema.messages.KeywordValidationMessages.*;

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 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
          */
             .put("unwanted", Ordering.natural().sortedCopy(fields)));
     }
 
     @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