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

com.hubspot.chrome.devtools.client.core.runtime.CallArgument Maven / Gradle / Ivy

package com.hubspot.chrome.devtools.client.core.runtime;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * Represents function call argument. Either remote object id `objectId`, primitive `value`,
 * unserializable primitive value or neither of (for undefined) them should be specified.
 */
public final class CallArgument {
  private Object value;

  private UnserializableValue unserializableValue;

  private RemoteObjectId objectId;

  @JsonCreator
  public CallArgument(@JsonProperty("value") Object value,
      @JsonProperty("unserializableValue") UnserializableValue unserializableValue,
      @JsonProperty("objectId") RemoteObjectId objectId) {
    this.value = value;
    this.unserializableValue = unserializableValue;
    this.objectId = objectId;
  }

  public Object getValue() {
    return value;
  }

  public UnserializableValue getUnserializableValue() {
    return unserializableValue;
  }

  public RemoteObjectId getObjectId() {
    return objectId;
  }

  public static CallArgument.Builder builder() {
    return new CallArgument.Builder();
  }

  public static final class Builder {
    private Object value;

    private UnserializableValue unserializableValue;

    private RemoteObjectId objectId;

    private Builder() {
    }

    public CallArgument.Builder setValue(Object value) {
      this.value = value;
      return this;
    }

    public CallArgument.Builder setUnserializableValue(UnserializableValue unserializableValue) {
      this.unserializableValue = unserializableValue;
      return this;
    }

    public CallArgument.Builder setObjectId(RemoteObjectId objectId) {
      this.objectId = objectId;
      return this;
    }

    public CallArgument build() {
      return new CallArgument(value, unserializableValue, objectId);
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy