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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Mar 27 07:07:45 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-03-27 07:07:44 -0400 (Sat, 27 Mar 2010)
New Revision: 103075

Removed:
   projects/jboss-reflect/trunk/src/main/resources/
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/introspection/ReflectClassInfoImpl.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/AbstractClassInfoTest.java
Log:
[JBREFLECT-110] 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-27 00:06:30 UTC (rev 103074)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/ClassInfoImpl.java	2010-03-27 11:07:44 UTC (rev 103075)
@@ -21,6 +21,7 @@
 */
 package org.jboss.reflect.plugins;
 
+import java.io.Serializable;
 import java.lang.reflect.Array;
 import java.lang.reflect.Modifier;
 import java.util.Collection;
@@ -691,9 +692,24 @@
       return (name != null ? name.hashCode() : 0);
    }
 
-   protected Object readResolve()
+   protected Object writeReplace()
    {
-      TypeInfoFactory tif = SerializationHelper.getTypeInfoFactory();
-      return tif.getTypeInfo(getType());
+      return new MarshalledClassInfo(getType());
    }
+   
+   public static class MarshalledClassInfo implements Serializable
+   {
+      Class<?> type;
+
+      public MarshalledClassInfo(Class<?> type)
+      {
+         this.type = type;
+      }
+      
+      protected Object readResolve()
+      {
+         TypeInfoFactory tif = SerializationHelper.getTypeInfoFactory();
+         return tif.getTypeInfo(type);
+      }
+   }
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectClassInfoImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectClassInfoImpl.java	2010-03-27 00:06:30 UTC (rev 103074)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectClassInfoImpl.java	2010-03-27 11:07:44 UTC (rev 103075)
@@ -73,12 +73,4 @@
    {
       return getType().isInterface();
    }
-
-   @Override
-   @SuppressWarnings("deprecation")
-   protected Object readResolve()
-   {
-      TypeInfoFactory tif = IntrospectionTypeInfoFactory.getDelegate();
-      return tif.getTypeInfo(getType());
-   }
 }

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-27 00:06:30 UTC (rev 103074)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/AbstractClassInfoTest.java	2010-03-27 11:07:44 UTC (rev 103075)
@@ -76,7 +76,8 @@
       getLog().debug("Got: " + info + " from " + clazz);
       assertNotNull(info);
       assertEquals(info, expected);
-
+      
+      
       ClassLoader cl = getClass().getClassLoader();
       info = factory.getTypeInfo(clazz);
       getLog().debug("Got: " + info + " from " + clazz.getName() + " cl=" + cl);
@@ -92,16 +93,28 @@
       // TODO JBREFLECT-9 fix the serialization
       if (isJavassistTestCase() == false)
       {
-         final byte[] bytes = serialize(info);
-         Object deserialized = AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
-         {
-            public Object run() throws Exception
-            {
-               return deserialize(bytes);
-            }
-         });
+         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();
+            cinfo.getGenericInterfaces();
+            cinfo.getGenericSuperclass();
+         }
+
+         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