Because getInterfaces only returns the interfaces implemented by the class

(not by its superclasses), we need to rise through its superclasses as well
in order to find the provider interface.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6411 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Andrzej Kapolka
2011-01-04 22:46:22 +00:00
parent 6cba470736
commit 49c6511fd1
@@ -132,11 +132,14 @@ public class InvocationManager
// with legacy non-interface based providers)
Class<?> pclass = provider.getClass();
String pname = mclass.getSimpleName().replaceAll("Marshaller", "Provider");
for (Class<?> iclass : provider.getClass().getInterfaces()) {
if (InvocationProvider.class.isAssignableFrom(iclass) &&
iclass.getSimpleName().equals(pname)) {
pclass = iclass;
break;
OUTER:
for (Class<?> sclass = pclass; sclass != null; sclass = sclass.getSuperclass()) {
for (Class<?> iclass : sclass.getInterfaces()) {
if (InvocationProvider.class.isAssignableFrom(iclass) &&
iclass.getSimpleName().equals(pname)) {
pclass = iclass;
break OUTER;
}
}
}