Java 类com.fasterxml.jackson.databind.node.MissingNode 实例源码

项目:centraldogma    文件:RemoveOperation.java   
@Override
JsonNode apply(final JsonNode node) {
    if (path.toString().isEmpty()) {
        return MissingNode.getInstance();
    }
    ensureExistence(node);

    final JsonNode parentNode = node.at(path.head());
    final String raw = path.last().getMatchingProperty();
    if (parentNode.isObject()) {
        ((ObjectNode) parentNode).remove(raw);
    } else {
        ((ArrayNode) parentNode).remove(Integer.parseInt(raw));
    }
    return node;
}
项目:toggle    文件:ToggleJsonNode.java   
/**
 * Traverses the argument {@link JsonNode} to find any contained
 * {@code JsonNode JsonNodes} which match the argument cohort, if
 * present.
 *
 * If {@code node} is an {@code ArrayNode}, then the array is
 * traversed and the first matching filter node, if any, is
 * returned.
 *
 * @param node A {@code JsonNode} to traverse in search of cohort
 *        information.
 * @param cohortOpt An optional cohort string to match against the
 *        argument {@code JsonNode}.
 * @return A {@code JsonNode} matching the specified cohort, or else
 *         {@link MissingNode}.
 */
public static JsonNode findByCohort(JsonNode node, Optional<String> cohortOpt) {
  if (node.isObject() && ToggleJsonNode.matchesCohort(node, cohortOpt)) {
    return node;
  } else if (node.isArray()) {
    final Iterator<JsonNode> iterator = node.elements();

    while (iterator.hasNext()) {
      final JsonNode containedNode = iterator.next();
      if (containedNode.isObject() && ToggleJsonNode.matchesCohort(containedNode, cohortOpt)) {
        return containedNode;
      }
    }

    return MissingNode.getInstance();
  } else {
    return MissingNode.getInstance();
  }
}
项目:HmiCore    文件:JSONHelper.java   
/**
 * Recursively search for the JsonNode for the specified key. If found, this function will return an ObjectNode containing the key with underlying JsonNode.
 * For instance, if searching for "key2" in JSON "{key1:{key2:{key3:value}}}" this will return "{key2:{key3:value}}"
 * @param jn the JsonNode to search in
 * @param key the key to search for
 * @return the found object with {key:JsonNode} or MissingNode if not found
 */
public JsonNode searchKey(JsonNode jn, String key){
    //this is a null node or a leaf node
    if(jn == null || !jn.isContainerNode()) {
        return MissingNode.getInstance();
    }

    //yay, found it!
    //extract value and place it in clean wrapper ObjectNode with the key
    if(jn.has(key)) {
        return om.createObjectNode().set(key, jn.get(key));
    }

    //not found on this level... try to go deeper
    for (JsonNode child : jn) {
        if (child.isContainerNode()) {
            JsonNode childResult = searchKey(child, key);
            if (childResult != null && !childResult.isMissingNode()) {
                return childResult;
            }
        }
    }

    // not found at all
    return MissingNode.getInstance();
}
项目:embulk-output-mailchimp    文件:MailChimpClient.java   
/**
 * Build an array of email subscribers and batch insert via bulk MailChimp API
 * Reference: https://developer.mailchimp.com/documentation/mailchimp/reference/lists/#create-post_lists_list_id
 *
 * @param node the data
 * @param task the task
 * @return the report response
 * @throws JsonProcessingException the json processing exception
 */
