Resolved an issue with dynamic loading of Joda time classes
diff --git a/build.xml b/build.xml
index 41d4e21..f713ac4 100644
--- a/build.xml
+++ b/build.xml
@@ -60,6 +60,13 @@
<fileset dir="${dir.lib}">
<!-- for actual unit testing, junit -->
<include name="junit/*.jar" />
+ </fileset>
+ </path>
+ <!-- Libs only needed for tests that check optional interoperability
+ extensions
+ -->
+ <path id="test-libs-ext">
+ <fileset dir="${dir.lib}">
<!-- For 1.5, need JAXB API jar too (and related) -->
<include name="jaxb/*.jar" />
<!-- and some other misc libs for interoperability tests -->
@@ -429,11 +436,12 @@
<!-- Compiling and running test cases
-->
- <target name="compile.test" depends="compile.mapper, compile.xc">
+ <target name="compile.test" depends="compile.mapper, compile.xc">
<javac srcdir="${dir.src.test}" destdir="${dir.test.classes}"
source="1.5" target="1.5"
debug="true"
>
+ <exclude name="org/codehaus/jackson/map/interop/*.java" />
<include name="**/*.java" />
<classpath>
<pathelement path="${dir.build.classes.core}"/>
@@ -442,7 +450,19 @@
<path refid="test-libs"/>
</classpath>
</javac>
- </target>
+ <javac srcdir="${dir.src.test}" destdir="${dir.test.classes}"
+ source="1.5" target="1.5"
+ debug="true"
+ >
+ <include name="org/codehaus/jackson/map/interop/*.java" />
+ <classpath>
+ <pathelement path="${dir.build.classes.core}"/>
+ <pathelement path="${dir.build.classes.mapper}"/>
+ <path refid="test-libs"/>
+ <path refid="test-libs-ext"/>
+ </classpath>
+ </javac>
+ </target>
<target name="test" depends="compile.test">
@@ -453,8 +473,8 @@
<fileset dir="${dir.test.classes}">
<!-- Need to exclude inner classes... -->
<exclude name="**/*$*.class"/>
- <!-- And manual non-junit test classes -->
- <exclude name="test/*.class"/>
+ <!-- and also interop tests, run later on -->
+ <exclude name="org/codehaus/jackson/map/interop/Test*.class"/>
<include name="**/Test*.class"/>
</fileset>
</batchtest>
@@ -468,6 +488,29 @@
</classpath>
</junit>
+ <!-- for interop tests, yes, we need to fork (classloading issues) -->
+ <junit fork="yes" printsummary="yes" haltonfailure="no" showoutput="yes">
+ <batchtest fork="no" todir="${dir.test.xmlresults}">
+ <fileset dir="${dir.test.classes}">
+ <exclude name="**/*$*.class"/>
+ <!-- 25-Nov-2009, tatu: Argh. Looks like classloading
+ is problematic for this test; works when run
+ separately as single test... but not in sequence
+ -->
+ <exclude name="org/codehaus/jackson/map/interop/TestHibernate.class"/>
+ <include name="org/codehaus/jackson/map/interop/Test*.class"/>
+ </fileset>
+ </batchtest>
+ <formatter type="xml" />
+ <classpath>
+ <pathelement path="${dir.build.classes.core}" />
+ <pathelement path="${dir.build.classes.mapper}" />
+ <pathelement location="${dir.test.classes}" />
+ <path refid="test-libs"/>
+ <path refid="test-libs-ext"/>
+ </classpath>
+ </junit>
+
<junitreport todir="${dir.test.results}">
<fileset dir="${dir.test.xmlresults}">
<include name="TEST-*.xml" />
@@ -489,6 +532,7 @@
<pathelement path="${dir.build.classes.xc}" />
<pathelement location="${dir.test.classes}" />
<path refid="test-libs"/>
+ <path refid="test-libs-ext"/>
</classpath>
</junit>
</target>
diff --git a/src/mapper/java/org/codehaus/jackson/map/ext/JodaSerializers.java b/src/mapper/java/org/codehaus/jackson/map/ext/JodaSerializers.java
index a1dfd8d..2963ef1 100644
--- a/src/mapper/java/org/codehaus/jackson/map/ext/JodaSerializers.java
+++ b/src/mapper/java/org/codehaus/jackson/map/ext/JodaSerializers.java
@@ -19,10 +19,13 @@
public class JodaSerializers
implements Provider<Map.Entry<Class<?>,JsonSerializer<?>>>
{
+ final static HashMap<Class<?>,JsonSerializer<?>> _serializers = new HashMap<Class<?>,JsonSerializer<?>>();
+ static {
+ _serializers.put(DateTime.class, new DateTimeSerializer());
+ }
+
public Collection<Map.Entry<Class<?>,JsonSerializer<?>>> provide() {
- HashMap<Class<?>,JsonSerializer<?>> sers = new HashMap<Class<?>,JsonSerializer<?>>();
- sers.put(DateTime.class, new DateTimeSerializer());
- return sers.entrySet();
+ return _serializers.entrySet();
}
/*
diff --git a/src/test/org/codehaus/jackson/map/compat/TestCglibUsage.java b/src/test/org/codehaus/jackson/map/interop/TestCglibUsage.java
similarity index 97%
rename from src/test/org/codehaus/jackson/map/compat/TestCglibUsage.java
rename to src/test/org/codehaus/jackson/map/interop/TestCglibUsage.java
index 2ca1724..84b24fd 100644
--- a/src/test/org/codehaus/jackson/map/compat/TestCglibUsage.java
+++ b/src/test/org/codehaus/jackson/map/interop/TestCglibUsage.java
@@ -1,4 +1,4 @@
-package org.codehaus.jackson.map.compat;
+package org.codehaus.jackson.map.interop;
import main.BaseTest;
diff --git a/src/test/org/codehaus/jackson/map/compat/TestHibernate.java b/src/test/org/codehaus/jackson/map/interop/TestHibernate.java
similarity index 90%
rename from src/test/org/codehaus/jackson/map/compat/TestHibernate.java
rename to src/test/org/codehaus/jackson/map/interop/TestHibernate.java
index d356fec..ff5243d 100644
--- a/src/test/org/codehaus/jackson/map/compat/TestHibernate.java
+++ b/src/test/org/codehaus/jackson/map/interop/TestHibernate.java
@@ -1,10 +1,9 @@
-package org.codehaus.jackson.map.compat;
+package org.codehaus.jackson.map.interop;
import main.BaseTest;
-/*
import java.io.*;
-//import java.lang.reflect.Method;
+import java.lang.reflect.Method;
import java.util.*;
import org.hibernate.repackage.cglib.proxy.Enhancer;
@@ -12,7 +11,6 @@
import org.hibernate.repackage.cglib.proxy.MethodProxy;
import org.codehaus.jackson.map.*;
-*/
/**
* Basic tests covering Hibernate-compatibility features.
@@ -41,9 +39,6 @@
*/
public void testHibernateCglib() throws Exception
{
- /*
- // 26-Oct-2009, tatu: Alas, won't run well from Ant, at least without restarting JVM... better comment out for now
-
Enhancer enh = new Enhancer();
enh.setInterfaces(new Class[] { BeanInterfaceHib.class });
enh.setCallback(new MethodInterceptor() {
@@ -62,7 +57,6 @@
Map<String,Object> result = writeAndMap(mapper, bean);
assertEquals(1, result.size());
assertEquals(Integer.valueOf(13), result.get("x"));
- */
}
/*
@@ -71,7 +65,6 @@
//////////////////////////////////////////////
*/
- /*
@SuppressWarnings("unchecked")
private Map<String,Object> writeAndMap(ObjectMapper m, Object value)
throws IOException
@@ -80,6 +73,5 @@
m.writeValue(sw, value);
return (Map<String,Object>) m.readValue(sw.toString(), Object.class);
}
- */
}