Index: src/java/com/thoughtworks/xstream/core/DefaultClassMapper.java =================================================================== RCS file: /scm/xstream/xstream/src/java/com/thoughtworks/xstream/core/DefaultClassMapper.java,v retrieving revision 1.11 diff -u -r1.11 DefaultClassMapper.java --- src/java/com/thoughtworks/xstream/core/DefaultClassMapper.java 8 Jul 2004 07:06:19 -0000 1.11 +++ src/java/com/thoughtworks/xstream/core/DefaultClassMapper.java 18 Jul 2004 14:00:37 -0000 @@ -139,12 +139,7 @@ result = loadClass(className.toString()); // otherwise look it up like normal } else { - StringBuffer className = new StringBuffer(); - for (int i = 0; i < arrayDepth; i++) { - className.append('['); - } - className.append('L').append(elementName).append(';'); - result = loadClass(className.toString()); + result = loadArrayClass(arrayDepth, elementName); } } else { result = loadClass(elementName); @@ -156,7 +151,21 @@ return result; } - private Class loadClass(String className) throws ClassNotFoundException { + protected Class loadArrayClass(int arrayDepth, String elementName) throws ClassNotFoundException { + String className = buildArrayClassName(arrayDepth, elementName); + return loadClass(className); + } + + protected String buildArrayClassName(int arrayDepth, String className) { + StringBuffer arrayClassName = new StringBuffer(); + for (int i = 0; i < arrayDepth; i++) { + arrayClassName.append('['); + } + arrayClassName.append('L').append(className).append(';'); + return arrayClassName.toString(); + } + + protected Class loadClass(String className) throws ClassNotFoundException { try { return Class.forName(className); } catch (ClassNotFoundException e) {