fix ReadClassDataTest

This commit is contained in:
Stepan Koltsov
2011-12-15 20:15:35 +04:00
parent 7dfede2d76
commit 45b4bd6785
@@ -200,7 +200,6 @@ public class ReadClassDataTest extends UsefulTestCase {
private static Object invoke(Method method, Object thiz, Object... args) { private static Object invoke(Method method, Object thiz, Object... args) {
try { try {
method.setAccessible(true);
return method.invoke(thiz, args); return method.invoke(thiz, args);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("failed to invoke " + method + ": " + e, e); throw new RuntimeException("failed to invoke " + method + ": " + e, e);
@@ -229,7 +228,7 @@ public class ReadClassDataTest extends UsefulTestCase {
sb.append("vararg "); sb.append("vararg ");
serialize(valueParameter.getVarargElementType()); serialize(valueParameter.getVarargElementType());
} else { } else {
serialize(valueParameter.getOutType()); serialize(valueParameter.getOutType(), sb);
} }
if (valueParameter.hasDefaultValue()) { if (valueParameter.hasDefaultValue()) {
sb.append(" = ?"); sb.append(" = ?");
@@ -279,7 +278,7 @@ public class ReadClassDataTest extends UsefulTestCase {
} }
} }
private void serialize(Object o, StringBuilder sb) { private Method getMethodToSerialize(Object o) {
// TODO: cache // TODO: cache
for (Method method : ReadClassDataTest.class.getDeclaredMethods()) { for (Method method : ReadClassDataTest.class.getDeclaredMethods()) {
if (!method.getName().equals("serialize")) { if (!method.getName().equals("serialize")) {
@@ -295,12 +294,17 @@ public class ReadClassDataTest extends UsefulTestCase {
continue; continue;
} }
if (method.getParameterTypes()[0].isInstance(o)) { if (method.getParameterTypes()[0].isInstance(o)) {
invoke(method, this, o, sb); method.setAccessible(true);
return; return method;
} }
} }
throw new IllegalStateException("don't know how to serialize " + o + " (of " + o.getClass() + ")"); throw new IllegalStateException("don't know how to serialize " + o + " (of " + o.getClass() + ")");
} }
private void serialize(Object o, StringBuilder sb) {
Method method = getMethodToSerialize(o);
invoke(method, this, o, sb);
}
private void serialize(ModuleDescriptor module, StringBuilder sb) { private void serialize(ModuleDescriptor module, StringBuilder sb) {
// nop // nop