def getMetadata: Optional[java.util.Map[String, String]] = metadata.map()

in google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/StorageObject.scala [109:304]


  def getMetadata: Optional[java.util.Map[String, String]] = metadata.map(_.asJava).toJava
  def getComponentCount: Optional[Integer] = componentCount.map(Int.box).toJava
  def getKmsKeyName: Optional[String] = kmsKeyName.toJava
  def getCustomerEncryption: Optional[CustomerEncryption] = customerEncryption.toJava
  def getOwner: Optional[Owner] = owner.toJava
  def getAcl: Optional[java.util.List[ObjectAccessControls]] = acl.map(_.asJava).toJava
  def getCustomTime: Optional[OffsetDateTime] = customTime.toJava
  def getMaybeMd5Hash: Optional[String] = maybeMd5Hash.toJava
  def getMaybeCrc32c: Optional[String] = maybeCrc32c.toJava
  def getMaybeStorageClass: Optional[String] = maybeStorageClass.toJava

  def withKind(value: String): StorageObject = copy(kind = value)
  def withId(value: String): StorageObject = copy(id = value)
  def withName(value: String): StorageObject = copy(name = value)
  def withBucket(value: String): StorageObject = copy(bucket = value)
  def withGeneration(value: Long): StorageObject = copy(generation = value)

  /** Scala API */
  def withContentType(value: ContentType): StorageObject = copy(contentType = value)

  /** Java API */
  def withContentType(value: pekko.http.javadsl.model.ContentType): StorageObject =
    copy(maybeContentType = Option(value.asInstanceOf[ContentType]))
  def withSize(value: Long): StorageObject = copy(size = value)
  def withEtag(value: String): StorageObject = copy(etag = value)
  def withMd5Hash(value: String): StorageObject = copy(maybeMd5Hash = Option(value))
  def withCrc32c(value: String): StorageObject = copy(maybeCrc32c = Option(value))
  def withMediaLink(value: String): StorageObject = copy(mediaLink = value)
  def withSelfLink(value: String): StorageObject = copy(selfLink = value)
  def withUpdated(value: OffsetDateTime): StorageObject = copy(updated = value)
  def withTimeCreated(value: OffsetDateTime): StorageObject = copy(timeCreated = value)
  def withTimeDeleted(value: OffsetDateTime): StorageObject = copy(timeDeleted = Option(value))
  def withStorageClass(value: String): StorageObject = copy(maybeStorageClass = Option(value))
  def withContentDisposition(value: String): StorageObject = copy(contentDisposition = Option(value))
  def withContentEncoding(value: String): StorageObject = copy(contentEncoding = Option(value))
  def withContentLanguage(value: String): StorageObject = copy(contentLanguage = Option(value))
  def withMetageneration(value: Long): StorageObject = copy(metageneration = value)
  def withTemporaryHold(value: Boolean): StorageObject = copy(temporaryHold = Option(value))
  def withEventBasedHold(value: Boolean): StorageObject = copy(eventBasedHold = Option(value))
  def withRetentionExpirationTime(value: OffsetDateTime): StorageObject = copy(retentionExpirationTime = Option(value))
  def withTimeStorageClassUpdated(value: OffsetDateTime): StorageObject = copy(timeStorageClassUpdated = value)
  def withCacheControl(value: String): StorageObject = copy(cacheControl = Option(value))
  def withCustomTime(value: OffsetDateTime): StorageObject = copy(customTime = Option(value))
  def withMetadata(value: Map[String, String]): StorageObject = copy(metadata = Option(value))
  def withComponentCount(value: Int): StorageObject = copy(componentCount = Option(value))
  def withKmsKeyName(value: String): StorageObject = copy(kmsKeyName = Option(value))
  def withCustomerEncryption(value: CustomerEncryption): StorageObject = copy(customerEncryption = Option(value))
  def withOwner(value: Owner): StorageObject = copy(owner = Option(value))
  def withAcl(value: List[ObjectAccessControls]): StorageObject = copy(acl = Option(value))

  private def copy(
      kind: String = kind,
      id: String = id,
      name: String = name,
      bucket: String = bucket,
      generation: Long = generation,
      contentType: ContentType = maybeContentType.getOrElse(null),
      maybeContentType: Option[ContentType] = maybeContentType,
      size: Long = size,
      etag: String = etag,
      md5Hash: String = maybeMd5Hash.getOrElse(""),
      maybeMd5Hash: Option[String] = maybeMd5Hash,
      crc32c: String = maybeCrc32c.getOrElse(""),
      maybeCrc32c: Option[String] = maybeCrc32c,
      mediaLink: String = mediaLink,
      selfLink: String = selfLink,
      updated: OffsetDateTime = updated,
      timeCreated: OffsetDateTime = timeCreated,
      timeDeleted: Option[OffsetDateTime] = timeDeleted,
      storageClass: String = maybeStorageClass.getOrElse(""),
      maybeStorageClass: Option[String] = maybeStorageClass,
      contentDisposition: Option[String] = contentDisposition,
      contentEncoding: Option[String] = contentEncoding,
      contentLanguage: Option[String] = contentLanguage,
      metageneration: Long = metageneration,
      temporaryHold: Option[Boolean] = temporaryHold,
      eventBasedHold: Option[Boolean] = eventBasedHold,
      retentionExpirationTime: Option[OffsetDateTime] = retentionExpirationTime,
      timeStorageClassUpdated: OffsetDateTime = timeStorageClassUpdated,
      cacheControl: Option[String] = cacheControl,
      customTime: Option[OffsetDateTime] = customTime,
      metadata: Option[Map[String, String]] = metadata,
      componentCount: Option[Int] = componentCount,
      kmsKeyName: Option[String] = kmsKeyName,
      customerEncryption: Option[CustomerEncryption] = customerEncryption,
      owner: Option[Owner] = owner,
      acl: Option[List[ObjectAccessControls]] = acl): StorageObject = new StorageObject(
    kind = kind,
    id = id,
    name = name,
    bucket = bucket,
    generation = generation,
    contentType = contentType,
    maybeContentType = Option(contentType),
    size = size,
    etag = etag,
    md5Hash = md5Hash,
    maybeMd5Hash = Option(md5Hash),
    crc32c = crc32c,
    maybeCrc32c = Option(crc32c),
    mediaLink = mediaLink,
    selfLink = selfLink,
    updated = updated,
    timeCreated = timeCreated,
    timeDeleted = Some(timeCreated),
    storageClass = storageClass,
    maybeStorageClass = Option(storageClass),
    contentDisposition = contentDisposition,
    contentEncoding = contentEncoding,
    contentLanguage = contentLanguage,
    metageneration = metageneration,
    temporaryHold = temporaryHold,
    eventBasedHold = eventBasedHold,
    retentionExpirationTime = retentionExpirationTime,
    timeStorageClassUpdated = timeStorageClassUpdated,
    cacheControl = cacheControl,
    customTime = customTime,
    metadata = metadata,
    componentCount = componentCount,
    kmsKeyName = kmsKeyName,
    customerEncryption = customerEncryption,
    owner = owner,
    acl = acl)

  override def toString =
    "StorageObject(" +
    s"kind=$kind," +
    s"id=$id," +
    s"name=$name," +
    s"bucket=$bucket," +
    s"generation=$generation," +
    s"contentType=$contentType," +
    s"size=$size," +
    s"etag=$etag," +
    s"md5Hash=$md5Hash," +
    s"crc32c=$crc32c," +
    s"mediaLink=$mediaLink," +
    s"selfLink=$selfLink," +
    s"updated=$updated," +
    s"timeCreated=$timeCreated," +
    timeDeleted.fold("")(td => s"timeDeleted=$td,") +
    s"storageClass=$storageClass," +
    s"contentDisposition=$contentDisposition," +
    s"contentEncoding=$contentEncoding," +
    s"contentLanguage=$contentLanguage" +
    s"metageneration = $metageneration," +
    s"temporaryHold = $temporaryHold," +
    s"eventBasedHold = $eventBasedHold," +
    s"retentionExpirationTime = $retentionExpirationTime," +
    s"timeStorageClassUpdated = $timeStorageClassUpdated," +
    s"cacheControl = $cacheControl," +
    s"customTime = $customTime,"
  metadata.fold("")(m => s"metadata = $m,") +
  componentCount.fold("")(cc => s"componentCount = $cc,") +
  kmsKeyName.fold("")(kkn => s"kmsKeyName = $kkn,") +
  customerEncryption.fold("")(ce => s"customerEncryption = $ce,") +
  owner.fold("")(o => s"owner = $o,") +
  acl.fold("")(acls => acls.mkString("[", ",", "],")) +
  ")"

  override def equals(other: Any): Boolean = other match {
    case that: StorageObject =>
      java.util.Objects.equals(this.kind, that.kind) &&
      java.util.Objects.equals(this.id, that.id) &&
      java.util.Objects.equals(this.name, that.name) &&
      java.util.Objects.equals(this.bucket, that.bucket) &&
      java.util.Objects.equals(this.generation, that.generation) &&
      java.util.Objects.equals(this.contentType, that.contentType) &&
      java.util.Objects.equals(this.size, that.size) &&
      java.util.Objects.equals(this.etag, that.etag) &&
      java.util.Objects.equals(this.md5Hash, that.md5Hash) &&
      java.util.Objects.equals(this.crc32c, that.crc32c) &&
      java.util.Objects.equals(this.mediaLink, that.mediaLink) &&
      java.util.Objects.equals(this.selfLink, that.selfLink) &&
      java.util.Objects.equals(this.updated, that.updated) &&
      java.util.Objects.equals(this.timeCreated, that.timeCreated) &&
      java.util.Objects.equals(this.timeDeleted, that.timeDeleted) &&
      java.util.Objects.equals(this.storageClass, that.storageClass) &&
      java.util.Objects.equals(this.contentDisposition, that.contentDisposition) &&
      java.util.Objects.equals(this.contentEncoding, that.contentEncoding) &&
      java.util.Objects.equals(this.contentLanguage, that.contentLanguage) &&
      java.util.Objects.equals(this.metageneration, that.metageneration) &&
      java.util.Objects.equals(this.temporaryHold, that.temporaryHold) &&
      java.util.Objects.equals(this.eventBasedHold, that.eventBasedHold) &&
      java.util.Objects.equals(this.retentionExpirationTime, that.retentionExpirationTime) &&
      java.util.Objects.equals(this.timeStorageClassUpdated, that.timeStorageClassUpdated) &&
      java.util.Objects.equals(this.cacheControl, that.cacheControl) &&
      java.util.Objects.equals(this.customTime, that.customTime) &&
      java.util.Objects.equals(this.metadata, that.metadata) &&
      java.util.Objects.equals(this.componentCount, that.componentCount) &&
      java.util.Objects.equals(this.kmsKeyName, that.kmsKeyName)
      java.util.Objects.equals(this.customerEncryption, that.customerEncryption)
      java.util.Objects.equals(this.owner, that.owner)
      java.util.Objects.equals(this.acl, that.acl)
    case _ => false
  }