[jboss-cvs] JBossAS SVN: r103309 - in projects/jboss-reflect/trunk/src: main/java/org/jboss/reflect/plugins/javassist and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 31 07:17:01 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-03-31 07:17:00 -0400 (Wed, 31 Mar 2010)
New Revision: 103309

Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/AbstractClassInfoTest.java
Log:
[JBREFLECT-16] Fix serialization of ClassInfo

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java	2010-03-31 09:51:34 UTC (rev 103308)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java	2010-03-31 11:17:00 UTC (rev 103309)
@@ -28,6 +28,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.ConstructorInfo;
 import org.jboss.reflect.spi.DelegateClassInfo;
@@ -710,7 +711,7 @@
       
       protected Object readResolve()
       {
-         TypeInfoFactory tif = SerializationHelper.getTypeInfoFactory();
+         TypeInfoFactory tif = new IntrospectionTypeInfoFactory();
          return tif.getTypeInfo(type);
       }
    }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2010-03-31 09:51:34 UTC (rev 103308)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2010-03-31 11:17:00 UTC (rev 103309)
@@ -22,6 +22,7 @@
 package org.jboss.reflect.plugins.javassist;
 
 import java.io.IOException;
+import java.io.Serializable;
 import java.lang.reflect.Array;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
@@ -1247,4 +1248,27 @@
       }
    }
 
+   protected Object writeReplace()
+   {
+      return new MarshalledClassInfo(getType());
+   }
+   
+   public static class MarshalledClassInfo implements Serializable
+   {
+      private static final long serialVersionUID = 1L;
+      
+      Class<?> type;
+
+      public MarshalledClassInfo(Class<?> type)
+      {
+         this.type = type;
+      }
+      
+      protected Object readResolve()
+      {
+         TypeInfoFactory tif = new JavassistTypeInfoFactory();
+         return tif.getTypeInfo(type);
+      }
+   }
+
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/AbstractClassInfoTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/AbstractClassInfoTest.java	2010-03-31 09:51:34 UTC (rev 103308)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/AbstractClassInfoTest.java	2010-03-31 11:17:00 UTC (rev 103309)
@@ -87,32 +87,33 @@
       getLog().debug("Type: " + info.getType());
       assertEquals(clazz, info.getType());
       
-      // TODO JBREFLECT-9 fix the serialization
-      if (isJavassistTestCase() == false)
+      byte[] bytes = serialize(info);
+      Object deserialized = deserialize(bytes);
+       
+      assertTrue("Not the same object: " + info + " != " + deserialized, info == deserialized);
+
+      //Extra check load up the lazily loaded fields before serializing again
+      if (info instanceof ClassInfo)
       {
-         byte[] bytes = serialize(info);
-         Object deserialized = deserialize(bytes);
-          
-         assertTrue("Not the same object: " + info + " != " + deserialized, info == deserialized);
-
-         //Extra check load up the lazily loaded fields before serializing again
-         if (info instanceof ClassInfo)
+         ClassInfo cinfo = (ClassInfo)info;
+         cinfo.getAnnotations();
+         cinfo.getDeclaredConstructors();
+         cinfo.getDeclaredMethods();
+         cinfo.getDeclaredFields();
+         cinfo.getSuperclass();
+         cinfo.getInterfaces();
+         
+         if (!isJavassistTestCase() && cinfo.isArray())
          {
-            ClassInfo cinfo = (ClassInfo)info;
-            cinfo.getAnnotations();
-            cinfo.getDeclaredConstructors();
-            cinfo.getDeclaredMethods();
-            cinfo.getDeclaredFields();
-            cinfo.getSuperclass();
-            cinfo.getInterfaces();
+            //TODO JBREFLECT-1 full array support in javassist
             cinfo.getGenericInterfaces();
             cinfo.getGenericSuperclass();
          }
+      }
 
-         bytes = serialize(info);
-         deserialized = deserialize(bytes);
-         assertTrue("Not the same object: " + info + " != " + deserialized, info == deserialized);
-      }
+      bytes = serialize(info);
+      deserialized = deserialize(bytes);
+      assertTrue("Not the same object: " + info + " != " + deserialized, info == deserialized);
       
       return info;
    }




More information about the jboss-cvs-commits mailing list