Skip to content

Commit 5d04ecd

Browse files
committed
Merge branch 'release/0.4.1'
2 parents d937646 + f876596 commit 5d04ecd

23 files changed

+941
-686
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
v0.4.1: Sep 13 2011
2+
===================
3+
4+
* Added `@JsonIgnoreProperties` support.
5+
* No longer serializing `transient` members of case classes.
6+
* Upgraded to Jackson 1.8.x. (Jerkson will now track the highest available
7+
version in the 1.8.x series.)
8+
9+
110
v0.4.0: Jul 25 2011
211
===================
312

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ brings Scala's ease-of-use to Jackson's features.
1010
Requirements
1111
------------
1212

13-
* Scala 2.8.1 or 2.9.0-1
14-
* Jackson 1.8.3
13+
* Scala 2.8.1 or 2.9.0-1 or 2.9.1
14+
* Jackson 1.8.x
1515

1616

1717
Setting Up Your Project
@@ -31,7 +31,7 @@ Go ahead and add Jerkson as a dependency:
3131
<dependency>
3232
<groupId>com.codahale</groupId>
3333
<artifactId>jerkson_${scala.version}</artifactId>
34-
<version>0.4.0</version>
34+
<version>0.4.1</version>
3535
</dependency>
3636
</dependencies>
3737
```

pom.xml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
<modelVersion>4.0.0</modelVersion>
66

77
<groupId>com.codahale</groupId>
8-
<artifactId>jerkson_2.9.0-1</artifactId>
9-
<version>0.4.0</version>
8+
<artifactId>jerkson_2.9.1</artifactId>
9+
<version>0.4.1</version>
1010
<name>Jerkson for Scala ${scala.version}</name>
1111

1212
<properties>
13-
<scala.version>2.9.0-1</scala.version>
13+
<scala.version>2.9.1</scala.version>
14+
<jackson.version>[1.8.0,1.9.0)</jackson.version>
1415
</properties>
1516

1617
<developers>
@@ -60,15 +61,20 @@
6061
<artifactId>scala-library</artifactId>
6162
<version>${scala.version}</version>
6263
</dependency>
64+
<dependency>
65+
<groupId>org.codehaus.jackson</groupId>
66+
<artifactId>jackson-core-asl</artifactId>
67+
<version>${jackson.version}</version>
68+
</dependency>
6369
<dependency>
6470
<groupId>org.codehaus.jackson</groupId>
6571
<artifactId>jackson-mapper-asl</artifactId>
66-
<version>1.8.3</version>
72+
<version>${jackson.version}</version>
6773
</dependency>
6874
<dependency>
6975
<groupId>com.codahale</groupId>
7076
<artifactId>simplespec_${scala.version}</artifactId>
71-
<version>0.4.0</version>
77+
<version>[0.5.0,0.6.0)</version>
7278
<scope>test</scope>
7379
</dependency>
7480
</dependencies>
@@ -119,13 +125,6 @@
119125
</args>
120126
<charset>UTF-8</charset>
121127
</configuration>
122-
<dependencies>
123-
<dependency>
124-
<groupId>org.scala-lang</groupId>
125-
<artifactId>jline</artifactId>
126-
<version>${scala.version}</version>
127-
</dependency>
128-
</dependencies>
129128
</plugin>
130129
<plugin>
131130
<groupId>org.apache.maven.plugins</groupId>

pom_2.8.1.xml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66

77
<groupId>com.codahale</groupId>
88
<artifactId>jerkson_2.8.1</artifactId>
9-
<version>0.4.0</version>
9+
<version>0.4.1</version>
1010
<name>Jerkson for Scala ${scala.version}</name>
1111

1212
<properties>
1313
<scala.version>2.8.1</scala.version>
14+
<jackson.version>[1.8.0,1.9.0)</jackson.version>
1415
</properties>
1516

1617
<developers>
@@ -60,15 +61,20 @@
6061
<artifactId>scala-library</artifactId>
6162
<version>${scala.version}</version>
6263
</dependency>
64+
<dependency>
65+
<groupId>org.codehaus.jackson</groupId>
66+
<artifactId>jackson-core-asl</artifactId>
67+
<version>${jackson.version}</version>
68+
</dependency>
6369
<dependency>
6470
<groupId>org.codehaus.jackson</groupId>
6571
<artifactId>jackson-mapper-asl</artifactId>
66-
<version>1.8.3</version>
72+
<version>${jackson.version}</version>
6773
</dependency>
6874
<dependency>
6975
<groupId>com.codahale</groupId>
7076
<artifactId>simplespec_${scala.version}</artifactId>
71-
<version>0.4.0</version>
77+
<version>[0.5.0,0.6.0)</version>
7278
<scope>test</scope>
7379
</dependency>
7480
</dependencies>

pom_2.9.0-1.xml

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.codahale</groupId>
8+
<artifactId>jerkson_2.9.0-1</artifactId>
9+
<version>0.4.1</version>
10+
<name>Jerkson for Scala ${scala.version}</name>
11+
12+
<properties>
13+
<scala.version>2.9.0-1</scala.version>
14+
<jackson.version>[1.8.0,1.9.0)</jackson.version>
15+
</properties>
16+
17+
<developers>
18+
<developer>
19+
<name>Coda Hale</name>
20+
<email>[email protected]</email>
21+
<timezone>-8</timezone>
22+
</developer>
23+
</developers>
24+
25+
<licenses>
26+
<license>
27+
<url>http://codahale.com/mit.txt</url>
28+
<name>The MIT License</name>
29+
<distribution>repo</distribution>
30+
</license>
31+
</licenses>
32+
33+
<repositories>
34+
<repository>
35+
<id>scala-tools-releases</id>
36+
<url>http://scala-tools.org/repo-releases/</url>
37+
</repository>
38+
<repository>
39+
<id>repo.codahale.com</id>
40+
<url>http://repo.codahale.com</url>
41+
</repository>
42+
</repositories>
43+
44+
<pluginRepositories>
45+
<pluginRepository>
46+
<id>scala-tools-releases</id>
47+
<url>http://scala-tools.org/repo-releases/</url>
48+
</pluginRepository>
49+
</pluginRepositories>
50+
51+
<distributionManagement>
52+
<repository>
53+
<id>repo.codahale.com</id>
54+
<url>scp://codahale.com/home/codahale/repo.codahale.com</url>
55+
</repository>
56+
</distributionManagement>
57+
58+
<dependencies>
59+
<dependency>
60+
<groupId>org.scala-lang</groupId>
61+
<artifactId>scala-library</artifactId>
62+
<version>${scala.version}</version>
63+
</dependency>
64+
<dependency>
65+
<groupId>org.codehaus.jackson</groupId>
66+
<artifactId>jackson-core-asl</artifactId>
67+
<version>${jackson.version}</version>
68+
</dependency>
69+
<dependency>
70+
<groupId>org.codehaus.jackson</groupId>
71+
<artifactId>jackson-mapper-asl</artifactId>
72+
<version>${jackson.version}</version>
73+
</dependency>
74+
<dependency>
75+
<groupId>com.codahale</groupId>
76+
<artifactId>simplespec_${scala.version}</artifactId>
77+
<version>[0.5.0,0.6.0)</version>
78+
<scope>test</scope>
79+
</dependency>
80+
</dependencies>
81+
82+
<profiles>
83+
<profile>
84+
<id>sign</id>
85+
<build>
86+
<plugins>
87+
<plugin>
88+
<groupId>org.apache.maven.plugins</groupId>
89+
<artifactId>maven-gpg-plugin</artifactId>
90+
<version>1.2</version>
91+
<executions>
92+
<execution>
93+
<id>sign-artifacts</id>
94+
<phase>verify</phase>
95+
<goals>
96+
<goal>sign</goal>
97+
</goals>
98+
</execution>
99+
</executions>
100+
</plugin>
101+
</plugins>
102+
</build>
103+
</profile>
104+
</profiles>
105+
106+
<build>
107+
<plugins>
108+
<plugin>
109+
<groupId>org.scala-tools</groupId>
110+
<artifactId>maven-scala-plugin</artifactId>
111+
<version>2.15.2</version>
112+
<executions>
113+
<execution>
114+
<goals>
115+
<goal>compile</goal>
116+
<goal>testCompile</goal>
117+
</goals>
118+
</execution>
119+
</executions>
120+
<configuration>
121+
<args>
122+
<arg>-optimise</arg>
123+
<arg>-unchecked</arg>
124+
<arg>-deprecation</arg>
125+
</args>
126+
<charset>UTF-8</charset>
127+
</configuration>
128+
</plugin>
129+
<plugin>
130+
<groupId>org.apache.maven.plugins</groupId>
131+
<artifactId>maven-compiler-plugin</artifactId>
132+
<version>2.3.2</version>
133+
<configuration>
134+
<source>1.6</source>
135+
<target>1.6</target>
136+
<encoding>UTF-8</encoding>
137+
</configuration>
138+
</plugin>
139+
<plugin>
140+
<groupId>org.apache.maven.plugins</groupId>
141+
<artifactId>maven-source-plugin</artifactId>
142+
<version>2.1.2</version>
143+
<executions>
144+
<execution>
145+
<id>attach-sources</id>
146+
<goals>
147+
<goal>jar</goal>
148+
</goals>
149+
</execution>
150+
</executions>
151+
</plugin>
152+
<plugin>
153+
<groupId>org.apache.maven.plugins</groupId>
154+
<artifactId>maven-resources-plugin</artifactId>
155+
<version>2.5</version>
156+
<configuration>
157+
<encoding>UTF-8</encoding>
158+
</configuration>
159+
</plugin>
160+
<plugin>
161+
<groupId>org.apache.maven.plugins</groupId>
162+
<artifactId>maven-surefire-plugin</artifactId>
163+
<version>2.8.1</version>
164+
<configuration>
165+
<useSystemClassLoader>false</useSystemClassLoader>
166+
<argLine>-Xmx1024m</argLine>
167+
<includes>
168+
<include>**/*Spec.java</include>
169+
</includes>
170+
<excludes>
171+
<exclude>**/*Test.java</exclude>
172+
</excludes>
173+
</configuration>
174+
</plugin>
175+
</plugins>
176+
<extensions>
177+
<extension>
178+
<groupId>org.apache.maven.wagon</groupId>
179+
<artifactId>wagon-ssh</artifactId>
180+
<version>1.0-beta-7</version>
181+
</extension>
182+
</extensions>
183+
</build>
184+
</project>

src/main/scala/com/codahale/jerkson/Json.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import org.codehaus.jackson.{JsonGenerator, JsonParser => JacksonParser}
66
object Json extends Json
77

88
trait Json extends Parser with Generator {
9+
protected val classLoader = Thread.currentThread().getContextClassLoader
10+
911
protected val mapper = new ObjectMapper
10-
mapper.registerModule(new ScalaModule)
12+
mapper.registerModule(new ScalaModule(classLoader))
1113

1214
protected val factory = new MappingJsonFactory(mapper)
1315
factory.enable(JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT)

src/main/scala/com/codahale/jerkson/ScalaModule.scala

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,12 @@ import org.codehaus.jackson.Version
66
import org.codehaus.jackson.map.Module
77
import ser.ScalaSerializers
88

9-
/**
10-
*
11-
* @author coda
12-
*/
13-
class ScalaModule extends Module {
9+
class ScalaModule(classLoader: ClassLoader) extends Module {
1410
def version = new Version(0, 2, 0, "")
1511
def getModuleName = "jerkson"
1612

1713
def setupModule(context: SetupContext) {
18-
context.addDeserializers(new ScalaDeserializers)
14+
context.addDeserializers(new ScalaDeserializers(classLoader))
1915
context.addSerializers(new ScalaSerializers)
2016
}
2117
}

src/main/scala/com/codahale/jerkson/deser/CaseClassDeserializer.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ import org.codehaus.jackson.map.annotate.JsonCachable
1212
@JsonCachable
1313
class CaseClassDeserializer(config: DeserializationConfig,
1414
javaType: JavaType,
15-
provider: DeserializerProvider) extends JsonDeserializer[Object] {
15+
provider: DeserializerProvider,
16+
classLoader: ClassLoader) extends JsonDeserializer[Object] {
1617
require(javaType.getRawClass.getConstructors.length == 1, "Case classes must only have one constructor.")
1718
private val constructor = javaType.getRawClass.getConstructors.head
18-
private val params = CaseClassSigParser.parse(javaType.getRawClass, config.getTypeFactory).toArray
19+
private val params = CaseClassSigParser.parse(javaType.getRawClass, config.getTypeFactory, classLoader).toArray
1920

2021
def deserialize(jp: JsonParser, ctxt: DeserializationContext): Object = {
2122
if (jp.getCurrentToken == JsonToken.START_OBJECT) {

src/main/scala/com/codahale/jerkson/deser/ScalaDeserializers.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import scala.collection.{Traversable, MapLike, immutable, mutable}
66
import com.codahale.jerkson.AST.{JNull, JValue}
77
import scala.collection.generic.{MapFactory, GenericCompanion}
88

9-
class ScalaDeserializers extends Deserializers.None {
9+
class ScalaDeserializers(classLoader: ClassLoader) extends Deserializers.None {
1010
override def findBeanDeserializer(javaType: JavaType, config: DeserializationConfig,
1111
provider: DeserializerProvider, beanDesc: BeanDescription,
1212
property: BeanProperty) = {
@@ -91,7 +91,7 @@ class ScalaDeserializers extends Deserializers.None {
9191
} else if (klass == classOf[Either[_,_]]) {
9292
new EitherDeserializer(config, javaType, provider)
9393
} else if (classOf[Product].isAssignableFrom(klass)) {
94-
new CaseClassDeserializer(config, javaType, provider)
94+
new CaseClassDeserializer(config, javaType, provider, classLoader)
9595
} else null
9696
}
9797

src/main/scala/com/codahale/jerkson/ser/CaseClassSerializer.scala

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,21 @@ package com.codahale.jerkson.ser
22

33
import org.codehaus.jackson.JsonGenerator
44
import org.codehaus.jackson.map.{SerializerProvider, JsonSerializer}
5-
import org.codehaus.jackson.annotate.JsonIgnore
5+
import org.codehaus.jackson.annotate.{JsonIgnore, JsonIgnoreProperties}
66
import org.codehaus.jackson.map.annotate.JsonCachable
7+
import java.lang.reflect.Modifier
78

89
@JsonCachable
910
class CaseClassSerializer[A <: Product](klass: Class[_]) extends JsonSerializer[A] {
11+
private val ignoredFields = if (klass.isAnnotationPresent(classOf[JsonIgnoreProperties])) {
12+
klass.getAnnotation(classOf[JsonIgnoreProperties]).value().toSet
13+
} else Set.empty[String]
14+
1015
private val nonIgnoredFields = klass.getDeclaredFields.filterNot { f =>
11-
f.getAnnotation(classOf[JsonIgnore]) != null || f.getName.contains("$")
16+
f.getAnnotation(classOf[JsonIgnore]) != null ||
17+
ignoredFields.contains(f.getName) ||
18+
(f.getModifiers & Modifier.TRANSIENT) != 0 ||
19+
f.getName.contains("$")
1220
}
1321

1422
private val methods = klass.getDeclaredMethods

0 commit comments

Comments
 (0)