*
* @param cls
* @return
*/
protected static ClassInfo contract(Class<?> cls) {
ServiceContract contractAnn = cls.getAnnotation(ServiceContract.class);
ClassInfo ci = new ClassInfo();
ci.setCls(cls);
ci.setClassType(ClassInfo.ClassType.INTERFACE);
List<Class<?>> interfaceList = getInterfaces(cls);
List<ClassInfo.MethodInfo> methodInfos = new ArrayList<ClassInfo.MethodInfo>();
for(Class<?> interfaceCls : interfaceList) {
Method[] methods = interfaceCls.getDeclaredMethods();
if(contractAnn != null && contractAnn.defaultAll()) {
for(Method m : methods) {
if(Modifier.isPublic(m.getModifiers()) || Modifier.isProtected(m.getModifiers())) {
ClassInfo.MethodInfo mi = new ClassInfo.MethodInfo();
mi.setMethod(m);
methodInfos.add(mi);