-
Notifications
You must be signed in to change notification settings - Fork 107
/
ClassesHelper.java
52 lines (41 loc) · 2.15 KB
/
ClassesHelper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package japicmp.cmp;
import japicmp.model.JApiClass;
import javassist.ClassPool;
import javassist.CtClass;
import java.util.List;
public class ClassesHelper {
public interface ClassesGenerator {
List<CtClass> createOldClasses(ClassPool classPool) throws Exception;
List<CtClass> createNewClasses(ClassPool classPool) throws Exception;
}
public static List<JApiClass> compareClasses(JarArchiveComparatorOptions options, ClassesGenerator classesGenerator) throws Exception {
JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
ReducibleClassPool classPool = jarArchiveComparator.getCommonClassPool();
final List<CtClass> oldClasses = classesGenerator.createOldClasses(classPool);
List<CtClass> newClasses = classesGenerator.createNewClasses(classPool);
List<CtClass> filteredOldClasses = jarArchiveComparator.createListOfCtClasses(() -> oldClasses, classPool);
List<CtClass> filteredNewClasses = jarArchiveComparator.createListOfCtClasses(() -> newClasses, classPool);
return jarArchiveComparator.compareClassLists(options, filteredOldClasses, filteredNewClasses);
}
public static class CompareClassesResult {
final List<JApiClass> jApiClasses;
final JarArchiveComparator jarArchiveComparator;
public CompareClassesResult(List<JApiClass> jApiClasses, JarArchiveComparator jarArchiveComparator) {
this.jApiClasses = jApiClasses;
this.jarArchiveComparator = jarArchiveComparator;
}
public List<JApiClass> getjApiClasses() {
return jApiClasses;
}
public JarArchiveComparator getJarArchiveComparator() {
return jarArchiveComparator;
}
}
public static CompareClassesResult compareClassesWithResult(JarArchiveComparatorOptions options, ClassesGenerator classesGenerator) throws Exception {
JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options);
ClassPool classPool = jarArchiveComparator.getCommonClassPool();
List<CtClass> oldClasses = classesGenerator.createOldClasses(classPool);
List<CtClass> newClasses = classesGenerator.createNewClasses(classPool);
return new CompareClassesResult(jarArchiveComparator.compareClassLists(options, oldClasses, newClasses), jarArchiveComparator);
}
}