All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.vertx.core.parsetools.JsonEvent Maven / Gradle / Ivy

There is a newer version: 5.0.0.CR1
Show newest version
/*
 * Copyright (c) 2011-2019 Contributors to the Eclipse Foundation
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 * which is available at https://www.apache.org/licenses/LICENSE-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 */

package io.vertx.core.parsetools;

import com.fasterxml.jackson.core.type.TypeReference;
import io.vertx.codegen.annotations.GenIgnore;
import io.vertx.codegen.annotations.VertxGen;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

import java.time.Instant;

/**
 * A JSON event emited by the {@link JsonParser}.
 *
 * @author Julien Viet
 */
@VertxGen
public interface JsonEvent {

  /**
   * @return the type of the event
   */
  JsonEventType type();

  /**
   * @return the name of the field when the event is emitted as a JSON object member
   */
  String fieldName();

  /**
   * @return the json value for {@link JsonEventType#VALUE} events
   */
  Object value();

  /**
   * @return true when the JSON value is a number
   */
  boolean isNumber();

  /**
   * @return the {@code Integer} value or {@code null} if the event has no JSON value
   * @throws java.lang.ClassCastException if the value is not an {@code Integer}
   */
  Integer integerValue();

  /**
   * @return the {@code Long} value or {@code null} if the event has no JSON value
   * @throws java.lang.ClassCastException if the value is not a {@code Long}
   */
  Long longValue();

  /**
   * @return the {@code Float} value or {@code null} if the event has no JSON value
   * @throws java.lang.ClassCastException if the value is not a {@code Float}
   */
  Float floatValue();

  /**
   * @return the {@code Double} value or {@code null} if the event has no JSON value
   * @throws java.lang.ClassCastException if the value is not a {@code Double}
   */
  Double doubleValue();

  /**
   * @return true when the JSON value is a boolean
   */
  boolean isBoolean();

  /**
   * @return the {@code Boolean} value or {@code null} if the event has no JSON value
   * @throws java.lang.ClassCastException if the value is not a {@code Boolean}
   */
  Boolean booleanValue();

  /**
   * @return true when the JSON value is a string
   */
  boolean isString();

  /**
   * @return the string value or {@code null} if the event has no JSON value
   * @throws java.lang.ClassCastException if the value is not a string
   */
  String stringValue();

  /**
   * Return the binary value.
   * 

* JSON itself has no notion of a binary, this extension complies to the RFC-7493, so this method assumes there is a * String value with the key and it contains a Base64 encoded binary, which it decodes if found and returns. * * @return the binary value or {@code null} if the event has no JSON value * @throws java.lang.ClassCastException if the value is not a String * @throws java.lang.IllegalArgumentException if the String value is not a legal Base64 encoded value */ Buffer binaryValue(); /** * Return the {@code Instant} value. *

* JSON itself has no notion of a temporal types, this extension complies to the RFC-7493, so this method assumes * there is a String value with the key and it contains an ISO 8601 encoded date and time format * such as "2017-04-03T10:25:41Z", which it decodes if found and returns. * * @return the {@code Instant} value or {@code null} if the event has no JSON value * @throws java.lang.ClassCastException if the value is not a String * @throws java.time.format.DateTimeParseException if the String value is not a legal ISO 8601 encoded value */ @GenIgnore(GenIgnore.PERMITTED_TYPE) Instant instantValue(); /** * @return true when the JSON value is null */ boolean isNull(); /** * @return true when the JSON value is a JSON object */ boolean isObject(); /** * @return the JSON object value or {@code null} if the event has no JSON value * @throws java.lang.ClassCastException if the value is not a JSON object */ JsonObject objectValue(); /** * @return true when the JSON value is a JSON array */ boolean isArray(); /** * @return the JSON array value or {@code null} if the event has no JSON value * @throws java.lang.ClassCastException if the value is not a JSON array */ JsonArray arrayValue(); /** * Decodes and returns the current value as the specified {@code type}. * * @param type the type to decode the value to * @return the decoded value */ T mapTo(Class type); /** * Decodes and returns the current value as the specified {@code type}. * * @param type the type to decode the value to * @return the decoded value */ @GenIgnore(GenIgnore.PERMITTED_TYPE) T mapTo(TypeReference type); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy