|
From: Clebert S. <csu...@jb...> - 2006-07-10 16:35:58
|
User: csuconic
Date: 06/07/10 12:35:57
Modified: src/org/jboss/serial/classmetamodel
ClassMetamodelFactory.java
Log:
JBSER-82 - a better fix due to testcase failures on cruisecontrol
Revision Changes Path
1.47 +12 -69 jboss-serialization/src/org/jboss/serial/classmetamodel/ClassMetamodelFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ClassMetamodelFactory.java
===================================================================
RCS file: /cvsroot/jboss/jboss-serialization/src/org/jboss/serial/classmetamodel/ClassMetamodelFactory.java,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- ClassMetamodelFactory.java 6 Jul 2006 16:07:59 -0000 1.46
+++ ClassMetamodelFactory.java 10 Jul 2006 16:35:57 -0000 1.47
@@ -41,7 +41,7 @@
import org.jboss.serial.util.PartitionedWeakHashMap;
/**
- * $Id: ClassMetamodelFactory.java,v 1.46 2006/07/06 16:07:59 csuconic Exp $
+ * $Id: ClassMetamodelFactory.java,v 1.47 2006/07/10 16:35:57 csuconic Exp $
* @author clebert suconic
*/
public class ClassMetamodelFactory implements ClassMetaConsts
@@ -266,67 +266,17 @@
clazz = resolver.resolveClass(clazzName);
if (clazz==null)
{
- clazz = loader.loadClass(clazzName);
+ clazz = Class.forName(clazzName,false,loader);
}
}
else
{
- clazz = loader.loadClass(clazzName);
+ clazz = Class.forName(clazzName,false,loader);
}
}
return clazz;
}
- private static Class resolveArrayByName(String clazzName,ClassResolver resolver,ClassLoader loader) throws ClassNotFoundException
- {
- return Class.forName(clazzName,true,loader);
- /*String realClassName = clazzName;
- if (realClassName.endsWith(";"))
- {
- realClassName = realClassName.substring(0,realClassName.length()-1);
- }
-
- int deep=0;
- while (realClassName.startsWith("["))
- {
- deep++;
- realClassName = realClassName.substring(1);
- }
-
- realClassName = realClassName.substring(1);
-
- Class typeArray = resolveClassByName(realClassName,resolver,loader);;
-
- int arrayDeep[] = new int[deep];
- for (int i=0;i<deep;i++)
- {
- arrayDeep[i]=1;
- }
-
- return Array.newInstance(typeArray, arrayDeep).getClass(); */
- }
-
- private static ClassMetaData loadClassMetaDataArray(String clazzName, ClassResolver resolver, ClassLoader loader, boolean checkSerializable) throws IOException, ClassNotFoundException
- {
- /*if (!clazzName.startsWith("["))
- {
- throw new RuntimeException("Not an array");
- } This is a private method. No need to do this test */
-
- Class clazz = (Class)primClasses.get(clazzName);
-
- if (clazz!=null)
- {
- return getClassMetaData(clazz,checkSerializable);
- }
- else
- {
- Class arrayType = resolveArrayByName(clazzName,resolver,loader);
- return getClassMetaData(arrayType,checkSerializable);
- }
-
- }
-
public static ClassMetaData getClassMetaData(String clazzName, ClassResolver resolver, ClassLoader loader, boolean checkSerializable) throws IOException
{
try
@@ -336,13 +286,6 @@
if (classMetadata==null)
{
- if (clazzName.startsWith("["))
- {
- classMetadata= loadClassMetaDataArray(clazzName,resolver,loader,checkSerializable);
- }
- else
- {
-
Class clazz = resolveClassByName(clazzName, resolver, loader);
if (checkSerializable && !Serializable.class.isAssignableFrom(clazz))
@@ -350,7 +293,7 @@
throw new NotSerializableException(clazz.getName());
}
classMetadata = new ClassMetaData(clazz);
- }
+
loaderMap = getLoaderMap(loader);
loaderMap.put(clazzName,classMetadata);
classMetadata = (ClassMetaData)loaderMap.get(clazzName);
@@ -366,7 +309,7 @@
{
log.debug("Rebuilding clazz due to cross Loader GC (getClassMetaData(String class, ClassLoader loader)");
}
- Class clazz = loader.loadClass(clazzName);
+ Class clazz = resolveClassByName(clazzName,resolver,loader);
loaderMap.remove(clazzName);
classMetadata = new ClassMetaData(clazz);
loaderMap.put(clazz.getName(),classMetadata);
|