container/common/src/main/java/org/mobicents/slee/container/deployment/ClassUtils.java
public static Map getSuperClassesAbstractMethodsFromInterface(CtClass sbbAbstractClass) {
    	HashMap abstractMethods = new HashMap();
    	CtMethod[] methods = null;

    	ArrayList<CtClass> superClasses = new ArrayList<CtClass>();
    	superClasses.add(sbbAbstractClass);
    	ArrayList<CtClass> superClassesProcessed = new ArrayList<CtClass>();
    	
    	try {
    		while(!superClasses.isEmpty()) {
    			// remove head
    			CtClass ctClass = superClasses.remove(0);
    			superClassesProcessed.add(ctClass);
    			// get its methods
    			methods = ctClass.getDeclaredMethods();
    			for (CtMethod ctMethod:methods)	{
    				abstractMethods.put(getMethodKey(ctMethod), ctMethod);
    			}
    			// get super interfaces
    			for(CtClass anotherCtClass : ctClass.getInterfaces()) {
    				if (!superClassesProcessed.contains(anotherCtClass)) {
    					superClasses.add(anotherCtClass);
    				}
    			}
    			try {
    				ctClass.detach();
    			}
    			catch (Exception e) {
    				// ignore
    			}
    		}
    	} catch (NotFoundException e) {
    		logger.error(e);
    	}
    	return abstractMethods;
    }
public static Map getSuperClassesAbstractMethodsFromInterface(CtClass sbbAbstractClass) {
    	HashMap abstractMethods = new HashMap();
    	CtMethod[] methods = null;

    	ArrayList<CtClass> superClasses = new ArrayList<CtClass>();
    	superClasses.add(sbbAbstractClass);
    	ArrayList<CtClass> superClassesProcessed = new ArrayList<CtClass>();
    	
    	try {
    		while(!superClasses.isEmpty()) {
    			// remove head
    			CtClass ctClass = superClasses.remove(0);
    			superClassesProcessed.add(ctClass);
    			// get its methods
    			methods = ctClass.getDeclaredMethods();
    			for (CtMethod ctMethod:methods)	{
    				abstractMethods.put(getMethodKey(ctMethod), ctMethod);
    			}
    			// get super interfaces
    			for(CtClass anotherCtClass : ctClass.getInterfaces()) {
    				if (!superClassesProcessed.contains(anotherCtClass)) {
    					superClasses.add(anotherCtClass);
    				}
    			}
    			try {
    				ctClass.detach();
    			}
    			catch (Exception e) {
    				// ignore
    			}
    		}
    	} catch (NotFoundException e) {
    		logger.error(e);
    	}
    	return abstractMethods;
    }
public static Map getSuperClassesAbstractMethodsFromInterface ( CtClass sbbAbstractClass ) { HashMap abstractMethods = new HashMap ( ) ; CtMethod [ ] methods = null ; ArrayList < CtClass > superClasses = new ArrayList < CtClass > ( ) ; superClasses . add ( sbbAbstractClass ) ; ArrayList < CtClass > superClassesProcessed = new ArrayList < CtClass > ( ) ; try { while ( ! superClasses . isEmpty ( ) ) { // remove head CtClass ctClass = superClasses . remove ( 0 ) ; superClassesProcessed . add ( ctClass ) ; // get its methods methods = ctClass . getDeclaredMethods ( ) ; for ( CtMethod ctMethod : methods ) { abstractMethods . put ( getMethodKey ( ctMethod ) , ctMethod ) ; } // get super interfaces for ( CtClass anotherCtClass : ctClass . getInterfaces ( ) ) { if ( ! superClassesProcessed . contains ( anotherCtClass ) ) { superClasses . add ( anotherCtClass ) ; } } try { ctClass . detach ( ) ; } catch ( Exception e ) { // ignore } } } catch ( NotFoundException e ) { logger . error ( e ) ; } return abstractMethods ; }
Collects all methods of the interfaces implemented/extended by the specified {@link CtClass}
@param sbbAbstractClass
@return
Collects all methods of the interfaces implemented / extended by the specified {