private List getInterfaceList()

in tools/erlanalysis/src/main/java/org/apache/dubbo/erlang/analysis/parse/ParseJarInterfaceInfo.java [71:111]


    private List<InterfaceInfo> getInterfaceList(String jarfilePath) {
        JarInputStream jarFile = null;
        JarEntry jarEntry;
        String name;
        List<InterfaceInfo> list_interfaces = new ArrayList<InterfaceInfo>();
        try {
            jarFile = new JarInputStream(new FileInputStream(jarfilePath));
            jarEntry = jarFile.getNextJarEntry();
            while (jarEntry != null) {
                name = jarEntry.getName();
                if (name.endsWith(CLAZZ)) {
                    logger.debug(name);
                    if (name.indexOf("WEB-INF/classes/") > -1)
                        name = name.substring(16, name.length());
                    name = name.replace("/", ".").substring(0, name.length() - 6);
                    logger.debug("get interfaceName {}", name);
                    Class tmpClass = Class.forName(name, false, Thread.currentThread().getContextClassLoader());
                    if (tmpClass.isInterface()) {
                        InterfaceInfo newInterface = new InterfaceInfo();
                        newInterface.setInterfaceName(name);
                        parseClassMethods(tmpClass, newInterface);
                        list_interfaces.add(newInterface);
                    }
                }
                jarEntry = jarFile.getNextJarEntry();
            }
        } catch (IOException e) {
            logger.error("", e);
        } catch (Exception e) {
            logger.error("", e);
        } finally {
            if (jarFile != null) {
                try {
                    jarFile.close();
                } catch (IOException e) {
                    logger.error("", e);
                }
            }
        }
        return list_interfaces;
    }