ReportResponse push(final ObjectNode node, PluginTask task)
        throws JsonProcessingException
{
    String endpoint = MessageFormat.format(mailchimpEndpoint + "/lists/{0}",
                                           task.getListId());

    JsonNode response = client.sendRequest(endpoint, HttpMethod.POST, node.toString(), task);
    client.avoidFlushAPI("Process next request");

    if (response instanceof MissingNode) {
        ReportResponse reportResponse = new ReportResponse();
        reportResponse.setErrors(new ArrayList<ErrorResponse>());
        return reportResponse;
    }

    return mapper.treeToValue(response, ReportResponse.class);
}
项目:resourceful-java-prototype    文件:ResourceDeserializer.java   
@Override
public Resource deserialize(JsonParser parser, DeserializationContext context) throws IOException {
  TreeNode tree = parser.readValueAsTree();
  Assert.isTrue(tree.path("rClass") != MissingNode.getInstance(),
      "No 'rClass' field found. Cannot deserialize Resource JSON.");
  RClass rClass = modelService.resolveRType(((TextNode) tree.path("rClass")).textValue());
  if (rClass.isAbstract()) {
    throw new AbstractRClassException(rClass);
  }
  Resource resource = factory.createResource(rClass);
  TreeNode properties = tree.path("properties");
  if (properties instanceof ObjectNode) {
    populateProperties((ObjectNode) properties, resource);
  }
  return resource;
}
项目:toggle    文件:ToggleJsonNode.java   
/**
 * Constructs a {@link JsonNode} from a JSON string.
 *
 * @param json A string encoding a JSON object
 * @return A {@code JsonNode} if the argument string is valid, otherwise
 *         {@link MissingNode}.
 */
