Add java Optional primitive to Scala converters
This commit is contained in:
parent
0af7d3c5c1
commit
1248fcf7cb
3 changed files with 73 additions and 2 deletions
|
|
@ -37,4 +37,17 @@ object Scala212CompatTest {
|
||||||
val scalaLongOption: Option[Long] = Some(1L)
|
val scalaLongOption: Option[Long] = Some(1L)
|
||||||
val longOptionalToJavaPrimitive: OptionalLong = javaLongOptional.toJavaPrimitive
|
val longOptionalToJavaPrimitive: OptionalLong = javaLongOptional.toJavaPrimitive
|
||||||
val longOptionToJavaPrimitive: OptionalLong = scalaLongOption.toJavaPrimitive
|
val longOptionToJavaPrimitive: OptionalLong = scalaLongOption.toJavaPrimitive
|
||||||
|
|
||||||
|
// from java optional primitive
|
||||||
|
val javaOptionalDouble: java.util.OptionalDouble = java.util.OptionalDouble.of(1.0)
|
||||||
|
val optionalDoubleToScala: Option[Double] = javaOptionalDouble.toScala
|
||||||
|
val optionalDoubleToJavaGeneric: Optional[Double] = javaOptionalDouble.toJavaGeneric
|
||||||
|
|
||||||
|
val javaOptionalInt: java.util.OptionalInt = java.util.OptionalInt.of(1)
|
||||||
|
val optionalIntToScala: Option[Int] = javaOptionalInt.toScala
|
||||||
|
val optionalIntToJavaGeneric: Optional[Int] = javaOptionalInt.toJavaGeneric
|
||||||
|
|
||||||
|
val javaOptionalLong: java.util.OptionalLong = java.util.OptionalLong.of(1L)
|
||||||
|
val optionalLongToScala: Option[Long] = javaOptionalLong.toScala
|
||||||
|
val optionalLongToJavaGeneric: Optional[Long] = javaOptionalLong.toJavaGeneric
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ package org.apache.pekko.util
|
||||||
|
|
||||||
import org.apache.pekko.annotation.InternalStableApi
|
import org.apache.pekko.annotation.InternalStableApi
|
||||||
|
|
||||||
import java.util.Optional
|
import java.util._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* INTERNAL API
|
* INTERNAL API
|
||||||
|
|
@ -35,4 +35,33 @@ private[pekko] object OptionConverters {
|
||||||
@inline def toJavaPrimitive[O](implicit specOp: SpecializerOfOptions[A, O]): O =
|
@inline def toJavaPrimitive[O](implicit specOp: SpecializerOfOptions[A, O]): O =
|
||||||
scala.compat.java8.OptionConverters.RichOptionForJava8(o).asPrimitive
|
scala.compat.java8.OptionConverters.RichOptionForJava8(o).asPrimitive
|
||||||
}
|
}
|
||||||
|
|
||||||
|
implicit class RichOptionalDouble(private val o: OptionalDouble) extends AnyVal {
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalDouble` to a Scala `Option` */
|
||||||
|
@inline def toScala: Option[Double] = scala.compat.java8.OptionConverters.RichOptionalDouble(o).asScala
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalDouble` to a generic Java `Optional` */
|
||||||
|
@inline def toJavaGeneric: Optional[Double] = scala.compat.java8.OptionConverters.RichOptionalDouble(o).asGeneric
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Provides conversions from `OptionalInt` to Scala `Option` and the generic `Optional` */
|
||||||
|
implicit class RichOptionalInt(private val o: OptionalInt) extends AnyVal {
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalInt` to a Scala `Option` */
|
||||||
|
@inline def toScala: Option[Int] = scala.compat.java8.OptionConverters.RichOptionalInt(o).asScala
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalInt` to a generic Java `Optional` */
|
||||||
|
@inline def toJavaGeneric: Optional[Int] = scala.compat.java8.OptionConverters.RichOptionalInt(o).asGeneric
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Provides conversions from `OptionalLong` to Scala `Option` and the generic `Optional` */
|
||||||
|
implicit class RichOptionalLong(private val o: OptionalLong) extends AnyVal {
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalLong` to a Scala `Option` */
|
||||||
|
@inline def toScala: Option[Long] = scala.compat.java8.OptionConverters.RichOptionalLong(o).asScala
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalLong` to a generic Java `Optional` */
|
||||||
|
@inline def toJavaGeneric: Optional[Long] = scala.compat.java8.OptionConverters.RichOptionalLong(o).asGeneric
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ package org.apache.pekko.util
|
||||||
|
|
||||||
import org.apache.pekko.annotation.InternalStableApi
|
import org.apache.pekko.annotation.InternalStableApi
|
||||||
|
|
||||||
import java.util.Optional
|
import java.util._
|
||||||
import scala.jdk.OptionShape
|
import scala.jdk.OptionShape
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -34,4 +34,33 @@ private[pekko] object OptionConverters {
|
||||||
def toJavaPrimitive[O](implicit shape: OptionShape[A, O]): O =
|
def toJavaPrimitive[O](implicit shape: OptionShape[A, O]): O =
|
||||||
scala.jdk.OptionConverters.RichOption(o).toJavaPrimitive
|
scala.jdk.OptionConverters.RichOption(o).toJavaPrimitive
|
||||||
}
|
}
|
||||||
|
|
||||||
|
implicit class RichOptionalDouble(private val o: OptionalDouble) extends AnyVal {
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalDouble` to a Scala `Option` */
|
||||||
|
@inline def toScala: Option[Double] = scala.jdk.OptionConverters.RichOptionalDouble(o).toScala
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalDouble` to a generic Java `Optional` */
|
||||||
|
@inline def toJavaGeneric: Optional[Double] = scala.jdk.OptionConverters.RichOptionalDouble(o).toJavaGeneric
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Provides conversions from `OptionalInt` to Scala `Option` and the generic `Optional` */
|
||||||
|
implicit class RichOptionalInt(private val o: OptionalInt) extends AnyVal {
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalInt` to a Scala `Option` */
|
||||||
|
@inline def toScala: Option[Int] = scala.jdk.OptionConverters.RichOptionalInt(o).toScala
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalInt` to a generic Java `Optional` */
|
||||||
|
@inline def toJavaGeneric: Optional[Int] = scala.jdk.OptionConverters.RichOptionalInt(o).toJavaGeneric
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Provides conversions from `OptionalLong` to Scala `Option` and the generic `Optional` */
|
||||||
|
implicit class RichOptionalLong(private val o: OptionalLong) extends AnyVal {
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalLong` to a Scala `Option` */
|
||||||
|
@inline def toScala: Option[Long] = scala.jdk.OptionConverters.RichOptionalLong(o).toScala
|
||||||
|
|
||||||
|
/** Convert a Java `OptionalLong` to a generic Java `Optional` */
|
||||||
|
@inline def toJavaGeneric: Optional[Long] = scala.jdk.OptionConverters.RichOptionalLong(o).toJavaGeneric
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue