Changeset 17

Show
Ignore:
Timestamp:
07/25/05 11:36:31 (3 years ago)
Author:
niels
Message:

added support for superinterfaces when finding the correct method

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/net/schst/XJConf/TagDefinition.java

    r16 r17  
    44import java.lang.reflect.Method; 
    55import java.util.ArrayList; 
     6import java.util.HashSet; 
     7import java.util.List; 
     8import java.util.Set; 
    69 
    710/** 
     
    292295                        childMethod = cl.getMethod(methodName, childParamTypes); 
    293296                    } catch (NoSuchMethodException e) { 
    294                         Class interfaces[] = childValue.getClass().getInterfaces(); 
     297                        Class interfaces[] = (Class[])  determineAllInterfaces(new ArrayList(), childValue.getClass()).toArray(new Class[0]); 
    295298                        for (int j = 0; j < interfaces.length; j++) { 
    296299                            try { 
     
    314317        return instance; 
    315318    } 
     319     
     320    private List determineAllInterfaces(List result, Class superClass) { 
     321        Class[] subclasses = superClass.getInterfaces(); 
     322        for (int i=0;i<subclasses.length;i++) { 
     323            Class inter = subclasses[i]; 
     324            result.add(inter); 
     325            determineAllInterfaces(result,inter); 
     326        } 
     327        return result;  
     328    } 
     329     
     330     
    316331}