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.helpers;
 
 
Digester for draft v3's type and disallow

These keywords are quite complex, but fortunately they share the same fundamental structure. Simple types and schema dependencies are stored separately.

 
 public final class DraftV3TypeKeywordDigester
     extends AbstractDigester
 {
     private static final String ANY = "any";
 
     public DraftV3TypeKeywordDigester(final String keyword)
     {
         super(keyword., NodeType.values());
     }
 
     @Override
     public JsonNode digest(final JsonNode schema)
     {
         final ObjectNode ret = .objectNode();
         final ArrayNode simpleTypes = .arrayNode();
         ret.put(simpleTypes);
         final ArrayNode schemas = .arrayNode();
         ret.put("schemas"schemas);
 
         final JsonNode node = schema.get();
 
         final EnumSet<NodeTypeset = EnumSet.noneOf(NodeType.class);
 
         if (node.isTextual()) // Single type
             putType(setnode.textValue());
         else { // More than one type, and possibly schemas
             final int size = node.size();
             JsonNode element;
             for (int index = 0; index < sizeindex++) {
                 element = node.get(index);
                 if (element.isTextual())
                     putType(setelement.textValue());
                 else
                     schemas.add(index);
             }
         }
 
         /*
          * If all types are there, no need to collect schemas
          */
         if (EnumSet.complementOf(set).isEmpty())
             schemas.removeAll();
 
         /*
          * Note that as this is an enumset, order is guaranteed
          */
         for (final NodeType typeset)
             simpleTypes.add(type.toString());
 
         return ret;
     }
 
     private static void putType(final EnumSet<NodeTypetypesfinal String s)
     {
         if (.equals(s)) {
             types.addAll(EnumSet.allOf(NodeType.class));
             return;
         }
 
         final NodeType type = NodeType.fromName(s);
         types.add(type);
 
         if (type == .)
             types.add(.);
     }
New to GrepCode? Check out our FAQ X