From 0df71060ea6293d216373da92992e7a0199ce0c6 Mon Sep 17 00:00:00 2001 From: Matthew de Detrich Date: Mon, 8 May 2023 22:14:49 +0200 Subject: [PATCH] Add OptionConverters.toJava and OptionConverters.toScala --- .../scala/org/apache/pekko/util/Scala212CompatTest.scala | 3 +++ .../scala-2.12/org/apache/pekko/util/OptionConverters.scala | 4 ++++ .../scala-2.13+/org/apache/pekko/util/OptionConverters.scala | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/actor-tests/src/test/scala/org/apache/pekko/util/Scala212CompatTest.scala b/actor-tests/src/test/scala/org/apache/pekko/util/Scala212CompatTest.scala index 6df661ff5b..526f7fb003 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/util/Scala212CompatTest.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/util/Scala212CompatTest.scala @@ -50,4 +50,7 @@ object Scala212CompatTest { val javaOptionalLong: java.util.OptionalLong = java.util.OptionalLong.of(1L) val optionalLongToScala: Option[Long] = javaOptionalLong.toScala val optionalLongToJavaGeneric: Optional[Long] = javaOptionalLong.toJavaGeneric + + // OptionConverters toScala and toJava + OptionConverters.toJava(OptionConverters.toScala(java.util.Optional.of(""))) } diff --git a/actor/src/main/scala-2.12/org/apache/pekko/util/OptionConverters.scala b/actor/src/main/scala-2.12/org/apache/pekko/util/OptionConverters.scala index 4c2da3c152..7d1f1b3be6 100644 --- a/actor/src/main/scala-2.12/org/apache/pekko/util/OptionConverters.scala +++ b/actor/src/main/scala-2.12/org/apache/pekko/util/OptionConverters.scala @@ -22,6 +22,10 @@ import java.util._ private[pekko] object OptionConverters { import scala.compat.java8.OptionConverters.SpecializerOfOptions + @inline final def toScala[A](o: Optional[A]): Option[A] = scala.compat.java8.OptionConverters.toScala(o) + + @inline final def toJava[A](o: Option[A]): Optional[A] = scala.compat.java8.OptionConverters.toJava(o) + implicit final class RichOptional[A](private val o: java.util.Optional[A]) extends AnyVal { @inline def toScala: Option[A] = scala.compat.java8.OptionConverters.RichOptionalGeneric(o).asScala diff --git a/actor/src/main/scala-2.13+/org/apache/pekko/util/OptionConverters.scala b/actor/src/main/scala-2.13+/org/apache/pekko/util/OptionConverters.scala index 0429315efa..87d1d88fad 100644 --- a/actor/src/main/scala-2.13+/org/apache/pekko/util/OptionConverters.scala +++ b/actor/src/main/scala-2.13+/org/apache/pekko/util/OptionConverters.scala @@ -21,6 +21,11 @@ import scala.jdk.OptionShape */ @InternalStableApi private[pekko] object OptionConverters { + + @inline final def toScala[A](o: Optional[A]): Option[A] = scala.jdk.javaapi.OptionConverters.toScala(o) + + @inline final def toJava[A](o: Option[A]): Optional[A] = scala.jdk.javaapi.OptionConverters.toJava(o) + implicit final class RichOptional[A](private val o: java.util.Optional[A]) extends AnyVal { @inline def toScala: Option[A] = scala.jdk.OptionConverters.RichOptional(o).toScala