Add toJavaPrimitive to OptionConverters
This commit is contained in:
parent
07df607192
commit
0af7d3c5c1
3 changed files with 55 additions and 0 deletions
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* license agreements; and to You under the Apache License, version 2.0:
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* This file is part of the Apache Pekko project, derived from Akka.
|
||||
*/
|
||||
|
||||
package org.apache.pekko.util
|
||||
|
||||
import org.apache.pekko.util.OptionConverters._
|
||||
|
||||
import java.util._
|
||||
|
||||
/**
|
||||
* These tests are here to ensure that methods from [[org.apache.pekko.util.FutureConverters]], [[org.apache.pekko.util.OptionConverters]]
|
||||
* and [[org.apache.pekko.util.FunctionConverters]] that used within Pekko ecosystem but not Pekko core properly cross compile on Scala 2.12
|
||||
* and Scala 2.13+.
|
||||
*
|
||||
* Remove this once Scala 2.12 support is dropped since all methods are in Scala 2.13+ stdlib
|
||||
*/
|
||||
object Scala212CompatTest {
|
||||
|
||||
// .toJavaPrimitive tests
|
||||
val javaDoubleOptional: java.util.Optional[Double] = java.util.Optional.of(1.0)
|
||||
val scalaDoubleOption: Option[Double] = Some(1.0)
|
||||
val doubleOptionalToJavaPrimitive: OptionalDouble = javaDoubleOptional.toJavaPrimitive
|
||||
val doubleOptionToJavaPrimitive: OptionalDouble = scalaDoubleOption.toJavaPrimitive
|
||||
|
||||
val javaIntOptional: java.util.Optional[Int] = java.util.Optional.of(1)
|
||||
val scalaIntOption: Option[Int] = Some(1)
|
||||
val intOptionalToJavaPrimitive: OptionalInt = javaIntOptional.toJavaPrimitive
|
||||
val intOptionToJavaPrimitive: OptionalInt = scalaIntOption.toJavaPrimitive
|
||||
|
||||
val javaLongOptional: java.util.Optional[Long] = java.util.Optional.of(1L)
|
||||
val scalaLongOption: Option[Long] = Some(1L)
|
||||
val longOptionalToJavaPrimitive: OptionalLong = javaLongOptional.toJavaPrimitive
|
||||
val longOptionToJavaPrimitive: OptionalLong = scalaLongOption.toJavaPrimitive
|
||||
}
|
||||
|
|
@ -20,11 +20,19 @@ import java.util.Optional
|
|||
*/
|
||||
@InternalStableApi
|
||||
private[pekko] object OptionConverters {
|
||||
import scala.compat.java8.OptionConverters.SpecializerOfOptions
|
||||
|
||||
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
|
||||
|
||||
@inline def toJavaPrimitive[O](implicit specOp: SpecializerOfOptions[A, O]): O =
|
||||
scala.compat.java8.OptionConverters.RichOptionalGeneric(o).asPrimitive
|
||||
}
|
||||
|
||||
implicit final class RichOption[A](private val o: Option[A]) extends AnyVal {
|
||||
@inline def toJava: Optional[A] = scala.compat.java8.OptionConverters.RichOptionForJava8(o).asJava
|
||||
|
||||
@inline def toJavaPrimitive[O](implicit specOp: SpecializerOfOptions[A, O]): O =
|
||||
scala.compat.java8.OptionConverters.RichOptionForJava8(o).asPrimitive
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ package org.apache.pekko.util
|
|||
import org.apache.pekko.annotation.InternalStableApi
|
||||
|
||||
import java.util.Optional
|
||||
import scala.jdk.OptionShape
|
||||
|
||||
/**
|
||||
* INTERNAL API
|
||||
|
|
@ -22,9 +23,15 @@ import java.util.Optional
|
|||
private[pekko] object OptionConverters {
|
||||
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
|
||||
|
||||
@inline def toJavaPrimitive[O](implicit shape: OptionShape[A, O]): O =
|
||||
scala.jdk.OptionConverters.RichOptional(o).toJavaPrimitive
|
||||
}
|
||||
|
||||
implicit final class RichOption[A](private val o: Option[A]) extends AnyVal {
|
||||
@inline def toJava: Optional[A] = scala.jdk.OptionConverters.RichOption(o).toJava
|
||||
|
||||
def toJavaPrimitive[O](implicit shape: OptionShape[A, O]): O =
|
||||
scala.jdk.OptionConverters.RichOption(o).toJavaPrimitive
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue