Skip to content

Commit 41638d9

Browse files
committed
Merging http4s-stir implementation and tests.
1 parent a2708ef commit 41638d9

File tree

15 files changed

+63
-408
lines changed

15 files changed

+63
-408
lines changed

http4s-stir/src/main/scala-2/pl/iterators/kebs/http4sstir/unmarshallers/enums/package.scala

-3
This file was deleted.

http4s-stir/src/main/scala-3/pl/iterators/kebs/http4sstir/matchers/KebsMatchers.scala

-30
This file was deleted.

http4s-stir/src/main/scala-3/pl/iterators/kebs/http4sstir/unmarshallers/enums/KebsEnumUnmarshallers.scala

-68
This file was deleted.

http4s-stir/src/main/scala-2/pl/iterators/kebs/http4sstir/matchers/KebsMatchers.scala http4s-stir/src/main/scala/pl/iterators/kebs/http4sstir/matchers/KebsMatchers.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package pl.iterators.kebs.http4sstir.matchers
22

3-
import pl.iterators.stir.server.PathMatcher1
3+
import pl.iterators.kebs.core.enums._
44
import pl.iterators.kebs.core.instances.InstanceConverter
55
import pl.iterators.kebs.core.macros.ValueClassLike
6-
import pl.iterators.kebs.core.enums._
6+
import pl.iterators.stir.server.PathMatcher1
77

88
trait KebsMatchers extends pl.iterators.stir.server.PathMatchers {
99

http4s-stir/src/main/scala-2/pl/iterators/kebs/http4sstir/unmarshallers/enums/KebsEnumUnmarshallers.scala http4s-stir/src/main/scala/pl/iterators/kebs/http4sstir/unmarshallers/enums/KebsEnumUnmarshallers.scala

+20-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package pl.iterators.kebs.http4sstir.enums
1+
package pl.iterators.kebs.http4sstir.unmarshallers.enums
22

33
import pl.iterators.stir.unmarshalling.PredefinedFromStringUnmarshallers._
44
import pl.iterators.stir.unmarshalling.{FromStringUnmarshaller, Unmarshaller}
@@ -19,18 +19,21 @@ trait EnumUnmarshallers {
1919
enumUnmarshaller(ev)
2020
}
2121

22-
trait ValueEnumUnmarshallers {
22+
trait LowerPriorityValueEnumUnmarshallers {
2323
final def valueEnumUnmarshaller[V, E <: ValueEnumLikeEntry[V]](`enum`: ValueEnumLike[V, E]): Unmarshaller[V, E] = Unmarshaller { v =>
24-
`enum`.withValueOption(v) match {
24+
`enum`.values.find(e => e.value == v) match {
2525
case Some(enumEntry) => IO.pure(enumEntry)
2626
case None =>
27-
IO.raiseError(new IllegalArgumentException(s"""Invalid value '$v'. Expected one of: ${`enum`.getValuesToEntriesMap.keysIterator
28-
.mkString(", ")}"""))
27+
IO.raiseError(
28+
new IllegalArgumentException(s"""Invalid value '$v'. Expected one of: ${`enum`.getValuesToEntriesMap.keysIterator
29+
.mkString(", ")}""")
30+
)
2931
}
3032
}
3133

32-
implicit def kebsValueEnumUnmarshaller[V, E <: ValueEnumLikeEntry[V]](implicit ev: ValueEnumLike[V, E]): Unmarshaller[V, E] =
33-
valueEnumUnmarshaller(ev)
34+
implicit def kebsValueEnumFromStringUnmarshaller[E <: ValueEnumLikeEntry[String]](implicit
35+
ev: ValueEnumLike[String, E]
36+
): FromStringUnmarshaller[E] = valueEnumUnmarshaller(ev)
3437

3538
implicit def kebsIntValueEnumFromStringUnmarshaller[E <: ValueEnumLikeEntry[Int]](implicit
3639
ev: ValueEnumLike[Int, E]
@@ -50,4 +53,13 @@ trait ValueEnumUnmarshallers {
5053
byteFromStringUnmarshaller andThen valueEnumUnmarshaller(ev)
5154
}
5255

53-
trait KebsEnumUnmarshallers extends EnumUnmarshallers with ValueEnumUnmarshallers {}
56+
trait ValueEnumUnmarshallers extends LowerPriorityValueEnumUnmarshallers {
57+
implicit def kebsValueEnumUnmarshaller[V, E <: ValueEnumLikeEntry[V]](implicit ev: ValueEnumLike[V, E]): Unmarshaller[V, E] =
58+
valueEnumUnmarshaller(ev)
59+
}
60+
61+
trait KebsEnumUnmarshallers extends ValueEnumUnmarshallers with EnumUnmarshallers {
62+
// this is to make both 2.13.x and 3.x compilers happy
63+
override implicit def kebsValueEnumUnmarshaller[V, E <: ValueEnumLikeEntry[V]](implicit ev: ValueEnumLike[V, E]): Unmarshaller[V, E] =
64+
valueEnumUnmarshaller(ev)
65+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package pl.iterators.kebs.http4sstir
2+
3+
import pl.iterators.kebs.enumeratum.KebsEnumeratum
4+
5+
trait KebsEnumForTests extends KebsEnumeratum
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package pl.iterators.kebs.http4sstir
2+
3+
import pl.iterators.kebs.enumeratum.KebsEnumeratum
4+
5+
trait KebsValueEnumForTests extends KebsEnumeratum
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package pl.iterators.kebs.http4sstir
2+
3+
import pl.iterators.kebs.enums.KebsEnum
4+
5+
trait KebsEnumForTests extends KebsEnum
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package pl.iterators.kebs.http4sstir
2+
3+
import pl.iterators.kebs.enums.KebsValueEnum
4+
5+
trait KebsValueEnumForTests extends KebsValueEnum

http4s-stir/src/test/scala-3/pl/iterators/kebs/http4sstir/domain/Http4sStirTagsDomain.scala

+13
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,23 @@ import pl.iterators.kebs.core.enums.ValueEnumLikeEntry
1010
object Domain {
1111
opaque type TestTaggedUri = URI
1212
object TestTaggedUri extends Opaque[TestTaggedUri, URI]
13+
1314
opaque type TestId = UUID
1415
object TestId extends Opaque[TestId, UUID]
16+
1517
opaque type Id = Long
1618
object Id extends Opaque[Id, Long]
19+
20+
opaque type TestDouble = Double
21+
object TestDouble extends Opaque[TestDouble, Double]
22+
23+
opaque type UUIDId = UUID
24+
object UUIDId extends Opaque[UUIDId, UUID] {
25+
def generate[T]: UUIDId = UUID.randomUUID()
26+
def fromString[T](str: String): UUIDId =
27+
UUID.fromString(str)
28+
}
29+
1730
case class I(i: Int)
1831
case class S(s: String)
1932
case class P[A](a: A)

http4s-stir/src/test/scala-3/pl/iterators/kebs/http4sstir/matchers/Http4sStirMatchersTests.scala

-86
This file was deleted.

0 commit comments

Comments
 (0)