Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Generalized support for Seq instances to Iterable instances.
Browse files Browse the repository at this point in the history
  • Loading branch information
codahale committed Mar 2, 2011
1 parent 67a6011 commit 653c1ce
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import org.codehaus.jackson.map.{SerializerProvider, JsonSerializer}
*
* @author coda
*/
class SeqSerializer extends JsonSerializer[Seq[_]] {
def serialize(value: Seq[_], json: JsonGenerator, provider: SerializerProvider) = {
class IterableSerializer extends JsonSerializer[Iterable[_]] {
def serialize(value: Iterable[_], json: JsonGenerator, provider: SerializerProvider) = {
json.writeStartArray()
for (element <- value) {
if (element == null) {
Expand Down
26 changes: 13 additions & 13 deletions src/main/scala/com/codahale/jerkson/ser/ScalaSerializers.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@ class ScalaSerializers extends Serializers {
def findSerializer(config: SerializationConfig, javaType: JavaType, beanDesc: BeanDescription, beanProp: BeanProperty) = {
val ser = if (classOf[Option[_]].isAssignableFrom(beanDesc.getBeanClass)) {
new OptionSerializer
} else if (classOf[Seq[_]].isAssignableFrom(beanDesc.getBeanClass)) {
new SeqSerializer
} else if (classOf[Map[_,_]].isAssignableFrom(beanDesc.getBeanClass)) {
new MapSerializer
} else if (classOf[JValue].isAssignableFrom(beanDesc.getBeanClass)) {
new JValueSerializer
} else if (classOf[Either[_,_]].isAssignableFrom(beanDesc.getBeanClass)) {
new EitherSerializer
} else if (classOf[Product].isAssignableFrom(beanDesc.getBeanClass)) {
new CaseClassSerializer(beanDesc.getBeanClass)
} else {
null
}
} else if (classOf[Map[_, _]].isAssignableFrom(beanDesc.getBeanClass)) {
new MapSerializer
} else if (classOf[Iterable[_]].isAssignableFrom(beanDesc.getBeanClass)) {
new IterableSerializer
} else if (classOf[JValue].isAssignableFrom(beanDesc.getBeanClass)) {
new JValueSerializer
} else if (classOf[Either[_,_]].isAssignableFrom(beanDesc.getBeanClass)) {
new EitherSerializer
} else if (classOf[Product].isAssignableFrom(beanDesc.getBeanClass)) {
new CaseClassSerializer(beanDesc.getBeanClass)
} else {
null
}
ser.asInstanceOf[JsonSerializer[Object]]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,12 @@ object JsonGenerationSpec extends Spec {
}
}

class `A Set[Int]` {
def `should generate a JSON array of ints` {
generate(Set(1)) must beEqualTo("[1]")
}
}

class `A JArray of JInts` {
def `should generate a JSON array of ints` {
generate(JArray(List(JInt(1), JInt(2), JInt(3)))) must beEqualTo("[1,2,3]")
Expand Down

0 comments on commit 653c1ce

Please sign in to comment.