public static JsonNode fromString(String json) {
  try {
    return DEFAULT_OBJECT_READER.readTree(json);
  } catch (IOException err) {
    return MissingNode.getInstance();
  }
}
项目:openapi-parser    文件:Reference.java   
public JsonNode getJson() {
    if (isValid()) {
        return json;
    } else {
        return MissingNode.getInstance();
    }
}
项目:azure-libraries-for-java    文件:LinuxDiskVolumeEncryptionMonitorImpl.java   
@Override
public EncryptionStatus osDiskStatus() {
    if (!hasEncryptionExtension()) {
        return EncryptionStatus.NOT_ENCRYPTED;
    }
    final JsonNode subStatusNode = instanceViewFirstSubStatus();
    if (subStatusNode == null) {
        return EncryptionStatus.UNKNOWN;
    }
    JsonNode diskNode = subStatusNode.path("os");
    if (diskNode instanceof MissingNode) {
        return EncryptionStatus.UNKNOWN;
    }
    return EncryptionStatus.fromString(diskNode.asText());
}
项目:azure-libraries-for-java    文件:LinuxDiskVolumeEncryptionMonitorImpl.java   
@Override
public EncryptionStatus dataDiskStatus() {
    if (!hasEncryptionExtension()) {
        return EncryptionStatus.NOT_ENCRYPTED;
    }
    final JsonNode subStatusNode = instanceViewFirstSubStatus();
    if (subStatusNode == null) {
        return EncryptionStatus.UNKNOWN;
    }
    JsonNode diskNode = subStatusNode.path("data");
    if (diskNode instanceof MissingNode) {
        return EncryptionStatus.UNKNOWN;
    }
    return EncryptionStatus.fromString(diskNode.asText());
}
项目:azure-libraries-for-java    文件:CreateVirtualMachinesUsingCustomImageOrSpecializedVHD.java   
private static String extractCapturedImageUri(String capturedResultJson) {
    ObjectMapper mapper = new ObjectMapper();
    JsonNode rootNode;
    try {
        rootNode = mapper.readTree(capturedResultJson);
    } catch (IOException exception) {
        throw new RuntimeException("Parsing JSON failed -" + capturedResultJson, exception);
    }

    JsonNode resourcesNode = rootNode.path("resources");
    if (resourcesNode instanceof MissingNode) {
        throw new IllegalArgumentException("Expected 'resources' node not found in the capture result -" + capturedResultJson);
    }

    String imageUri = null;
    for (JsonNode resourceNode : resourcesNode) {
        JsonNode propertiesNodes = resourceNode.path("properties");
        if (!(propertiesNodes instanceof MissingNode)) {
            JsonNode storageProfileNode = propertiesNodes.path("storageProfile");
            if (!(storageProfileNode instanceof MissingNode)) {
                JsonNode osDiskNode = storageProfileNode.path("osDisk");
                if (!(osDiskNode instanceof MissingNode)) {
                    JsonNode imageNode = osDiskNode.path("image");
                    if (!(imageNode instanceof MissingNode)) {
                        JsonNode uriNode = imageNode.path("uri");
                        if (!(uriNode instanceof MissingNode)) {
                            imageUri = uriNode.asText();
                        }
                    }
                }
            }
        }
    }

    if (imageUri == null) {
        throw new IllegalArgumentException("Could not locate image uri under expected section in the capture result -" + capturedResultJson);
    }
    return imageUri;
}
项目:dataplatform-schema-lib    文件:JsonNodeToPrimitiveObject.java   
public static PrimitiveObject get( final JsonNode jsonNode ) throws IOException{
  if( jsonNode instanceof TextNode ){
    return new StringObj( ( (TextNode)jsonNode ).textValue() );
  }
  else if( jsonNode instanceof BooleanNode ){
    return new BooleanObj( ( (BooleanNode)jsonNode ).booleanValue() );
  }
  else if( jsonNode instanceof IntNode ){
    return new IntegerObj( ( (IntNode)jsonNode ).intValue() );
  }
  else if( jsonNode instanceof LongNode ){
    return new LongObj( ( (LongNode)jsonNode ).longValue() );
  }
  else if( jsonNode instanceof DoubleNode ){
    return new DoubleObj( ( (DoubleNode)jsonNode ).doubleValue() );
  }
  else if( jsonNode instanceof BigIntegerNode ){
    return new StringObj( ( (BigIntegerNode)jsonNode ).bigIntegerValue().toString() );
  }
  else if( jsonNode instanceof DecimalNode ){
    return new StringObj( ( (DecimalNode)jsonNode ).decimalValue().toString() );
  }
  else if( jsonNode instanceof BinaryNode ){
    return new BytesObj( ( (BinaryNode)jsonNode ).binaryValue() );
  }
  else if( jsonNode instanceof POJONode ){
    return new BytesObj( ( (POJONode)jsonNode ).binaryValue() );
  }
  else if( jsonNode instanceof NullNode ){
    return NullObj.getInstance();
  }
  else if( jsonNode instanceof MissingNode ){
    return NullObj.getInstance();
  }
  else{
    return new StringObj( jsonNode.toString() );
  }
}
项目:javaOIDCMsg    文件:JsonNodeClaimTest.java   
@Test
public void shouldReturnBaseClaimWhenParsingMissingNode() throws Exception {
    JsonNode value = MissingNode.getInstance();
    Claim claim = claimFromNode(value);

    assertThat(claim, is(notNullValue()));
    assertThat(claim, is(instanceOf(NullClaim.class)));
    assertThat(claim.isNull(), is(true));
}
项目:log4j2-logstash-layout    文件:LogstashLayoutTest.java   
private static void checkContextData(LogEvent logEvent, String mdcKeyRegex, final JsonNode rootNode) {
    final Pattern mdcKeyPattern = mdcKeyRegex == null ? null : Pattern.compile(mdcKeyRegex);
    logEvent.getContextData().forEach(new BiConsumer<String, Object>() {
        @Override
        public void accept(String key, Object value) {
            JsonNode node = point(rootNode, "mdc", key);
            boolean matches = mdcKeyPattern == null || mdcKeyPattern.matcher(key).matches();
            if (matches) {
                assertThat(node.asText()).isEqualTo(value);
            } else {
                assertThat(node).isEqualTo(MissingNode.getInstance());
            }
        }
    });
}
项目:graylog-plugin-pipeline-processor    文件:JsonParse.java   
@Override
public JsonNode evaluate(FunctionArgs args, EvaluationContext context) {
    final String value = valueParam.required(args, context);
    try {
        return objectMapper.readTree(value);
    } catch (IOException e) {
        log.warn("Unable to parse JSON", e);
    }
    return MissingNode.getInstance();
}
项目:java-hamcrest    文件:IsJsonObject.java   
private static Matcher<JsonNode> createNodeMatcher(final JsonNode value) {
  final JsonNodeType nodeType = value.getNodeType();
  switch (nodeType) {
    case ARRAY:
      return IsJsonArray.jsonArray((ArrayNode) value);
    case BINARY:
      throw new UnsupportedOperationException(
          "Expected value contains a binary node, which is not implemented.");
    case BOOLEAN:
      return IsJsonBoolean.jsonBoolean((BooleanNode) value);
    case MISSING:
      return IsJsonMissing.jsonMissing((MissingNode) value);
    case NULL:
      return IsJsonNull.jsonNull((NullNode) value);
    case NUMBER:
      return IsJsonNumber.jsonNumber((NumericNode) value);
    case OBJECT:
      return IsJsonObject.jsonObject((ObjectNode) value);
    case POJO:
      throw new UnsupportedOperationException(
          "Expected value contains a POJO node, which is not implemented.");
    case STRING:
      return IsJsonText.jsonText((TextNode) value);
    default:
      throw new UnsupportedOperationException("Unsupported node type " + nodeType);
  }
}
项目:template-compiler    文件:JsonUtils.java   
/**
 * Attempt to decode the input as JSON. Returns the {@link JsonNode} if
 * the decode is successful.
 *
 * If the decode fails and the {@code failQuietly} flag is true, returns a
 * {@link MissingNode}. Otherwise an {@link IllegalArgumentException} will
 * be thrown.
 */
