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;
}