[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