public static JsonNode decode(String input, boolean failQuietly) {
  try {
    return MAPPER.readTree(input);
  } catch (IOException e) {
    if (failQuietly) {
      return MissingNode.getInstance();
    }
    throw new IllegalArgumentException("Unable to decode JSON", e);
  }
}
项目:dot-notes-java    文件:DotNotes.java   
/**
 * Uses a String path to create a List of keys in order to move
 * through a nested ${@link JsonNode} in order to find a specific
 * value. If the value is found, it is returned. If it can not be
 * found, a ${@link MissingNode} will be returned.
 *
 * @param node the node to use for the search
 * @param path the path to find the value for
 * @return a ${@link JsonNode} if found, a ${@link MissingNode} if not
 * @throws ParseException if any parsing issues occur
 */
public static JsonNode get(JsonNode node, String path) throws ParseException {
    // check for bad targets
    if (node == null) {
        return MissingNode.getInstance();
    }

    // create a list of keys from the path
    List<NotedKey> keys = keys(path);

    // store a cheap reference
    JsonNode tmp = node;

    // grab length
    int lastIndex = keys.size() - 1;

    // go through every key we have (except the last)
    for(int i = 0; i < lastIndex; i++) {
        tmp = DotUtils.findNode(tmp, keys.get(i));
        // if we've hit a dead end
        if (tmp.isMissingNode() || tmp.isNull()) {
            // short-circuit
            return tmp;
        }
    }

    // get the last key from the list
    NotedKey key = keys.get(lastIndex);

    // if the key is a Number
    if (key.isNumber()) {
        // return the ArrayNode index
        return tmp.path(key.asNumber());
    }

    // return the ObjectNode value
    return tmp.path(key.asString());
}
项目:dot-notes-java    文件:RecurseTest.java   
@Test
public void iteratesMissingValues() throws Exception {
    final ObjectNode objectNode = factory.objectNode();

    objectNode.set("test", MissingNode.getInstance());

    final int[] iterator = new int[]{0};

    DotNotes.recurse(objectNode, new DotNotes.NodeIterator() {
        @Override
        protected void execute(NotedKey key, JsonNode value, String path) {
            iterator[0]++;

            assertNotNull(key);
            assertTrue(key.isString());
            assertEquals(key.asString(), "test");

            assertNotNull(value);
            assertTrue(value.isMissingNode());

            assertNotNull(path);
            assertEquals(path, "test");
        }
    });

    assertEquals(iterator[0], 1);
}
项目:presto    文件:JsonRowDecoder.java   
private static JsonNode locateNode(JsonNode tree, DecoderColumnHandle columnHandle)
{
    String mapping = columnHandle.getMapping();
    checkState(mapping != null, "No mapping for %s", columnHandle.getName());

    JsonNode currentNode = tree;
    for (String pathElement : Splitter.on('/').omitEmptyStrings().split(mapping)) {
        if (!currentNode.has(pathElement)) {
            return MissingNode.getInstance();
        }
        currentNode = currentNode.path(pathElement);
    }
    return currentNode;
}
项目:presto-kinesis    文件:JsonKinesisRowDecoder.java   
private static JsonNode locateNode(JsonNode tree, KinesisColumnHandle columnHandle)
{
    String mapping = columnHandle.getMapping();
    checkState(mapping != null, "No mapping for %s", columnHandle.getName());

    JsonNode currentNode = tree;
    for (String pathElement : Splitter.on('/').omitEmptyStrings().split(mapping)) {
        if (!currentNode.has(pathElement)) {
            return MissingNode.getInstance();
        }
        currentNode = currentNode.path(pathElement);
    }
    return currentNode;
}
项目:java-jwt    文件:JsonNodeClaimTest.java   
@Test
public void shouldReturnBaseClaimWhenParsingMissingNode() throws Exception {
    JsonNode value = MissingNode.getInstance();
    Claim claim = claimFromNode(value);

    assertThat(claim, is(notNullValue()));
    assertThat(claim, is(instanceOf(NullClaim.class)));
    assertThat(claim.isNull(), is(true));
}
项目:geo-publisher    文件:ZooKeeperServiceInfoProvider.java   
private JsonNode readJson (final byte[] data) {
    if (data == null) {
        return MissingNode.getInstance ();
    }

    final String stringContent = new String (data, Charset.forName ("UTF-8"));

    try {
        return new ObjectMapper().readTree (stringContent);
    } catch (IOException e) {
        log.error (e, "Unable to read ZooKeeper service payload, ignoring.");
        return MissingNode.getInstance ();
    }
}
项目:cassandra-mesos-deprecated    文件:AbstractApiControllerTest.java   
@NotNull
protected Tuple2<Integer, JsonNode> fetchJson(final String rel, final boolean post) throws Exception {
    final JsonFactory factory = new JsonFactory();
    final HttpURLConnection conn = (HttpURLConnection) resolve(rel).toURL().openConnection();
    try {
        conn.setRequestMethod(post ? "POST" : "GET");
        conn.setRequestProperty("Accept", "application/json");
        conn.connect();

        final int responseCode = conn.getResponseCode();

        InputStream in;
        try {
            in = conn.getInputStream();
        } catch (final IOException e) {
            in = conn.getErrorStream();
        }
        if (in == null) {
            return Tuple2.tuple2(responseCode, (JsonNode) MissingNode.getInstance());
        }

        assertEquals("application/json", conn.getHeaderField("Content-Type"));

        try {
            final ObjectMapper om = new ObjectMapper();
            return Tuple2.tuple2(responseCode, om.reader()
                .with(factory)
                .readTree(in));
        } finally {
            in.close();
        }
    } finally {
        conn.disconnect();
    }
}
项目:ddth-commons    文件:ValueUtils.java   
/**
 * Convert a {@link JsonNode} to a specified value type.
 * 
 * @param node
 * @param clazz
 * @return
 * @since 0.6.2
 */
