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:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user