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 toScala and toJava
|
||||||
OptionConverters.toJava(OptionConverters.toScala(java.util.Optional.of("")))
|
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
|
@InternalStableApi
|
||||||
private[pekko] object OptionConverters {
|
private[pekko] object OptionConverters {
|
||||||
import scala.compat.java8.OptionConverters.SpecializerOfOptions
|
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)
|
@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)
|
@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 {
|
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 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)
|
@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 {
|
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