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);
     }
-    */
 }