@SuppressWarnings("unchecked")
public static <T> T convertValue(JsonNode node, Class<T> clazz) {
    if (clazz == null) {
        throw new NullPointerException("Class parameter is null!");
    }
    if (node == null || node instanceof NullNode || node instanceof MissingNode) {
        return null;
    }
    if (Number.class.isAssignableFrom(clazz) || byte.class == clazz || short.class == clazz
            || int.class == clazz || long.class == clazz || float.class == clazz
            || double.class == clazz) {
        return convertNumber(node, clazz);
    }
    if (clazz == Boolean.class || clazz == boolean.class) {
        return (T) convertBoolean(node);
    }
    if (clazz == Character.class || clazz == char.class) {
        return (T) convertChar(node);
    }
    if (Date.class.isAssignableFrom(clazz)) {
        return (T) convertDate(node);
    }
    if (Object[].class.isAssignableFrom(clazz) || List.class.isAssignableFrom(clazz)) {
        return (T) convertArrayOrList(node);
    }
    if (clazz.isAssignableFrom(node.getClass())) {
        return (T) node;
    }
    if (clazz == String.class) {
        return (T) (node.isTextual() ? node.asText() : node.toString());
    }
    throw new IllegalArgumentException(
            "Cannot convert an object of type [" + node.getClass() + "] to [" + clazz + "]!");
}
项目:ddth-commons    文件:DPathUtils.java   
private static JsonNode extractValue(JsonNode node, String index) {
    if (node == null || node instanceof NullNode || node instanceof MissingNode) {
        return null;
    }
    Matcher m = PATTERN_INDEX.matcher(index);
    if (m.matches()) {
        try {
            int i = Integer.parseInt(m.group(1));
            if (node instanceof ArrayNode) {
                if (i >= 0 && i < node.size()) {
                    return node.get(i);
                } else {
                    throw new IndexOutOfBoundsException(String.valueOf(i));
                }
            }
            throw new IllegalArgumentException("Expect an ArrayNode for index [" + index
                    + "] but received [" + node.getClass() + "] instead.");
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException("Invalid index value: " + index, e);
        }
    }
    if (node instanceof ObjectNode) {
        return node.get(index);
    }
    throw new IllegalArgumentException(
            "Unsupported type [" + node.getClass() + "] or invalid index [" + index + "]");
}
项目:ddth-commons    文件:JacksonUtilsTest.java   
@org.junit.Test
public void testSetValue2() {
    JacksonUtils.setValue(COMPANY, "employees[0]", null);
    JsonNode nullNow = JacksonUtils.getValue(COMPANY, "employees[0]");
    assertTrue(
            nullNow == null || nullNow instanceof NullNode || nullNow instanceof MissingNode);
}
项目:ddth-commons    文件:DPathUtilsJsonNodeTest.java   
@org.junit.Test
public void testSetValue2() {
    DPathUtils.setValue(COMPANY, "employees[0]", null);
    JsonNode nullNow = DPathUtils.getValue(COMPANY, "employees[0]");
    assertTrue(
            nullNow == null || nullNow instanceof NullNode || nullNow instanceof MissingNode);
}
项目:spring-security-stateless    文件:UserDeserializer.java   
private JsonNode readJsonNode(JsonNode jsonNode, String field) {
    return jsonNode.has(field) ? jsonNode.get(field) : MissingNode.getInstance();
}
项目:spring-security-stateless    文件:UsernamePasswordAuthenticationTokenDeserializer.java   
private JsonNode readJsonNode(JsonNode jsonNode, String field) {
    return jsonNode.has(field) ? jsonNode.get(field) : MissingNode.getInstance();
}
项目:java-hamcrest    文件:JsonMatchers.java   
public static Matcher<JsonNode> jsonMissing(MissingNode value) {
  return IsJsonMissing.jsonMissing(value);
}
项目:java-hamcrest    文件:IsJsonMissing.java   
@SuppressWarnings("unused")
public static Matcher<JsonNode> jsonMissing(final MissingNode value) {
  return jsonMissing();
}
项目:java-hamcrest    文件:IsJsonMissing.java   
@Override
protected boolean matchesNode(MissingNode node, Description mismatchDescription) {
  return true;
}
项目:java-hamcrest    文件:IsJsonMissingTest.java   
@Test
public void testType() throws Exception {
  final Matcher<JsonNode> sut = jsonMissing();

  assertThat(MissingNode.getInstance(), is(sut));
}
项目:java-hamcrest    文件:IsJsonMissingTest.java   
@Test
public void testLiteral() throws Exception {
  final Matcher<JsonNode> sut = jsonMissing(MissingNode.getInstance());

  assertThat(MissingNode.getInstance(), is(sut));
}
项目:java-hamcrest    文件:IsJsonMissingTest.java   
@Test
public void testMatch() throws Exception {
  final Matcher<JsonNode> sut = jsonMissing();

  assertThat(MissingNode.getInstance(), is(sut));
}
项目:template-compiler    文件:Context.java   
public Context(JsonNode node, StringBuilder buf, Locale locale) {
  this.currentFrame = new Frame(null, node == null ? MissingNode.getInstance() : node);
  this.buf = buf == null ? new StringBuilder() : buf;
  this.javaLocale = locale == null ? Locale.getDefault() : locale;
  // this.cldrLocale = ??? TODO: replace with lookup
}
项目:redson    文件:JsonOptional.java   
@Override
public JsonNode toJsonNode() {
    return value
            .map(JsonValue::toJsonNode)
            .orElse(MissingNode.getInstance());
}
项目:embulk-output-mailchimp    文件:MailChimpHttpClient.java   
public JsonNode sendRequest(final String endpoint, final HttpMethod method, final String content,
                            final MailChimpOutputPluginDelegate.PluginTask task)
{
    try (final Jetty92RetryHelper retryHelper = createRetryHelper(task)) {
        final String authorizationHeader = getAuthorizationHeader(task);

        String responseBody = retryHelper.requestWithRetry(
                new StringJetty92ResponseEntityReader(task.getTimeoutMillis()),
                new Jetty92SingleRequester()
                {
                    @Override
                    public void requestOnce(HttpClient client, Response.Listener responseListener)
                    {
                        Request request = client
                                .newRequest(endpoint)
                                .timeout(task.getTimeoutMillis(), TimeUnit.MILLISECONDS)
                                .accept("application/json")
                                .method(method);
                        if (method == HttpMethod.POST || method == HttpMethod.PUT) {
                            request.content(new StringContentProvider(content), "application/json;utf-8");
                        }

                        if (!authorizationHeader.isEmpty()) {
                            request.header("Authorization", authorizationHeader);
                        }
                        request.send(responseListener);
                    }

                    @Override
                    public boolean isResponseStatusToRetry(Response response)
                    {
                        int status = response.getStatus();

                        return status == 429 || status / 100 != 4;
                    }

                    @Override
                    protected boolean isExceptionToRetry(Exception exception)
                    {
                        LOG.error("Exception to retry.", exception);
                        // This check is to make sure the exception is retryable, e.g: server not found, internal server error...
                        if (exception instanceof ConfigException || exception instanceof ExecutionException) {
                            return toRetry((Exception) exception.getCause());
                        }

                        return exception instanceof TimeoutException || super.isExceptionToRetry(exception);
                    }
                });

        return responseBody != null && !responseBody.isEmpty() ? parseJson(responseBody) : MissingNode.getInstance();
    }
    catch (Exception ex) {
        LOG.error("Exception occurred while sending request.", ex);
        throw Throwables.propagate(ex);
    }
}
项目:parquet-mr    文件:AvroJson.java   
@Override
public Schema missing(MissingNode ignored) {
  throw new UnsupportedOperationException("MissingNode is not supported.");
}
项目:parquet-mr    文件:AvroJson.java   
private static <T> T visit(JsonNode node, JsonTreeVisitor<T> visitor) {
  switch (node.getNodeType()) {
    case OBJECT:
      Preconditions.checkArgument(node instanceof ObjectNode,
          "Expected instance of ObjectNode: " + node);

      // use LinkedHashMap to preserve field order
      Map<String, T> fields = Maps.newLinkedHashMap();

      Iterator<Map.Entry<String, JsonNode>> iter = node.fields();
      while (iter.hasNext()) {
        Map.Entry<String, JsonNode> entry = iter.next();

        visitor.recordLevels.push(entry.getKey());
        fields.put(entry.getKey(), visit(entry.getValue(), visitor));
        visitor.recordLevels.pop();
      }

      return visitor.object((ObjectNode) node, fields);

    case ARRAY:
      Preconditions.checkArgument(node instanceof ArrayNode,
          "Expected instance of ArrayNode: " + node);

      List<T> elements = Lists.newArrayListWithExpectedSize(node.size());

      for (JsonNode element : node) {
        elements.add(visit(element, visitor));
      }

      return visitor.array((ArrayNode) node, elements);

    case BINARY:
      Preconditions.checkArgument(node instanceof BinaryNode,
          "Expected instance of BinaryNode: " + node);
      return visitor.binary((BinaryNode) node);

    case STRING:
      Preconditions.checkArgument(node instanceof TextNode,
          "Expected instance of TextNode: " + node);

      return visitor.text((TextNode) node);

    case NUMBER:
      Preconditions.checkArgument(node instanceof NumericNode,
          "Expected instance of NumericNode: " + node);

      return visitor.number((NumericNode) node);

    case BOOLEAN:
      Preconditions.checkArgument(node instanceof BooleanNode,
          "Expected instance of BooleanNode: " + node);

      return visitor.bool((BooleanNode) node);

    case MISSING:
      Preconditions.checkArgument(node instanceof MissingNode,
          "Expected instance of MissingNode: " + node);

      return visitor.missing((MissingNode) node);

    case NULL:
      Preconditions.checkArgument(node instanceof NullNode,
          "Expected instance of NullNode: " + node);

      return visitor.nullNode((NullNode) node);

    default:
      throw new IllegalArgumentException(
          "Unknown node type: " + node.getNodeType() + ": " + node);
  }
}