Add OptionConverters.toScala methods for java Optional primitives
This commit is contained in:
parent
0df71060ea
commit
898c69701b
3 changed files with 22 additions and 0 deletions
|
|
@ -53,4 +53,8 @@ object Scala212CompatTest {
|
|||
|
||||
// OptionConverters toScala and toJava
|
||||
OptionConverters.toJava(OptionConverters.toScala(java.util.Optional.of("")))
|
||||
OptionConverters.toJava(OptionConverters.toScala(java.util.OptionalDouble.of(1.0)))
|
||||
OptionConverters.toJava(OptionConverters.toScala(java.util.OptionalInt.of(1)))
|
||||
OptionConverters.toJava(OptionConverters.toScala(java.util.OptionalLong.of(1L)))
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,9 +21,21 @@ import java.util._
|
|||
@InternalStableApi
|
||||
private[pekko] object OptionConverters {
|
||||
import scala.compat.java8.OptionConverters.SpecializerOfOptions
|
||||
import scala.compat.java8.OptionConverters._
|
||||
|
||||
@inline final def toScala[A](o: Optional[A]): Option[A] = scala.compat.java8.OptionConverters.toScala(o)
|
||||
|
||||
// The rest of the .toScala methods that work with OptionalDouble/OptionalInt/OptionalLong have to be manually
|
||||
// redefined because the scala.compat.java8.OptionConverters.toScala variants work with scala.lang primitive types
|
||||
// where as scala.jdk.javaapi.OptionConverters.toScala works with java.lang primitive types. Since the primary
|
||||
// usecase of these functions is for calling within Java code its preferrable to return Java primitives, see
|
||||
// https://github.com/scala/bug/issues/4214
|
||||
def toScala(o: OptionalDouble): Option[java.lang.Double] = if (o.isPresent) Some(o.getAsDouble) else None
|
||||
|
||||
def toScala(o: OptionalInt): Option[java.lang.Integer] = if (o.isPresent) Some(o.getAsInt) else None
|
||||
|
||||
def toScala(o: OptionalLong): Option[java.lang.Long] = if (o.isPresent) Some(o.getAsLong) else None
|
||||
|
||||
@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 {
|
||||
|
|
|
|||
|
|
@ -24,6 +24,12 @@ private[pekko] object OptionConverters {
|
|||
|
||||
@inline final def toScala[A](o: Optional[A]): Option[A] = scala.jdk.javaapi.OptionConverters.toScala(o)
|
||||
|
||||
@inline def toScala(o: OptionalDouble): Option[java.lang.Double] = scala.jdk.javaapi.OptionConverters.toScala(o)
|
||||
|
||||
@inline def toScala(o: OptionalInt): Option[java.lang.Integer] = scala.jdk.javaapi.OptionConverters.toScala(o)
|
||||
|
||||
@inline def toScala(o: OptionalLong): Option[java.lang.Long] = 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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue