diff --git a/docs/call-graph-construction.md b/docs/call-graph-construction.md index f230d94451..79d87e5562 100644 --- a/docs/call-graph-construction.md +++ b/docs/call-graph-construction.md @@ -10,7 +10,7 @@ Below, we show how to create a type hierarchy: === "SootUp" ```java - List> inputLocations = new ArrayList(); + List inputLocations = new ArrayList(); inputLocations.add(new JavaClassPathAnalysisInputLocation("src/test/resources/Callgraph/binary")); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); @@ -46,7 +46,7 @@ All the call graph construction algorithms require an entry method to start with === "SootUp" ```java - ClassType classTypeA = view.getIdentifierFactory().getClassType("A"); + JavaClassType classTypeA = view.getIdentifierFactory().getClassType("A"); MethodSignature entryMethodSignature = view.getIdentifierFactory() diff --git a/docs/getting-started.md b/docs/getting-started.md index 8ddf366fdc..1d01254442 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -37,7 +37,7 @@ You can use bytecode analysis typically when you do not have access to the sourc !!! example "Create a view to analyze Java bytecode" ~~~java - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaClassPathAnalysisInputLocation("path2Binary"); JavaView view = new JavaView(inputLocation); @@ -52,7 +52,7 @@ If you have access to the source code, it is also possible to create a view for !!! example "Create a view to analyze Java source code" ~~~java - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaSourcePathAnalysisInputLocation("path2Source"); JavaView view = new JavaView(inputLocation); @@ -65,7 +65,7 @@ If you have a [Jimple](../jimple) file, you can create a view for analyzing jimp ~~~java Path pathToJimple = Paths.get("path2Jimple"); - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JimpleAnalysisInputLocation(pathToJimple); JimpleView view = new JimpleView(inputLocation); @@ -120,7 +120,7 @@ Then, we could define the `ClassType` of the `HelloWorld` class as follows: !!! example "Defining a ClassType" ```java - ClassType classType = + JavaClassType classType = view.getIdentifierFactory().getClassType("example.HelloWorld"); ``` @@ -129,8 +129,7 @@ Once we have a `ClassType` that identifies the `HelloWorld` class, we can use it !!! example "Retrieving a SootClass" ```java - SootClass sootClass = - (SootClass) view.getClass(classType).get(); + JavaSootClass sootClass = view.getClass(classType).get(); ``` ## Retrieving a Method @@ -165,10 +164,10 @@ Alternatively, we can also retrieve a `SootMethod` from `SootClass` that contain !!! example "Retrieving a SootMethod from a SootClass" ```java - Optional opt = sootClass.getMethod(methodSignature.getSubSignature()); + Optional opt = sootClass.getMethod(methodSignature.getSubSignature()); if(opt.isPresent()){ - SootMethod method = opt.get(); + JavaSootMethod method = opt.get(); } ``` @@ -200,7 +199,7 @@ Below we show a comparison of the code so far with the same functionality in soo JavaView view = new JavaView(inputLocation); - ClassType classType = + JavaClassType classType = view.getIdentifierFactory().getClassType("HelloWorld"); MethodSignature methodSignature = @@ -210,11 +209,9 @@ Below we show a comparison of the code so far with the same functionality in soo "main", classType, "void", Collections.singletonList("java.lang.String[]")); - SootClass sootClass = - (SootClass) view.getClass(classType).get(); + JavaSootClass sootClass = view.getClass(classType).get(); - SootMethod sootMethod = - sootClass.getMethod(methodSignature.getSubSignature()).get(); + JavaSootMethod sootMethod = sootClass.getMethod(methodSignature.getSubSignature()).get(); sootMethod.getBody().getStmts(); ``` diff --git a/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/AbstractJimpleBasedICFG.java b/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/AbstractJimpleBasedICFG.java index 367917a71a..6f692f1a6f 100644 --- a/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/AbstractJimpleBasedICFG.java +++ b/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/AbstractJimpleBasedICFG.java @@ -33,7 +33,6 @@ import sootup.core.jimple.basic.Value; import sootup.core.jimple.common.stmt.Stmt; import sootup.core.model.Body; -import sootup.core.model.SootClass; import sootup.core.model.SootMethod; import sootup.core.views.View; @@ -41,7 +40,7 @@ public abstract class AbstractJimpleBasedICFG implements BiDiInterproceduralCFG< protected final boolean enableExceptions; - protected View> view; + protected View view; @DontSynchronize("written by single thread; read afterwards") private final Map stmtToOwner = createStmtToOwnerMap(); diff --git a/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/CGEdgeUtil.java b/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/CGEdgeUtil.java index 9b350ced31..9c938671eb 100644 --- a/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/CGEdgeUtil.java +++ b/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/CGEdgeUtil.java @@ -29,7 +29,6 @@ import sootup.callgraph.CallGraph; import sootup.core.jimple.common.expr.*; import sootup.core.jimple.common.stmt.Stmt; -import sootup.core.model.SootClass; import sootup.core.model.SootMethod; import sootup.core.signatures.MethodSignature; import sootup.core.views.View; @@ -53,7 +52,7 @@ public static CallGraphEdgeType findCallGraphEdgeType(AbstractInvokeExpr invokeE } public static Set> getCallEdges( - View view, CallGraph cg) { + View view, CallGraph cg) { Set methodSigs = cg.getMethodSignatures(); Set> callEdges = new HashSet<>(); for (MethodSignature caller : methodSigs) { diff --git a/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/ICFGDotExporter.java b/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/ICFGDotExporter.java index 1c0a4c563a..e5f0bd3864 100644 --- a/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/ICFGDotExporter.java +++ b/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/ICFGDotExporter.java @@ -30,7 +30,6 @@ import sootup.core.jimple.common.expr.JNewExpr; import sootup.core.jimple.common.stmt.JAssignStmt; import sootup.core.jimple.common.stmt.Stmt; -import sootup.core.model.SootClass; import sootup.core.model.SootMethod; import sootup.core.signatures.MethodSignature; import sootup.core.signatures.MethodSubSignature; @@ -41,9 +40,7 @@ public class ICFGDotExporter { public static String buildICFGGraph( - Map signatureToStmtGraph, - View> view, - CallGraph callGraph) { + Map signatureToStmtGraph, View view, CallGraph callGraph) { final StringBuilder sb = new StringBuilder(); DotExporter.buildDiGraphObject(sb); Map calls; @@ -61,9 +58,7 @@ public static String buildICFGGraph( * methods. */ public static Map computeCalls( - Map stmtGraphSet, - View> view, - CallGraph callgraph) { + Map stmtGraphSet, View view, CallGraph callgraph) { Map calls = new HashMap<>(); for (Map.Entry entry : stmtGraphSet.entrySet()) { StmtGraph stmtGraph = entry.getValue(); @@ -126,7 +121,7 @@ public static Set getMethodSignatureInSubClass( public static void connectEdgesToSubClasses( MethodSignature source, MethodSignature target, - View> view, + View view, Map calls, CallGraph callgraph) { Set methodSignatureInSubClass = diff --git a/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/JimpleBasedInterproceduralCFG.java b/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/JimpleBasedInterproceduralCFG.java index fc675e9f5b..03650ac87a 100644 --- a/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/JimpleBasedInterproceduralCFG.java +++ b/sootup.analysis/src/main/java/sootup/analysis/interprocedural/icfg/JimpleBasedInterproceduralCFG.java @@ -41,7 +41,6 @@ import sootup.callgraph.ClassHierarchyAnalysisAlgorithm; import sootup.core.graph.StmtGraph; import sootup.core.jimple.common.stmt.Stmt; -import sootup.core.model.SootClass; import sootup.core.model.SootMethod; import sootup.core.signatures.MethodSignature; import sootup.core.views.View; @@ -210,7 +209,7 @@ public Collection getCallersOf(@Nonnull SootMethod m) { } public static Set> getCallEdges( - @Nonnull View> view, @Nonnull CallGraph cg) { + @Nonnull View view, @Nonnull CallGraph cg) { Set methodSigs = cg.getMethodSignatures(); Set> callEdges = new HashSet<>(); for (MethodSignature caller : methodSigs) { diff --git a/sootup.analysis/src/test/java/sootup/analysis/interprocedural/icfg/ICFGDotExporterTest.java b/sootup.analysis/src/test/java/sootup/analysis/interprocedural/icfg/ICFGDotExporterTest.java index 5c887b6839..f7a3fcc805 100644 --- a/sootup.analysis/src/test/java/sootup/analysis/interprocedural/icfg/ICFGDotExporterTest.java +++ b/sootup.analysis/src/test/java/sootup/analysis/interprocedural/icfg/ICFGDotExporterTest.java @@ -20,7 +20,6 @@ import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; @@ -40,7 +39,7 @@ public CallGraph loadCallGraph(JavaView view) { @Test public void ICFGDotExportTest() { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); inputLocations.add(new JavaClassPathAnalysisInputLocation("src/test/resources/icfg/binary")); @@ -49,7 +48,7 @@ public void ICFGDotExportTest() { JavaIdentifierFactory identifierFactory = JavaIdentifierFactory.getInstance(); JavaClassType mainClassSignature = identifierFactory.getClassType("ICFGExample"); - SootClass sc = view.getClass(mainClassSignature).get(); + SootClass sc = view.getClass(mainClassSignature).get(); entryMethod = sc.getMethods().stream().filter(e -> e.getName().equals("entryPoint")).findFirst().get(); @@ -75,7 +74,7 @@ public void ICFGDotExportTest() { @Test public void ICFGDotExportTest2() { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); inputLocations.add(new JavaClassPathAnalysisInputLocation("src/test/resources/icfg/binary")); @@ -84,7 +83,7 @@ public void ICFGDotExportTest2() { JavaIdentifierFactory identifierFactory = JavaIdentifierFactory.getInstance(); JavaClassType mainClassSignature = identifierFactory.getClassType("ICFGExample2"); - SootClass sc = view.getClass(mainClassSignature).get(); + SootClass sc = view.getClass(mainClassSignature).get(); entryMethod = sc.getMethods().stream().filter(e -> e.getName().equals("entryPoint")).findFirst().get(); @@ -110,7 +109,7 @@ public void ICFGDotExportTest2() { @Test public void ICFGArrayListDotExport() { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); inputLocations.add(new JavaClassPathAnalysisInputLocation("src/test/resources/icfg/binary")); @@ -119,7 +118,7 @@ public void ICFGArrayListDotExport() { JavaIdentifierFactory identifierFactory = JavaIdentifierFactory.getInstance(); JavaClassType mainClassSignature = identifierFactory.getClassType("ICFGArrayListExample"); - SootClass sc = view.getClass(mainClassSignature).get(); + SootClass sc = view.getClass(mainClassSignature).get(); entryMethod = sc.getMethods().stream().filter(e -> e.getName().equals("main")).findFirst().get(); @@ -137,7 +136,7 @@ public void ICFGArrayListDotExport() { @Test public void ICFGInterfaceDotExport() { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); inputLocations.add(new JavaClassPathAnalysisInputLocation("src/test/resources/icfg/binary")); @@ -146,7 +145,7 @@ public void ICFGInterfaceDotExport() { JavaIdentifierFactory identifierFactory = JavaIdentifierFactory.getInstance(); JavaClassType mainClassSignature = identifierFactory.getClassType("ICFGInterfaceExample"); - SootClass sc = view.getClass(mainClassSignature).get(); + SootClass sc = view.getClass(mainClassSignature).get(); entryMethod = sc.getMethods().stream().filter(e -> e.getName().equals("main")).findFirst().get(); diff --git a/sootup.analysis/src/test/java/sootup/analysis/interprocedural/ifds/CGEdgeUtilTest.java b/sootup.analysis/src/test/java/sootup/analysis/interprocedural/ifds/CGEdgeUtilTest.java index 78d0a69ee3..7a43cba295 100644 --- a/sootup.analysis/src/test/java/sootup/analysis/interprocedural/ifds/CGEdgeUtilTest.java +++ b/sootup.analysis/src/test/java/sootup/analysis/interprocedural/ifds/CGEdgeUtilTest.java @@ -45,7 +45,6 @@ import sootup.core.util.printer.StmtPrinter; import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; import sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation; @@ -136,7 +135,7 @@ public void testGetCallEdges() { fail("The rt.jar is not available after Java 8. You are using version " + version); } - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); inputLocations.add(new JavaSourcePathAnalysisInputLocation("src/test/resources/callgraph/")); @@ -148,7 +147,7 @@ public void testGetCallEdges() { identifierFactory.getMethodSignature( mainClassSignature, "main", "void", Collections.singletonList("java.lang.String[]")); - SootClass sc = view.getClass(mainClassSignature).orElse(null); + SootClass sc = view.getClass(mainClassSignature).orElse(null); assertNotNull(sc); SootMethod m = sc.getMethod(mainMethodSignature.getSubSignature()).orElse(null); assertNotNull(mainMethodSignature + " not found in classloader", m); diff --git a/sootup.analysis/src/test/java/sootup/analysis/interprocedural/ifds/IFDSTaintTestSetUp.java b/sootup.analysis/src/test/java/sootup/analysis/interprocedural/ifds/IFDSTaintTestSetUp.java index 5d5ca384a8..a80cf9a29f 100644 --- a/sootup.analysis/src/test/java/sootup/analysis/interprocedural/ifds/IFDSTaintTestSetUp.java +++ b/sootup.analysis/src/test/java/sootup/analysis/interprocedural/ifds/IFDSTaintTestSetUp.java @@ -36,7 +36,6 @@ import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; @@ -74,7 +73,7 @@ private void runAnalysis() { * classes. */ private void setupSoot(String targetTestClassName) { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); inputLocations.add(new JavaClassPathAnalysisInputLocation("src/test/resources/taint/binary")); @@ -83,7 +82,7 @@ private void setupSoot(String targetTestClassName) { JavaIdentifierFactory identifierFactory = JavaIdentifierFactory.getInstance(); JavaClassType mainClassSignature = identifierFactory.getClassType(targetTestClassName); - SootClass sc = view.getClass(mainClassSignature).get(); + SootClass sc = view.getClass(mainClassSignature).get(); entryMethod = sc.getMethods().stream().filter(e -> e.getName().equals("entryPoint")).findFirst().get(); diff --git a/sootup.callgraph/src/main/java/sootup/callgraph/AbstractCallGraphAlgorithm.java b/sootup.callgraph/src/main/java/sootup/callgraph/AbstractCallGraphAlgorithm.java index b07da6e174..9c8dbd1bc9 100644 --- a/sootup.callgraph/src/main/java/sootup/callgraph/AbstractCallGraphAlgorithm.java +++ b/sootup.callgraph/src/main/java/sootup/callgraph/AbstractCallGraphAlgorithm.java @@ -57,9 +57,9 @@ public abstract class AbstractCallGraphAlgorithm implements CallGraphAlgorithm { private static final Logger logger = LoggerFactory.getLogger(AbstractCallGraphAlgorithm.class); - @Nonnull protected final View> view; + @Nonnull protected final View view; - protected AbstractCallGraphAlgorithm(@Nonnull View> view) { + protected AbstractCallGraphAlgorithm(@Nonnull View view) { this.view = view; } @@ -73,8 +73,7 @@ protected AbstractCallGraphAlgorithm(@Nonnull View> view) * @return the complete constructed call graph starting from the entry methods. */ @Nonnull - final CallGraph constructCompleteCallGraph( - View> view, List entryPoints) { + final CallGraph constructCompleteCallGraph(View view, List entryPoints) { MutableCallGraph cg = initializeCallGraph(); Deque workList = new ArrayDeque<>(entryPoints); @@ -137,7 +136,7 @@ protected void addImplicitEdgesOfEntryPoints( * @param cg the call graph object that is filled with the found methods and call edges. */ final void processWorkList( - View> view, + View view, Deque workList, Set processed, MutableCallGraph cg) { @@ -147,7 +146,7 @@ final void processWorkList( if (processed.contains(currentMethodSignature)) continue; // skip if library class - SootClass currentClass = + SootClass currentClass = view.getClass(currentMethodSignature.getDeclClassType()).orElse(null); if (currentClass == null || currentClass.isLibraryClass()) continue; @@ -214,13 +213,11 @@ Stream resolveAllCallsFromSourceMethod(SootMethod sourceMethod) */ @Nonnull protected Stream resolveAllImplicitCallsFromSourceMethod( - View> view, SootMethod sourceMethod) { + View view, SootMethod sourceMethod) { if (sourceMethod == null || !sourceMethod.hasBody()) return Stream.empty(); // collect all static initializer calls - Stream staticInitializerStream = - resolveAllStaticInitializerCallsFromSourceMethod(view, sourceMethod); - return staticInitializerStream; + return resolveAllStaticInitializerCallsFromSourceMethod(view, sourceMethod); } /** @@ -232,7 +229,7 @@ protected Stream resolveAllImplicitCallsFromSourceMethod( */ @Nonnull protected Stream resolveAllStaticInitializerCallsFromSourceMethod( - View> view, SootMethod sourceMethod) { + View view, SootMethod sourceMethod) { if (sourceMethod == null || !sourceMethod.hasBody()) return Stream.empty(); Stream.Builder targetsToStaticInitializer = Stream.builder(); @@ -291,7 +288,7 @@ protected Stream resolveAllStaticInitializerCallsFromSourceMeth * @param cg the current cg that might be extended */ protected abstract void preProcessingMethod( - View> view, + View view, MethodSignature sourceMethod, @Nonnull Deque workList, @Nonnull MutableCallGraph cg); @@ -305,7 +302,7 @@ protected abstract void preProcessingMethod( * @param cg the current cg that might be extended */ protected abstract void postProcessingMethod( - View> view, + View view, MethodSignature sourceMethod, @Nonnull Deque workList, @Nonnull MutableCallGraph cg); @@ -313,7 +310,7 @@ protected abstract void postProcessingMethod( @Nonnull @Override public CallGraph addClass(@Nonnull CallGraph oldCallGraph, @Nonnull JavaClassType classType) { - SootClass clazz = view.getClassOrThrow(classType); + SootClass clazz = view.getClassOrThrow(classType); Set newMethodSignatures = clazz.getMethods().stream() .map(Method::getSignature) @@ -380,15 +377,15 @@ public CallGraph addClass(@Nonnull CallGraph oldCallGraph, @Nonnull JavaClassTyp * @return - MethodSignature of main method. */ public MethodSignature findMainMethod() { - Set> classes = new HashSet<>(); /* Set to track the classes to check */ - for (SootClass aClass : view.getClasses()) { + Set classes = new HashSet<>(); /* Set to track the classes to check */ + for (SootClass aClass : view.getClasses()) { if (!aClass.isLibraryClass()) { classes.add(aClass); } } Collection mainMethods = new HashSet<>(); /* Set to store the methods */ - for (SootClass aClass : classes) { + for (SootClass aClass : classes) { for (SootMethod method : aClass.getMethods()) { if (method.isStatic() && method @@ -437,8 +434,7 @@ protected abstract Stream resolveCall( * concrete implementation. */ @Nonnull - public static Optional resolveConcreteDispatch( - View> view, MethodSignature m) { + public static Optional resolveConcreteDispatch(View view, MethodSignature m) { Optional methodOp = findConcreteMethod(view, m); if (methodOp.isPresent()) { SootMethod method = methodOp.get(); @@ -457,10 +453,10 @@ public static Optional resolveConcreteDispatch( * @param sig the signature of the searched method * @return the found method object, or null if the method was not found. */ - public static Optional findConcreteMethod( - @Nonnull View> view, @Nonnull MethodSignature sig) { + public static Optional findConcreteMethod( + @Nonnull View view, @Nonnull MethodSignature sig) { IdentifierFactory identifierFactory = view.getIdentifierFactory(); - SootClass startclass = view.getClass(sig.getDeclClassType()).orElse(null); + SootClass startclass = view.getClass(sig.getDeclClassType()).orElse(null); if (startclass == null) { logger.warn( "Could not find \"" @@ -470,7 +466,8 @@ public static Optional findConcreteMethod( + " to resolve the concrete method"); return Optional.empty(); } - Optional startMethod = startclass.getMethod(sig.getSubSignature()); + Optional startMethod = + startclass.getMethod(sig.getSubSignature()).map(method -> (SootMethod) method); if (startMethod.isPresent()) { return startMethod; } @@ -478,9 +475,10 @@ public static Optional findConcreteMethod( List superClasses = typeHierarchy.superClassesOf(sig.getDeclClassType()); for (ClassType superClassType : superClasses) { - Optional method = + Optional method = view.getMethod( - identifierFactory.getMethodSignature(superClassType, sig.getSubSignature())); + identifierFactory.getMethodSignature(superClassType, sig.getSubSignature())) + .map(sm -> (SootMethod) sm); if (method.isPresent()) { return method; } @@ -490,7 +488,7 @@ public static Optional findConcreteMethod( // interface1 is a super-interface of interface2 // due to multiple inheritance in interfaces final HierarchyComparator hierarchyComparator = new HierarchyComparator(view); - Optional defaultMethod = + Optional defaultMethod = interfaces.stream() .map( classType -> @@ -501,7 +499,9 @@ public static Optional findConcreteMethod( .min( (m1, m2) -> hierarchyComparator.compare( - m1.getDeclaringClassType(), m2.getDeclaringClassType())); + m1.getDeclaringClassType(), m2.getDeclaringClassType())) + .map(method -> (SootMethod) method); + ; if (defaultMethod.isPresent()) { return defaultMethod; } diff --git a/sootup.callgraph/src/main/java/sootup/callgraph/ClassHierarchyAnalysisAlgorithm.java b/sootup.callgraph/src/main/java/sootup/callgraph/ClassHierarchyAnalysisAlgorithm.java index f360c85208..39e42edb6c 100644 --- a/sootup.callgraph/src/main/java/sootup/callgraph/ClassHierarchyAnalysisAlgorithm.java +++ b/sootup.callgraph/src/main/java/sootup/callgraph/ClassHierarchyAnalysisAlgorithm.java @@ -49,7 +49,7 @@ public class ClassHierarchyAnalysisAlgorithm extends AbstractCallGraphAlgorithm * * @param view it contains the data of the classes and methods */ - public ClassHierarchyAnalysisAlgorithm(@Nonnull View> view) { + public ClassHierarchyAnalysisAlgorithm(@Nonnull View view) { super(view); } @@ -120,7 +120,7 @@ private List resolveAllCallTargets( .subtypesOf(targetMethodSignature.getDeclClassType()) .forEach( classType -> { - SootClass clazz = view.getClass(classType).orElse(null); + SootClass clazz = view.getClass(classType).orElse(null); if (clazz == null) return; // check if method is implemented SootMethod method = @@ -149,7 +149,7 @@ private List resolveAllCallTargets( @Override protected void postProcessingMethod( - View> view, + View view, MethodSignature sourceMethod, @Nonnull Deque workList, @Nonnull MutableCallGraph cg) { @@ -158,7 +158,7 @@ protected void postProcessingMethod( @Override protected void preProcessingMethod( - View> view, + View view, MethodSignature sourceMethod, @Nonnull Deque workList, @Nonnull MutableCallGraph cg) { diff --git a/sootup.callgraph/src/main/java/sootup/callgraph/RapidTypeAnalysisAlgorithm.java b/sootup.callgraph/src/main/java/sootup/callgraph/RapidTypeAnalysisAlgorithm.java index 5bc3b472f2..3d9a8b091b 100644 --- a/sootup.callgraph/src/main/java/sootup/callgraph/RapidTypeAnalysisAlgorithm.java +++ b/sootup.callgraph/src/main/java/sootup/callgraph/RapidTypeAnalysisAlgorithm.java @@ -31,7 +31,6 @@ import sootup.core.jimple.common.expr.JSpecialInvokeExpr; import sootup.core.jimple.common.stmt.JAssignStmt; import sootup.core.model.MethodModifier; -import sootup.core.model.SootClass; import sootup.core.model.SootMethod; import sootup.core.signatures.MethodSignature; import sootup.core.types.ClassType; @@ -70,7 +69,7 @@ private Call(@Nonnull MethodSignature source, @Nonnull MethodSignature target) { * * @param view it contains the data of the classes and methods */ - public RapidTypeAnalysisAlgorithm(@Nonnull View> view) { + public RapidTypeAnalysisAlgorithm(@Nonnull View view) { super(view); } @@ -219,7 +218,7 @@ private void saveIgnoredCall(MethodSignature source, MethodSignature target) { */ @Override protected void preProcessingMethod( - View> view, + View view, MethodSignature sourceMethod, @Nonnull Deque workList, @Nonnull MutableCallGraph cg) { @@ -267,7 +266,7 @@ protected void preProcessingMethod( */ @Override protected void postProcessingMethod( - View> view, + View view, MethodSignature sourceMethod, @Nonnull Deque workList, @Nonnull MutableCallGraph cg) { diff --git a/sootup.callgraph/src/test/java/sootup/callgraph/CallGraphTestBase.java b/sootup.callgraph/src/test/java/sootup/callgraph/CallGraphTestBase.java index 9b1c71f9bf..bacbe52342 100644 --- a/sootup.callgraph/src/test/java/sootup/callgraph/CallGraphTestBase.java +++ b/sootup.callgraph/src/test/java/sootup/callgraph/CallGraphTestBase.java @@ -15,7 +15,6 @@ import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; import sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation; @@ -36,7 +35,7 @@ private JavaView createViewForClassPath(String classPath) { } private JavaView createViewForClassPath(String classPath, boolean useSourceCodeFrontend) { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); if (useSourceCodeFrontend) { inputLocations.add(new JavaSourcePathAnalysisInputLocation(classPath)); @@ -71,7 +70,7 @@ CallGraph loadCallGraph(String testDirectory, boolean useSourceCodeFrontend, Str identifierFactory.getMethodSignature( mainClassSignature, "main", "void", Collections.singletonList("java.lang.String[]")); - SootClass sc = view.getClass(mainClassSignature).orElse(null); + SootClass sc = view.getClass(mainClassSignature).orElse(null); assertNotNull(sc); SootMethod m = sc.getMethod(mainMethodSignature.getSubSignature()).orElse(null); assertNotNull(mainMethodSignature + " not found in classloader", m); @@ -724,7 +723,7 @@ public void testStopAtLibraryClass() { String classPath = "src/test/resources/callgraph/Library/binary/"; - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); inputLocations.add( new JavaClassPathAnalysisInputLocation(classPath + "application/", SourceType.Application)); @@ -741,7 +740,7 @@ public void testStopAtLibraryClass() { assertFalse(cg.callsFrom(mainMethodSignature).isEmpty()); - SootClass libraryClass = + SootClass libraryClass = view.getClass(view.getIdentifierFactory().getClassType("lib.Library")).orElse(null); assertNotNull(libraryClass); for (SootMethod method : libraryClass.getMethods()) { diff --git a/sootup.callgraph/src/test/java/sootup/callgraph/ConcreteDispatchTest.java b/sootup.callgraph/src/test/java/sootup/callgraph/ConcreteDispatchTest.java index 2968290d38..ca3288e8db 100644 --- a/sootup.callgraph/src/test/java/sootup/callgraph/ConcreteDispatchTest.java +++ b/sootup.callgraph/src/test/java/sootup/callgraph/ConcreteDispatchTest.java @@ -19,7 +19,6 @@ import sootup.core.types.ClassType; import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; /** @author : Hasitha Rajapakse, Jonas Klauke * */ @@ -33,7 +32,7 @@ public ClassType getClassType(String className) { @BeforeClass public static void setUp() { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add( new JavaClassPathAnalysisInputLocation( "src/test/resources/callgraph/ConcreteDispatch/binary")); diff --git a/sootup.callgraph/src/test/java/sootup/callgraph/InstantiateClassValueVisitorTest.java b/sootup.callgraph/src/test/java/sootup/callgraph/InstantiateClassValueVisitorTest.java index 39dfc79651..f09b892109 100644 --- a/sootup.callgraph/src/test/java/sootup/callgraph/InstantiateClassValueVisitorTest.java +++ b/sootup.callgraph/src/test/java/sootup/callgraph/InstantiateClassValueVisitorTest.java @@ -65,7 +65,6 @@ import sootup.core.types.PrimitiveType; import sootup.core.views.View; import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; -import sootup.java.core.JavaSootClass; import sootup.java.core.language.JavaJimple; import sootup.java.core.views.JavaView; @@ -73,7 +72,7 @@ public class InstantiateClassValueVisitorTest { @Test public void testVisitor() { - View view = new JavaView(new DefaultRTJarAnalysisInputLocation()); + View view = new JavaView(new DefaultRTJarAnalysisInputLocation()); IdentifierFactory identifierFactory = view.getIdentifierFactory(); InstantiateClassValueVisitor instantiateVisitor = new InstantiateClassValueVisitor(); @@ -99,7 +98,7 @@ public void testVisitor() { assertFalse(foundClassTypes.contains(identifierFactory.getClassType("java.lang.String"))); } - private void fillList(List listWithAllValues, View view) { + private void fillList(List listWithAllValues, View view) { IdentifierFactory identifierFactory = view.getIdentifierFactory(); // interesting cases PrimitiveType charType = identifierFactory.getPrimitiveType("char").orElse(null); diff --git a/sootup.core/src/main/java/sootup/core/cache/ClassCache.java b/sootup.core/src/main/java/sootup/core/cache/ClassCache.java index 0c8c6a14aa..7c7c85244d 100644 --- a/sootup.core/src/main/java/sootup/core/cache/ClassCache.java +++ b/sootup.core/src/main/java/sootup/core/cache/ClassCache.java @@ -6,14 +6,14 @@ import sootup.core.types.ClassType; /** Interface for different caching strategies of resolved classes. */ -public interface ClassCache> { +public interface ClassCache { - S getClass(ClassType classType); + SootClass getClass(ClassType classType); @Nonnull - Collection getClasses(); + Collection getClasses(); - void putClass(ClassType classType, S sootClass); + void putClass(ClassType classType, SootClass sootClass); boolean hasClass(ClassType classType); diff --git a/sootup.core/src/main/java/sootup/core/cache/FullCache.java b/sootup.core/src/main/java/sootup/core/cache/FullCache.java index 517707ad09..658170d1b6 100644 --- a/sootup.core/src/main/java/sootup/core/cache/FullCache.java +++ b/sootup.core/src/main/java/sootup/core/cache/FullCache.java @@ -8,23 +8,23 @@ import sootup.core.types.ClassType; /** Cache that stores any class that has been resolved. */ -public class FullCache> implements ClassCache { +public class FullCache implements ClassCache { - protected final Map cache = new HashMap<>(); + protected final Map cache = new HashMap<>(); @Override - public synchronized S getClass(ClassType classType) { + public synchronized SootClass getClass(ClassType classType) { return cache.get(classType); } @Nonnull @Override - public synchronized Collection getClasses() { + public synchronized Collection getClasses() { return cache.values(); } @Override - public void putClass(ClassType classType, S sootClass) { + public void putClass(ClassType classType, SootClass sootClass) { cache.putIfAbsent(classType, sootClass); } diff --git a/sootup.core/src/main/java/sootup/core/cache/LRUCache.java b/sootup.core/src/main/java/sootup/core/cache/LRUCache.java index 52decf4eb1..fbe5e7ea67 100644 --- a/sootup.core/src/main/java/sootup/core/cache/LRUCache.java +++ b/sootup.core/src/main/java/sootup/core/cache/LRUCache.java @@ -9,9 +9,9 @@ * Cache that implements a least recently used strategy. If the amount of stored classes exceeds a * specified amount, the lest recently used class will be overwritten. */ -public class LRUCache> implements ClassCache { +public class LRUCache implements ClassCache { private final int cacheSize; - private final Map cache = new HashMap<>(); + private final Map cache = new HashMap<>(); private final LinkedList accessOrder = new LinkedList<>(); public LRUCache(int cacheSize) { @@ -19,8 +19,8 @@ public LRUCache(int cacheSize) { } @Override - public synchronized S getClass(ClassType classType) { - S sootClass = cache.get(classType); + public synchronized SootClass getClass(ClassType classType) { + SootClass sootClass = cache.get(classType); if (sootClass != null) { accessOrder.remove(classType); accessOrder.addFirst(classType); @@ -31,12 +31,12 @@ public synchronized S getClass(ClassType classType) { @Nonnull @Override - public synchronized Collection getClasses() { + public synchronized Collection getClasses() { return cache.values(); } @Override - public void putClass(ClassType classType, S sootClass) { + public void putClass(ClassType classType, SootClass sootClass) { if (accessOrder.size() >= cacheSize) { ClassType leastAccessed = accessOrder.removeLast(); cache.remove(leastAccessed); diff --git a/sootup.core/src/main/java/sootup/core/cache/MutableClassCache.java b/sootup.core/src/main/java/sootup/core/cache/MutableClassCache.java index e51bfab492..09b362ce5e 100644 --- a/sootup.core/src/main/java/sootup/core/cache/MutableClassCache.java +++ b/sootup.core/src/main/java/sootup/core/cache/MutableClassCache.java @@ -5,12 +5,12 @@ import sootup.core.types.ClassType; /** Interface for caches which are mutable and allow classes to be removed from. */ -public interface MutableClassCache> extends ClassCache { - S removeClass(ClassType classType); +public interface MutableClassCache extends ClassCache { + SootClass removeClass(ClassType classType); - default S replaceClass( - @Nonnull ClassType oldType, @Nonnull ClassType newType, @Nonnull S newClass) { - S oldClass = removeClass(oldType); + default SootClass replaceClass( + @Nonnull ClassType oldType, @Nonnull ClassType newType, @Nonnull SootClass newClass) { + SootClass oldClass = removeClass(oldType); putClass(newType, newClass); return oldClass; } diff --git a/sootup.core/src/main/java/sootup/core/cache/MutableFullCache.java b/sootup.core/src/main/java/sootup/core/cache/MutableFullCache.java index cf45f656ea..9fe303b9e6 100644 --- a/sootup.core/src/main/java/sootup/core/cache/MutableFullCache.java +++ b/sootup.core/src/main/java/sootup/core/cache/MutableFullCache.java @@ -8,11 +8,10 @@ * Mutable version of the {@link FullCache} that additionally allows for a removal of cached * classes. */ -public class MutableFullCache> extends FullCache - implements MutableClassCache { +public class MutableFullCache extends FullCache implements MutableClassCache { @Override - public S removeClass(@Nonnull ClassType classType) { + public SootClass removeClass(@Nonnull ClassType classType) { if (this.hasClass(classType)) { return cache.remove(classType); } diff --git a/sootup.core/src/main/java/sootup/core/cache/provider/ClassCacheProvider.java b/sootup.core/src/main/java/sootup/core/cache/provider/ClassCacheProvider.java index a053c6b2c0..bba31e5a15 100644 --- a/sootup.core/src/main/java/sootup/core/cache/provider/ClassCacheProvider.java +++ b/sootup.core/src/main/java/sootup/core/cache/provider/ClassCacheProvider.java @@ -1,11 +1,10 @@ package sootup.core.cache.provider; import sootup.core.cache.ClassCache; -import sootup.core.model.SootClass; /** Interface for cache providers. */ -public interface ClassCacheProvider> { +public interface ClassCacheProvider { /** Create and return a new cache object. */ - ClassCache createCache(); + ClassCache createCache(); } diff --git a/sootup.core/src/main/java/sootup/core/cache/provider/FullCacheProvider.java b/sootup.core/src/main/java/sootup/core/cache/provider/FullCacheProvider.java index e2b344f438..c6bc63226d 100644 --- a/sootup.core/src/main/java/sootup/core/cache/provider/FullCacheProvider.java +++ b/sootup.core/src/main/java/sootup/core/cache/provider/FullCacheProvider.java @@ -2,13 +2,12 @@ import sootup.core.cache.ClassCache; import sootup.core.cache.FullCache; -import sootup.core.model.SootClass; /** Provides a new {@link FullCache} object. */ -public class FullCacheProvider> implements ClassCacheProvider { +public class FullCacheProvider implements ClassCacheProvider { @Override - public ClassCache createCache() { - return new FullCache(); + public ClassCache createCache() { + return new FullCache(); } } diff --git a/sootup.core/src/main/java/sootup/core/cache/provider/LRUCacheProvider.java b/sootup.core/src/main/java/sootup/core/cache/provider/LRUCacheProvider.java index 0e14ac01d5..762ff2153a 100644 --- a/sootup.core/src/main/java/sootup/core/cache/provider/LRUCacheProvider.java +++ b/sootup.core/src/main/java/sootup/core/cache/provider/LRUCacheProvider.java @@ -2,10 +2,9 @@ import sootup.core.cache.ClassCache; import sootup.core.cache.LRUCache; -import sootup.core.model.SootClass; /** Provides a new {@link LRUCache} object. */ -public class LRUCacheProvider> implements ClassCacheProvider { +public class LRUCacheProvider implements ClassCacheProvider { private final int cacheSize; /** Create a new LRUCacheProvider that returns a {@link LRUCache} with a default size of 100. */ @@ -20,7 +19,7 @@ public LRUCacheProvider(int cacheSize) { } @Override - public ClassCache createCache() { - return new LRUCache<>(cacheSize); + public ClassCache createCache() { + return new LRUCache(cacheSize); } } diff --git a/sootup.core/src/main/java/sootup/core/cache/provider/MutableFullCacheProvider.java b/sootup.core/src/main/java/sootup/core/cache/provider/MutableFullCacheProvider.java index c8b11a88f3..f253e6e00f 100644 --- a/sootup.core/src/main/java/sootup/core/cache/provider/MutableFullCacheProvider.java +++ b/sootup.core/src/main/java/sootup/core/cache/provider/MutableFullCacheProvider.java @@ -2,13 +2,12 @@ import sootup.core.cache.ClassCache; import sootup.core.cache.MutableFullCache; -import sootup.core.model.SootClass; /** Provides a new {@link MutableFullCache} object. */ -public class MutableFullCacheProvider> implements ClassCacheProvider { +public class MutableFullCacheProvider implements ClassCacheProvider { @Override - public ClassCache createCache() { - return new MutableFullCache<>(); + public ClassCache createCache() { + return new MutableFullCache(); } } diff --git a/sootup.core/src/main/java/sootup/core/frontend/AbstractClassSource.java b/sootup.core/src/main/java/sootup/core/frontend/AbstractClassSource.java index 6d8dc2b9a0..4274e3fb22 100644 --- a/sootup.core/src/main/java/sootup/core/frontend/AbstractClassSource.java +++ b/sootup.core/src/main/java/sootup/core/frontend/AbstractClassSource.java @@ -25,7 +25,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import sootup.core.inputlocation.AnalysisInputLocation; -import sootup.core.model.AbstractClass; import sootup.core.model.SootClass; import sootup.core.model.SourceType; import sootup.core.signatures.Signature; @@ -37,17 +36,17 @@ * languages). e.g. its connecting a file with source(code) to a {@link Signature} that a {@link * View} can resolve. */ -public abstract class AbstractClassSource { +public abstract class AbstractClassSource { // holds information about the class - protected final AnalysisInputLocation> classSource; + protected final AnalysisInputLocation classSource; // holds information about the specific data unit where the information about a class is stored protected final Path sourcePath; // the classType that identifies the containing class information protected ClassType classSignature; public AbstractClassSource( - @Nonnull AnalysisInputLocation> classSource, + @Nonnull AnalysisInputLocation classSource, @Nonnull ClassType classSignature, @Nonnull Path sourcePath) { this.classSource = classSource; @@ -59,13 +58,13 @@ public AbstractClassSource( * @param sourceType instantiates the Subclass of AbstractClassSource to create a *SootClass * @return a *SootClass */ - public abstract T buildClass(@Nonnull SourceType sourceType); + public abstract SootClass buildClass(@Nonnull SourceType sourceType); public ClassType getClassType() { return classSignature; } - public AnalysisInputLocation> getClassSource() { + public AnalysisInputLocation getClassSource() { return classSource; } @@ -88,8 +87,7 @@ public boolean equals(@Nullable Object o) { if (o == null || getClass() != o.getClass()) { return false; } - AbstractClassSource> that = - (AbstractClassSource>) o; + AbstractClassSource that = (AbstractClassSource) o; return Objects.equal(classSource, that.classSource) && Objects.equal(sourcePath, that.sourcePath); } diff --git a/sootup.core/src/main/java/sootup/core/frontend/ClassProvider.java b/sootup.core/src/main/java/sootup/core/frontend/ClassProvider.java index 99a67c278f..6a17c84793 100644 --- a/sootup.core/src/main/java/sootup/core/frontend/ClassProvider.java +++ b/sootup.core/src/main/java/sootup/core/frontend/ClassProvider.java @@ -25,7 +25,6 @@ import java.util.Optional; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.FileType; -import sootup.core.model.SootClass; import sootup.core.types.ClassType; /** @@ -34,12 +33,10 @@ * * @author Manuel Benz */ -public interface ClassProvider>> { +public interface ClassProvider { - Optional> createClassSource( - AnalysisInputLocation> inputLocation, - Path sourcePath, - ClassType classSignature); + Optional createClassSource( + AnalysisInputLocation inputLocation, Path sourcePath, ClassType classSignature); /** Returns the file type that is handled by this provider, e.g. class, jimple, java */ FileType getHandledFileType(); diff --git a/sootup.core/src/main/java/sootup/core/frontend/OverridingClassSource.java b/sootup.core/src/main/java/sootup/core/frontend/OverridingClassSource.java index 84fbe45cc3..4d320e9052 100644 --- a/sootup.core/src/main/java/sootup/core/frontend/OverridingClassSource.java +++ b/sootup.core/src/main/java/sootup/core/frontend/OverridingClassSource.java @@ -119,14 +119,18 @@ public OverridingClassSource( @Nonnull @Override - public Collection resolveMethods() throws ResolveException { - return overriddenSootMethods != null ? overriddenSootMethods : delegate.resolveMethods(); + public Collection resolveMethods() throws ResolveException { + return overriddenSootMethods != null + ? overriddenSootMethods + : (Collection) delegate.resolveMethods(); } @Nonnull @Override - public Collection resolveFields() throws ResolveException { - return overriddenSootFields != null ? overriddenSootFields : delegate.resolveFields(); + public Collection resolveFields() throws ResolveException { + return overriddenSootFields != null + ? overriddenSootFields + : (Collection) delegate.resolveFields(); } @Nonnull @@ -138,19 +142,25 @@ public Set resolveModifiers() { @Nonnull @Override public Set resolveInterfaces() { - return overriddenInterfaces != null ? overriddenInterfaces : delegate.resolveInterfaces(); + return overriddenInterfaces != null + ? overriddenInterfaces + : (Set) delegate.resolveInterfaces(); } @Nonnull @Override public Optional resolveSuperclass() { - return overriddenSuperclass != null ? overriddenSuperclass : delegate.resolveSuperclass(); + return overriddenSuperclass != null + ? overriddenSuperclass + : (Optional) delegate.resolveSuperclass(); } @Nonnull @Override - public Optional resolveOuterClass() { - return overriddenOuterClass != null ? overriddenOuterClass : delegate.resolveOuterClass(); + public Optional resolveOuterClass() { + return overriddenOuterClass != null + ? overriddenOuterClass + : (Optional) delegate.resolveOuterClass(); } @Nonnull @@ -160,8 +170,8 @@ public Position resolvePosition() { } @Override - public SootClass buildClass(@Nonnull SourceType sourceType) { - return new SootClass<>(this, sourceType); + public SootClass buildClass(@Nonnull SourceType sourceType) { + return new SootClass(this, sourceType); } @Override diff --git a/sootup.core/src/main/java/sootup/core/frontend/SootClassSource.java b/sootup.core/src/main/java/sootup/core/frontend/SootClassSource.java index 087161feca..41865ac6d9 100644 --- a/sootup.core/src/main/java/sootup/core/frontend/SootClassSource.java +++ b/sootup.core/src/main/java/sootup/core/frontend/SootClassSource.java @@ -42,8 +42,7 @@ * @author Ben Hermann * @author Linghui Luo */ -public abstract class SootClassSource>> - extends AbstractClassSource { +public abstract class SootClassSource extends AbstractClassSource { /** * Creates and a {@link SootClassSource} for a specific source file. The file should be passed as @@ -58,13 +57,13 @@ public abstract class SootClassSource> srcNamespace, + @Nonnull AnalysisInputLocation srcNamespace, @Nonnull ClassType classSignature, @Nonnull Path sourcePath) { super(srcNamespace, classSignature, sourcePath); } - protected SootClassSource(SootClassSource delegate) { + protected SootClassSource(SootClassSource delegate) { super(delegate.classSource, delegate.getClassType(), delegate.getSourcePath()); } diff --git a/sootup.core/src/main/java/sootup/core/inputlocation/AnalysisInputLocation.java b/sootup.core/src/main/java/sootup/core/inputlocation/AnalysisInputLocation.java index ed574ed84a..bfaa1600a7 100644 --- a/sootup.core/src/main/java/sootup/core/inputlocation/AnalysisInputLocation.java +++ b/sootup.core/src/main/java/sootup/core/inputlocation/AnalysisInputLocation.java @@ -26,8 +26,7 @@ import java.util.Optional; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import sootup.core.frontend.AbstractClassSource; -import sootup.core.model.AbstractClass; +import sootup.core.frontend.SootClassSource; import sootup.core.model.SootClass; import sootup.core.model.SourceType; import sootup.core.transform.BodyInterceptor; @@ -47,7 +46,7 @@ * @author Ben Hermann * @author Linghui Luo */ -public interface AnalysisInputLocation> { +public interface AnalysisInputLocation { /** * Create or find a class source for a given type. * @@ -55,8 +54,7 @@ public interface AnalysisInputLocation> { * @return The source entry for that class. */ @Nonnull - Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view); + Optional getClassSource(@Nonnull ClassType type, @Nonnull View view); /** * Scan the input location and create ClassSources for every compilation / interpretation unit. @@ -64,7 +62,7 @@ Optional> getClassSource( * @return The source entries. */ @Nonnull - Collection> getClassSources(@Nonnull View view); + Collection getClassSources(@Nonnull View view); /** * If the AnalysisInputLocation is initialized with the SourceType then this method should return diff --git a/sootup.core/src/main/java/sootup/core/inputlocation/EagerInputLocation.java b/sootup.core/src/main/java/sootup/core/inputlocation/EagerInputLocation.java index b2a175047b..d74c1f1cac 100644 --- a/sootup.core/src/main/java/sootup/core/inputlocation/EagerInputLocation.java +++ b/sootup.core/src/main/java/sootup/core/inputlocation/EagerInputLocation.java @@ -24,9 +24,7 @@ import java.util.*; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import sootup.core.frontend.AbstractClassSource; import sootup.core.frontend.SootClassSource; -import sootup.core.model.SootClass; import sootup.core.model.SourceType; import sootup.core.transform.BodyInterceptor; import sootup.core.types.ClassType; @@ -37,11 +35,10 @@ * * @author Markus Schmidt */ -public class EagerInputLocation>> - implements AnalysisInputLocation { +public class EagerInputLocation implements AnalysisInputLocation { protected final SourceType sourceType; - @Nonnull private final Map> map; + @Nonnull private final Map map; @Nonnull private final List bodyInterceptors; /** not useful for retrieval of classes via view. remove inputlocation from sootclass? */ @@ -50,12 +47,12 @@ public EagerInputLocation() { } public EagerInputLocation( - @Nonnull Map> map, @Nullable SourceType sourceType) { + @Nonnull Map map, @Nullable SourceType sourceType) { this(map, sourceType, Collections.emptyList()); } public EagerInputLocation( - @Nonnull Map> map, + @Nonnull Map map, @Nullable SourceType sourceType, @Nonnull List bodyInterceptors) { this.sourceType = sourceType; @@ -64,15 +61,15 @@ public EagerInputLocation( } @Override - public @Nonnull Optional> getClassSource( - @Nonnull ClassType type, @Nullable View view) { + public @Nonnull Optional getClassSource( + @Nonnull ClassType type, @Nullable View view) { // FIXME: add classloadingoptions return Optional.ofNullable(map.get(type)); } @Nonnull @Override - public Collection> getClassSources(@Nullable View view) { + public Collection getClassSources(@Nullable View view) { // FIXME: add classloadingoptions return map.values(); } @@ -98,6 +95,6 @@ public boolean equals(Object o) { if (!(o instanceof EagerInputLocation)) { return false; } - return map.equals(((EagerInputLocation) o).map); + return map.equals(((EagerInputLocation) o).map); } } diff --git a/sootup.core/src/main/java/sootup/core/model/AbstractClass.java b/sootup.core/src/main/java/sootup/core/model/AbstractClass.java index cf6b818fce..53251085e4 100644 --- a/sootup.core/src/main/java/sootup/core/model/AbstractClass.java +++ b/sootup.core/src/main/java/sootup/core/model/AbstractClass.java @@ -27,8 +27,8 @@ import java.util.Set; import java.util.stream.Collectors; import javax.annotation.Nonnull; -import sootup.core.frontend.AbstractClassSource; import sootup.core.frontend.ResolveException; +import sootup.core.frontend.SootClassSource; import sootup.core.signatures.*; import sootup.core.signatures.FieldSubSignature; import sootup.core.signatures.MethodSubSignature; @@ -43,16 +43,16 @@ * * @author Linghui Luo */ -public abstract class AbstractClass> { +public abstract class AbstractClass { - @Nonnull protected final T classSource; + @Nonnull protected final SootClassSource classSource; - public AbstractClass(@Nonnull T cs) { + public AbstractClass(@Nonnull SootClassSource cs) { this.classSource = cs; } @Nonnull - public T getClassSource() { + public SootClassSource getClassSource() { return classSource; } diff --git a/sootup.core/src/main/java/sootup/core/model/SootClass.java b/sootup.core/src/main/java/sootup/core/model/SootClass.java index a3e8155d43..a5b05bbe87 100644 --- a/sootup.core/src/main/java/sootup/core/model/SootClass.java +++ b/sootup.core/src/main/java/sootup/core/model/SootClass.java @@ -44,12 +44,12 @@ * @author Linghui Luo * @author Jan Martin Persch */ -public class SootClass>> extends AbstractClass { +public class SootClass extends AbstractClass { @Nonnull protected final SourceType sourceType; @Nonnull protected final ClassType classSignature; - public SootClass(@Nonnull S classSource, @Nonnull SourceType sourceType) { + public SootClass(@Nonnull SootClassSource classSource, @Nonnull SourceType sourceType) { super(classSource); this.sourceType = sourceType; this.classSignature = classSource.getClassType(); @@ -57,7 +57,7 @@ public SootClass(@Nonnull S classSource, @Nonnull SourceType sourceType) { @Nonnull private Set lazyFieldInitializer() { - Set fields; + Set fields; try { fields = ImmutableUtils.immutableSetOf(this.classSource.resolveFields()); @@ -71,7 +71,7 @@ private Set lazyFieldInitializer() { } @Nonnull - private Set lazyMethodInitializer() { + private Set lazyMethodInitializer() { Set methods; try { @@ -267,7 +267,7 @@ public Position getPosition() { @Nonnull @Override - public S getClassSource() { + public SootClassSource getClassSource() { return classSource; } @@ -278,12 +278,12 @@ public String getName() { } @Nonnull - public SootClass withClassSource(@Nonnull S classSource) { - return new SootClass(classSource, sourceType); + public SootClass withClassSource(@Nonnull SootClassSource classSource) { + return new SootClass(classSource, sourceType); } @Nonnull - public SootClass withSourceType(@Nonnull SourceType sourceType) { - return new SootClass(classSource, sourceType); + public SootClass withSourceType(@Nonnull SourceType sourceType) { + return new SootClass(classSource, sourceType); } } diff --git a/sootup.core/src/main/java/sootup/core/transform/BodyInterceptor.java b/sootup.core/src/main/java/sootup/core/transform/BodyInterceptor.java index 46151724bb..f16754589b 100644 --- a/sootup.core/src/main/java/sootup/core/transform/BodyInterceptor.java +++ b/sootup.core/src/main/java/sootup/core/transform/BodyInterceptor.java @@ -36,5 +36,5 @@ public interface BodyInterceptor { * @param builder * @param view */ - void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view); + void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view); } diff --git a/sootup.core/src/main/java/sootup/core/typehierarchy/HierarchyComparator.java b/sootup.core/src/main/java/sootup/core/typehierarchy/HierarchyComparator.java index f2a2612ab0..04cf3f1267 100644 --- a/sootup.core/src/main/java/sootup/core/typehierarchy/HierarchyComparator.java +++ b/sootup.core/src/main/java/sootup/core/typehierarchy/HierarchyComparator.java @@ -23,7 +23,6 @@ import java.util.Comparator; import javax.annotation.Nonnull; -import sootup.core.model.SootClass; import sootup.core.types.ClassType; import sootup.core.views.View; @@ -35,7 +34,7 @@ public class HierarchyComparator implements Comparator { TypeHierarchy typeHierarchy; - public HierarchyComparator(@Nonnull View> view) { + public HierarchyComparator(@Nonnull View view) { this(view.getTypeHierarchy()); } diff --git a/sootup.core/src/main/java/sootup/core/typehierarchy/MutableTypeHierarchy.java b/sootup.core/src/main/java/sootup/core/typehierarchy/MutableTypeHierarchy.java index 043cbadc2a..34dc39f06c 100644 --- a/sootup.core/src/main/java/sootup/core/typehierarchy/MutableTypeHierarchy.java +++ b/sootup.core/src/main/java/sootup/core/typehierarchy/MutableTypeHierarchy.java @@ -31,5 +31,5 @@ public interface MutableTypeHierarchy extends TypeHierarchy { * *

For internal use only. */ - void addType(SootClass sootClass); + void addType(SootClass sootClass); } diff --git a/sootup.core/src/main/java/sootup/core/typehierarchy/ViewTypeHierarchy.java b/sootup.core/src/main/java/sootup/core/typehierarchy/ViewTypeHierarchy.java index 20b2ddde0b..9c0cec2a91 100644 --- a/sootup.core/src/main/java/sootup/core/typehierarchy/ViewTypeHierarchy.java +++ b/sootup.core/src/main/java/sootup/core/typehierarchy/ViewTypeHierarchy.java @@ -54,10 +54,10 @@ public class ViewTypeHierarchy implements MutableTypeHierarchy { private final Supplier lazyScanResult = Suppliers.memoize(this::scanView); - @Nonnull private final View> view; + @Nonnull private final View view; /** to allow caching use Typehierarchy.fromView() to get/create the Typehierarchy. */ - public ViewTypeHierarchy(@Nonnull View> view) { + public ViewTypeHierarchy(@Nonnull View view) { this.view = view; } @@ -299,7 +299,7 @@ private Stream selfAndImplementedInterfaces(Vertex vertex) { @Nullable @Override public ClassType superClassOf(@Nonnull ClassType classType) { - final Optional> classOpt = view.getClass(classType); + final Optional classOpt = view.getClass(classType); if (!classOpt.isPresent()) { throw new IllegalArgumentException("Could not find '" + classType + "' in the view."); } @@ -372,7 +372,7 @@ private ScanResult scanView() { } private static void addSootClassToGraph( - SootClass sootClass, Map typeToVertex, Graph graph) { + SootClass sootClass, Map typeToVertex, Graph graph) { if (sootClass.isInterface()) { Vertex vertex = typeToVertex.computeIfAbsent( @@ -421,7 +421,7 @@ private static Vertex createAndAddInterfaceVertex(Graph graph, Cla } @Override - public void addType(@Nonnull SootClass sootClass) { + public void addType(@Nonnull SootClass sootClass) { ScanResult scanResult = lazyScanResult.get(); addSootClassToGraph(sootClass, scanResult.typeToVertex, scanResult.graph); } diff --git a/sootup.core/src/main/java/sootup/core/util/printer/JimplePrinter.java b/sootup.core/src/main/java/sootup/core/util/printer/JimplePrinter.java index 79896aae90..da2ace33a5 100644 --- a/sootup.core/src/main/java/sootup/core/util/printer/JimplePrinter.java +++ b/sootup.core/src/main/java/sootup/core/util/printer/JimplePrinter.java @@ -109,11 +109,11 @@ private LabeledStmtPrinter determinePrinter() { } } - public void printTo(SootClass cl, PrintWriter out) { + public void printTo(SootClass cl, PrintWriter out) { printTo(cl, out, determinePrinter()); } - public void printTo(SootClass cl, PrintWriter out, LabeledStmtPrinter printer) { + public void printTo(SootClass cl, PrintWriter out, LabeledStmtPrinter printer) { printer.enableImports(options.contains(Option.UseImports)); // add jimple line number tags @@ -229,15 +229,15 @@ public void printTo(SootClass cl, PrintWriter out, LabeledStmtPrinter printer out.println(printer.toString()); } - private void printMethods(SootClass cl, LabeledStmtPrinter printer) { - Iterator methodIt = cl.getMethods().iterator(); + private void printMethods(SootClass cl, LabeledStmtPrinter printer) { + Iterator methodIt = cl.getMethods().iterator(); if (methodIt.hasNext()) { printer.incIndent(); printer.newline(); incJimpleLnNum(); while (methodIt.hasNext()) { - SootMethod method = (SootMethod) methodIt.next(); + SootMethod method = methodIt.next(); if (method.hasBody()) { Body body = method.getBody(); diff --git a/sootup.core/src/main/java/sootup/core/validation/BodyValidator.java b/sootup.core/src/main/java/sootup/core/validation/BodyValidator.java index 3c50827e75..0dd28feed1 100644 --- a/sootup.core/src/main/java/sootup/core/validation/BodyValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/BodyValidator.java @@ -34,7 +34,7 @@ public interface BodyValidator { * @param body the body to check * @param view the view */ - List validate(Body body, View view); + List validate(Body body, View view); /** * Basic validators run essential checks and are run always if validate is called.
diff --git a/sootup.core/src/main/java/sootup/core/validation/CheckInitValidator.java b/sootup.core/src/main/java/sootup/core/validation/CheckInitValidator.java index b68a9ced29..692acd7d80 100644 --- a/sootup.core/src/main/java/sootup/core/validation/CheckInitValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/CheckInitValidator.java @@ -29,7 +29,7 @@ public class CheckInitValidator implements BodyValidator { @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: #535 implement validator // check code copied from old soot diff --git a/sootup.core/src/main/java/sootup/core/validation/CheckTypesValidator.java b/sootup.core/src/main/java/sootup/core/validation/CheckTypesValidator.java index 1a8a301eb5..cf12583590 100644 --- a/sootup.core/src/main/java/sootup/core/validation/CheckTypesValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/CheckTypesValidator.java @@ -29,7 +29,7 @@ public class CheckTypesValidator implements BodyValidator { @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check code from old soot in the comment below /* * for (Unit u : body.getUnits()) { String errorSuffix = " at " + u + " in " + body.getMethod(); diff --git a/sootup.core/src/main/java/sootup/core/validation/CheckVoidLocalesValidator.java b/sootup.core/src/main/java/sootup/core/validation/CheckVoidLocalesValidator.java index 02c546ce28..973eadc077 100644 --- a/sootup.core/src/main/java/sootup/core/validation/CheckVoidLocalesValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/CheckVoidLocalesValidator.java @@ -29,7 +29,7 @@ public class CheckVoidLocalesValidator implements BodyValidator { @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check copied code from old soot /* * for (Local l : body.getLocals()) { if (l.getType() instanceof VoidType) { exception.add(new ValidationException(l, diff --git a/sootup.core/src/main/java/sootup/core/validation/FieldRefValidator.java b/sootup.core/src/main/java/sootup/core/validation/FieldRefValidator.java index fee35aa25d..d6f806a661 100644 --- a/sootup.core/src/main/java/sootup/core/validation/FieldRefValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/FieldRefValidator.java @@ -37,7 +37,7 @@ public class FieldRefValidator implements BodyValidator { // Checks the consistency of field references. @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { List validationException = new ArrayList<>(); diff --git a/sootup.core/src/main/java/sootup/core/validation/IdentityStatementsValidator.java b/sootup.core/src/main/java/sootup/core/validation/IdentityStatementsValidator.java index 4fb5d65728..a079e7e8a9 100644 --- a/sootup.core/src/main/java/sootup/core/validation/IdentityStatementsValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/IdentityStatementsValidator.java @@ -41,7 +41,7 @@ public class IdentityStatementsValidator implements BodyValidator { * @return */ @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check copied code from old soot /* * SootMethod methodRef = body.getMethod(); if (methodRef.isAbstract()) { return; } diff --git a/sootup.core/src/main/java/sootup/core/validation/IdentityValidator.java b/sootup.core/src/main/java/sootup/core/validation/IdentityValidator.java index 20090c4228..c173091006 100644 --- a/sootup.core/src/main/java/sootup/core/validation/IdentityValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/IdentityValidator.java @@ -39,7 +39,7 @@ public class IdentityValidator implements BodyValidator { * @return */ @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check copied code from old soot /* * boolean hasThisLocal = false; int paramCount = body.getMethod().getParameterCount(); boolean[] parameterRefs = new diff --git a/sootup.core/src/main/java/sootup/core/validation/InvokeArgumentValidator.java b/sootup.core/src/main/java/sootup/core/validation/InvokeArgumentValidator.java index ba7317dd0a..bd01dbc0f2 100644 --- a/sootup.core/src/main/java/sootup/core/validation/InvokeArgumentValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/InvokeArgumentValidator.java @@ -35,7 +35,7 @@ public class InvokeArgumentValidator implements BodyValidator { @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check copied code from old soot /* * for (Unit u : body.getUnits()) { Stmt s = (Stmt) u; if (s.containsInvokeExpr()) { InvokeExpr iinvExpr = diff --git a/sootup.core/src/main/java/sootup/core/validation/JimpleTrapValidator.java b/sootup.core/src/main/java/sootup/core/validation/JimpleTrapValidator.java index 63bbe30bc5..1fe1bb712d 100644 --- a/sootup.core/src/main/java/sootup/core/validation/JimpleTrapValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/JimpleTrapValidator.java @@ -41,7 +41,7 @@ public class JimpleTrapValidator implements BodyValidator { * @return */ @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check copied code from old soot /* * Set caughtUnits = new HashSet(); for (Trap trap : body.getTraps()) { diff --git a/sootup.core/src/main/java/sootup/core/validation/LocalsValidator.java b/sootup.core/src/main/java/sootup/core/validation/LocalsValidator.java index 57808e72bf..704472b33c 100644 --- a/sootup.core/src/main/java/sootup/core/validation/LocalsValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/LocalsValidator.java @@ -36,7 +36,7 @@ public class LocalsValidator implements BodyValidator { * @return */ @Override - public List validate(@Nonnull Body body, @Nonnull View view) { + public List validate(@Nonnull Body body, @Nonnull View view) { // TODO : Write tests List exception = new ArrayList<>(); diff --git a/sootup.core/src/main/java/sootup/core/validation/MethodValidator.java b/sootup.core/src/main/java/sootup/core/validation/MethodValidator.java index 67e556c48d..96fcc7a95d 100644 --- a/sootup.core/src/main/java/sootup/core/validation/MethodValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/MethodValidator.java @@ -38,7 +38,7 @@ public class MethodValidator implements BodyValidator { * @return */ @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check copied code from old soot /* * SootMethod methodRef = body.getMethod(); if (methodRef.isAbstract()) { return; } if (methodRef.isStaticInitializer() diff --git a/sootup.core/src/main/java/sootup/core/validation/NewValidator.java b/sootup.core/src/main/java/sootup/core/validation/NewValidator.java index 36c524f727..8bcafeae7d 100644 --- a/sootup.core/src/main/java/sootup/core/validation/NewValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/NewValidator.java @@ -49,7 +49,7 @@ public class NewValidator implements BodyValidator { // Checks whether after each new-instruction a constructor call follows. @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { List exceptions = new ArrayList<>(); diff --git a/sootup.core/src/main/java/sootup/core/validation/StmtsValidator.java b/sootup.core/src/main/java/sootup/core/validation/StmtsValidator.java index a80c86c109..8fd44fc5af 100644 --- a/sootup.core/src/main/java/sootup/core/validation/StmtsValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/StmtsValidator.java @@ -34,7 +34,7 @@ public class StmtsValidator implements BodyValidator { * @return */ @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { return null; } diff --git a/sootup.core/src/main/java/sootup/core/validation/TrapsValidator.java b/sootup.core/src/main/java/sootup/core/validation/TrapsValidator.java index d13e9a4e18..217b0c5bbc 100644 --- a/sootup.core/src/main/java/sootup/core/validation/TrapsValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/TrapsValidator.java @@ -34,7 +34,7 @@ public class TrapsValidator implements BodyValidator { * @return */ @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check code from old soot below /* diff --git a/sootup.core/src/main/java/sootup/core/validation/TypesValidator.java b/sootup.core/src/main/java/sootup/core/validation/TypesValidator.java index d7559fc6f9..402f2ee203 100644 --- a/sootup.core/src/main/java/sootup/core/validation/TypesValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/TypesValidator.java @@ -33,7 +33,7 @@ public class TypesValidator implements BodyValidator { @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { /* * SootMethod methodRef = body.getMethod(); * diff --git a/sootup.core/src/main/java/sootup/core/validation/UsesValidator.java b/sootup.core/src/main/java/sootup/core/validation/UsesValidator.java index 849beb763a..66e908c048 100644 --- a/sootup.core/src/main/java/sootup/core/validation/UsesValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/UsesValidator.java @@ -34,7 +34,7 @@ public class UsesValidator implements BodyValidator { * @return */ @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: auto generated stub /* * // Conservative validation of uses: add edges to exception handlers // even if they are not reachable. // // class C { diff --git a/sootup.core/src/main/java/sootup/core/validation/ValuesValidator.java b/sootup.core/src/main/java/sootup/core/validation/ValuesValidator.java index 2787482fb0..44745c368a 100644 --- a/sootup.core/src/main/java/sootup/core/validation/ValuesValidator.java +++ b/sootup.core/src/main/java/sootup/core/validation/ValuesValidator.java @@ -34,7 +34,7 @@ public class ValuesValidator implements BodyValidator { * @return */ @Override - public List validate(Body body, View view) { + public List validate(Body body, View view) { // TODO: check code from old soot below /* * Set set = newSetFromMap(new IdentityHashMap()); diff --git a/sootup.core/src/main/java/sootup/core/views/AbstractView.java b/sootup.core/src/main/java/sootup/core/views/AbstractView.java index e3abea168d..7ad1f1a818 100644 --- a/sootup.core/src/main/java/sootup/core/views/AbstractView.java +++ b/sootup.core/src/main/java/sootup/core/views/AbstractView.java @@ -38,7 +38,7 @@ * * @author Linghui Luo */ -public abstract class AbstractView> implements View { +public abstract class AbstractView implements View { @Nullable private TypeHierarchy typeHierarchy; public AbstractView() { @@ -64,7 +64,7 @@ public TypeHierarchy getTypeHierarchy() { @Override @Nonnull public Optional getMethod(@Nonnull MethodSignature signature) { - final Optional aClass = getClass(signature.getDeclClassType()); + final Optional aClass = getClass(signature.getDeclClassType()); if (!aClass.isPresent()) { return Optional.empty(); } @@ -74,7 +74,7 @@ public Optional getMethod(@Nonnull MethodSignature signatu @Override @Nonnull public Optional getField(@Nonnull FieldSignature signature) { - final Optional aClass = getClass(signature.getDeclClassType()); + final Optional aClass = getClass(signature.getDeclClassType()); if (!aClass.isPresent()) { return Optional.empty(); } diff --git a/sootup.core/src/main/java/sootup/core/views/View.java b/sootup.core/src/main/java/sootup/core/views/View.java index b6caa6b6df..9029849816 100644 --- a/sootup.core/src/main/java/sootup/core/views/View.java +++ b/sootup.core/src/main/java/sootup/core/views/View.java @@ -40,11 +40,11 @@ * @author Linghui Luo * @author Ben Hermann */ -public interface View> { +public interface View { /** Return all classes in the view. */ @Nonnull - Collection getClasses(); + Collection getClasses(); /** * Return a class with given signature. @@ -52,7 +52,7 @@ public interface View> { * @return A class with given signature. */ @Nonnull - Optional getClass(@Nonnull ClassType signature); + Optional getClass(@Nonnull ClassType signature); Optional getField(@Nonnull FieldSignature signature); @@ -66,7 +66,7 @@ public interface View> { IdentifierFactory getIdentifierFactory(); @Nonnull - default T getClassOrThrow(@Nonnull ClassType classType) { + default SootClass getClassOrThrow(@Nonnull ClassType classType) { return getClass(classType) .orElseThrow( () -> new IllegalArgumentException("Could not find " + classType + " in View.")); diff --git a/sootup.examples/src/test/java/sootup/examples/basicSetup/BasicSetup.java b/sootup.examples/src/test/java/sootup/examples/basicSetup/BasicSetup.java index be81756dde..894e29fc89 100644 --- a/sootup.examples/src/test/java/sootup/examples/basicSetup/BasicSetup.java +++ b/sootup.examples/src/test/java/sootup/examples/basicSetup/BasicSetup.java @@ -17,8 +17,6 @@ import sootup.core.types.ClassType; import sootup.core.views.View; import sootup.java.bytecode.inputlocation.PathBasedAnalysisInputLocation; -import sootup.java.core.JavaSootClass; -import sootup.java.core.JavaSootClassSource; import sootup.java.core.language.JavaJimple; import sootup.java.core.views.JavaView; @@ -31,8 +29,7 @@ public void createByteCodeProject() { // Create a AnalysisInputLocation, which points to a directory. All class files will be loaded // from the directory Path pathToBinary = Paths.get("src/test/resources/BasicSetup/binary"); - AnalysisInputLocation inputLocation = - PathBasedAnalysisInputLocation.create(pathToBinary, null); + AnalysisInputLocation inputLocation = PathBasedAnalysisInputLocation.create(pathToBinary, null); // Create a view for project, which allows us to retrieve classes View view = new JavaView(inputLocation); @@ -50,8 +47,7 @@ public void createByteCodeProject() { assertTrue(view.getClass(classType).isPresent()); // Retrieve class - SootClass sootClass = - (SootClass) view.getClass(classType).get(); + SootClass sootClass = view.getClass(classType).get(); // Retrieve method view.getMethod(methodSignature); diff --git a/sootup.examples/src/test/java/sootup/examples/bodyInterceptor/BodyInterceptor.java b/sootup.examples/src/test/java/sootup/examples/bodyInterceptor/BodyInterceptor.java index c562898e47..16b7600565 100644 --- a/sootup.examples/src/test/java/sootup/examples/bodyInterceptor/BodyInterceptor.java +++ b/sootup.examples/src/test/java/sootup/examples/bodyInterceptor/BodyInterceptor.java @@ -15,8 +15,6 @@ import sootup.core.types.ClassType; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.bytecode.interceptors.DeadAssignmentEliminator; -import sootup.java.core.JavaSootClass; -import sootup.java.core.JavaSootClassSource; import sootup.java.core.views.JavaView; /** This example illustrates how to invoke body interceptors. */ @@ -27,7 +25,7 @@ public class BodyInterceptor { public void test() { // Create a AnalysisInputLocation, which points to a directory. All class files will be loaded // from the directory - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaClassPathAnalysisInputLocation( "src/test/resources/BodyInterceptor/binary", null, @@ -48,7 +46,7 @@ public void test() { assertTrue(view.getClass(classType).isPresent()); // Retrieve class - SootClass sootClass = view.getClass(classType).get(); + SootClass sootClass = view.getClass(classType).get(); // Retrieve method assertTrue(view.getMethod(methodSignature).isPresent()); diff --git a/sootup.examples/src/test/java/sootup/examples/callgraph/CallgraphExample.java b/sootup.examples/src/test/java/sootup/examples/callgraph/CallgraphExample.java index e43c8bf838..122aa0e9e3 100644 --- a/sootup.examples/src/test/java/sootup/examples/callgraph/CallgraphExample.java +++ b/sootup.examples/src/test/java/sootup/examples/callgraph/CallgraphExample.java @@ -14,7 +14,6 @@ import sootup.core.types.VoidType; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; public class CallgraphExample { @@ -23,7 +22,7 @@ public class CallgraphExample { public void test() { // Create a AnalysisInputLocation, which points to a directory. All class files will be loaded // from the directory - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add( new JavaClassPathAnalysisInputLocation("src/test/resources/Callgraph/binary")); inputLocations.add( diff --git a/sootup.examples/src/test/java/sootup/examples/classhierarchy/ClassHierarchy.java b/sootup.examples/src/test/java/sootup/examples/classhierarchy/ClassHierarchy.java index 3c69809e69..aed2b47ef6 100644 --- a/sootup.examples/src/test/java/sootup/examples/classhierarchy/ClassHierarchy.java +++ b/sootup.examples/src/test/java/sootup/examples/classhierarchy/ClassHierarchy.java @@ -12,7 +12,6 @@ import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; @@ -33,7 +32,7 @@ public class ClassHierarchy { public void test() { // Create a AnalysisInputLocation, which points to a directory. All class files will be loaded // from the directory - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add( new JavaClassPathAnalysisInputLocation("src/test/resources/ClassHierarchy/binary")); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); // add rt.jar diff --git a/sootup.examples/src/test/java/sootup/examples/mutatingSootClass/MutatingSootClass.java b/sootup.examples/src/test/java/sootup/examples/mutatingSootClass/MutatingSootClass.java index df65de9004..f28b9bddb0 100644 --- a/sootup.examples/src/test/java/sootup/examples/mutatingSootClass/MutatingSootClass.java +++ b/sootup.examples/src/test/java/sootup/examples/mutatingSootClass/MutatingSootClass.java @@ -12,17 +12,15 @@ import sootup.core.jimple.basic.Local; import sootup.core.model.Body; import sootup.core.model.SootClass; -import sootup.core.model.SootMethod; import sootup.core.signatures.MethodSignature; import sootup.core.signatures.MethodSubSignature; import sootup.core.signatures.PackageName; import sootup.core.types.ArrayType; -import sootup.core.types.ClassType; import sootup.core.types.PrimitiveType.IntType; import sootup.core.types.VoidType; import sootup.java.bytecode.inputlocation.PathBasedAnalysisInputLocation; import sootup.java.core.JavaSootClass; -import sootup.java.core.JavaSootClassSource; +import sootup.java.core.JavaSootMethod; import sootup.java.core.OverridingJavaClassSource; import sootup.java.core.language.JavaJimple; import sootup.java.core.types.JavaClassType; @@ -40,7 +38,7 @@ public class MutatingSootClass { public void test() { // Create a AnalysisInputLocation, which points to a directory. All class files will be loaded // from the directory - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = PathBasedAnalysisInputLocation.create( Paths.get("src/test/resources/BasicSetup/binary"), null); @@ -48,7 +46,7 @@ public void test() { JavaView view = new JavaView(inputLocation); // Create a signature for the class we want to analyze - ClassType classType = view.getIdentifierFactory().getClassType("HelloWorld"); + JavaClassType classType = view.getIdentifierFactory().getClassType("HelloWorld"); // Create a signature for the method we want to analyze MethodSignature methodSignature = @@ -60,11 +58,11 @@ public void test() { assertTrue(view.getClass(classType).isPresent()); // Retrieve class - SootClass sootClass = view.getClass(classType).get(); + JavaSootClass sootClass = view.getClass(classType).get(); // Retrieve method assertTrue(view.getMethod(methodSignature).isPresent()); - SootMethod method = view.getMethod(methodSignature).get(); + JavaSootMethod method = view.getMethod(methodSignature).get(); Body oldBody = method.getBody(); System.out.println(oldBody); @@ -88,11 +86,11 @@ public void test() { new OverridingJavaClassSource(sootClass.getClassSource()); // Create new Method - SootMethod newMethod = method.withOverridingMethodSource(old -> newBodySource); + JavaSootMethod newMethod = method.withOverridingMethodSource(old -> newBodySource); OverridingJavaClassSource newClassSource = overridingJavaClassSource.withReplacedMethod(method, newMethod); - SootClass newClass = sootClass.withClassSource(newClassSource); + SootClass newClass = sootClass.withClassSource(newClassSource); System.out.println(newClass.getMethods().stream().findFirst().get().getBody()); diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmAnnotationClassSource.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmAnnotationClassSource.java index 531e6bfa4f..b7b9f98a7e 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmAnnotationClassSource.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmAnnotationClassSource.java @@ -60,7 +60,7 @@ public class AsmAnnotationClassSource extends JavaAnnotationSootClassSource { @Nonnull protected final ClassNode classNode; public AsmAnnotationClassSource( - AnalysisInputLocation> inputLocation, + AnalysisInputLocation inputLocation, Path sourcePath, JavaClassType javaClassType, @Nonnull ClassNode classNode) { diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmClassSource.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmClassSource.java index 3eb790769e..8af776d8d2 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmClassSource.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmClassSource.java @@ -46,7 +46,7 @@ class AsmClassSource extends JavaSootClassSource { @Nonnull private final ClassNode classNode; public AsmClassSource( - AnalysisInputLocation> inputLocation, + AnalysisInputLocation inputLocation, Path sourcePath, JavaClassType javaClassType, @Nonnull ClassNode classNode) { @@ -108,7 +108,7 @@ protected Iterable resolveAnnotations() { } @Nonnull - public Collection resolveMethods() throws ResolveException { + public Collection resolveMethods() throws ResolveException { IdentifierFactory identifierFactory = JavaIdentifierFactory.getInstance(); return classNode.methods.stream() .map( @@ -148,7 +148,7 @@ public Collection resolveMethods() throws ResolveException @Override @Nonnull - public Collection resolveFields() throws ResolveException { + public Collection resolveFields() throws ResolveException { IdentifierFactory identifierFactory = JavaIdentifierFactory.getInstance(); return resolveFields(classNode.fields, identifierFactory, classSignature); } @@ -159,12 +159,12 @@ public EnumSet resolveModifiers() { } @Nonnull - public Set resolveInterfaces() { + public Set resolveInterfaces() { return new HashSet<>(AsmUtil.asmIdToSignature(classNode.interfaces)); } @Nonnull - public Optional resolveSuperclass() { + public Optional resolveSuperclass() { if (classNode.superName == null) { return Optional.empty(); } @@ -172,7 +172,7 @@ public Optional resolveSuperclass() { } @Nonnull - public Optional resolveOuterClass() { + public Optional resolveOuterClass() { if (classNode.outerClass == null) { return Optional.empty(); } diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmJavaClassProvider.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmJavaClassProvider.java index c17b41e3c3..26a11b19f0 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmJavaClassProvider.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmJavaClassProvider.java @@ -32,30 +32,26 @@ import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.FileType; -import sootup.core.model.SootClass; import sootup.core.types.ClassType; import sootup.core.views.View; import sootup.java.core.JavaModuleIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.types.AnnotationType; import sootup.java.core.types.JavaClassType; import sootup.java.core.types.ModuleJavaClassType; /** A {@link ClassProvider} capable of handling Java bytecode */ -public class AsmJavaClassProvider implements ClassProvider { +public class AsmJavaClassProvider implements ClassProvider { - @Nonnull private final View view; + @Nonnull private final View view; private static final @Nonnull Logger logger = LoggerFactory.getLogger(AsmJavaClassProvider.class); - public AsmJavaClassProvider(@Nonnull View view) { + public AsmJavaClassProvider(@Nonnull View view) { this.view = view; } @Override - public Optional> createClassSource( - AnalysisInputLocation> analysisInputLocation, - Path sourcePath, - ClassType classType) { + public Optional createClassSource( + AnalysisInputLocation analysisInputLocation, Path sourcePath, ClassType classType) { SootClassNode classNode = new SootClassNode(analysisInputLocation); try { @@ -95,9 +91,9 @@ public FileType getHandledFileType() { class SootClassNode extends ClassNode { - private final AnalysisInputLocation> analysisInputLocation; + private final AnalysisInputLocation analysisInputLocation; - SootClassNode(AnalysisInputLocation> analysisInputLocation) { + SootClassNode(AnalysisInputLocation analysisInputLocation) { super(AsmUtil.SUPPORTED_ASM_OPCODE); this.analysisInputLocation = analysisInputLocation; } diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmMethodSource.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmMethodSource.java index 3c84cbaa11..21ecd5fb43 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmMethodSource.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/frontend/AsmMethodSource.java @@ -96,7 +96,7 @@ public class AsmMethodSource extends JSRInlinerAdapter implements BodySource { @Nullable private JavaClassType declaringClass; - private final View view; + private final View view; private final List bodyInterceptors; @Nonnull private final Set inlineExceptionLabels = new HashSet<>(); @@ -114,7 +114,7 @@ public class AsmMethodSource extends JSRInlinerAdapter implements BodySource { @Nonnull String desc, @Nonnull String signature, @Nonnull String[] exceptions, - View view, + View view, @Nonnull List bodyInterceptors) { super(AsmUtil.SUPPORTED_ASM_OPCODE, null, access, name, desc, signature, exceptions); this.bodyInterceptors = bodyInterceptors; diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/ArchiveBasedAnalysisInputLocation.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/ArchiveBasedAnalysisInputLocation.java index 2f62f992c1..e4a87e98ee 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/ArchiveBasedAnalysisInputLocation.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/ArchiveBasedAnalysisInputLocation.java @@ -35,13 +35,12 @@ import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import sootup.core.frontend.AbstractClassSource; import sootup.core.model.SourceType; import sootup.core.transform.BodyInterceptor; import sootup.core.types.ClassType; import sootup.core.views.View; import sootup.java.bytecode.frontend.AsmJavaClassProvider; -import sootup.java.core.JavaSootClass; +import sootup.java.core.JavaSootClassSource; import sootup.java.core.types.JavaClassType; public class ArchiveBasedAnalysisInputLocation extends PathBasedAnalysisInputLocation { @@ -85,8 +84,7 @@ public ArchiveBasedAnalysisInputLocation( @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view) { + public Optional getClassSource(@Nonnull ClassType type, @Nonnull View view) { try { FileSystem fs = fileSystemCache.get(path); final Path archiveRoot = fs.getPath("/"); @@ -99,8 +97,7 @@ public Optional> getClassSource( @Override @Nonnull - public Collection> getClassSources( - @Nonnull View view) { + public Collection getClassSources(@Nonnull View view) { // we don't use the filesystem cache here as it could close the filesystem after the timeout // while we are still iterating try (FileSystem fs = FileSystems.newFileSystem(path, (ClassLoader) null)) { diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JavaClassPathAnalysisInputLocation.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JavaClassPathAnalysisInputLocation.java index 528490ed81..6be18d0178 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JavaClassPathAnalysisInputLocation.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JavaClassPathAnalysisInputLocation.java @@ -32,7 +32,7 @@ import javax.annotation.Nonnull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sootup.core.frontend.AbstractClassSource; +import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SourceType; import sootup.core.transform.BodyInterceptor; @@ -40,7 +40,7 @@ import sootup.core.util.PathUtils; import sootup.core.util.StreamUtils; import sootup.core.views.View; -import sootup.java.core.JavaSootClass; +import sootup.java.core.JavaSootClassSource; /** * An implementation of the {@link AnalysisInputLocation} interface for the Java class path. Handles @@ -50,12 +50,12 @@ * @author Manuel Benz created on 22.05.18 * @author Kaustubh Kelkar updated on 20.07.2020 */ -public class JavaClassPathAnalysisInputLocation implements AnalysisInputLocation { +public class JavaClassPathAnalysisInputLocation implements AnalysisInputLocation { private static final @Nonnull Logger logger = LoggerFactory.getLogger(JavaClassPathAnalysisInputLocation.class); private static final @Nonnull String WILDCARD_CHAR = "*"; - @Nonnull private final Collection> cpEntries; + @Nonnull private final Collection cpEntries; /** Variable to track if user has specified the SourceType. By default, it will be set to null. */ private final SourceType srcType; @@ -176,33 +176,31 @@ public List getBodyInterceptors() { @Override @Nonnull - public Collection> getClassSources( - @Nonnull View view) { + public Collection getClassSources(@Nonnull View view) { // By using a set here, already added classes won't be overwritten and the class which is found // first will be kept - Set> found = new HashSet<>(); - for (AnalysisInputLocation inputLocation : cpEntries) { + Set found = new HashSet<>(); + for (AnalysisInputLocation inputLocation : cpEntries) { found.addAll(inputLocation.getClassSources(view)); } - return found; + return found.stream().map(src -> (JavaSootClassSource) src).collect(Collectors.toList()); } @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view) { - for (AnalysisInputLocation inputLocation : cpEntries) { - final Optional> classSource = + public Optional getClassSource(@Nonnull ClassType type, @Nonnull View view) { + for (AnalysisInputLocation inputLocation : cpEntries) { + final Optional classSource = inputLocation.getClassSource(type, view); if (classSource.isPresent()) { - return classSource; + return classSource.map(src -> (JavaSootClassSource) src); } } return Optional.empty(); } @Nonnull - private Optional> inputLocationForPath(@Nonnull Path path) { + private Optional inputLocationForPath(@Nonnull Path path) { if (Files.exists(path) && (Files.isDirectory(path) || PathUtils.isArchive(path))) { return Optional.of(PathBasedAnalysisInputLocation.create(path, srcType, bodyInterceptors)); } else { @@ -217,7 +215,7 @@ private Optional> inputLocationForPath(@Non * @param jarPath The jar path for which the classes need to be listed * @return list of classpath entries */ - private List> explodeClassPath(@Nonnull String jarPath) { + private List explodeClassPath(@Nonnull String jarPath) { return explodeClassPath(jarPath, FileSystems.getDefault()); } @@ -228,7 +226,7 @@ private List> explodeClassPath(@Nonnull Str * @param fileSystem the filesystem the path should be resolved for * @return list of classpath entries */ - private List> explodeClassPath( + private List explodeClassPath( @Nonnull String jarPath, @Nonnull FileSystem fileSystem) { return explode(jarPath, fileSystem) .flatMap(cp -> StreamUtils.optionalToStream(inputLocationForPath(cp))) diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JavaModulePathAnalysisInputLocation.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JavaModulePathAnalysisInputLocation.java index de087da46d..efefa73517 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JavaModulePathAnalysisInputLocation.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JavaModulePathAnalysisInputLocation.java @@ -29,7 +29,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import sootup.core.IdentifierFactory; -import sootup.core.frontend.AbstractClassSource; import sootup.core.frontend.ClassProvider; import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; @@ -37,10 +36,7 @@ import sootup.core.transform.BodyInterceptor; import sootup.core.types.ClassType; import sootup.core.views.View; -import sootup.java.core.JavaModuleIdentifierFactory; -import sootup.java.core.JavaModuleInfo; -import sootup.java.core.JavaSootClass; -import sootup.java.core.ModuleInfoAnalysisInputLocation; +import sootup.java.core.*; import sootup.java.core.signatures.ModulePackageName; import sootup.java.core.signatures.ModuleSignature; import sootup.java.core.types.JavaClassType; @@ -100,19 +96,18 @@ public JavaModulePathAnalysisInputLocation( } @Nonnull - public Optional getModuleInfo(ModuleSignature sig, View view) { + public Optional getModuleInfo(ModuleSignature sig, View view) { return moduleFinder.getModuleInfo(sig); } @Nonnull - public Set getModules(View view) { + public Set getModules(View view) { return moduleFinder.getModules(); } @Override @Nonnull - public Collection> getClassSources( - @Nonnull View view) { + public Collection getClassSources(@Nonnull View view) { IdentifierFactory identifierFactory = view.getIdentifierFactory(); Preconditions.checkArgument( identifierFactory instanceof JavaModuleIdentifierFactory, @@ -121,6 +116,7 @@ public Collection> getClassSources( Collection allModules = moduleFinder.getAllModules(); return allModules.stream() .flatMap(sig -> getClassSourcesInternal(sig, view)) + .map(src -> (JavaSootClassSource) src) .collect(Collectors.toList()); } @@ -138,8 +134,8 @@ public List getBodyInterceptors() { @Override @Nonnull - public Collection> getModulesClassSources( - @Nonnull ModuleSignature moduleSignature, @Nonnull View view) { + public Collection getModulesClassSources( + @Nonnull ModuleSignature moduleSignature, @Nonnull View view) { IdentifierFactory identifierFactory = view.getIdentifierFactory(); Preconditions.checkArgument( identifierFactory instanceof JavaModuleIdentifierFactory, @@ -147,33 +143,33 @@ public Collection> getModulesClassS return getClassSourcesInternal(moduleSignature, view).collect(Collectors.toList()); } - protected Stream> getClassSourcesInternal( - @Nonnull ModuleSignature moduleSignature, @Nonnull View view) { + protected Stream getClassSourcesInternal( + @Nonnull ModuleSignature moduleSignature, @Nonnull View view) { - AnalysisInputLocation inputLocation = moduleFinder.getModule(moduleSignature); + AnalysisInputLocation inputLocation = moduleFinder.getModule(moduleSignature); if (inputLocation == null) { return Stream.empty(); } - return inputLocation.getClassSources(view).stream(); + return inputLocation.getClassSources(view).stream().map(src -> (JavaSootClassSource) src); } @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType classType, @Nonnull View view) { + public Optional getClassSource( + @Nonnull ClassType classType, @Nonnull View view) { JavaClassType klassType = (JavaClassType) classType; ModuleSignature modulename = ((ModulePackageName) klassType.getPackageName()).getModuleSignature(); // get inputlocation from cache - AnalysisInputLocation inputLocation = moduleFinder.getModule(modulename); + AnalysisInputLocation inputLocation = moduleFinder.getModule(modulename); if (inputLocation == null) { return Optional.empty(); } - return inputLocation.getClassSource(klassType, view); + return inputLocation.getClassSource(klassType, view).map(src -> (JavaSootClassSource) src); } @Override diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JrtFileSystemAnalysisInputLocation.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JrtFileSystemAnalysisInputLocation.java index c52e07554b..417354f205 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JrtFileSystemAnalysisInputLocation.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/JrtFileSystemAnalysisInputLocation.java @@ -29,7 +29,6 @@ import java.util.stream.Stream; import javax.annotation.Nonnull; import sootup.core.IdentifierFactory; -import sootup.core.frontend.AbstractClassSource; import sootup.core.frontend.ClassProvider; import sootup.core.frontend.ResolveException; import sootup.core.inputlocation.AnalysisInputLocation; @@ -40,10 +39,7 @@ import sootup.core.views.View; import sootup.java.bytecode.frontend.AsmJavaClassProvider; import sootup.java.bytecode.frontend.AsmModuleSource; -import sootup.java.core.JavaModuleIdentifierFactory; -import sootup.java.core.JavaModuleInfo; -import sootup.java.core.JavaSootClass; -import sootup.java.core.ModuleInfoAnalysisInputLocation; +import sootup.java.core.*; import sootup.java.core.signatures.ModulePackageName; import sootup.java.core.signatures.ModuleSignature; import sootup.java.core.types.JavaClassType; @@ -79,11 +75,11 @@ public JrtFileSystemAnalysisInputLocation( @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType classType, @Nonnull View view) { + public Optional getClassSource( + @Nonnull ClassType classType, @Nonnull View view) { JavaClassType klassType = (JavaClassType) classType; - ClassProvider classProvider = new AsmJavaClassProvider(view); + ClassProvider classProvider = new AsmJavaClassProvider(view); Path filepath = theFileSystem.getPath( klassType.getFullyQualifiedName().replace('.', '/') @@ -99,7 +95,9 @@ public Optional> getClassSource( "modules", modulePackageSignature.getModuleSignature().getModuleName()); Path foundClass = module.resolve(filepath); if (Files.isRegularFile(foundClass)) { - return classProvider.createClassSource(this, foundClass, klassType); + return classProvider + .createClassSource(this, foundClass, klassType) + .map(src -> (JavaSootClassSource) src); } else { return Optional.empty(); } @@ -113,7 +111,9 @@ public Optional> getClassSource( // check each module folder for the class Path foundfile = entry.resolve(filepath); if (Files.isRegularFile(foundfile)) { - return classProvider.createClassSource(this, foundfile, klassType); + return classProvider + .createClassSource(this, foundfile, klassType) + .map(src -> (JavaSootClassSource) src); } } } @@ -127,19 +127,20 @@ public Optional> getClassSource( /** Retreive CLassSources of a module specified by methodSignature */ @Override @Nonnull - public Collection> getModulesClassSources( - @Nonnull ModuleSignature moduleSignature, @Nonnull View view) { + public Collection getModulesClassSources( + @Nonnull ModuleSignature moduleSignature, @Nonnull View view) { return getClassSourcesInternal(moduleSignature, view.getIdentifierFactory(), view) + .map(src -> (JavaSootClassSource) src) .collect(Collectors.toList()); } @Nonnull - protected Stream> getClassSourcesInternal( + protected Stream getClassSourcesInternal( @Nonnull ModuleSignature moduleSignature, @Nonnull IdentifierFactory identifierFactory, - @Nonnull View view) { + @Nonnull View view) { - ClassProvider classProvider = new AsmJavaClassProvider(view); + ClassProvider classProvider = new AsmJavaClassProvider(view); String moduleInfoFilename = JavaModuleIdentifierFactory.MODULE_INFO_FILE @@ -163,17 +164,15 @@ protected Stream> getClassSourcesInternal( this, p, this.fromPath( - p.subpath(2, p.getNameCount()), - p.subpath(1, 2), - identifierFactory)))); + p.subpath(2, p.getNameCount()), p.subpath(1, 2), identifierFactory)))) + .map(src -> (JavaSootClassSource) src); } catch (IOException e) { throw new ResolveException("Error loading module " + moduleSignature, archiveRoot, e); } } @Override - public @Nonnull Collection> getClassSources( - @Nonnull View view) { + public @Nonnull Collection getClassSources(@Nonnull View view) { Collection moduleSignatures = discoverModules(); return moduleSignatures.stream() @@ -234,7 +233,7 @@ private JavaClassType fromPath( @Nonnull @Override - public Optional getModuleInfo(ModuleSignature sig, View view) { + public Optional getModuleInfo(ModuleSignature sig, View view) { if (!isResolved) { discoverModules(); } @@ -243,7 +242,7 @@ public Optional getModuleInfo(ModuleSignature sig, View view) @Nonnull @Override - public Set getModules(View view) { + public Set getModules(View view) { if (!isResolved) { discoverModules(); } diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/ModuleFinder.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/ModuleFinder.java index 681b6c2222..d9e66fa417 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/ModuleFinder.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/ModuleFinder.java @@ -41,7 +41,6 @@ import sootup.java.bytecode.frontend.AsmModuleSource; import sootup.java.core.JavaModuleIdentifierFactory; import sootup.java.core.JavaModuleInfo; -import sootup.java.core.JavaSootClass; import sootup.java.core.signatures.ModuleSignature; /** @@ -57,8 +56,7 @@ public class ModuleFinder { // associate a module name with the input location, that represents the module @Nonnull - private final Map> moduleInputLocation = - new HashMap<>(); + private final Map moduleInputLocation = new HashMap<>(); @Nonnull private final Map moduleInfoMap = new HashMap<>(); @@ -126,11 +124,10 @@ public Set getModules() { * @return the input location that resolves classes contained in the module */ @Nullable - public AnalysisInputLocation getModule(@Nonnull ModuleSignature moduleName) { + public AnalysisInputLocation getModule(@Nonnull ModuleSignature moduleName) { // check if module is cached - AnalysisInputLocation inputLocationForModule = - moduleInputLocation.get(moduleName); + AnalysisInputLocation inputLocationForModule = moduleInputLocation.get(moduleName); if (inputLocationForModule != null) { return inputLocationForModule; } diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/MultiReleaseJarAnalysisInputLocation.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/MultiReleaseJarAnalysisInputLocation.java index 61a0b995e5..516257aed8 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/MultiReleaseJarAnalysisInputLocation.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/MultiReleaseJarAnalysisInputLocation.java @@ -33,7 +33,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import sootup.core.Language; -import sootup.core.frontend.AbstractClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SourceType; import sootup.core.types.ClassType; @@ -56,12 +55,9 @@ public class MultiReleaseJarAnalysisInputLocation extends ArchiveBasedAnalysisIn @Nonnull private final Map> moduleInfoMap = new HashMap<>(); - @Nonnull - private final Map>> inputLocations = - new HashMap<>(); + @Nonnull private final Map> inputLocations = new HashMap<>(); - @Nonnull - private final List> baseInputLocations = new ArrayList<>(); + @Nonnull private final List baseInputLocations = new ArrayList<>(); boolean isResolved = false; @@ -167,13 +163,11 @@ private void discoverInputLocations(@Nullable SourceType srcType) { @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view) { + public Optional getClassSource(@Nonnull ClassType type, @Nonnull View view) { - Collection> il = - getBestMatchingInputLocationsRaw(language.getVersion()); + Collection il = getBestMatchingInputLocationsRaw(language.getVersion()); - Collection> baseIl = getBaseInputLocations(); + Collection baseIl = getBaseInputLocations(); if (type instanceof ModuleJavaClassType) { il = @@ -195,12 +189,13 @@ public Optional> getClassSource( .collect(Collectors.toList()); } - Optional> foundClass = + Optional foundClass = il.stream() .map(location -> location.getClassSource(type, view)) .filter(Optional::isPresent) .limit(1) .map(Optional::get) + .map(src -> (JavaSootClassSource) src) .findAny(); if (foundClass.isPresent()) { @@ -211,14 +206,15 @@ public Optional> getClassSource( .filter(Optional::isPresent) .limit(1) .map(Optional::get) + .map(src -> (JavaSootClassSource) src) .findAny(); } } @Nonnull @Override - public Collection> getModulesClassSources( - @Nonnull ModuleSignature moduleSignature, @Nonnull View view) { + public Collection getModulesClassSources( + @Nonnull ModuleSignature moduleSignature, @Nonnull View view) { return inputLocations.get(language.getVersion()).stream() .filter(location -> location instanceof ModuleInfoAnalysisInputLocation) .map( @@ -226,6 +222,7 @@ public Collection> getModulesClassS ((ModuleInfoAnalysisInputLocation) location) .getModulesClassSources(moduleSignature, view)) .flatMap(Collection::stream) + .map(src -> (JavaSootClassSource) src) .collect(Collectors.toList()); } @@ -235,8 +232,7 @@ public Collection> getModulesClassS * @param javaVersion version to find best match to * @return best match or base input locations */ - private Collection> getBestMatchingInputLocationsRaw( - int javaVersion) { + private Collection getBestMatchingInputLocationsRaw(int javaVersion) { for (int i = availableVersions.length - 1; i >= 0; i--) { if (availableVersions[i] > javaVersion) continue; @@ -247,29 +243,29 @@ private Collection> getBestMatchingInputLoc return getBaseInputLocations(); } - private Collection> getBaseInputLocations() { + private Collection getBaseInputLocations() { return baseInputLocations; } @Override @Nonnull - public Collection> getClassSources( - @Nonnull View view) { - Collection> il = - getBestMatchingInputLocationsRaw(language.getVersion()); + public Collection getClassSources(@Nonnull View view) { + Collection il = getBestMatchingInputLocationsRaw(language.getVersion()); - Collection> result = + Collection result = il.stream() .map(location -> location.getClassSources(view)) .flatMap(Collection::stream) + .map(src -> (JavaSootClassSource) src) .collect(Collectors.toList()); if (il != getBaseInputLocations()) { - Collection> baseSources = + Collection baseSources = getBaseInputLocations().stream() .map(location -> location.getClassSources(view)) .flatMap(Collection::stream) + .map(src -> (JavaSootClassSource) src) .collect(Collectors.toList()); baseSources.forEach( @@ -292,13 +288,13 @@ public Collection> getClassSources( @Nonnull @Override - public Optional getModuleInfo(ModuleSignature sig, View view) { + public Optional getModuleInfo(ModuleSignature sig, View view) { return Optional.ofNullable(moduleInfoMap.get(language.getVersion()).get(sig)); } @Nonnull @Override - public Set getModules(View view) { + public Set getModules(View view) { return inputLocations.get(language.getVersion()).stream() .filter(e -> e instanceof ModuleInfoAnalysisInputLocation) .map(e -> ((ModuleInfoAnalysisInputLocation) e).getModules(view)) diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/PathBasedAnalysisInputLocation.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/PathBasedAnalysisInputLocation.java index 52761e819d..233ca691a6 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/PathBasedAnalysisInputLocation.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/inputlocation/PathBasedAnalysisInputLocation.java @@ -20,7 +20,6 @@ import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import sootup.core.IdentifierFactory; -import sootup.core.frontend.AbstractClassSource; import sootup.core.frontend.ClassProvider; import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; @@ -64,8 +63,7 @@ * @author Manuel Benz created on 22.05.18 * @author Kaustubh Kelkar updated on 30.07.2020 */ -public abstract class PathBasedAnalysisInputLocation - implements AnalysisInputLocation { +public abstract class PathBasedAnalysisInputLocation implements AnalysisInputLocation { private final SourceType sourceType; private final List bodyInterceptors; protected Path path; @@ -164,10 +162,10 @@ private static boolean isMultiReleaseJar(Path path) { } @Nonnull - Collection> walkDirectory( + Collection walkDirectory( @Nonnull Path dirPath, @Nonnull IdentifierFactory factory, - @Nonnull ClassProvider classProvider) { + @Nonnull ClassProvider classProvider) { try { final FileType handledFileType = classProvider.getHandledFileType(); final String moduleInfoFilename = JavaModuleIdentifierFactory.MODULE_INFO_FILE + ".class"; @@ -180,6 +178,7 @@ Collection> walkDirectory( p -> StreamUtils.optionalToStream( classProvider.createClassSource(this, p, factory.fromPath(dirPath, p)))) + .map(src -> (JavaSootClassSource) src) .collect(Collectors.toList()); } catch (IOException e) { @@ -188,10 +187,8 @@ Collection> walkDirectory( } @Nonnull - protected Optional> getClassSourceInternal( - @Nonnull JavaClassType signature, - @Nonnull Path path, - @Nonnull ClassProvider classProvider) { + protected Optional getClassSourceInternal( + @Nonnull JavaClassType signature, @Nonnull Path path, @Nonnull ClassProvider classProvider) { Path pathToClass = path.resolve( @@ -203,13 +200,14 @@ protected Optional> getClassSourceI return Optional.empty(); } - return classProvider.createClassSource(this, pathToClass, signature); + Optional classSource = + classProvider.createClassSource(this, pathToClass, signature); + + return classSource.map(src -> (JavaSootClassSource) src); } - protected Optional> getSingleClass( - @Nonnull JavaClassType signature, - @Nonnull Path path, - @Nonnull ClassProvider classProvider) { + protected Optional getSingleClass( + @Nonnull JavaClassType signature, @Nonnull Path path, @Nonnull ClassProvider classProvider) { Path pathToClass = Paths.get(path.toString()); @@ -217,7 +215,10 @@ protected Optional> getSingleClass( return Optional.empty(); } - return classProvider.createClassSource(this, pathToClass, signature); + Optional classSource = + classProvider.createClassSource(this, pathToClass, signature); + + return classSource.map(src -> (JavaSootClassSource) src); } private static class ClassFileBasedAnalysisInputLocation extends PathBasedAnalysisInputLocation { @@ -236,20 +237,21 @@ public ClassFileBasedAnalysisInputLocation( @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view) { + public Optional getClassSource( + @Nonnull ClassType type, @Nonnull View view) { return getSingleClass((JavaClassType) type, path, new AsmJavaClassProvider(view)); } @Nonnull @Override - public Collection> getClassSources( - @Nonnull View view) { + public Collection getClassSources(@Nonnull View view) { AsmJavaClassProvider classProvider = new AsmJavaClassProvider(view); IdentifierFactory factory = view.getIdentifierFactory(); Path dirPath = this.path.getParent(); - Optional> classSource = - classProvider.createClassSource(this, path, factory.fromPath(dirPath, path)); + Optional classSource = + classProvider + .createClassSource(this, path, factory.fromPath(dirPath, path)) + .map(src -> (JavaSootClassSource) src); return Collections.singletonList(classSource.get()); } } @@ -269,22 +271,21 @@ private DirectoryBasedAnalysisInputLocation( @Override @Nonnull - public Collection> getClassSources( - @Nonnull View view) { + public Collection getClassSources(@Nonnull View view) { return walkDirectory(path, view.getIdentifierFactory(), new AsmJavaClassProvider(view)); } @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view) { + public Optional getClassSource( + @Nonnull ClassType type, @Nonnull View view) { return getClassSourceInternal((JavaClassType) type, path, new AsmJavaClassProvider(view)); } } private static final class WarArchiveAnalysisInputLocation extends DirectoryBasedAnalysisInputLocation { - public List> containedInputLocations = new ArrayList<>(); + public List containedInputLocations = new ArrayList<>(); public static int maxAllowedBytesToExtract = 1024 * 1024 * 500; // limit of extracted file size to protect against archive bombs @@ -331,27 +332,28 @@ private WarArchiveAnalysisInputLocation( @Override @Nonnull - public Collection> getClassSources( - @Nonnull View view) { + public Collection getClassSources(@Nonnull View view) { - Set> foundClasses = new HashSet<>(); + Set foundClasses = new HashSet<>(); - for (AnalysisInputLocation inputLoc : containedInputLocations) { + for (AnalysisInputLocation inputLoc : containedInputLocations) { foundClasses.addAll(inputLoc.getClassSources(view)); } - return foundClasses; + return foundClasses.stream() + .map(src -> (JavaSootClassSource) src) + .collect(Collectors.toList()); } @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view) { + public Optional getClassSource( + @Nonnull ClassType type, @Nonnull View view) { - for (AnalysisInputLocation inputLocation : containedInputLocations) { - final Optional> classSource = + for (AnalysisInputLocation inputLocation : containedInputLocations) { + final Optional classSource = inputLocation.getClassSource(type, view); if (classSource.isPresent()) { - return classSource; + return classSource.map(src -> (JavaSootClassSource) src); } } diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/Aggregator.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/Aggregator.java index 7e024ee9e7..3c6246e981 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/Aggregator.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/Aggregator.java @@ -68,7 +68,7 @@ public Aggregator(boolean dontAggregateFieldLocals) { * given a def d and a use u, d has no other uses, u has no other defs, collapse d and u. */ @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { MutableStmtGraph graph = builder.getStmtGraph(); List stmts = builder.getStmts(); Map> usesMap = Body.collectUses(stmts); diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/CastAndReturnInliner.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/CastAndReturnInliner.java index 465813b42c..ec0d0974a0 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/CastAndReturnInliner.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/CastAndReturnInliner.java @@ -62,7 +62,7 @@ public class CastAndReturnInliner implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { StmtGraph originalGraph = builder.getStmtGraph(); diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/ConditionalBranchFolder.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/ConditionalBranchFolder.java index 066ddd4b2e..1380f2d687 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/ConditionalBranchFolder.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/ConditionalBranchFolder.java @@ -46,7 +46,7 @@ public class ConditionalBranchFolder implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { final MutableStmtGraph stmtGraph = builder.getStmtGraph(); diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/ConstantPropagatorAndFolder.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/ConstantPropagatorAndFolder.java index 63b4b7e0a0..b62a797dc8 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/ConstantPropagatorAndFolder.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/ConstantPropagatorAndFolder.java @@ -49,7 +49,7 @@ public class ConstantPropagatorAndFolder implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { List defs = new ArrayList<>(); // Perform a constant/local propagation pass diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/CopyPropagator.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/CopyPropagator.java index 9a7456c2b4..7030cdcbea 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/CopyPropagator.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/CopyPropagator.java @@ -53,7 +53,7 @@ public class CopyPropagator implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { final StmtGraph stmtGraph = builder.getStmtGraph(); for (Stmt stmt : Lists.newArrayList(stmtGraph)) { for (Value use : stmt.getUses()) { diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/DeadAssignmentEliminator.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/DeadAssignmentEliminator.java index 62cff5d091..70d1002af5 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/DeadAssignmentEliminator.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/DeadAssignmentEliminator.java @@ -64,7 +64,7 @@ public DeadAssignmentEliminator(boolean eliminateOnlyStackLocals) { } @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { MutableStmtGraph stmtGraph = builder.getStmtGraph(); List stmts = builder.getStmts(); Deque deque = new ArrayDeque<>(stmts.size()); diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/EmptySwitchEliminator.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/EmptySwitchEliminator.java index 55e2340ae6..62a2665fa7 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/EmptySwitchEliminator.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/EmptySwitchEliminator.java @@ -40,7 +40,7 @@ public class EmptySwitchEliminator implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { // Iterate all stmts in the body for (Stmt stmt : new ArrayList<>(builder.getStmtGraph().getNodes())) { // If the observed stmt an instance of JSwitchStmt diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/JimpleSemanticsChecker.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/JimpleSemanticsChecker.java index 92dc217e60..32472e9bdd 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/JimpleSemanticsChecker.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/JimpleSemanticsChecker.java @@ -39,18 +39,18 @@ public abstract class JimpleSemanticsChecker implements BodyInterceptor { private static final Logger logger = LoggerFactory.getLogger(JimpleSemanticsChecker.class); protected List validate( - @Nonnull Body.BodyBuilder builder, @Nonnull View view) { + @Nonnull Body.BodyBuilder builder, @Nonnull View view) { // FIXME: implement throw new UnsupportedOperationException("List of Validators is not incorporated yet."); } @Override - public abstract void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view); + public abstract void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view); public static class LoggingJimpleChecker extends JimpleSemanticsChecker { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { final List exceptions = validate(builder, view); for (ValidationException validationException : exceptions) { logger.warn(validationException.getMessage()); @@ -61,7 +61,7 @@ public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View vi public static class ThrowingJimpleChecker extends LoggingJimpleChecker { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { super.interceptBody(builder, view); throw new IllegalStateException("There are semantic errors in the Jimple - see warn log."); } diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalNameStandardizer.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalNameStandardizer.java index 008269aa52..dc9a3c87be 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalNameStandardizer.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalNameStandardizer.java @@ -40,7 +40,7 @@ public class LocalNameStandardizer implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { StmtGraph graph = builder.getStmtGraph(); // Get the order of all Locals' occurrences and store them into a map diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalPacker.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalPacker.java index 12ae185a45..df2920acb3 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalPacker.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalPacker.java @@ -37,7 +37,7 @@ public class LocalPacker implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { Map localToColor = assignLocalsColor(builder); // map each original local to a new local diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalSplitter.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalSplitter.java index c15d33208b..99bc4fcafe 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalSplitter.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/LocalSplitter.java @@ -72,7 +72,7 @@ public class LocalSplitter implements BodyInterceptor { // TODO: [ms] check equivTo()'s - I guess they can be equals()'s - or even: '=='s @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { // Find all Locals that must be split // If a local as a definition appears two or more times, then this local must be split diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/NopEliminator.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/NopEliminator.java index 3a7c2ac46d..5c61798f2c 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/NopEliminator.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/NopEliminator.java @@ -45,7 +45,7 @@ public class NopEliminator implements BodyInterceptor { * @param builder The current body before interception. */ @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { StmtGraph graph = builder.getStmtGraph(); Queue q = new ArrayDeque<>(); diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/StaticSingleAssignmentFormer.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/StaticSingleAssignmentFormer.java index 9fef83abef..e2079e1b40 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/StaticSingleAssignmentFormer.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/StaticSingleAssignmentFormer.java @@ -52,7 +52,7 @@ public class StaticSingleAssignmentFormer implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { Set newLocals = new LinkedHashSet<>(builder.getLocals()); int nextFreeIdx = 0; diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/TrapTightener.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/TrapTightener.java index 80bd6567a0..7575b159aa 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/TrapTightener.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/TrapTightener.java @@ -51,7 +51,7 @@ public class TrapTightener implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { // FIXME: [ms] ThrowAnalysis is missing and in result mightThrow (...) makes no sense. Issue // #486 diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/TypeAssigner.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/TypeAssigner.java index 2978687dc0..442cd0164f 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/TypeAssigner.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/TypeAssigner.java @@ -38,7 +38,7 @@ public class TypeAssigner implements BodyInterceptor { public TypeAssigner() {} @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { new TypeResolver((JavaView) view).resolve(builder); } } diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/UnreachableCodeEliminator.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/UnreachableCodeEliminator.java index 8770af69ca..6f34ce1844 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/UnreachableCodeEliminator.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/UnreachableCodeEliminator.java @@ -36,7 +36,7 @@ public class UnreachableCodeEliminator implements BodyInterceptor { @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { MutableStmtGraph graph = builder.getStmtGraph(); diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/UnusedLocalEliminator.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/UnusedLocalEliminator.java index 078c8820de..45f455e9a0 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/UnusedLocalEliminator.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/UnusedLocalEliminator.java @@ -47,7 +47,7 @@ public class UnusedLocalEliminator implements BodyInterceptor { * @param builder the BodyBuilder. */ @Override - public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { + public void interceptBody(@Nonnull Body.BodyBuilder builder, @Nonnull View view) { Set locals = new LinkedHashSet<>(); diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/typeresolving/AugEvalFunction.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/typeresolving/AugEvalFunction.java index b749047583..011e9d5def 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/typeresolving/AugEvalFunction.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/typeresolving/AugEvalFunction.java @@ -53,9 +53,9 @@ public class AugEvalFunction { private final ClassType methodTypeClassType; private final ClassType throwableClassType; - View> view; + View view; - public AugEvalFunction(View> view) { + public AugEvalFunction(View view) { this.view = view; // one time setup diff --git a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/typeresolving/BytecodeHierarchy.java b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/typeresolving/BytecodeHierarchy.java index 4009dd5c53..774fc572b7 100644 --- a/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/typeresolving/BytecodeHierarchy.java +++ b/sootup.java.bytecode/src/main/java/sootup/java/bytecode/interceptors/typeresolving/BytecodeHierarchy.java @@ -25,7 +25,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import sootup.core.IdentifierFactory; -import sootup.core.model.SootClass; import sootup.core.typehierarchy.TypeHierarchy; import sootup.core.types.*; import sootup.core.views.View; @@ -39,7 +38,7 @@ public class BytecodeHierarchy { private final ClassType serializableClassType; private final ClassType cloneableClassType; - public BytecodeHierarchy(View> view) { + public BytecodeHierarchy(View view) { this.typeHierarchy = view.getTypeHierarchy(); IdentifierFactory factory = view.getIdentifierFactory(); objectClassType = factory.getClassType("java.lang.Object"); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/IndyTests.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/IndyTests.java index d26c502a78..bd41defbbe 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/IndyTests.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/IndyTests.java @@ -7,7 +7,6 @@ import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SootMethod; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; /** InvokeDynamics and the Operand stack.. */ @@ -17,8 +16,7 @@ public class IndyTests { @Test public void test() { - AnalysisInputLocation inputLocation = - new JavaClassPathAnalysisInputLocation(directory); + AnalysisInputLocation inputLocation = new JavaClassPathAnalysisInputLocation(directory); JavaView view = new JavaView(inputLocation); Assert.assertEquals(1, view.getClasses().size()); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/RuntimeJarConversionTests.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/RuntimeJarConversionTests.java index 2db3af3694..60985ccbec 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/RuntimeJarConversionTests.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/RuntimeJarConversionTests.java @@ -9,13 +9,12 @@ import sootup.java.bytecode.inputlocation.BytecodeClassLoadingOptions; import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; public class RuntimeJarConversionTests { private static void execute(String methodSignature1) { - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new DefaultRTJarAnalysisInputLocation( SourceType.Library, BytecodeClassLoadingOptions.Default.getBodyInterceptors()); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/Soot1577Test.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/Soot1577Test.java index 7822b34f2e..103eacfa48 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/Soot1577Test.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/Soot1577Test.java @@ -8,7 +8,6 @@ import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SootMethod; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; @Category(Java8Test.class) @@ -18,8 +17,7 @@ public class Soot1577Test { @Test @Ignore("conversion fails - could be a dex2jar conversion problem") public void test() { - AnalysisInputLocation inputLocation = - new JavaClassPathAnalysisInputLocation(directory); + AnalysisInputLocation inputLocation = new JavaClassPathAnalysisInputLocation(directory); JavaView view = new JavaView(inputLocation); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/Soot1580Test.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/Soot1580Test.java index 2b5f1d94de..59678d62de 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/Soot1580Test.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/Soot1580Test.java @@ -12,7 +12,6 @@ import sootup.java.bytecode.inputlocation.BytecodeClassLoadingOptions; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; @Category(Java8Test.class) @@ -22,7 +21,7 @@ public class Soot1580Test { @Test @Ignore("Localsplitter fails; bytecode itself is somehow strange") public void test() { - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaClassPathAnalysisInputLocation( jar, null, BytecodeClassLoadingOptions.Default.getBodyInterceptors()); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/frontend/AsmMethodSourceTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/frontend/AsmMethodSourceTest.java index 4283f23bcb..4cf7871882 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/frontend/AsmMethodSourceTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/frontend/AsmMethodSourceTest.java @@ -41,7 +41,7 @@ public void testFix_StackUnderrun_convertPutFieldInsn_init() { assertTrue(idf.isConstructorSubSignature(mainMethodSignature.getSubSignature())); - final SootClass abstractClass = view.getClass(mainClassSignature).get(); + final SootClass abstractClass = view.getClass(mainClassSignature).get(); final SootMethod method = abstractClass.getMethod(mainMethodSignature.getSubSignature()).get(); method.getBody().getStmts(); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/frontend/JavaModuleViewTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/frontend/JavaModuleViewTest.java index 55260d2c9b..f8f9dd3b31 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/frontend/JavaModuleViewTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/frontend/JavaModuleViewTest.java @@ -26,8 +26,7 @@ public class JavaModuleViewTest { @Test public void testGeneralClassReceivalFromModule() { - List> analysisInputLocations = - Collections.emptyList(); + List analysisInputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList(new JrtFileSystemAnalysisInputLocation()); @@ -65,7 +64,7 @@ public void testGeneralClassReceivalFromModule() { @Test public void testUnnamedModule() { - List> inputLocations = + List inputLocations = Collections.singletonList( new JavaClassPathAnalysisInputLocation( "../shared-test-resources/miniTestSuite/java6/binary/")); @@ -101,7 +100,7 @@ public void testUnnamedModule() { public void testAnnotation() { // modmain -> modb -> mod.annotations // transitive: modmain -> mod.annotations - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList( @@ -143,7 +142,7 @@ public void testAnnotation() { public void testRequiresStatic() { // modmain -> modb -> modc // static trans: modmain -> modc [via modb] - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = new ArrayList<>(); moduleInfoAnalysisInputLocations.add( new JavaModulePathAnalysisInputLocation(testPath + "requires-static/jar")); @@ -184,7 +183,7 @@ public void testRequiresExport() { // requires: modmain -> modb -> modc // transitive: all to java.base - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "requires_exports/jar")); @@ -233,7 +232,7 @@ public void testRequiresExport() { public void testRequiresTransitiveExport() { // req: modmain -> moda , ... // transitive: a -> c - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = new ArrayList<>(); moduleInfoAnalysisInputLocations.add( new JavaModulePathAnalysisInputLocation( @@ -283,7 +282,7 @@ public void testRequiresTransitiveExport() { @Test public void testReflection() { - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "reflection/jar")); @@ -336,7 +335,7 @@ public void testReflection() { @Test public void testUsesProvide() { - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "uses-provides/jar")); @@ -383,7 +382,7 @@ public void testUsesProvide() { @Test public void testUsesProvideInClient() { - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "uses-provides_uses-in-client/jar")); @@ -431,7 +430,7 @@ public void testUsesProvideInClient() { @Test public void testDerivedPrivatePackageProtected() { // static vs. dynamic type - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList( @@ -479,7 +478,7 @@ public void testDerivedPrivatePackageProtected() { @Test public void testExceptions() { - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList( @@ -517,7 +516,7 @@ public void testExceptions() { @Test public void testInterfaceCallback() { - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "interface-callback/jar")); @@ -553,7 +552,7 @@ public void testInterfaceCallback() { public void testSplitpackageAutomaticModules() { // A module must not require 2 or more modules, which contain the same package - export is *not* // even necessary. - List> inputLocations = + List inputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation( testPath + "splitpackage_automatic-modules/jar")); @@ -590,7 +589,7 @@ public void testSplitpackageAutomaticModules() { public void testSplitpackage() { // A module must not requires 2 or more modules, which have/export the same package // TODO: adapt - List> inputLocations = + List inputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "splitpackage")); List moduleInfoAnalysisInputLocations = @@ -607,7 +606,7 @@ public void testSplitpackage() { @Test public void testHiddenMain() { // i.e. main is in non exported package - List> inputLocations = + List inputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "hiddenmain/jar")); List moduleInfoAnalysisInputLocations = @@ -626,7 +625,7 @@ public void testHiddenMain() { @Test public void testAccessUnnamedModuleFromAutomaticModule() { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add( new JavaClassPathAnalysisInputLocation( testPath + "unnamed-module_access-from-automatic-module/jar/cpa.jar")); @@ -655,7 +654,7 @@ public void testAccessUnnamedModuleFromAutomaticModule() { @Test public void testAccessUnnamedModuleFromModule() { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add( new JavaClassPathAnalysisInputLocation( testPath + "unnamed-module_access-from-explicit-module/jar/cpb.jar")); @@ -703,7 +702,7 @@ public void testAccessUnnamedModuleFromModule() { public void testAccessModuleFromUnnamedModule() { // if module class "covers" a class on classpath (i.e. in unnamed module) the one on module // path is taken - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add( new JavaClassPathAnalysisInputLocation( testPath + "unnamed-module_accessing-module-path/jar/cpb.jar")); @@ -798,7 +797,7 @@ public void testEqualModuleSignaturesInInputLocations() {} @Test public void testEqualModulePath() { - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = new ArrayList<>(); moduleInfoAnalysisInputLocations.add( new JavaModulePathAnalysisInputLocation(testPath + "requires_exports/jar")); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/AnalysisInputLocationTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/AnalysisInputLocationTest.java index c162346444..2274a28849 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/AnalysisInputLocationTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/AnalysisInputLocationTest.java @@ -8,11 +8,10 @@ import java.util.List; import java.util.Optional; import sootup.core.IdentifierFactory; -import sootup.core.frontend.AbstractClassSource; +import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.types.ClassType; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; /*- @@ -55,17 +54,16 @@ protected IdentifierFactory getIdentifierFactory() { } protected void testClassReceival( - AnalysisInputLocation ns, List sigs, int classesFound) { + AnalysisInputLocation ns, List sigs, int classesFound) { final JavaView view = new JavaView(ns); for (ClassType classType : sigs) { - final Optional> clazzOpt = - ns.getClassSource(classType, view); + final Optional clazzOpt = ns.getClassSource(classType, view); assertTrue(clazzOpt.isPresent()); assertEquals(classType, clazzOpt.get().getClassType()); } - final Collection> classSources = ns.getClassSources(view); + final Collection classSources = ns.getClassSources(view); assertEquals(classSources.size(), classesFound); } diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/ApkAnalysisInputLocationTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/ApkAnalysisInputLocationTest.java index 4d18c59056..6d953148e1 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/ApkAnalysisInputLocationTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/ApkAnalysisInputLocationTest.java @@ -28,15 +28,13 @@ import org.junit.experimental.categories.Category; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.types.ClassType; -import sootup.java.core.JavaSootClass; @Category(Java8Test.class) public class ApkAnalysisInputLocationTest extends AnalysisInputLocationTest { @Test public void testApk() { - AnalysisInputLocation pathBasedNamespace = - new ApkAnalysisInputLocation(apk, null); + AnalysisInputLocation pathBasedNamespace = new ApkAnalysisInputLocation(apk, null); final ClassType mainClass = getIdentifierFactory().getClassType("de.upb.futuresoot.fields.MainActivity"); testClassReceival(pathBasedNamespace, Collections.singletonList(mainClass), 1392); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/JavaModulePathAnalysisInputLocationTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/JavaModulePathAnalysisInputLocationTest.java index 861f293cfb..243246dce2 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/JavaModulePathAnalysisInputLocationTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/JavaModulePathAnalysisInputLocationTest.java @@ -8,6 +8,7 @@ import java.util.Optional; import org.junit.Test; import sootup.core.frontend.AbstractClassSource; +import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SourceType; import sootup.core.types.ClassType; @@ -23,7 +24,7 @@ public class JavaModulePathAnalysisInputLocationTest { @Test public void testJarModule() { - List> inputLocations = + List inputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "uses-provides/jar/")); List moduleInfoAnalysisInputLocations = @@ -42,7 +43,7 @@ public void testJarModule() { @Test public void testExplodedModule() { - List> inputLocations = + List inputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "uses-provides/exploded_module/")); List moduleInfoAnalysisInputLocations = @@ -61,7 +62,7 @@ public void testExplodedModule() { @Test public void testGetModuleInfo() { - List> inputLocations = + List inputLocations = Collections.singletonList( new JavaModulePathAnalysisInputLocation(testPath + "requires_exports/jar")); List moduleInfoAnalysisInputLocations = @@ -89,7 +90,7 @@ public void testGetModuleInfo() { public void testGetClassSource() { ModuleInfoAnalysisInputLocation inputLocation = new JrtFileSystemAnalysisInputLocation(); - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList(inputLocation); JavaModuleView view = new JavaModuleView(inputLocations, moduleInfoAnalysisInputLocations); @@ -97,13 +98,12 @@ public void testGetClassSource() { final ClassType sig = JavaModuleIdentifierFactory.getInstance().getClassType("String", "java.lang", "java.base"); - final Optional> clazzOpt = - inputLocation.getClassSource(sig, view); + final Optional clazzOpt = inputLocation.getClassSource(sig, view); assertTrue(clazzOpt.isPresent()); - AbstractClassSource scs = clazzOpt.get(); + AbstractClassSource scs = clazzOpt.get(); assertEquals(sig, scs.getClassType()); assertEquals("modules/java.base/java/lang/String.class", scs.getSourcePath().toString()); - JavaSootClass javaSootClass = scs.buildClass(SourceType.Application); + JavaSootClass javaSootClass = (JavaSootClass) scs.buildClass(SourceType.Application); assertTrue(javaSootClass.getMethod("length", Collections.emptyList()).isPresent()); } @@ -111,13 +111,12 @@ public void testGetClassSource() { public void testGetClassSources() { JavaModulePathAnalysisInputLocation inputLocation = new JavaModulePathAnalysisInputLocation(testPath + "requires_exports/jar"); - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList(inputLocation); JavaModuleView view = new JavaModuleView(inputLocations, moduleInfoAnalysisInputLocations); - final Collection> classSources = - inputLocation.getClassSources(view); + final Collection classSources = inputLocation.getClassSources(view); assertEquals(3, classSources.size()); } @@ -125,7 +124,7 @@ public void testGetClassSources() { public void testGetModules() { JavaModulePathAnalysisInputLocation inputLocation = new JavaModulePathAnalysisInputLocation(testPath + "requires_exports/jar"); - List> inputLocations = Collections.emptyList(); + List inputLocations = Collections.emptyList(); List moduleInfoAnalysisInputLocations = Collections.singletonList(inputLocation); JavaModuleView view = new JavaModuleView(inputLocations, moduleInfoAnalysisInputLocations); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/JrtFileSystemAnalysisInputLocationTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/JrtFileSystemAnalysisInputLocationTest.java index ad7954a6ab..345869f837 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/JrtFileSystemAnalysisInputLocationTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/JrtFileSystemAnalysisInputLocationTest.java @@ -8,10 +8,9 @@ import java.util.Optional; import org.junit.Test; import org.junit.experimental.categories.Category; -import sootup.core.frontend.AbstractClassSource; +import sootup.core.frontend.SootClassSource; import sootup.core.types.ClassType; import sootup.java.core.JavaModuleIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.signatures.ModuleSignature; import sootup.java.core.views.JavaModuleView; @@ -29,8 +28,7 @@ public void getClassSource() { final ClassType sig = JavaModuleIdentifierFactory.getInstance().getClassType("String", "java.lang", "java.base"); - final Optional> clazz = - inputLocation.getClassSource(sig, view); + final Optional clazz = inputLocation.getClassSource(sig, view); assertTrue(clazz.isPresent()); assertEquals(sig, clazz.get().getClassType()); } @@ -47,8 +45,7 @@ public void getClassSources() { final ClassType sig2 = JavaModuleIdentifierFactory.getInstance().getClassType("System", "java.lang", "java.base"); - final Collection> classSources = - inputLocation.getClassSources(view); + final Collection classSources = inputLocation.getClassSources(view); assertTrue(classSources.size() > 26000); inputLocation.getClassSources(view); assertTrue( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/ModuleFinderTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/ModuleFinderTest.java index 9e93e56379..1f2600be4e 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/ModuleFinderTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/ModuleFinderTest.java @@ -9,7 +9,6 @@ import org.junit.experimental.categories.Category; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.java.core.JavaModuleIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.signatures.ModuleSignature; /** @author Kaustubh Kelkar */ @@ -19,7 +18,7 @@ public class ModuleFinderTest extends AnalysisInputLocationTest { @Test public void discoverJarModuleByName() { ModuleFinder moduleFinder = new ModuleFinder(jar.toString()); - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = moduleFinder.getModule(JavaModuleIdentifierFactory.getModuleSignature("MiniApp")); assertTrue(inputLocation instanceof PathBasedAnalysisInputLocation); } @@ -34,7 +33,7 @@ public void discoverJarModuleInAllModules() { @Test public void discoverWarModuleByName() { ModuleFinder moduleFinder = new ModuleFinder(war.toString()); - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = moduleFinder.getModule(JavaModuleIdentifierFactory.getModuleSignature("dummyWarApp")); assertTrue(inputLocation instanceof PathBasedAnalysisInputLocation); } diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/PathBasedAnalysisInputLocationTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/PathBasedAnalysisInputLocationTest.java index 7e307813ad..5c13b319d5 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/PathBasedAnalysisInputLocationTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/inputlocation/PathBasedAnalysisInputLocationTest.java @@ -29,24 +29,18 @@ import categories.Java8Test; import java.io.File; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.EnumSet; -import java.util.HashSet; -import javax.annotation.Nonnull; +import java.util.*; import org.junit.Test; import org.junit.experimental.categories.Category; -import sootup.core.frontend.BodySource; import sootup.core.inputlocation.EagerInputLocation; +import sootup.core.jimple.basic.NoPositionInformation; import sootup.core.model.*; import sootup.core.signatures.FieldSubSignature; -import sootup.core.signatures.MethodSignature; import sootup.core.signatures.MethodSubSignature; import sootup.core.types.ClassType; -import sootup.core.util.ImmutableUtils; import sootup.core.views.View; import sootup.java.core.*; +import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; /** @@ -105,14 +99,14 @@ public void testClassInWar() { ClassType utilsClassSignature = view.getIdentifierFactory().getClassType("Employee", "ds"); // Resolve signature to `SootClass` - SootClass utilsClass = view.getClass(utilsClassSignature).get(); + JavaSootClass utilsClass = view.getClass(utilsClassSignature).get(); // Parse sub-signature for "setEmpSalary" method MethodSubSignature optionalToStreamMethodSubSignature = JavaIdentifierFactory.getInstance().parseMethodSubSignature("void setEmpSalary(int)"); // Get method for sub-signature - SootMethod foundMethod = utilsClass.getMethod(optionalToStreamMethodSubSignature).get(); + JavaSootMethod foundMethod = utilsClass.getMethod(optionalToStreamMethodSubSignature).get(); assertNotNull(foundMethod.getBody()); // Print method @@ -127,11 +121,19 @@ public void testClassInWar() { JavaIdentifierFactory.getInstance().parseFieldSubSignature("java.lang.String empName"); // Create the class signature - ClassType classSignature = view.getIdentifierFactory().getClassType("Employee", "ds"); + JavaClassType classSignature = view.getIdentifierFactory().getClassType("Employee", "ds"); + + JavaSootField field = + new JavaSootField( + JavaIdentifierFactory.getInstance() + .getFieldSignature(classSignature, nameFieldSubSignature), + Collections.singleton(FieldModifier.PUBLIC), + null, + NoPositionInformation.getInstance()); // Build a soot class - SootClass c = - new SootClass( + JavaSootClass c = + new JavaSootClass( new OverridingJavaClassSource( new EagerInputLocation(), null, @@ -139,43 +141,8 @@ public void testClassInWar() { null, null, null, - Collections.singleton( - SootField.builder() - .withSignature( - JavaIdentifierFactory.getInstance() - .getFieldSignature(classSignature, nameFieldSubSignature)) - .withModifiers(FieldModifier.PUBLIC) - .build()), - ImmutableUtils.immutableSet( - SootMethod.builder() - .withSource( - new BodySource() { - @Nonnull - @Override - public Body resolveBody(@Nonnull Iterable modifiers) { - /* [ms] violating @Nonnull */ - return null; - } - - @Override - public Object resolveAnnotationsDefaultValue() { - return null; - } - - @Override - @Nonnull - public MethodSignature getSignature() { - return JavaIdentifierFactory.getInstance() - .getMethodSignature( - utilsClass.getType(), optionalToStreamMethodSubSignature); - } - }) - .withSignature( - JavaIdentifierFactory.getInstance() - .getMethodSignature( - classSignature, optionalToStreamMethodSubSignature)) - .withModifiers(MethodModifier.PUBLIC) - .build()), + Collections.singleton(field), + Collections.emptySet(), null, EnumSet.of(ClassModifier.PUBLIC), Collections.emptyList(), @@ -216,10 +183,9 @@ public void testRuntimeJar() { public void testInputLocationLibraryMode() { JavaView view = new JavaView(new DefaultRTJarAnalysisInputLocation()); - Collection> classes = - new HashSet<>(); // Set to track the classes to check + Collection classes = new HashSet<>(); // Set to track the classes to check - for (SootClass aClass : view.getClasses()) { + for (SootClass aClass : view.getClasses()) { if (!aClass.isLibraryClass()) { classes.add(aClass); } diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/interceptors/AggregatorTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/interceptors/AggregatorTest.java index 3d978ea1bc..ff1d4976d4 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/interceptors/AggregatorTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/interceptors/AggregatorTest.java @@ -24,7 +24,6 @@ import sootup.java.bytecode.inputlocation.BytecodeClassLoadingOptions; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.JavaSootMethod; import sootup.java.core.language.JavaJimple; import sootup.java.core.types.JavaClassType; @@ -157,8 +156,7 @@ public void testResource_Misuse() { // String classPath = // "../sootup.tests/src/test/resources/bugs/664_struce-compiled/org/apache"; String classPath = "../sootup.tests/src/test/resources/interceptor/"; - AnalysisInputLocation inputLocation = - new JavaClassPathAnalysisInputLocation(classPath); + AnalysisInputLocation inputLocation = new JavaClassPathAnalysisInputLocation(classPath); JavaView view = new JavaView(inputLocation); { @@ -180,7 +178,7 @@ public void testResource_Misuse() { @Test public void testIssue739() { - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaClassPathAnalysisInputLocation( "../shared-test-resources/bugfixes/Issue739_Aggregator.class", SourceType.Application, diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/interceptors/typeresolving/TypeAssignerTestSuite.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/interceptors/typeresolving/TypeAssignerTestSuite.java index 8473916f62..49ab2a42e8 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/interceptors/typeresolving/TypeAssignerTestSuite.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/interceptors/typeresolving/TypeAssignerTestSuite.java @@ -27,11 +27,10 @@ public class TypeAssignerTestSuite { public void buildView(String baseDir, String className) { - AnalysisInputLocation analysisInputLocation = - new JavaClassPathAnalysisInputLocation(baseDir); - AnalysisInputLocation rtJar = new DefaultRTJarAnalysisInputLocation(); + AnalysisInputLocation analysisInputLocation = new JavaClassPathAnalysisInputLocation(baseDir); + AnalysisInputLocation rtJar = new DefaultRTJarAnalysisInputLocation(); - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(analysisInputLocation); inputLocations.add(rtJar); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/AbstractClassTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/AbstractClassTest.java index 66b523abcc..d8eb5402f5 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/AbstractClassTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/AbstractClassTest.java @@ -20,9 +20,9 @@ public class AbstractClassTest extends MinimalBytecodeTestSuiteBase { @Test public void test() { - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); // The SuperClass is the abstract one - SootClass superClazz = loadClass(clazz.getSuperclass().get()); + SootClass superClazz = loadClass(clazz.getSuperclass().get()); assertTrue(superClazz.isAbstract()); SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/DeclareFieldTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/DeclareFieldTest.java index 263bf2034a..76ca147fcb 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/DeclareFieldTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/DeclareFieldTest.java @@ -38,7 +38,7 @@ public void test() { assertJimpleStmts(method, expectedBodyStmts()); method = loadMethod(getStaticMethodSignature()); assertJimpleStmts(method, expectedBodyStmts1()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/InstanceOfCheckTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/InstanceOfCheckTest.java index aeda781ba4..9a1d5a62e2 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/InstanceOfCheckTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/InstanceOfCheckTest.java @@ -27,7 +27,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); if (sootClass.getSuperclass().isPresent()) { assertEquals("InstanceOfCheckSuper", sootClass.getSuperclass().get().getClassName()); } diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/InterfaceImplClassTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/InterfaceImplClassTest.java index c6fccb54cb..3c91454593 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/InterfaceImplClassTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/InterfaceImplClassTest.java @@ -27,7 +27,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/MultiInterfaceImplClassTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/MultiInterfaceImplClassTest.java index 4bd448f8f0..fbed37271d 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/MultiInterfaceImplClassTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/MultiInterfaceImplClassTest.java @@ -27,7 +27,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/PublicClassTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/PublicClassTest.java index 5c99da415b..fbfa81afbd 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/PublicClassTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/PublicClassTest.java @@ -23,7 +23,7 @@ public class PublicClassTest extends MinimalBytecodeTestSuiteBase { @Test public void test() { - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertEquals(EnumSet.of(ClassModifier.PUBLIC, ClassModifier.SUPER), clazz.getModifiers()); SootMethod method; diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/StaticInitializerTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/StaticInitializerTest.java index a9fb8ec0af..6efc972fee 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/StaticInitializerTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/StaticInitializerTest.java @@ -31,7 +31,7 @@ public MethodSignature getStaticMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/StaticVariableTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/StaticVariableTest.java index 9d363431bd..aa984e2c68 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/StaticVariableTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/StaticVariableTest.java @@ -28,7 +28,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/SubClassTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/SubClassTest.java index ad1a20bc70..244cb26513 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/SubClassTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/SubClassTest.java @@ -33,7 +33,7 @@ public MethodSignature getMethodSignature1() { public void testSuperClassStmts() { SootMethod m = loadMethod(getMethodSignature1()); assertJimpleStmts(m, expectedBodyStmts1()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue(sootClass.getSuperclass().get().getClassName().equals("SuperClass")); } diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/TransientVariableTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/TransientVariableTest.java index e533fc5cb2..9eaa0606b3 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/TransientVariableTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/TransientVariableTest.java @@ -28,7 +28,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/VolatileVariableTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/VolatileVariableTest.java index b75e6b0548..b02099ca3a 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/VolatileVariableTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java6/VolatileVariableTest.java @@ -28,7 +28,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/CossiInputTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/CossiInputTest.java index b6b4b80875..b36b0b5a4c 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/CossiInputTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/CossiInputTest.java @@ -21,10 +21,10 @@ public class CossiInputTest extends MinimalBytecodeTestSuiteBase { public void test() { // only care if it terminates here.. - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); clazz.getMethods().forEach(SootMethod::getBody); - SootClass innerClazz = + SootClass innerClazz = loadClass(JavaIdentifierFactory.getInstance().getClassType("CossiInput$CossiInputBuilder")); innerClazz.getMethod("build", Collections.emptyList()).get().getBody(); diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/DefaultMethodInterfaceImplTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/DefaultMethodInterfaceImplTest.java index 85a5b31498..8399276ef8 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/DefaultMethodInterfaceImplTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/DefaultMethodInterfaceImplTest.java @@ -38,7 +38,7 @@ public void test() { assertJimpleStmts(method, expectedBodyStmts()); method = loadMethod(getDefaultMethodSignature()); assertJimpleStmts(method, expectedBodyStmts1()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/StaticMethodInterfaceImplTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/StaticMethodInterfaceImplTest.java index 923a1b83c2..3257850e18 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/StaticMethodInterfaceImplTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java8/StaticMethodInterfaceImplTest.java @@ -38,7 +38,7 @@ public void test() { SootMethod staticMethod = loadMethod(getStaticMethodSignature()); assertJimpleStmts(staticMethod, expectedBodyStmts1()); assertTrue(staticMethod.isStatic() && staticMethod.getName().equals("initStatic")); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue( sootClass.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java9/PrivateMethodInterfaceImplTest.java b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java9/PrivateMethodInterfaceImplTest.java index 5b8f2da22a..9586078a5e 100644 --- a/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java9/PrivateMethodInterfaceImplTest.java +++ b/sootup.java.bytecode/src/test/java/sootup/java/bytecode/minimaltestsuite/java9/PrivateMethodInterfaceImplTest.java @@ -29,7 +29,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue( sootClass.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.core/src/main/java/sootup/java/core/JavaAnnotationSootClass.java b/sootup.java.core/src/main/java/sootup/java/core/JavaAnnotationSootClass.java index fc022a3bd8..63a3653bfc 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/JavaAnnotationSootClass.java +++ b/sootup.java.core/src/main/java/sootup/java/core/JavaAnnotationSootClass.java @@ -23,6 +23,7 @@ */ import java.util.Set; +import java.util.stream.Collectors; import javax.annotation.Nonnull; import sootup.core.model.SourceType; @@ -30,12 +31,13 @@ public class JavaAnnotationSootClass extends JavaSootClass { public JavaAnnotationSootClass(JavaSootClassSource classSource, SourceType sourceType) { super(classSource, sourceType); - getMethods().forEach(JavaAnnotationSootMethod::getDefaultValue); + getAnnotationMethods().forEach(JavaAnnotationSootMethod::getDefaultValue); } @Nonnull - @Override - public Set getMethods() { - return (Set) super.getMethods(); + public Set getAnnotationMethods() { + return super.getMethods().stream() + .map(method -> (JavaAnnotationSootMethod) method) + .collect(Collectors.toSet()); } } diff --git a/sootup.java.core/src/main/java/sootup/java/core/JavaAnnotationSootClassSource.java b/sootup.java.core/src/main/java/sootup/java/core/JavaAnnotationSootClassSource.java index 447071c301..edef957fbc 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/JavaAnnotationSootClassSource.java +++ b/sootup.java.core/src/main/java/sootup/java/core/JavaAnnotationSootClassSource.java @@ -25,14 +25,13 @@ import java.nio.file.Path; import javax.annotation.Nonnull; import sootup.core.inputlocation.AnalysisInputLocation; -import sootup.core.model.SootClass; import sootup.core.model.SourceType; import sootup.core.types.ClassType; public abstract class JavaAnnotationSootClassSource extends JavaSootClassSource { public JavaAnnotationSootClassSource( - @Nonnull AnalysisInputLocation> srcNamespace, + @Nonnull AnalysisInputLocation srcNamespace, @Nonnull ClassType classSignature, @Nonnull Path sourcePath) { super(srcNamespace, classSignature, sourcePath); diff --git a/sootup.java.core/src/main/java/sootup/java/core/JavaSootClass.java b/sootup.java.core/src/main/java/sootup/java/core/JavaSootClass.java index a4962269df..f6729abb6e 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/JavaSootClass.java +++ b/sootup.java.core/src/main/java/sootup/java/core/JavaSootClass.java @@ -40,7 +40,7 @@ import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; -public class JavaSootClass extends SootClass { +public class JavaSootClass extends SootClass { public JavaSootClass(JavaSootClassSource classSource, SourceType sourceType) { super(classSource, sourceType); @@ -82,7 +82,7 @@ public Iterable getAnnotations(@Nonnull Optional view } } - classSource.resolveAnnotations().forEach(annotationUsages::add); + ((JavaSootClassSource) classSource).resolveAnnotations().forEach(annotationUsages::add); annotationUsages.forEach(e -> e.getAnnotation().getDefaultValues(view)); @@ -102,51 +102,69 @@ public Iterable getAnnotations(@Nonnull Optional view @Nonnull @Override - public Set getMethods() { - return (Set) super.getMethods(); + public Set getMethods() { + return super.getMethods().stream() + .map(method -> (JavaSootMethod) method) + .collect(Collectors.toSet()); } @Nonnull @Override - public Set getFields() { - return (Set) super.getFields(); + public Set getFields() { + return super.getFields().stream() + .map(field -> (JavaSootField) field) + .collect(Collectors.toSet()); } @Nonnull @Override public Optional getField(@Nonnull String name) { - return (Optional) super.getField(name); + return super.getField(name).map(field -> (JavaSootField) field); } @Nonnull @Override public Optional getField(@Nonnull FieldSubSignature subSignature) { - return (Optional) super.getField(subSignature); + return super.getField(subSignature).map(field -> (JavaSootField) field); } @Nonnull @Override public Optional getMethod( @Nonnull String name, @Nonnull Iterable parameterTypes) { - return (Optional) super.getMethod(name, parameterTypes); + return super.getMethod(name, parameterTypes).map(method -> (JavaSootMethod) method); } @Nonnull @Override public Set getMethodsByName(@Nonnull String name) { - return (Set) super.getMethodsByName(name); + return super.getMethodsByName(name).stream() + .map(method -> (JavaSootMethod) method) + .collect(Collectors.toSet()); } @Nonnull @Override public Optional getMethod(@Nonnull MethodSubSignature subSignature) { - return (Optional) super.getMethod(subSignature); + return super.getMethod(subSignature).map(method -> (JavaSootMethod) method); } @Nonnull @Override public JavaSootClassSource getClassSource() { - return super.getClassSource(); + return (JavaSootClassSource) super.getClassSource(); + } + + @Nonnull + @Override + public Optional getOuterClass() { + return super.getOuterClass().map(ct -> (JavaClassType) ct); + } + + @Nonnull + @Override + public Optional getSuperclass() { + return super.getSuperclass().map(ct -> (JavaClassType) ct); } // Convenience withers that delegate to an OverridingClassSource @@ -166,28 +184,28 @@ public JavaSootClass withOverridingClassSource( @Nonnull public JavaSootClass withReplacedMethod( - @Nonnull SootMethod toReplace, @Nonnull SootMethod replacement) { + @Nonnull JavaSootMethod toReplace, @Nonnull JavaSootMethod replacement) { return new JavaSootClass( new OverridingJavaClassSource(getClassSource()).withReplacedMethod(toReplace, replacement), sourceType); } @Nonnull - public JavaSootClass withMethods(@Nonnull Collection methods) { + public JavaSootClass withMethods(@Nonnull Collection methods) { return new JavaSootClass( new OverridingJavaClassSource(getClassSource()).withMethods(methods), sourceType); } @Nonnull public JavaSootClass withReplacedField( - @Nonnull SootField toReplace, @Nonnull SootField replacement) { + @Nonnull JavaSootField toReplace, @Nonnull JavaSootField replacement) { return new JavaSootClass( new OverridingJavaClassSource(getClassSource()).withReplacedField(toReplace, replacement), sourceType); } @Nonnull - public JavaSootClass withFields(@Nonnull Collection fields) { + public JavaSootClass withFields(@Nonnull Collection fields) { return new JavaSootClass( new OverridingJavaClassSource(getClassSource()).withFields(fields), sourceType); } @@ -200,14 +218,14 @@ public JavaSootClass withModifiers(@Nonnull Set modifiers) { @SuppressWarnings("OptionalUsedAsFieldOrParameterType") @Nonnull - public JavaSootClass withSuperclass(@Nonnull Optional superclass) { + public JavaSootClass withSuperclass(@Nonnull Optional superclass) { return new JavaSootClass( new OverridingJavaClassSource(getClassSource()).withSuperclass(superclass), sourceType); } @SuppressWarnings("OptionalUsedAsFieldOrParameterType") @Nonnull - public JavaSootClass withOuterClass(@Nonnull Optional outerClass) { + public JavaSootClass withOuterClass(@Nonnull Optional outerClass) { return new JavaSootClass( new OverridingJavaClassSource(getClassSource()).withOuterClass(outerClass), sourceType); } diff --git a/sootup.java.core/src/main/java/sootup/java/core/JavaSootClassSource.java b/sootup.java.core/src/main/java/sootup/java/core/JavaSootClassSource.java index 7bcedceedc..187349a95f 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/JavaSootClassSource.java +++ b/sootup.java.core/src/main/java/sootup/java/core/JavaSootClassSource.java @@ -26,14 +26,13 @@ import javax.annotation.Nonnull; import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; -import sootup.core.model.SootClass; import sootup.core.model.SourceType; import sootup.core.types.ClassType; -public abstract class JavaSootClassSource extends SootClassSource { +public abstract class JavaSootClassSource extends SootClassSource { public JavaSootClassSource( - @Nonnull AnalysisInputLocation> srcNamespace, + @Nonnull AnalysisInputLocation srcNamespace, @Nonnull ClassType classSignature, @Nonnull Path sourcePath) { super(srcNamespace, classSignature, sourcePath); @@ -47,7 +46,7 @@ public JavaSootClass buildClass(@Nonnull SourceType sourceType) { return new JavaSootClass(this, sourceType); } - protected JavaSootClassSource(SootClassSource delegate) { + protected JavaSootClassSource(SootClassSource delegate) { super(delegate); } } diff --git a/sootup.java.core/src/main/java/sootup/java/core/ModuleInfoAnalysisInputLocation.java b/sootup.java.core/src/main/java/sootup/java/core/ModuleInfoAnalysisInputLocation.java index f99fcfd492..7b36f0cf01 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/ModuleInfoAnalysisInputLocation.java +++ b/sootup.java.core/src/main/java/sootup/java/core/ModuleInfoAnalysisInputLocation.java @@ -4,7 +4,7 @@ import java.util.Optional; import java.util.Set; import javax.annotation.Nonnull; -import sootup.core.frontend.AbstractClassSource; +import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.views.View; import sootup.java.core.signatures.ModuleSignature; @@ -14,14 +14,14 @@ *

Interface to mark AnalysisInputLocations that are capable of retreiving * JavaModuleInformations */ -public interface ModuleInfoAnalysisInputLocation extends AnalysisInputLocation { +public interface ModuleInfoAnalysisInputLocation extends AnalysisInputLocation { - Collection> getModulesClassSources( - @Nonnull ModuleSignature moduleSignature, @Nonnull View view); + Collection getModulesClassSources( + @Nonnull ModuleSignature moduleSignature, @Nonnull View view); @Nonnull - Optional getModuleInfo(ModuleSignature sig, View view); + Optional getModuleInfo(ModuleSignature sig, View view); @Nonnull - Set getModules(View view); + Set getModules(View view); } diff --git a/sootup.java.core/src/main/java/sootup/java/core/OverridingJavaClassSource.java b/sootup.java.core/src/main/java/sootup/java/core/OverridingJavaClassSource.java index 3b500a0664..c53234da25 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/OverridingJavaClassSource.java +++ b/sootup.java.core/src/main/java/sootup/java/core/OverridingJavaClassSource.java @@ -24,6 +24,7 @@ import java.nio.file.Path; import java.util.*; +import java.util.stream.Collectors; import javax.annotation.Nonnull; import javax.annotation.Nullable; import sootup.core.frontend.ResolveException; @@ -35,6 +36,7 @@ import sootup.core.model.SootMethod; import sootup.core.types.ClassType; import sootup.core.util.CollectionUtils; +import sootup.java.core.types.JavaClassType; /** * Allows for replacing specific parts of a class, such as fields and methods or, allows to resolve @@ -53,12 +55,12 @@ @SuppressWarnings({"OptionalUsedAsFieldOrParameterType", "OptionalAssignedToNull"}) public class OverridingJavaClassSource extends JavaSootClassSource { - @Nullable private final Collection overriddenSootMethods; - @Nullable private final Collection overriddenSootFields; + @Nullable private final Collection overriddenSootMethods; + @Nullable private final Collection overriddenSootFields; @Nullable private final Set overriddenModifiers; - @Nullable private final Set overriddenInterfaces; - @Nullable private final Optional overriddenSuperclass; - @Nullable private final Optional overriddenOuterClass; + @Nullable private final Set overriddenInterfaces; + @Nullable private final Optional overriddenSuperclass; + @Nullable private final Optional overriddenOuterClass; @Nullable private final Position position; @Nullable private final JavaSootClassSource delegate; @@ -82,12 +84,12 @@ public OverridingJavaClassSource(@Nonnull JavaSootClassSource delegate) { } private OverridingJavaClassSource( - @Nullable Collection overriddenSootMethods, - @Nullable Collection overriddenSootFields, + @Nullable Collection overriddenSootMethods, + @Nullable Collection overriddenSootFields, @Nullable Set overriddenModifiers, - @Nullable Set overriddenInterfaces, - @Nullable Optional overriddenSuperclass, - @Nullable Optional overriddenOuterClass, + @Nullable Set overriddenInterfaces, + @Nullable Optional overriddenSuperclass, + @Nullable Optional overriddenOuterClass, @Nullable Position position, @Nullable Iterable annotations, @Nullable Iterable methodAnnotations, @@ -109,14 +111,14 @@ private OverridingJavaClassSource( /** Class source where all information already available */ public OverridingJavaClassSource( - @Nonnull AnalysisInputLocation srcNamespace, + @Nonnull AnalysisInputLocation srcNamespace, @Nonnull Path sourcePath, - @Nonnull ClassType classType, - @Nullable ClassType superClass, - @Nonnull Set interfaces, - @Nullable ClassType outerClass, - @Nonnull Set sootFields, - @Nonnull Set sootMethods, + @Nonnull JavaClassType classType, + @Nullable JavaClassType superClass, + @Nonnull Set interfaces, + @Nullable JavaClassType outerClass, + @Nonnull Set sootFields, + @Nonnull Set sootMethods, @Nonnull Position position, @Nonnull EnumSet modifiers, @Nonnull Iterable annotations, @@ -139,14 +141,18 @@ public OverridingJavaClassSource( @Nonnull @Override - public Collection resolveMethods() throws ResolveException { - return overriddenSootMethods != null ? overriddenSootMethods : delegate.resolveMethods(); + public Collection resolveMethods() throws ResolveException { + Collection sootMethods = + overriddenSootMethods != null ? overriddenSootMethods : delegate.resolveMethods(); + return sootMethods.stream().map(method -> (JavaSootMethod) method).collect(Collectors.toList()); } @Nonnull @Override - public Collection resolveFields() throws ResolveException { - return overriddenSootFields != null ? overriddenSootFields : delegate.resolveFields(); + public Collection resolveFields() throws ResolveException { + Collection sootFields = + overriddenSootFields != null ? overriddenSootFields : delegate.resolveFields(); + return sootFields.stream().map(field -> (JavaSootField) field).collect(Collectors.toList()); } @Nonnull @@ -157,20 +163,26 @@ public Set resolveModifiers() { @Nonnull @Override - public Set resolveInterfaces() { - return overriddenInterfaces != null ? overriddenInterfaces : delegate.resolveInterfaces(); + public Set resolveInterfaces() { + Set classTypes = + overriddenInterfaces != null ? overriddenInterfaces : delegate.resolveInterfaces(); + return classTypes.stream().map(ct -> (JavaClassType) ct).collect(Collectors.toSet()); } @Nonnull @Override - public Optional resolveSuperclass() { - return overriddenSuperclass != null ? overriddenSuperclass : delegate.resolveSuperclass(); + public Optional resolveSuperclass() { + Optional classType = + overriddenSuperclass != null ? overriddenSuperclass : delegate.resolveSuperclass(); + return classType.map(ct -> (JavaClassType) ct); } @Nonnull @Override - public Optional resolveOuterClass() { - return overriddenOuterClass != null ? overriddenOuterClass : delegate.resolveOuterClass(); + public Optional resolveOuterClass() { + Optional classType = + overriddenOuterClass != null ? overriddenOuterClass : delegate.resolveOuterClass(); + return classType.map(ct -> (JavaClassType) ct); } @Nonnull @@ -245,15 +257,15 @@ public String toString() { @Nonnull public OverridingJavaClassSource withReplacedMethod( - @Nonnull SootMethod toReplace, @Nonnull SootMethod replacement) { - Set newMethods = new HashSet<>(resolveMethods()); + @Nonnull JavaSootMethod toReplace, @Nonnull JavaSootMethod replacement) { + Set newMethods = new HashSet<>(resolveMethods()); CollectionUtils.replace(newMethods, toReplace, replacement); return withMethods(newMethods); } @Nonnull public OverridingJavaClassSource withMethods( - @Nonnull Collection overriddenSootMethods) { + @Nonnull Collection overriddenSootMethods) { return new OverridingJavaClassSource( overriddenSootMethods, overriddenSootFields, @@ -270,14 +282,15 @@ public OverridingJavaClassSource withMethods( @Nonnull public OverridingJavaClassSource withReplacedField( - @Nonnull SootField toReplace, @Nonnull SootField replacement) { - Set newFields = new HashSet<>(resolveFields()); + @Nonnull JavaSootField toReplace, @Nonnull JavaSootField replacement) { + Set newFields = new HashSet<>(resolveFields()); CollectionUtils.replace(newFields, toReplace, replacement); return withFields(newFields); } @Nonnull - public OverridingJavaClassSource withFields(@Nonnull Collection overriddenSootFields) { + public OverridingJavaClassSource withFields( + @Nonnull Collection overriddenSootFields) { return new OverridingJavaClassSource( overriddenSootMethods, overriddenSootFields, @@ -309,7 +322,8 @@ public OverridingJavaClassSource withModifiers(@Nonnull Set overr } @Nonnull - public OverridingJavaClassSource withInterfaces(@Nonnull Set overriddenInterfaces) { + public OverridingJavaClassSource withInterfaces( + @Nonnull Set overriddenInterfaces) { return new OverridingJavaClassSource( overriddenSootMethods, overriddenSootFields, @@ -326,7 +340,7 @@ public OverridingJavaClassSource withInterfaces(@Nonnull Set overridd @Nonnull public OverridingJavaClassSource withSuperclass( - @Nonnull Optional overriddenSuperclass) { + @Nonnull Optional overriddenSuperclass) { return new OverridingJavaClassSource( overriddenSootMethods, overriddenSootFields, @@ -343,7 +357,7 @@ public OverridingJavaClassSource withSuperclass( @Nonnull public OverridingJavaClassSource withOuterClass( - @Nonnull Optional overriddenOuterClass) { + @Nonnull Optional overriddenOuterClass) { return new OverridingJavaClassSource( overriddenSootMethods, overriddenSootFields, diff --git a/sootup.java.core/src/main/java/sootup/java/core/views/JavaModuleView.java b/sootup.java.core/src/main/java/sootup/java/core/views/JavaModuleView.java index 339ea50fae..1771fe527b 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/views/JavaModuleView.java +++ b/sootup.java.core/src/main/java/sootup/java/core/views/JavaModuleView.java @@ -27,21 +27,17 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.Nonnull; -import sootup.core.IdentifierFactory; import sootup.core.SourceTypeSpecifier; import sootup.core.cache.FullCache; import sootup.core.cache.provider.ClassCacheProvider; import sootup.core.cache.provider.FullCacheProvider; -import sootup.core.frontend.AbstractClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.ClassLoadingOptions; import sootup.core.inputlocation.DefaultSourceTypeSpecifier; import sootup.core.inputlocation.EmptyClassLoadingOptions; import sootup.core.signatures.PackageName; import sootup.core.types.ClassType; -import sootup.java.core.JavaModuleInfo; -import sootup.java.core.JavaSootClass; -import sootup.java.core.ModuleInfoAnalysisInputLocation; +import sootup.java.core.*; import sootup.java.core.language.JavaLanguage; import sootup.java.core.signatures.ModulePackageName; import sootup.java.core.signatures.ModuleSignature; @@ -58,15 +54,15 @@ public class JavaModuleView extends JavaView { @Nonnull final HashMap moduleInfoMap = new HashMap<>(); public JavaModuleView( - @Nonnull List> inputLocations, + @Nonnull List inputLocations, @Nonnull List moduleInputLocations) { - this(inputLocations, moduleInputLocations, new FullCacheProvider<>()); + this(inputLocations, moduleInputLocations, new FullCacheProvider()); } public JavaModuleView( - @Nonnull List> inputLocations, + @Nonnull List inputLocations, @Nonnull List moduleInputLocations, - @Nonnull ClassCacheProvider cacheProvider) { + @Nonnull ClassCacheProvider cacheProvider) { this( inputLocations, moduleInputLocations, @@ -75,12 +71,10 @@ public JavaModuleView( } public JavaModuleView( - @Nonnull List> inputLocations, + @Nonnull List inputLocations, @Nonnull List moduleInputLocations, - @Nonnull ClassCacheProvider cacheProvider, - @Nonnull - Function, ClassLoadingOptions> - classLoadingOptionsSpecifier) { + @Nonnull ClassCacheProvider cacheProvider, + @Nonnull Function classLoadingOptionsSpecifier) { this( inputLocations, moduleInputLocations, @@ -97,12 +91,10 @@ public JavaModuleView( * options. */ public JavaModuleView( - @Nonnull List> inputLocations, + @Nonnull List inputLocations, @Nonnull List moduleInputLocations, - @Nonnull ClassCacheProvider cacheProvider, - @Nonnull - Function, ClassLoadingOptions> - classLoadingOptionsSpecifier, + @Nonnull ClassCacheProvider cacheProvider, + @Nonnull Function classLoadingOptionsSpecifier, @Nonnull SourceTypeSpecifier sourceTypeSpecifier) { super(inputLocations, cacheProvider, sourceTypeSpecifier); this.moduleInfoAnalysisInputLocations = moduleInputLocations; @@ -171,14 +163,14 @@ private boolean isPackageVisibleToModule( @Override @Nonnull - protected Optional> getAbstractClass( - @Nonnull ClassType type) { + protected Optional getAbstractClass(@Nonnull ClassType type) { - Optional> cs = + Optional cs = moduleInfoAnalysisInputLocations.stream() .map(location -> location.getClassSource(type, this)) .filter(Optional::isPresent) .map(Optional::get) + .map(src -> (JavaSootClassSource) src) .findAny(); if (cs.isPresent()) { @@ -202,11 +194,12 @@ public synchronized Optional getClass( // unnamed module // find type in all exported packages of modules on module path first - final List> foundClassSources = + final List foundClassSources = getAbstractClassSourcesForModules(entryPackage.getModuleSignature(), type) .filter(Optional::isPresent) .limit(1) .map(Optional::get) + .map(src -> (JavaSootClassSource) src) .collect(Collectors.toList()); if (!foundClassSources.isEmpty()) { @@ -229,11 +222,12 @@ public synchronized Optional getClass( // automatic module can read every exported package of an explicit module // find the class in exported packages of modules - final List> foundClassSources = + final List foundClassSources = getAbstractClassSourcesForModules(entryPackage.getModuleSignature(), type) .filter(Optional::isPresent) .limit(1) .map(Optional::get) + .map(src -> (JavaSootClassSource) src) .collect(Collectors.toList()); if (!foundClassSources.isEmpty()) { @@ -250,10 +244,11 @@ public synchronized Optional getClass( && ((ModulePackageName) type.getPackageName()).getModuleSignature() == entryPackage.getModuleSignature(); - final Optional> foundClassSources = + final Optional foundClassSources = getAbstractClassSourcesForModules(entryPackage.getModuleSignature(), type) .filter(Optional::isPresent) .map(Optional::get) + .map(src -> (JavaSootClassSource) src) .filter( sc -> { if (targetIsFromSameModule) { @@ -335,11 +330,15 @@ public synchronized Collection getModuleClasses( return Collections.emptyList(); } - Stream> stream; + Stream stream; JavaModuleInfo moduleInfo = startOpt.get(); if (moduleInfo.isUnnamedModule()) { // unnamed module - stream = inputLocations.stream().flatMap(input -> input.getClassSources(this).stream()); + stream = + inputLocations.stream() + .flatMap( + input -> + input.getClassSources(this).stream().map(src -> (JavaSootClassSource) src)); } else { // named module @@ -347,29 +346,34 @@ public synchronized Collection getModuleClasses( // the automatic module stream = Stream.concat( - inputLocations.stream() - .flatMap( - input -> { - // classpath - return input.getClassSources(this).stream() - .filter( - cs -> - moduleSignature.equals( - ((ModulePackageName) cs.getClassType().getPackageName()) - .getModuleSignature())); - }), - moduleInfoAnalysisInputLocations.stream() - .flatMap( - input -> { - // modulepath - return input.getModulesClassSources(moduleSignature, this).stream(); - })); + inputLocations.stream() + .flatMap( + input -> { + // classpath + return input.getClassSources(this).stream() + .filter( + cs -> + moduleSignature.equals( + ((ModulePackageName) + cs.getClassType().getPackageName()) + .getModuleSignature())); + }), + moduleInfoAnalysisInputLocations.stream() + .flatMap( + input -> { + // modulepath + return input.getModulesClassSources(moduleSignature, this).stream(); + })) + .map(src -> (JavaSootClassSource) src); } else { // explicit module stream = moduleInfoAnalysisInputLocations.stream() - .flatMap(input -> input.getModulesClassSources(moduleSignature, this).stream()); + .flatMap( + input -> + input.getModulesClassSources(moduleSignature, this).stream() + .map(src -> (JavaSootClassSource) src)); } } return stream @@ -428,13 +432,13 @@ public synchronized Collection getTransitiveClasses(@Nonnull Modu @Nonnull @Override - public IdentifierFactory getIdentifierFactory() { - return new JavaLanguage(9).getIdentifierFactory(); + public JavaModuleIdentifierFactory getIdentifierFactory() { + return (JavaModuleIdentifierFactory) new JavaLanguage(9).getIdentifierFactory(); } @Nonnull - private Stream>> - getAbstractClassSourcesForModules(ModuleSignature moduleSig, @Nonnull JavaClassType type) { + private Stream> getAbstractClassSourcesForModules( + ModuleSignature moduleSig, @Nonnull JavaClassType type) { // find the class in exported packages of modules return moduleInfoAnalysisInputLocations.stream() @@ -445,7 +449,8 @@ public IdentifierFactory getIdentifierFactory() { // check if the package is exported by or living in the same module return isPackageVisibleToModule(moduleSig, (ModulePackageName) type.getPackageName()) || isProvidedInterfaceImplementation(type); - }); + }) + .map(srcOpt -> srcOpt.map(src -> (JavaSootClassSource) src)); } private boolean isProvidedInterfaceImplementation(@Nonnull JavaClassType type) { @@ -479,7 +484,9 @@ public Set getNamedModules() { @Nonnull protected synchronized Collection resolveAll() { if (isFullyResolved && cache instanceof FullCache) { - return cache.getClasses(); + return cache.getClasses().stream() + .map(clazz -> (JavaSootClass) clazz) + .collect(Collectors.toList()); } Collection> resolvedClassesOpts = diff --git a/sootup.java.core/src/main/java/sootup/java/core/views/JavaView.java b/sootup.java.core/src/main/java/sootup/java/core/views/JavaView.java index fe0978d7dc..aad8eaef21 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/views/JavaView.java +++ b/sootup.java.core/src/main/java/sootup/java/core/views/JavaView.java @@ -28,7 +28,6 @@ import java.util.Optional; import java.util.stream.Collectors; import javax.annotation.Nonnull; -import sootup.core.IdentifierFactory; import sootup.core.SourceTypeSpecifier; import sootup.core.cache.ClassCache; import sootup.core.cache.FullCache; @@ -37,11 +36,11 @@ import sootup.core.frontend.AbstractClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.DefaultSourceTypeSpecifier; +import sootup.core.signatures.FieldSignature; +import sootup.core.signatures.MethodSignature; import sootup.core.types.ClassType; import sootup.core.views.AbstractView; -import sootup.java.core.AnnotationUsage; -import sootup.java.core.JavaAnnotationSootClass; -import sootup.java.core.JavaSootClass; +import sootup.java.core.*; import sootup.java.core.language.JavaLanguage; import sootup.java.core.types.AnnotationType; @@ -52,20 +51,20 @@ * @author Linghui Luo created on 31.07.2018 * @author Jan Martin Persch */ -public class JavaView extends AbstractView { +public class JavaView extends AbstractView { - @Nonnull protected final List> inputLocations; - @Nonnull protected final ClassCache cache; + @Nonnull protected final List inputLocations; + @Nonnull protected final ClassCache cache; @Nonnull protected final SourceTypeSpecifier sourceTypeSpecifier; protected volatile boolean isFullyResolved = false; - public JavaView(@Nonnull AnalysisInputLocation inputLocation) { + public JavaView(@Nonnull AnalysisInputLocation inputLocation) { this(Collections.singletonList(inputLocation)); } - public JavaView(@Nonnull List> inputLocations) { - this(inputLocations, new FullCacheProvider<>()); + public JavaView(@Nonnull List inputLocations) { + this(inputLocations, new FullCacheProvider()); } /** @@ -75,14 +74,14 @@ public JavaView(@Nonnull List> in * options. */ public JavaView( - @Nonnull List> inputLocations, - @Nonnull ClassCacheProvider cacheProvider) { + @Nonnull List inputLocations, + @Nonnull ClassCacheProvider cacheProvider) { this(inputLocations, cacheProvider, DefaultSourceTypeSpecifier.getInstance()); } public JavaView( - @Nonnull List> inputLocations, - @Nonnull ClassCacheProvider cacheProvider, + @Nonnull List inputLocations, + @Nonnull ClassCacheProvider cacheProvider, @Nonnull SourceTypeSpecifier sourceTypeSpecifier) { this.inputLocations = inputLocations; this.cache = cacheProvider.createCache(); @@ -100,20 +99,39 @@ public synchronized Collection getClasses() { @Override @Nonnull public synchronized Optional getClass(@Nonnull ClassType type) { - JavaSootClass cachedClass = cache.getClass(type); + JavaSootClass cachedClass = (JavaSootClass) cache.getClass(type); if (cachedClass != null) { return Optional.of(cachedClass); } - Optional> abstractClass = - getAbstractClass(type); + Optional abstractClass = getAbstractClass(type); return abstractClass.flatMap(this::buildClassFrom); } + @Override + @Nonnull + public Optional getMethod(@Nonnull MethodSignature signature) { + final Optional aClass = getClass(signature.getDeclClassType()); + if (!aClass.isPresent()) { + return Optional.empty(); + } + return aClass.get().getMethod(signature.getSubSignature()); + } + + @Override + @Nonnull + public Optional getField(@Nonnull FieldSignature signature) { + final Optional aClass = getClass(signature.getDeclClassType()); + if (!aClass.isPresent()) { + return Optional.empty(); + } + return aClass.get().getField(signature.getSubSignature()); + } + @Nonnull @Override - public IdentifierFactory getIdentifierFactory() { - return new JavaLanguage(8).getIdentifierFactory(); + public JavaIdentifierFactory getIdentifierFactory() { + return (JavaIdentifierFactory) new JavaLanguage(8).getIdentifierFactory(); } /** Returns the number of classes that are currently stored in the cache. */ @@ -122,8 +140,7 @@ public int getNumberOfStoredClasses() { } @Nonnull - protected Optional> getAbstractClass( - @Nonnull ClassType type) { + protected Optional getAbstractClass(@Nonnull ClassType type) { return inputLocations.stream() .map(location -> location.getClassSource(type, this)) .filter(Optional::isPresent) @@ -131,20 +148,21 @@ protected Optional> getAb // classpath the first is returned (see splitpackage) .limit(1) .map(Optional::get) + .map(classSource -> (JavaSootClassSource) classSource) .findAny(); } @Nonnull - protected synchronized Optional buildClassFrom( - AbstractClassSource classSource) { + protected synchronized Optional buildClassFrom(AbstractClassSource classSource) { ClassType classType = classSource.getClassType(); JavaSootClass theClass; if (!cache.hasClass(classType)) { - theClass = classSource.buildClass(sourceTypeSpecifier.sourceTypeFor(classSource)); + theClass = + (JavaSootClass) classSource.buildClass(sourceTypeSpecifier.sourceTypeFor(classSource)); cache.putClass(classType, theClass); } else { - theClass = cache.getClass(classType); + theClass = (JavaSootClass) cache.getClass(classType); } if (theClass.getType() instanceof AnnotationType) { @@ -158,7 +176,9 @@ protected synchronized Optional buildClassFrom( @Nonnull protected synchronized Collection resolveAll() { if (isFullyResolved && cache instanceof FullCache) { - return cache.getClasses(); + return cache.getClasses().stream() + .map(clazz -> (JavaSootClass) clazz) + .collect(Collectors.toList()); } Collection> resolvedClassesOpts = diff --git a/sootup.java.core/src/main/java/sootup/java/core/views/MutableJavaView.java b/sootup.java.core/src/main/java/sootup/java/core/views/MutableJavaView.java index 26a897482b..1525668fc6 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/views/MutableJavaView.java +++ b/sootup.java.core/src/main/java/sootup/java/core/views/MutableJavaView.java @@ -10,7 +10,6 @@ import sootup.core.cache.MutableClassCache; import sootup.core.cache.provider.MutableFullCacheProvider; import sootup.core.inputlocation.AnalysisInputLocation; -import sootup.core.model.SootMethod; import sootup.core.signatures.MethodSubSignature; import sootup.core.types.ClassType; import sootup.core.views.MutableView; @@ -25,19 +24,18 @@ public class MutableJavaView extends JavaView implements MutableView { private final List changeListeners = new LinkedList<>(); private static final @Nonnull Logger logger = LoggerFactory.getLogger(MutableJavaView.class); - public MutableJavaView(@Nonnull AnalysisInputLocation inputLocation) { + public MutableJavaView(@Nonnull AnalysisInputLocation inputLocation) { this(Collections.singletonList(inputLocation)); } - public MutableJavaView( - @Nonnull List> inputLocations) { - super(inputLocations, new MutableFullCacheProvider<>()); + public MutableJavaView(@Nonnull List inputLocations) { + super(inputLocations, new MutableFullCacheProvider()); } public MutableJavaView( - @Nonnull List> inputLocations, + @Nonnull List inputLocations, @Nonnull SourceTypeSpecifier sourceTypeSpecifier) { - super(inputLocations, new MutableFullCacheProvider<>(), sourceTypeSpecifier); + super(inputLocations, new MutableFullCacheProvider(), sourceTypeSpecifier); } /** @@ -59,7 +57,7 @@ public void addClass(JavaSootClass clazz) { */ public void removeClass(ClassType classType) { JavaSootClass removedClass = - ((MutableClassCache) this.cache).removeClass(classType); + (JavaSootClass) ((MutableClassCache) this.cache).removeClass(classType); this.fireRemoval(removedClass); } @@ -82,11 +80,11 @@ public void removeMethod(JavaSootMethod method) { ClassType classType = method.getDeclaringClassType(); MethodSubSignature mss = method.getSignature().getSubSignature(); - JavaSootClass clazz = this.cache.getClass(classType); + JavaSootClass clazz = (JavaSootClass) this.cache.getClass(classType); if (clazz == null) return; - Set methods = clazz.getMethods(); - Set filteredMethods = + Set methods = clazz.getMethods(); + Set filteredMethods = methods.stream() .filter(met -> !met.getSignature().getSubSignature().equals(mss)) .collect(Collectors.toSet()); @@ -100,11 +98,11 @@ public void removeMethod(JavaSootMethod method) { public void addMethod(JavaSootMethod method) { ClassType classType = method.getDeclaringClassType(); - JavaSootClass clazz = this.cache.getClass(classType); + JavaSootClass clazz = (JavaSootClass) this.cache.getClass(classType); if (clazz == null) return; - Set methods = clazz.getMethods(); - Set newMethods = new HashSet<>(methods); + Set methods = clazz.getMethods(); + Set newMethods = new HashSet<>(methods); newMethods.add(method); JavaSootClass newClazz = clazz.withMethods(newMethods); diff --git a/sootup.java.core/src/test/java/sootup/java/core/jimple/common/ref/JFieldRefTest.java b/sootup.java.core/src/test/java/sootup/java/core/jimple/common/ref/JFieldRefTest.java index 054cbbb1cf..7df8019141 100644 --- a/sootup.java.core/src/test/java/sootup/java/core/jimple/common/ref/JFieldRefTest.java +++ b/sootup.java.core/src/test/java/sootup/java/core/jimple/common/ref/JFieldRefTest.java @@ -22,10 +22,11 @@ import sootup.core.model.SootField; import sootup.core.model.SourceType; import sootup.core.signatures.FieldSignature; -import sootup.core.types.ClassType; import sootup.java.core.JavaIdentifierFactory; import sootup.java.core.JavaSootClass; +import sootup.java.core.JavaSootField; import sootup.java.core.OverridingJavaClassSource; +import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; /** @author Linghui Luo */ @@ -36,23 +37,23 @@ public class JFieldRefTest { @Before public void setUp() { - view = new JavaView(Collections.singletonList(new EagerInputLocation<>())); + view = new JavaView(Collections.singletonList(new EagerInputLocation())); } @Ignore public void testJStaticFieldRef() { IdentifierFactory fact = view.getIdentifierFactory(); - ClassType declaringClassSignature = + JavaClassType declaringClassSignature = JavaIdentifierFactory.getInstance().getClassType("dummyMainClass"); FieldSignature fieldSig = fact.getFieldSignature("dummyField", declaringClassSignature, "int"); - SootField field = - new SootField( - fieldSig, EnumSet.of(FieldModifier.FINAL), NoPositionInformation.getInstance()); + JavaSootField field = + new JavaSootField( + fieldSig, EnumSet.of(FieldModifier.FINAL), null, NoPositionInformation.getInstance()); JavaSootClass mainClass = new JavaSootClass( new OverridingJavaClassSource( - new EagerInputLocation<>(), + new EagerInputLocation(), null, declaringClassSignature, null, @@ -79,17 +80,17 @@ public void testJStaticFieldRef() { @Ignore public void testJInstanceFieldRef() { IdentifierFactory fact = view.getIdentifierFactory(); - ClassType declaringClassSignature = + JavaClassType declaringClassSignature = JavaIdentifierFactory.getInstance().getClassType("dummyMainClass"); FieldSignature fieldSig = fact.getFieldSignature("dummyField", declaringClassSignature, "int"); - SootField field = - new SootField( - fieldSig, EnumSet.of(FieldModifier.FINAL), NoPositionInformation.getInstance()); + JavaSootField field = + new JavaSootField( + fieldSig, EnumSet.of(FieldModifier.FINAL), null, NoPositionInformation.getInstance()); JavaSootClass mainClass = new JavaSootClass( new OverridingJavaClassSource( - new EagerInputLocation<>(), + new EagerInputLocation(), null, declaringClassSignature, null, diff --git a/sootup.java.core/src/test/java/sootup/java/core/jimple/common/stmt/JInvokeStmtTest.java b/sootup.java.core/src/test/java/sootup/java/core/jimple/common/stmt/JInvokeStmtTest.java index 6bb00884cf..f2e13e247b 100644 --- a/sootup.java.core/src/test/java/sootup/java/core/jimple/common/stmt/JInvokeStmtTest.java +++ b/sootup.java.core/src/test/java/sootup/java/core/jimple/common/stmt/JInvokeStmtTest.java @@ -49,14 +49,14 @@ import sootup.core.jimple.common.stmt.Stmt; import sootup.core.model.ClassModifier; import sootup.core.model.SootClass; -import sootup.core.model.SootField; -import sootup.core.model.SootMethod; import sootup.core.model.SourceType; import sootup.core.signatures.MethodSignature; -import sootup.core.types.ClassType; import sootup.java.core.JavaIdentifierFactory; +import sootup.java.core.JavaSootField; +import sootup.java.core.JavaSootMethod; import sootup.java.core.OverridingJavaClassSource; import sootup.java.core.language.JavaJimple; +import sootup.java.core.types.JavaClassType; /** @author Markus Schmidt & Linghui Luo */ @Category(Java8Test.class) @@ -69,9 +69,9 @@ public void test() { JavaIdentifierFactory dif = JavaIdentifierFactory.getInstance(); Path dummyPath = Paths.get(URI.create("file:/nonexistent.java")); - ClassType superClassSignature = dif.getClassType("java.lang.Object"); - Set fields = new LinkedHashSet<>(); - Set methods = new LinkedHashSet<>(); + JavaClassType superClassSignature = dif.getClassType("java.lang.Object"); + Set fields = new LinkedHashSet<>(); + Set methods = new LinkedHashSet<>(); OverridingJavaClassSource javaClassSource = new OverridingJavaClassSource( new EagerInputLocation(), diff --git a/sootup.java.core/src/test/java/sootup/java/core/model/SootMethodTest.java b/sootup.java.core/src/test/java/sootup/java/core/model/SootMethodTest.java index b9e17cbe10..48c3d959f7 100644 --- a/sootup.java.core/src/test/java/sootup/java/core/model/SootMethodTest.java +++ b/sootup.java.core/src/test/java/sootup/java/core/model/SootMethodTest.java @@ -23,7 +23,6 @@ import sootup.core.model.SourceType; import sootup.core.signatures.MethodSignature; import sootup.core.types.ClassType; -import sootup.core.views.View; import sootup.java.core.JavaSootClass; import sootup.java.core.JavaSootMethod; import sootup.java.core.OverridingJavaClassSource; @@ -38,7 +37,7 @@ public class SootMethodTest { @Test public void testCreateMethod() { - View view = new JavaView(Collections.singletonList(new EagerInputLocation<>())); + JavaView view = new JavaView(Collections.singletonList(new EagerInputLocation())); ClassType type = view.getIdentifierFactory().getClassType("java.lang.String"); LocalGenerator generator = new LocalGenerator(new HashSet<>()); @@ -76,7 +75,7 @@ public void testCreateMethod() { JavaSootClass mainClass = new JavaSootClass( new OverridingJavaClassSource( - new EagerInputLocation<>(), + new EagerInputLocation(), null, view.getIdentifierFactory().getClassType("dummyMain"), null, diff --git a/sootup.java.core/src/test/java/sootup/java/core/printer/JimplePrinterTest.java b/sootup.java.core/src/test/java/sootup/java/core/printer/JimplePrinterTest.java index fa586c6ae4..e608943cfd 100644 --- a/sootup.java.core/src/test/java/sootup/java/core/printer/JimplePrinterTest.java +++ b/sootup.java.core/src/test/java/sootup/java/core/printer/JimplePrinterTest.java @@ -54,7 +54,7 @@ public void testPrintedExample() { private SootClass buildClass() { - View view = new JavaView(new EagerInputLocation<>()); + View view = new JavaView(new EagerInputLocation()); String className = "some.package.SomeClass"; MethodSignature methodSignatureOne = diff --git a/sootup.java.core/src/test/java/sootup/java/core/printer/LegacyJimplePrinterTest.java b/sootup.java.core/src/test/java/sootup/java/core/printer/LegacyJimplePrinterTest.java index ab1ceb607e..65b71a316f 100644 --- a/sootup.java.core/src/test/java/sootup/java/core/printer/LegacyJimplePrinterTest.java +++ b/sootup.java.core/src/test/java/sootup/java/core/printer/LegacyJimplePrinterTest.java @@ -29,7 +29,7 @@ public class LegacyJimplePrinterTest { SootClass buildClass(Body.BodyBuilder builder) { - View view = new JavaView(new EagerInputLocation<>()); + View view = new JavaView(new EagerInputLocation()); MethodSignature methodSignature = view.getIdentifierFactory() diff --git a/sootup.java.core/src/test/java/sootup/java/core/views/JavaViewTest.java b/sootup.java.core/src/test/java/sootup/java/core/views/JavaViewTest.java index f853542c44..269111efde 100644 --- a/sootup.java.core/src/test/java/sootup/java/core/views/JavaViewTest.java +++ b/sootup.java.core/src/test/java/sootup/java/core/views/JavaViewTest.java @@ -11,7 +11,6 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.experimental.categories.Category; -import sootup.core.frontend.AbstractClassSource; import sootup.core.model.AbstractClass; import sootup.core.types.ClassType; import sootup.core.types.Type; @@ -51,17 +50,6 @@ public void initialize() { */ } - @Ignore - public void testResolveIteratively() { - this.signatures.forEach( - it -> { - AbstractClass> clazz = - this.view.getClass(it).orElse(null); - assertNotNull("Class for signature \"" + it + "\" not found.", clazz); - assertEquals(it, clazz.getType()); - }); - } - private void resolveUndefinedClass() { ClassType signature = JavaIdentifierFactory.getInstance().getClassType("com.example.NonExistingClass"); diff --git a/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/InstructionConverter.java b/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/InstructionConverter.java index 35de970e8d..3615b25ed4 100644 --- a/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/InstructionConverter.java +++ b/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/InstructionConverter.java @@ -77,12 +77,12 @@ import sootup.core.jimple.common.stmt.*; import sootup.core.jimple.javabytecode.stmt.JSwitchStmt; import sootup.core.model.FieldModifier; -import sootup.core.model.SootField; import sootup.core.signatures.FieldSignature; import sootup.core.signatures.MethodSignature; import sootup.core.types.*; import sootup.java.core.ConstantUtil; import sootup.java.core.JavaIdentifierFactory; +import sootup.java.core.JavaSootField; import sootup.java.core.language.JavaJimple; import sootup.java.core.types.JavaClassType; @@ -313,10 +313,11 @@ private List convertAssertInstruction( JavaClassType cSig = (JavaClassType) methodSignature.getDeclClassType(); FieldSignature fieldSig = identifierFactory.getFieldSignature("$assertionsDisabled", cSig, "boolean"); - SootField assertionsDisabled = - new SootField( + JavaSootField assertionsDisabled = + new JavaSootField( fieldSig, EnumSet.of(FieldModifier.FINAL, FieldModifier.STATIC), + null, NoPositionInformation.getInstance()); converter.addSootField(assertionsDisabled); @@ -419,9 +420,12 @@ private List convertAstLexicalWrite(AstLexicalWrite inst) { FieldSignature fieldSig = identifierFactory.getFieldSignature( "val$" + access.variableName, cSig, type.toString()); - SootField field = - new SootField( - fieldSig, EnumSet.of(FieldModifier.FINAL), NoPositionInformation.getInstance()); + JavaSootField field = + new JavaSootField( + fieldSig, + EnumSet.of(FieldModifier.FINAL), + null, + NoPositionInformation.getInstance()); left = Jimple.newInstanceFieldRef(localGenerator.getThisLocal(), fieldSig); converter.addSootField(field); // add this field to class // TODO in old jimple this is not supported @@ -452,9 +456,12 @@ private List convertAstLexicalRead(AstLexicalRead inst) { FieldSignature fieldSig = identifierFactory.getFieldSignature( "val$" + access.variableName, cSig, type.toString()); - SootField field = - new SootField( - fieldSig, EnumSet.of(FieldModifier.FINAL), NoPositionInformation.getInstance()); + JavaSootField field = + new JavaSootField( + fieldSig, + EnumSet.of(FieldModifier.FINAL), + null, + NoPositionInformation.getInstance()); rvalue = Jimple.newInstanceFieldRef(localGenerator.getThisLocal(), fieldSig); converter.addSootField(field); // add this field to class } else { diff --git a/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaIRToJimpleConverter.java b/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaIRToJimpleConverter.java index a204eec586..4be18dcab1 100644 --- a/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaIRToJimpleConverter.java +++ b/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaIRToJimpleConverter.java @@ -58,10 +58,7 @@ import sootup.core.types.PrimitiveType; import sootup.core.types.Type; import sootup.core.types.VoidType; -import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; -import sootup.java.core.JavaSootClassSource; -import sootup.java.core.OverridingJavaClassSource; +import sootup.java.core.*; import sootup.java.core.types.AnnotationType; import sootup.java.core.types.JavaClassType; import sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation; @@ -77,7 +74,7 @@ public class WalaIRToJimpleConverter { private final AnalysisInputLocation srcNamespace; private final HashMap clsWithInnerCls; private final HashMap walaToSootNameTable; - private Set sootFields; + private Set sootFields; public WalaIRToJimpleConverter(@Nonnull Set sourceDirPath) { srcNamespace = new JavaSourcePathAnalysisInputLocation(sourceDirPath); @@ -102,7 +99,7 @@ public WalaIRToJimpleConverter(@Nonnull Set sourceDirPath, @Nonnull Sour */ // TODO: remove deprecated @Deprecated - public SootClass convertClass(AstClass walaClass) { + public JavaSootClass convertClass(AstClass walaClass) { JavaSootClassSource classSource = convertToClassSource(walaClass); // TODO: [ms] fix fixed SourceType - get it from project return new JavaSootClass(classSource, SourceType.Application); @@ -120,7 +117,7 @@ JavaSootClassSource convertToClassSource(AstClass walaClass) { } // get interfaces - Set interfaces = new HashSet<>(); + Set interfaces = new HashSet<>(); for (IClass i : walaClass.getDirectInterfaces()) { JavaClassType inter = identifierFactory.getClassType(convertClassNameFromWala(i.getName().toString())); @@ -150,7 +147,7 @@ JavaSootClassSource convertToClassSource(AstClass walaClass) { fields.addAll(walaClass.getDeclaredStaticFields()); sootFields = new HashSet<>(); for (IField walaField : fields) { - SootField sootField = convertField(classSig, (AstField) walaField); + JavaSootField sootField = convertField(classSig, (AstField) walaField); sootFields.add(sootField); } @@ -158,17 +155,20 @@ JavaSootClassSource convertToClassSource(AstClass walaClass) { // create enclosing reference to outerClass FieldSignature signature = identifierFactory.getFieldSignature("this$0", classSig, outerClass); - SootField enclosingObject = - new SootField( - signature, EnumSet.of(FieldModifier.FINAL), NoPositionInformation.getInstance()); + JavaSootField enclosingObject = + new JavaSootField( + signature, + EnumSet.of(FieldModifier.FINAL), + null, + NoPositionInformation.getInstance()); sootFields.add(enclosingObject); } // convert methods - Set sootMethods = new HashSet<>(); + Set sootMethods = new HashSet<>(); for (IMethod walaMethod : walaClass.getDeclaredMethods()) { - SootMethod sootMethod = convertMethod(classSig, (AstMethod) walaMethod); + JavaSootMethod sootMethod = convertMethod(classSig, (AstMethod) walaMethod); sootMethods.add(sootMethod); } @@ -189,10 +189,10 @@ JavaSootClassSource convertToClassSource(AstClass walaClass) { public OverridingJavaClassSource createClassSource( AstClass walaClass, JavaClassType superClass, - Set interfaces, + Set interfaces, JavaClassType outerClass, - Set sootFields, - Set sootMethods, + Set sootFields, + Set sootMethods, Position position, EnumSet modifiers, Iterable annotations) { @@ -223,12 +223,12 @@ public OverridingJavaClassSource createClassSource( * @param walaField the wala field * @return A SootField object converted from walaField. */ - public SootField convertField(JavaClassType classSig, AstField walaField) { + public JavaSootField convertField(JavaClassType classSig, AstField walaField) { Type type = convertType(walaField.getFieldTypeReference()); EnumSet modifiers = convertModifiers(walaField); FieldSignature signature = identifierFactory.getFieldSignature(walaField.getName().toString(), classSig, type); - return new SootField(signature, modifiers, NoPositionInformation.getInstance()); + return new JavaSootField(signature, modifiers, null, NoPositionInformation.getInstance()); } /** @@ -237,7 +237,7 @@ public SootField convertField(JavaClassType classSig, AstField walaField) { * @param classSig the SootClass which should contain the converted SootMethod * @param walaMethod the walMethod to be converted */ - public SootMethod convertMethod(JavaClassType classSig, AstMethod walaMethod) { + public JavaSootMethod convertMethod(JavaClassType classSig, AstMethod walaMethod) { // create SootMethod instance List paraTypes = new ArrayList<>(); List sigs = new ArrayList<>(); @@ -624,7 +624,7 @@ public String convertClassNameFromSoot(String signature) { return "L" + signature.replace('.', '/'); } - protected void addSootField(SootField field) { + protected void addSootField(JavaSootField field) { if (this.sootFields != null) { this.sootFields.add(field); } diff --git a/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaJavaClassProvider.java b/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaJavaClassProvider.java index e241bb3933..cbb1cfc49a 100644 --- a/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaJavaClassProvider.java +++ b/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaJavaClassProvider.java @@ -46,13 +46,13 @@ import sootup.core.SourceTypeSpecifier; import sootup.core.frontend.ClassProvider; import sootup.core.frontend.ResolveException; -import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.FileType; import sootup.core.model.SootClass; import sootup.core.model.SourceType; import sootup.core.types.ClassType; import sootup.java.core.JavaSootClass; +import sootup.java.core.JavaSootClassSource; import sootup.java.core.types.JavaClassType; /** @@ -60,12 +60,12 @@ * * @author Linghui Luo */ -public class WalaJavaClassProvider implements ClassProvider { +public class WalaJavaClassProvider implements ClassProvider { private Set sourcePath; private IClassHierarchy classHierarchy; - private List> sootClasses; - private List> classSources; + private List sootClasses; + private List classSources; private AnalysisScope scope; private ClassLoaderFactory factory; private final File walaPropertiesFile = new File("wala.properties"); @@ -223,7 +223,7 @@ private void buildClassHierachy() { * * @return list of classes */ - public List> getClassSources(SourceType srcType) { + public List getClassSources(SourceType srcType) { Iterator it = iterateWalaClasses(); if (classSources == null) { classSources = new ArrayList<>(); @@ -231,7 +231,7 @@ public List> getClassSources(SourceType srcType) WalaIRToJimpleConverter walaToSoot = new WalaIRToJimpleConverter(this.sourcePath, srcType); while (it.hasNext()) { JavaSourceLoaderImpl.JavaClass walaClass = (JavaSourceLoaderImpl.JavaClass) it.next(); - SootClassSource sootClass = walaToSoot.convertToClassSource(walaClass); + JavaSootClassSource sootClass = walaToSoot.convertToClassSource(walaClass); classSources.add(sootClass); } return classSources; @@ -245,7 +245,7 @@ public List> getClassSources(SourceType srcType) * is the responsibility of the View. */ @Deprecated - public List> getSootClasses() { + public List getSootClasses() { Iterator it = iterateWalaClasses(); if (sootClasses == null) { sootClasses = new ArrayList<>(); @@ -253,7 +253,7 @@ public List> getSootClasses() { WalaIRToJimpleConverter walaToSoot = new WalaIRToJimpleConverter(this.sourcePath); while (it.hasNext()) { JavaSourceLoaderImpl.JavaClass walaClass = (JavaSourceLoaderImpl.JavaClass) it.next(); - SootClass sootClass = walaToSoot.convertClass(walaClass); + JavaSootClass sootClass = walaToSoot.convertClass(walaClass); sootClasses.add(sootClass); } return sootClasses; @@ -287,7 +287,7 @@ public Optional getSootClass(JavaClassType signature) { } /** Return a ClassSource with the given signature converted from a WALA class. */ - public Optional> getClassSource(ClassType signature) { + public Optional getClassSource(ClassType signature) { if (classHierarchy == null) { buildClassHierachy(); } @@ -347,8 +347,8 @@ private void setExclusions(@Nullable String exclusionFilePath) { } @Override - public Optional> createClassSource( - AnalysisInputLocation> srcNamespace, Path sourcePath, ClassType type) { + public Optional createClassSource( + AnalysisInputLocation srcNamespace, Path sourcePath, ClassType type) { return getClassSource(type); } diff --git a/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/inputlocation/JavaSourcePathAnalysisInputLocation.java b/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/inputlocation/JavaSourcePathAnalysisInputLocation.java index 8086e4e114..46703e4824 100644 --- a/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/inputlocation/JavaSourcePathAnalysisInputLocation.java +++ b/sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/inputlocation/JavaSourcePathAnalysisInputLocation.java @@ -28,7 +28,6 @@ import javax.annotation.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sootup.core.frontend.AbstractClassSource; import sootup.core.frontend.ResolveException; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.ClassLoadingOptions; @@ -36,7 +35,7 @@ import sootup.core.transform.BodyInterceptor; import sootup.core.types.ClassType; import sootup.core.views.View; -import sootup.java.core.JavaSootClass; +import sootup.java.core.JavaSootClassSource; import sootup.java.sourcecode.frontend.WalaJavaClassProvider; /** @@ -46,7 +45,7 @@ * * @author Linghui Luo */ -public class JavaSourcePathAnalysisInputLocation implements AnalysisInputLocation { +public class JavaSourcePathAnalysisInputLocation implements AnalysisInputLocation { private static final Logger log = LoggerFactory.getLogger(JavaSourcePathAnalysisInputLocation.class); @@ -160,16 +159,14 @@ public List getBodyInterceptors() { @Override @Nonnull - public Collection> getClassSources( - @Nonnull View view) { + public Collection getClassSources(@Nonnull View view) { return classProvider.getClassSources(srcType); } @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view) { + public Optional getClassSource(@Nonnull ClassType type, @Nonnull View view) { for (String path : sourcePaths) { try { return classProvider.createClassSource(this, Paths.get(path), type); diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/frontend/WalaJavaClassProviderTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/frontend/WalaJavaClassProviderTest.java index ca29d2cc1b..034d972788 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/frontend/WalaJavaClassProviderTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/frontend/WalaJavaClassProviderTest.java @@ -13,7 +13,7 @@ import sootup.core.frontend.SootClassSource; import sootup.core.signatures.PackageName; import sootup.core.util.ImmutableUtils; -import sootup.java.core.JavaSootClass; +import sootup.java.core.JavaSootClassSource; import sootup.java.core.types.JavaClassType; import sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation; @@ -34,11 +34,11 @@ public void testCreateClassSource() { WalaJavaClassProvider provider = new WalaJavaClassProvider(srcDir, exclusionFilePath); - Optional> opFakeClass = + Optional opFakeClass = provider.createClassSource(inputLocation, Paths.get(srcDir), faketype); assertFalse(opFakeClass.isPresent()); - Optional> opClass = + Optional opClass = provider.createClassSource(inputLocation, Paths.get(srcDir), type); assertTrue(opClass.isPresent()); SootClassSource classSource = opClass.get(); diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/inputlocation/JavaSourcePathNamespaceTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/inputlocation/JavaSourcePathNamespaceTest.java index 223dfc0fe2..05b9a375af 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/inputlocation/JavaSourcePathNamespaceTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/inputlocation/JavaSourcePathNamespaceTest.java @@ -15,7 +15,6 @@ import org.junit.Test; import org.junit.experimental.categories.Category; import sootup.core.frontend.AbstractClassSource; -import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SootClass; import sootup.core.model.SourceType; @@ -35,7 +34,7 @@ public class JavaSourcePathNamespaceTest { public void testGetClassSource() { String srcDir = "../shared-test-resources/wala-tests/"; String exclusionFilePath = srcDir + "WalaExclusions.txt"; - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaSourcePathAnalysisInputLocation( ImmutableUtils.immutableSet(srcDir), exclusionFilePath); JavaClassType type = new JavaClassType("Array1", PackageName.DEFAULT_PACKAGE); @@ -44,22 +43,21 @@ public void testGetClassSource() { Optional clazz = view.getClass(type); assertTrue(clazz.isPresent()); - AbstractClassSource classSource = clazz.get().getClassSource(); + JavaSootClassSource classSource = clazz.get().getClassSource(); assertEquals(type, classSource.getClassType()); - AbstractClassSource content = classSource; + JavaSootClassSource content = classSource; assertNotNull(content); - assertTrue(content instanceof SootClassSource); - assertEquals(3, ((SootClassSource) content).resolveMethods().size()); - assertEquals(0, ((SootClassSource) content).resolveFields().size()); + assertEquals(3, content.resolveMethods().size()); + assertEquals(0, content.resolveFields().size()); } @Ignore public void testGetClassSources() { String srcDir = "../shared-test-resources/wala-tests/"; String exclusionFilePath = srcDir + "WalaExclusions.txt"; - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaSourcePathAnalysisInputLocation( ImmutableUtils.immutableSet(srcDir), exclusionFilePath); @@ -92,13 +90,12 @@ public void testGetClassSources() { public void testInputSourcePathLibraryMode() { String classPath = "../shared-test-resources/java-miniapps/src/"; - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaSourcePathAnalysisInputLocation(SourceType.Library, classPath); JavaView view = new JavaView(inputLocation); - Set> classes = - new HashSet<>(); // Set to track the classes to check - for (SootClass aClass : view.getClasses()) { + Set classes = new HashSet<>(); // Set to track the classes to check + for (SootClass aClass : view.getClasses()) { if (!aClass.isLibraryClass()) { classes.add(aClass); } diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/MinimalSourceTestSuiteBase.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/MinimalSourceTestSuiteBase.java index 73fe8c28ed..57a47eee57 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/MinimalSourceTestSuiteBase.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/MinimalSourceTestSuiteBase.java @@ -47,7 +47,7 @@ protected void starting(Description description) { String prevClassDirName = getTestDirectoryName(getClassPath()); setClassPath(description.getClassName()); if (!prevClassDirName.equals(getTestDirectoryName(getClassPath()))) { - AnalysisInputLocation inputLocation = + AnalysisInputLocation inputLocation = new JavaSourcePathAnalysisInputLocation( baseDir + File.separator diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/AbstractClassTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/AbstractClassTest.java index 193911a81d..7d3667b835 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/AbstractClassTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/AbstractClassTest.java @@ -20,7 +20,7 @@ public class AbstractClassTest extends MinimalSourceTestSuiteBase { @Test public void test() { - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); // The SuperClass is the abstract one System.out.println(clazz.getSuperclass()); SootClass superClazz = loadClass(clazz.getSuperclass().get()); diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/DeclareFieldTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/DeclareFieldTest.java index 4daa2095f2..21bced2282 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/DeclareFieldTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/DeclareFieldTest.java @@ -35,7 +35,7 @@ public void test() { assertJimpleStmts(method, expectedBodyStmts()); method = loadMethod(getStaticMethodSignature()); assertJimpleStmts(method, expectedBodyStmts1()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/InstanceOfCheckTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/InstanceOfCheckTest.java index 7cb98a3bce..8b526d3347 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/InstanceOfCheckTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/InstanceOfCheckTest.java @@ -24,7 +24,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue(sootClass.getSuperclass().get().getClassName().equals("InstanceOfCheckSuper")); } diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/InterfaceImplClassTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/InterfaceImplClassTest.java index 7d3f2b3ea5..3de31381bb 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/InterfaceImplClassTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/InterfaceImplClassTest.java @@ -24,7 +24,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/LocalClassShadowTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/LocalClassShadowTest.java index fd15dd2d51..6b37f16f24 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/LocalClassShadowTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/LocalClassShadowTest.java @@ -30,7 +30,7 @@ public class LocalClassShadowTest extends MinimalSourceTestSuiteBase { JavaClassType localClass = identifierFactory.getClassType( getClassName(customTestWatcher.getClassPath()) + "1$LocalClass"); - SootClass sootLocalClass = loadClass(localClass); + SootClass sootLocalClass = loadClass(localClass); /** Test: OuterClass of LocalClass is LocalClassShadow */ @Test diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/MultiInterfaceImplClassTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/MultiInterfaceImplClassTest.java index 0b67395396..325cbcc502 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/MultiInterfaceImplClassTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/MultiInterfaceImplClassTest.java @@ -24,7 +24,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/NestedClassShadowTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/NestedClassShadowTest.java index 5db902684a..24393a4351 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/NestedClassShadowTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/NestedClassShadowTest.java @@ -30,7 +30,7 @@ public class NestedClassShadowTest extends MinimalSourceTestSuiteBase { JavaClassType nestedClass = identifierFactory.getClassType( getClassName(customTestWatcher.getClassPath()) + "$NestedClass"); - SootClass sootNestedClass = loadClass(nestedClass); + SootClass sootNestedClass = loadClass(nestedClass); /** Test: OuterClass of NestedClass is NestedClassShadow */ @Test diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/PublicClassTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/PublicClassTest.java index ce3ed45b54..416bc713db 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/PublicClassTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/PublicClassTest.java @@ -21,7 +21,7 @@ public class PublicClassTest extends MinimalSourceTestSuiteBase { @Test public void test() { - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertEquals(EnumSet.of(ClassModifier.PUBLIC), clazz.getModifiers()); SootMethod method; diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/StaticInitializerTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/StaticInitializerTest.java index 5371aa9594..9799d15dc4 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/StaticInitializerTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/StaticInitializerTest.java @@ -28,7 +28,7 @@ public MethodSignature getStaticMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch(sootField -> sootField.getName().equals("i") && sootField.isStatic())); diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/StaticVariableTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/StaticVariableTest.java index 4c563a51e7..52aa75c110 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/StaticVariableTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/StaticVariableTest.java @@ -25,7 +25,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/SubClassTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/SubClassTest.java index ea48067e0c..9c98eae578 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/SubClassTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/SubClassTest.java @@ -79,7 +79,7 @@ public void test() { assertJimpleStmts(method, expectedBodyStmts()); method = loadMethod(getMethodSignature1()); assertJimpleStmts(method, expectedBodyStmts1()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue(sootClass.getSuperclass().get().getClassName().equals("SuperClass")); } } diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/TransientVariableTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/TransientVariableTest.java index a883bbf13c..5b1bba0929 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/TransientVariableTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/TransientVariableTest.java @@ -22,7 +22,7 @@ public MethodSignature getMethodSignature() { @Ignore public void testTransientVar() { - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/VolatileVariableTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/VolatileVariableTest.java index 11140c7868..f884c3f27a 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/VolatileVariableTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java6/VolatileVariableTest.java @@ -25,7 +25,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java8/DefaultMethodInterfaceImplTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java8/DefaultMethodInterfaceImplTest.java index 48cd7fa20a..f2855df55b 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java8/DefaultMethodInterfaceImplTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java8/DefaultMethodInterfaceImplTest.java @@ -77,7 +77,7 @@ public void test() { assertJimpleStmts(loadMethod(getMethodSignature()), expectedBodyStmts()); assertJimpleStmts(loadMethod(getDefaultMethodSignature()), expectedBodyStmts1()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java8/StaticMethodInterfaceImplTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java8/StaticMethodInterfaceImplTest.java index 2ae239d293..4790abb495 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java8/StaticMethodInterfaceImplTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java8/StaticMethodInterfaceImplTest.java @@ -72,7 +72,7 @@ public void test() { assertJimpleStmts(staticMethod, expectedBodyStmts1()); assertTrue(staticMethod.isStatic() && staticMethod.getName().equals("initStatic")); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue( sootClass.getInterfaces().stream() .anyMatch( diff --git a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java9/PrivateMethodInterfaceImplTest.java b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java9/PrivateMethodInterfaceImplTest.java index 05d10f5d42..dd39bb3378 100644 --- a/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java9/PrivateMethodInterfaceImplTest.java +++ b/sootup.java.sourcecode/src/test/java/sootup/java/sourcecode/minimaltestsuite/java9/PrivateMethodInterfaceImplTest.java @@ -28,7 +28,7 @@ public void ignoreTest() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue( sootClass.getInterfaces().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleAnalysisInputLocation.java b/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleAnalysisInputLocation.java index e609114c9b..9be6ae2f46 100644 --- a/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleAnalysisInputLocation.java +++ b/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleAnalysisInputLocation.java @@ -9,13 +9,10 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import sootup.core.IdentifierFactory; -import sootup.core.frontend.AbstractClassSource; import sootup.core.frontend.ClassProvider; import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.FileType; -import sootup.core.model.AbstractClass; -import sootup.core.model.SootClass; import sootup.core.model.SourceType; import sootup.core.transform.BodyInterceptor; import sootup.core.types.ClassType; @@ -24,8 +21,7 @@ import sootup.core.views.View; /** @author Markus Schmidt */ -public class JimpleAnalysisInputLocation>> - implements AnalysisInputLocation { +public class JimpleAnalysisInputLocation implements AnalysisInputLocation { final Path path; private final List bodyInterceptors; @@ -79,10 +75,10 @@ public List getBodyInterceptors() { } @Nonnull - List>> walkDirectory( + List walkDirectory( @Nonnull Path dirPath, @Nonnull IdentifierFactory factory, - @Nonnull ClassProvider> classProvider) { + @Nonnull ClassProvider classProvider) { try { final FileType handledFileType = classProvider.getHandledFileType(); return Files.walk(dirPath) @@ -100,16 +96,15 @@ List>> walkDirectory( @Override @Nonnull - public Collection> getClassSources(@Nonnull View view) { + public Collection getClassSources(@Nonnull View view) { return walkDirectory( path, view.getIdentifierFactory(), new JimpleClassProvider(bodyInterceptors)); } @Override @Nonnull - public Optional> getClassSource( - @Nonnull ClassType type, @Nonnull View view) { - final JimpleClassProvider classProvider = new JimpleClassProvider<>(bodyInterceptors); + public Optional getClassSource(@Nonnull ClassType type, @Nonnull View view) { + final JimpleClassProvider classProvider = new JimpleClassProvider(bodyInterceptors); final String ext = classProvider.getHandledFileType().toString().toLowerCase(); @@ -137,7 +132,7 @@ public boolean equals(Object o) { if (!(o instanceof JimpleAnalysisInputLocation)) { return false; } - return path.equals(((JimpleAnalysisInputLocation) o).path); + return path.equals(((JimpleAnalysisInputLocation) o).path); } @Override diff --git a/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleClassProvider.java b/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleClassProvider.java index ea0ffa2c96..8bad43f6e8 100644 --- a/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleClassProvider.java +++ b/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleClassProvider.java @@ -13,13 +13,11 @@ import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.FileType; -import sootup.core.model.SootClass; import sootup.core.transform.BodyInterceptor; import sootup.core.types.ClassType; /** @author Markus Schmidt */ -public class JimpleClassProvider>> - implements ClassProvider { +public class JimpleClassProvider implements ClassProvider { @Nonnull private final List bodyInterceptors; @@ -30,10 +28,8 @@ public JimpleClassProvider(List bodyInterceptors) { } @Override - public Optional> createClassSource( - AnalysisInputLocation> inputlocation, - Path sourcePath, - ClassType classSignature) { + public Optional createClassSource( + AnalysisInputLocation inputlocation, Path sourcePath, ClassType classSignature) { try { final JimpleConverter jimpleConverter = new JimpleConverter(); diff --git a/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleConverter.java b/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleConverter.java index dba4f85692..32697a283a 100644 --- a/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleConverter.java +++ b/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleConverter.java @@ -36,14 +36,14 @@ public class JimpleConverter { public OverridingClassSource run( @Nonnull CharStream charStream, - @Nonnull AnalysisInputLocation inputlocation, + @Nonnull AnalysisInputLocation inputlocation, @Nonnull Path sourcePath) { return run(charStream, inputlocation, sourcePath, Collections.emptyList()); } public OverridingClassSource run( @Nonnull CharStream charStream, - @Nonnull AnalysisInputLocation inputlocation, + @Nonnull AnalysisInputLocation inputlocation, @Nonnull Path sourcePath, @Nonnull List bodyInterceptors) { @@ -56,14 +56,14 @@ public OverridingClassSource run( public OverridingClassSource run( @Nonnull JimpleParser parser, - @Nonnull AnalysisInputLocation inputlocation, + @Nonnull AnalysisInputLocation inputlocation, @Nonnull Path sourcePath) { return run(parser, inputlocation, sourcePath, Collections.emptyList()); } public OverridingClassSource run( @Nonnull JimpleParser parser, - @Nonnull AnalysisInputLocation inputlocation, + @Nonnull AnalysisInputLocation inputlocation, @Nonnull Path sourcePath, @Nonnull List bodyInterceptors) { diff --git a/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleView.java b/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleView.java index af8eb53ba4..c746a8d949 100644 --- a/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleView.java +++ b/sootup.jimple.parser/src/main/java/sootup/jimple/parser/JimpleView.java @@ -13,6 +13,7 @@ import sootup.core.cache.provider.FullCacheProvider; import sootup.core.frontend.AbstractClassSource; import sootup.core.frontend.ResolveException; +import sootup.core.frontend.SootClassSource; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.inputlocation.DefaultSourceTypeSpecifier; import sootup.core.model.SootClass; @@ -28,31 +29,31 @@ // TODO: [ms] rethink of that view per language structure -> this could be the base implementation // for View if we really need different views in the future? -public class JimpleView extends AbstractView> { +public class JimpleView extends AbstractView { - @Nonnull protected final List>> inputLocations; - @Nonnull private final ClassCache> cache; + @Nonnull protected final List inputLocations; + @Nonnull private final ClassCache cache; @Nonnull protected final SourceTypeSpecifier sourceTypeSpecifier; private volatile boolean isFullyResolved = false; - public JimpleView(@Nonnull AnalysisInputLocation> inputLocation) { - this(Collections.singletonList(inputLocation), new FullCacheProvider<>()); + public JimpleView(@Nonnull AnalysisInputLocation inputLocation) { + this(Collections.singletonList(inputLocation), new FullCacheProvider()); } - public JimpleView(@Nonnull List>> inputLocations) { - this(inputLocations, new FullCacheProvider<>()); + public JimpleView(@Nonnull List inputLocations) { + this(inputLocations, new FullCacheProvider()); } public JimpleView( - @Nonnull List>> inputLocations, - @Nonnull ClassCacheProvider> cacheProvider) { + @Nonnull List inputLocations, + @Nonnull ClassCacheProvider cacheProvider) { this(inputLocations, cacheProvider, DefaultSourceTypeSpecifier.getInstance()); } public JimpleView( - @Nonnull List>> inputLocations, - @Nonnull ClassCacheProvider> cacheProvider, + @Nonnull List inputLocations, + @Nonnull ClassCacheProvider cacheProvider, @Nonnull SourceTypeSpecifier sourceTypeSpecifier) { this.inputLocations = inputLocations; this.cache = cacheProvider.createCache(); @@ -61,19 +62,19 @@ public JimpleView( @Override @Nonnull - public synchronized Collection> getClasses() { + public synchronized Collection getClasses() { return getAbstractClassSources(); } @Nonnull - synchronized Collection> getAbstractClassSources() { + synchronized Collection getAbstractClassSources() { resolveAll(); return cache.getClasses(); } @Override @Nonnull - public synchronized Optional> getClass(@Nonnull ClassType type) { + public synchronized Optional getClass(@Nonnull ClassType type) { return getAbstractClass(type); } @@ -84,13 +85,13 @@ public IdentifierFactory getIdentifierFactory() { } @Nonnull - Optional> getAbstractClass(@Nonnull ClassType type) { - SootClass cachedClass = cache.getClass(type); + Optional getAbstractClass(@Nonnull ClassType type) { + SootClass cachedClass = cache.getClass(type); if (cachedClass != null) { return Optional.of(cachedClass); } - final List>> foundClassSources = + final List foundClassSources = inputLocations.stream() .map(location -> location.getClassSource(type, this)) .filter(Optional::isPresent) @@ -115,11 +116,10 @@ Optional> getAbstractClass(@Nonnull ClassType type) { } @Nonnull - private synchronized Optional> buildClassFrom( - AbstractClassSource> classSource) { + private synchronized Optional buildClassFrom(AbstractClassSource classSource) { ClassType classType = classSource.getClassType(); - SootClass theClass; + SootClass theClass; if (!cache.hasClass(classType)) { theClass = classSource.buildClass(sourceTypeSpecifier.sourceTypeFor(classSource)); cache.putClass(classType, theClass); diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/JimpleAnalysisInputLocationTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/JimpleAnalysisInputLocationTest.java index 20ab293ed4..93fbc2e7b6 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/JimpleAnalysisInputLocationTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/JimpleAnalysisInputLocationTest.java @@ -97,21 +97,21 @@ public PackageName getPackageName() { final JimpleAnalysisInputLocation inputLocation1 = new JimpleAnalysisInputLocation(Paths.get(resourceDir + "/jimple/")); JimpleView jv1 = new JimpleView(inputLocation1); - final Optional> classSource1 = jv1.getClass(onlyClassNameType); + final Optional classSource1 = jv1.getClass(onlyClassNameType); assertTrue(classSource1.isPresent()); - final Optional> classSource2 = jv1.getClass(classType); + final Optional classSource2 = jv1.getClass(classType); assertFalse(classSource2.isPresent()); - final Optional> classSourceNon = jv1.getClass(classTypeFake); + final Optional classSourceNon = jv1.getClass(classTypeFake); assertFalse(classSourceNon.isPresent()); // files in subdir structure final JimpleAnalysisInputLocation inputLocation2 = new JimpleAnalysisInputLocation(Paths.get(resourceDir)); JimpleView jv2 = new JimpleView(inputLocation2); - final Optional> classSource3 = jv2.getClass(onlyClassNameType); + final Optional classSource3 = jv2.getClass(onlyClassNameType); assertFalse(classSource3.isPresent()); - final Optional> classSource4 = jv2.getClass(classType); + final Optional classSource4 = jv2.getClass(classType); assertTrue(classSource4.isPresent()); } @@ -122,13 +122,13 @@ public PackageName getPackageName() { @Test public void specifyBuiltInInputJimplePath() { String classPath = "src/test/java/resources/jimple"; - AnalysisInputLocation> jimpleInputLocation = + AnalysisInputLocation jimpleInputLocation = new JimpleAnalysisInputLocation(Paths.get(classPath), SourceType.Library); JimpleView view = new JimpleView(jimpleInputLocation); - Collection> classes = new HashSet<>(); // Set to track the classes to check + Collection classes = new HashSet<>(); // Set to track the classes to check - for (SootClass aClass : view.getClasses()) { + for (SootClass aClass : view.getClasses()) { if (!aClass.isLibraryClass()) { classes.add(aClass); } diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/JimpleConverterTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/JimpleConverterTest.java index 3567237747..257dcb1a5e 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/JimpleConverterTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/JimpleConverterTest.java @@ -30,11 +30,11 @@ @Category(Java8Test.class) public class JimpleConverterTest { - private SootClass parseJimpleClass(CharStream cs) throws ResolveException { + private SootClass parseJimpleClass(CharStream cs) throws ResolveException { JimpleConverter jimpleVisitor = new JimpleConverter(); final OverridingClassSource scs = - jimpleVisitor.run(cs, new EagerInputLocation<>(), Paths.get("")); - return new SootClass<>(scs, SourceType.Application); + jimpleVisitor.run(cs, new EagerInputLocation(), Paths.get("")); + return new SootClass(scs, SourceType.Application); } @Test @@ -276,7 +276,7 @@ public void testNonGreeedyCommentEverywhere() { + "/* SecondComment */" + "} \n"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertTrue( sc.getMethod( new MethodSubSignature("another", Collections.emptyList(), VoidType.getInstance())) @@ -538,14 +538,14 @@ public void testSingleQuoteEscapeSeq() { { CharStream cs = CharStreams.fromString("public class escaped.'class' extends java.lang.Object {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("escaped.class", sc.getClassSource().getClassType().toString()); } // old kind of escaping: at the beginning { CharStream cs = CharStreams.fromString("public class 'class'.is.escaped extends java.lang.Object {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("class.is.escaped", sc.getClassSource().getClassType().toString()); } @@ -554,7 +554,7 @@ public void testSingleQuoteEscapeSeq() { CharStream cs = CharStreams.fromString( "public class some.'pckg'.'class'.More extends java.lang.Object {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("some.pckg.class.More", sc.getClassSource().getClassType().toString()); } @@ -562,7 +562,7 @@ public void testSingleQuoteEscapeSeq() { // current escaping CharStream cs = CharStreams.fromString("public class 'annotationinterface' extends java.lang.Object {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("annotationinterface", sc.getClassSource().getClassType().toString()); } @@ -570,7 +570,7 @@ public void testSingleQuoteEscapeSeq() { // no escaping needed as "class" is not considered a token if its nested into more CharStream cs = CharStreams.fromString("public class some.pckg.class extends java.lang.Object \n {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("some.pckg.class", sc.getClassSource().getClassType().toString()); } @@ -589,7 +589,7 @@ public void testSingleQuoteEscapeSeq() { CharStream cs = CharStreams.fromString( "public class \\'some.pckg.ClassObj\\' extends java.lang.Object \n {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("'some.pckg.ClassObj'", sc.getClassSource().getClassType().toString()); } @@ -598,7 +598,7 @@ public void testSingleQuoteEscapeSeq() { CharStream cs = CharStreams.fromString( "public class 'some.'.pckg.'.ClassObj' extends java.lang.Object \n {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("some..pckg..ClassObj", sc.getClassSource().getClassType().toString()); } @@ -607,7 +607,7 @@ public void testSingleQuoteEscapeSeq() { CharStream cs = CharStreams.fromString( "public class some.\\'.pckg.\\'.ClassObj extends java.lang.Object \n {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("some.'.pckg.'.ClassObj", sc.getClassSource().getClassType().toString()); } @@ -628,7 +628,7 @@ public void testSingleQuoteEscapeSeq() { // escaped quotes in escaped sequence CharStream cs = CharStreams.fromString("public class \\'class\\' extends java.lang.Object \n {}"); - SootClass sc = parseJimpleClass(cs); + SootClass sc = parseJimpleClass(cs); assertEquals("'class'", Jimple.unescape("\\'class\\'")); assertEquals("'class'", sc.getClassSource().getClassType().toString()); @@ -785,7 +785,7 @@ public void testPartial_InvalidStmt() { @Test public void testQuotedTypeParsing() throws IOException { - SootClass clazz = + SootClass clazz = parseJimpleClass( CharStreams.fromFileName("src/test/java/resources/jimple/SubTypeValidator.jimple")); Set methods = clazz.getMethods(); @@ -796,7 +796,7 @@ public void testQuotedTypeParsing() throws IOException { @Test public void testEdgeCaseDoubleParsing() throws IOException { - SootClass clazz = + SootClass clazz = parseJimpleClass( CharStreams.fromFileName("src/test/java/resources/jimple/EdgeCaseDoubleNumber.jimple")); Set fields = clazz.getFields(); diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/JimpleTestSuiteBase.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/JimpleTestSuiteBase.java index 277ea5b318..323cf4b40f 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/JimpleTestSuiteBase.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/JimpleTestSuiteBase.java @@ -60,15 +60,15 @@ protected JavaClassType getDeclaredClassSignature() { return identifierFactory.getClassType(deriveClassName(this.getClass().getSimpleName())); } - public SootClass loadClass(ClassType clazz) { + public SootClass loadClass(ClassType clazz) { - Optional> cs = view.getClass(clazz); + Optional cs = view.getClass(clazz); assertTrue("no matching class for " + clazz + " found", cs.isPresent()); return cs.get(); } public SootMethod loadMethod(MethodSignature methodSignature) { - SootClass clazz = loadClass(methodSignature.getDeclClassType()); + SootClass clazz = loadClass(methodSignature.getDeclClassType()); Optional m = clazz.getMethod(methodSignature.getSubSignature()); if (!m.isPresent()) { System.out.println("existing methods:"); diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/AbstractClassTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/AbstractClassTest.java index 559aaed784..28a2b2ff31 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/AbstractClassTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/AbstractClassTest.java @@ -20,9 +20,9 @@ public class AbstractClassTest extends JimpleTestSuiteBase { @Test public void test() { - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); // The SuperClass is the abstract one - SootClass superClazz = loadClass(clazz.getSuperclass().get()); + SootClass superClazz = loadClass(clazz.getSuperclass().get()); assertTrue(superClazz.isAbstract()); SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/DeclareFieldTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/DeclareFieldTest.java index e7e0795d64..c1dc60ba5d 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/DeclareFieldTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/DeclareFieldTest.java @@ -37,7 +37,7 @@ public void test() { assertJimpleStmts(method, expectedBodyStmts()); method = loadMethod(getStaticMethodSignature()); assertJimpleStmts(method, expectedBodyStmts1()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/InstanceOfCheckTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/InstanceOfCheckTest.java index ef65843da4..07d145a2f5 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/InstanceOfCheckTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/InstanceOfCheckTest.java @@ -26,7 +26,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); if (sootClass.getSuperclass().isPresent()) { assertEquals("InstanceOfCheckSuper", sootClass.getSuperclass().get().getClassName()); } diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/InterfaceImplClassTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/InterfaceImplClassTest.java index 663fe16b52..852dddfba8 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/InterfaceImplClassTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/InterfaceImplClassTest.java @@ -27,7 +27,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/MultiInterfaceImplClassTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/MultiInterfaceImplClassTest.java index c6402c72d2..2d2c2ff518 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/MultiInterfaceImplClassTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/MultiInterfaceImplClassTest.java @@ -27,7 +27,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/NoModifierClassTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/NoModifierClassTest.java index 4fcf918029..d54e50be5c 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/NoModifierClassTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/NoModifierClassTest.java @@ -16,7 +16,7 @@ public class NoModifierClassTest extends JimpleTestSuiteBase { @Test public void test() { - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); // TODO SYNCHRONIZED modifier does not work // assertEquals(EnumSet.noneOf(Modifier.class), clazz.getModifiers()); assertTrue(clazz.getMethod(getMethodSignature("private").getSubSignature()).get().isPrivate()); diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/PublicClassTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/PublicClassTest.java index 8c2c4f2849..b6ea221b9b 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/PublicClassTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/PublicClassTest.java @@ -23,7 +23,7 @@ public class PublicClassTest extends JimpleTestSuiteBase { @Test public void test() { - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertEquals(EnumSet.of(ClassModifier.PUBLIC, ClassModifier.SUPER), clazz.getModifiers()); SootMethod method; diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/StaticInitializerTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/StaticInitializerTest.java index 4b944b82a4..ac44b34d25 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/StaticInitializerTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/StaticInitializerTest.java @@ -31,7 +31,7 @@ public MethodSignature getStaticMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/StaticVariableTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/StaticVariableTest.java index cc3f727d25..a4f9e8cd1a 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/StaticVariableTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/StaticVariableTest.java @@ -28,7 +28,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/SubClassTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/SubClassTest.java index 144de38317..0e34c90d8a 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/SubClassTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/SubClassTest.java @@ -33,7 +33,7 @@ public MethodSignature getMethodSignature1() { public void testSuperClassStmts() { SootMethod m = loadMethod(getMethodSignature1()); assertJimpleStmts(m, expectedBodyStmts1()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue(sootClass.getSuperclass().get().getClassName().equals("SuperClass")); } diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/TransientVariableTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/TransientVariableTest.java index cbcb22e1bb..01bede8692 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/TransientVariableTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/TransientVariableTest.java @@ -28,7 +28,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/VolatileVariableTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/VolatileVariableTest.java index 190e8411ae..af6d282c26 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/VolatileVariableTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java6/VolatileVariableTest.java @@ -28,7 +28,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getFields().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java8/DefaultMethodInterfaceImplTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java8/DefaultMethodInterfaceImplTest.java index c2d1861fb1..c69b2da052 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java8/DefaultMethodInterfaceImplTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java8/DefaultMethodInterfaceImplTest.java @@ -37,7 +37,7 @@ public void test() { assertJimpleStmts(method, expectedBodyStmts()); method = loadMethod(getDefaultMethodSignature()); assertJimpleStmts(method, expectedBodyStmts1()); - SootClass clazz = loadClass(getDeclaredClassSignature()); + SootClass clazz = loadClass(getDeclaredClassSignature()); assertTrue( clazz.getInterfaces().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java8/StaticMethodInterfaceImplTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java8/StaticMethodInterfaceImplTest.java index 712b628bf2..e6bec4d270 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java8/StaticMethodInterfaceImplTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java8/StaticMethodInterfaceImplTest.java @@ -38,7 +38,7 @@ public void test() { SootMethod staticMethod = loadMethod(getStaticMethodSignature()); assertJimpleStmts(staticMethod, expectedBodyStmts1()); assertTrue(staticMethod.isStatic() && staticMethod.getName().equals("initStatic")); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue( sootClass.getInterfaces().stream() .anyMatch( diff --git a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java9/PrivateMethodInterfaceImplTest.java b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java9/PrivateMethodInterfaceImplTest.java index 27b5dd0679..29fd93d840 100644 --- a/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java9/PrivateMethodInterfaceImplTest.java +++ b/sootup.jimple.parser/src/test/java/sootup/jimple/parser/javatestsuite/java9/PrivateMethodInterfaceImplTest.java @@ -28,7 +28,7 @@ public MethodSignature getMethodSignature() { public void test() { SootMethod method = loadMethod(getMethodSignature()); assertJimpleStmts(method, expectedBodyStmts()); - SootClass sootClass = loadClass(getDeclaredClassSignature()); + SootClass sootClass = loadClass(getDeclaredClassSignature()); assertTrue( sootClass.getInterfaces().stream() .anyMatch( diff --git a/sootup.tests/src/test/java/sootup/tests/CacheTest.java b/sootup.tests/src/test/java/sootup/tests/CacheTest.java index b638e23c67..c1fc1ab7dd 100644 --- a/sootup.tests/src/test/java/sootup/tests/CacheTest.java +++ b/sootup.tests/src/test/java/sootup/tests/CacheTest.java @@ -16,7 +16,6 @@ import sootup.core.model.SourceType; import sootup.core.types.ClassType; import sootup.java.bytecode.inputlocation.PathBasedAnalysisInputLocation; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; /** @@ -26,7 +25,7 @@ @Category(Java8Test.class) public class CacheTest { static Path pathToJar = Paths.get("../shared-test-resources/java-miniapps/MiniApp.jar"); - static List> inputLocations; + static List inputLocations; /** Load the jar file for analysis as input location. */ @BeforeClass @@ -39,7 +38,7 @@ public static void setupProject() { /** Test the {@link sootup.core.cache.FullCache} class */ @Test public void fullCacheTest() { - JavaView view = new JavaView(inputLocations, new FullCacheProvider<>()); + JavaView view = new JavaView(inputLocations, new FullCacheProvider()); assertEquals(0, view.getNumberOfStoredClasses()); ClassType miniAppClassType = view.getIdentifierFactory().getClassType("MiniApp"); @@ -58,7 +57,7 @@ public void fullCacheTest() { /** Test the {@link sootup.core.cache.LRUCache} class */ @Test public void lruCacheTest() { - JavaView view = new JavaView(inputLocations, new LRUCacheProvider<>(1)); + JavaView view = new JavaView(inputLocations, new LRUCacheProvider(1)); assertEquals(0, view.getNumberOfStoredClasses()); ClassType miniAppClassType = view.getIdentifierFactory().getClassType("MiniApp"); @@ -73,7 +72,7 @@ public void lruCacheTest() { view.getClasses(); assertEquals(1, view.getNumberOfStoredClasses()); - JavaView newView = new JavaView(inputLocations, new LRUCacheProvider<>()); + JavaView newView = new JavaView(inputLocations, new LRUCacheProvider()); newView.getClasses(); assertEquals(6, newView.getNumberOfStoredClasses()); } diff --git a/sootup.tests/src/test/java/sootup/tests/CallGraphTest.java b/sootup.tests/src/test/java/sootup/tests/CallGraphTest.java index 8915f6e355..12317111f1 100644 --- a/sootup.tests/src/test/java/sootup/tests/CallGraphTest.java +++ b/sootup.tests/src/test/java/sootup/tests/CallGraphTest.java @@ -18,7 +18,6 @@ import sootup.core.signatures.MethodSignature; import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; import sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation; @@ -40,7 +39,7 @@ protected AbstractCallGraphAlgorithm createAlgorithm(JavaView view) { } private JavaView createViewForClassPath(String classPath) { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add(new DefaultRTJarAnalysisInputLocation()); inputLocations.add(new JavaSourcePathAnalysisInputLocation(classPath)); @@ -63,7 +62,7 @@ CallGraph loadCallGraph() { identifierFactory.getMethodSignature( mainClassSignature, "main", "void", Collections.singletonList("java.lang.String[]")); - SootClass sc = view.getClass(mainClassSignature).orElse(null); + SootClass sc = view.getClass(mainClassSignature).orElse(null); assertNotNull(sc); SootMethod m = sc.getMethod(mainMethodSignature.getSubSignature()).orElse(null); assertNotNull(mainMethodSignature + " not found in classloader", m); diff --git a/sootup.tests/src/test/java/sootup/tests/MutableSootClientTest.java b/sootup.tests/src/test/java/sootup/tests/MutableSootClientTest.java index 196fbe9b89..c2f42a59b2 100644 --- a/sootup.tests/src/test/java/sootup/tests/MutableSootClientTest.java +++ b/sootup.tests/src/test/java/sootup/tests/MutableSootClientTest.java @@ -20,6 +20,7 @@ import sootup.core.types.ClassType; import sootup.java.bytecode.inputlocation.PathBasedAnalysisInputLocation; import sootup.java.core.*; +import sootup.java.core.types.JavaClassType; import sootup.java.core.views.MutableJavaView; /** @@ -29,7 +30,7 @@ @Category(Java8Test.class) public class MutableSootClientTest { static Path pathToJar = Paths.get("../shared-test-resources/java-miniapps/MiniApp.jar"); - static AnalysisInputLocation location; + static AnalysisInputLocation location; MutableJavaView mv; /** Load the jar file for analysis as input location. */ @@ -66,7 +67,7 @@ public void classRemovalTest() { */ @Test public void classAdditionTest() { - ClassType addedClassType = mv.getIdentifierFactory().getClassType("AddedClass"); + JavaClassType addedClassType = mv.getIdentifierFactory().getClassType("AddedClass"); OverridingJavaClassSource newClass = new OverridingJavaClassSource( location, @@ -100,7 +101,7 @@ public void methodRemovalTest() { Optional utilsClassOpt = mv.getClass(classType); assertTrue(utilsClassOpt.isPresent()); - SootClass utilsClass = utilsClassOpt.get(); + SootClass utilsClass = utilsClassOpt.get(); MethodSignature ms = mv.getIdentifierFactory() .parseMethodSignature(""); @@ -116,7 +117,7 @@ public void methodRemovalTest() { // longer in the view Optional updatedUtilsClassOpt = mv.getClass(classType); assertTrue(updatedUtilsClassOpt.isPresent()); - SootClass updatedUtilsClass = updatedUtilsClassOpt.get(); + SootClass updatedUtilsClass = updatedUtilsClassOpt.get(); assertFalse(updatedUtilsClass.getMethods().contains(removeDepartmentMethod)); } @@ -144,7 +145,7 @@ public void methodAdditionTest() { Optional utilsClassOpt = mv.getClass(classType); assertTrue(utilsClassOpt.isPresent()); - SootClass utilsClass = utilsClassOpt.get(); + SootClass utilsClass = utilsClassOpt.get(); assertFalse(utilsClass.getMethods().contains(newMethod)); mv.addMethod(newMethod); @@ -152,7 +153,7 @@ public void methodAdditionTest() { // longer in the view Optional updatedUtilsClassOpt = mv.getClass(classType); assertTrue(updatedUtilsClassOpt.isPresent()); - SootClass updatedUtilsClass = updatedUtilsClassOpt.get(); + SootClass updatedUtilsClass = updatedUtilsClassOpt.get(); assertTrue(updatedUtilsClass.getMethods().contains(newMethod)); } } diff --git a/sootup.tests/src/test/java/sootup/tests/WitherTest.java b/sootup.tests/src/test/java/sootup/tests/WitherTest.java index d0c8ab667c..8a9ba1c476 100644 --- a/sootup.tests/src/test/java/sootup/tests/WitherTest.java +++ b/sootup.tests/src/test/java/sootup/tests/WitherTest.java @@ -9,7 +9,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; -import sootup.core.frontend.SootClassSource; import sootup.core.jimple.Jimple; import sootup.core.jimple.basic.Local; import sootup.core.jimple.basic.LocalGenerator; @@ -18,7 +17,6 @@ import sootup.core.jimple.common.stmt.JIdentityStmt; import sootup.core.jimple.common.stmt.JReturnStmt; import sootup.core.model.Body; -import sootup.core.model.SootMethod; import sootup.core.model.SourceType; import sootup.core.signatures.MethodSignature; import sootup.core.types.ClassType; @@ -49,7 +47,7 @@ public void loadClassesWithWala() { public void testWithers() { LocalGenerator generator = new LocalGenerator(new HashSet<>()); - Optional> classSource = loader.getClassSource(declareClassSig); + Optional classSource = loader.getClassSource(declareClassSig); assertTrue(classSource.isPresent()); JavaSootClass sootClass = new JavaSootClass((JavaSootClassSource) classSource.get(), SourceType.Application); @@ -60,7 +58,7 @@ public void testWithers() { declareClassSig, "addDouble", "double", Arrays.asList("double", "float")); Optional m = sootClass.getMethod(methodSignature.getSubSignature()); assertTrue(m.isPresent()); - SootMethod method = m.get(); + JavaSootMethod method = m.get(); Body.BodyBuilder bodyBuilder = Body.builder(); final JIdentityStmt firstStmt = diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/HierarchyComparatorTest.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/HierarchyComparatorTest.java index 20db82d99d..772db9d66d 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/HierarchyComparatorTest.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/HierarchyComparatorTest.java @@ -11,23 +11,21 @@ import org.junit.Test; import org.junit.experimental.categories.Category; import sootup.core.inputlocation.AnalysisInputLocation; -import sootup.core.model.SootClass; import sootup.core.typehierarchy.HierarchyComparator; import sootup.core.types.ClassType; import sootup.core.views.View; import sootup.java.bytecode.inputlocation.DefaultRTJarAnalysisInputLocation; -import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; import sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation; @Category(Java8Test.class) public class HierarchyComparatorTest { - private static View> view; + private static View view; @BeforeClass public static void setUp() { - List> inputLocations = new ArrayList<>(); + List inputLocations = new ArrayList<>(); inputLocations.add( new JavaSourcePathAnalysisInputLocation( Collections.singleton("src/test/resources/javatypehierarchy/Comparator"))); diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/JavaTypeHierarchyTestBase.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/JavaTypeHierarchyTestBase.java index 5cc2592d95..3f0c261ffd 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/JavaTypeHierarchyTestBase.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/JavaTypeHierarchyTestBase.java @@ -6,7 +6,6 @@ import org.junit.runner.Description; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.java.core.JavaIdentifierFactory; -import sootup.java.core.JavaSootClass; import sootup.java.core.types.JavaClassType; import sootup.java.core.views.JavaView; import sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation; @@ -23,7 +22,7 @@ public abstract class JavaTypeHierarchyTestBase { public static class CustomTestWatcher extends TestWatcher { private String className = JavaTypeHierarchyTestBase.class.getSimpleName(); - private AnalysisInputLocation srcCode; + private AnalysisInputLocation srcCode; private JavaView view; @Override diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/ViewTypeHierarchyTest.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/ViewTypeHierarchyTest.java index 61a13e3914..00c50cd78a 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/ViewTypeHierarchyTest.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/ViewTypeHierarchyTest.java @@ -35,6 +35,7 @@ import sootup.core.types.Type; import sootup.core.util.ImmutableUtils; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; +import sootup.java.core.JavaIdentifierFactory; import sootup.java.core.OverridingJavaClassSource; import sootup.java.core.views.JavaView; @@ -186,7 +187,7 @@ public void nullTypeSubtyping() { @Test public void addType() { - IdentifierFactory factory = view.getIdentifierFactory(); + JavaIdentifierFactory factory = view.getIdentifierFactory(); OverridingJavaClassSource classSource = new OverridingJavaClassSource( analysisInputLocation, diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/AbstractClassInheritanceTest.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/AbstractClassInheritanceTest.java index 453be320f8..f2063bfa68 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/AbstractClassInheritanceTest.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/AbstractClassInheritanceTest.java @@ -19,7 +19,7 @@ public class AbstractClassInheritanceTest extends JavaTypeHierarchyTestBase { @Test public void method() { - SootClass sootClass = + SootClass sootClass = customTestWatcher .getView() .getClass(identifierFactory.getClassType(customTestWatcher.getClassName())) @@ -29,7 +29,7 @@ public void method() { ClassType superClassType = sootClass.getSuperclass().orElse(null); assertNotNull(superClassType); - SootClass superClass = customTestWatcher.getView().getClass(superClassType).orElse(null); + SootClass superClass = customTestWatcher.getView().getClass(superClassType).orElse(null); assertNotNull(superClass); assertTrue(superClass.isAbstract()); diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/ClassInheritanceWithAdditionalMethodTest.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/ClassInheritanceWithAdditionalMethodTest.java index 1b8eb6941b..107cfca494 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/ClassInheritanceWithAdditionalMethodTest.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/ClassInheritanceWithAdditionalMethodTest.java @@ -63,7 +63,7 @@ public void testSuperClassIsSuperclassOfClassInheritanceClass() { /** Test: "ClassInheritanceWithAdditionalMethod" has additional method. */ @Test public void ClassInheritanceClassHasAdditionalMethod() { - SootClass sootClass = + SootClass sootClass = customTestWatcher .getView() .getClass( @@ -72,7 +72,7 @@ public void ClassInheritanceClassHasAdditionalMethod() { .getIdentifierFactory() .getClassType(customTestWatcher.getClassName())) .get(); - SootClass superClass = + SootClass superClass = customTestWatcher.getView().getClass(sootClass.getSuperclass().get()).get(); Set methodsSetOfSootClass = (Set) sootClass.getMethods(); diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritDataWithProtectedMethodTest.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritDataWithProtectedMethodTest.java index 86c5d2bf43..47486f67c8 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritDataWithProtectedMethodTest.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritDataWithProtectedMethodTest.java @@ -29,7 +29,7 @@ public void method() { assertEquals(typeHierarchy.superClassOf(sootClassType), getClassType("SuperClass")); assertTrue(typeHierarchy.isSubtype(getClassType("SuperClass"), sootClassType)); - SootClass sootClass = + SootClass sootClass = customTestWatcher .getView() .getClass( diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritDataWithPublicMethodTest.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritDataWithPublicMethodTest.java index 8373879b45..22a038f9ba 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritDataWithPublicMethodTest.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritDataWithPublicMethodTest.java @@ -29,7 +29,7 @@ public void method() { assertEquals(typeHierarchy.superClassOf(sootClassType), getClassType("SuperClass")); assertTrue(typeHierarchy.isSubtype(getClassType("SuperClass"), sootClassType)); - SootClass sootClass = + SootClass sootClass = customTestWatcher .getView() .getClass( diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritPublicDataTest.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritPublicDataTest.java index cabeafd955..cba6af7abe 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritPublicDataTest.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/InheritPublicDataTest.java @@ -29,7 +29,7 @@ public void method() { assertEquals(typeHierarchy.superClassOf(sootClassType), getClassType("SuperClass")); assertTrue(typeHierarchy.isSubtype(getClassType("SuperClass"), sootClassType)); - SootClass sootClass = + SootClass sootClass = customTestWatcher .getView() .getClass( diff --git a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/MethodOverridingTest.java b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/MethodOverridingTest.java index 81f38eed6d..4a12d8420d 100644 --- a/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/MethodOverridingTest.java +++ b/sootup.tests/src/test/java/sootup/tests/typehierarchy/viewtypehierarchytestcase/MethodOverridingTest.java @@ -25,7 +25,7 @@ public void method() { assertEquals(typeHierarchy.superClassOf(sootClassType), getClassType("SuperClass")); assertTrue(typeHierarchy.isSubtype(getClassType("SuperClass"), sootClassType)); - SootClass sootClass = + SootClass sootClass = customTestWatcher .getView() .getClass( @@ -44,7 +44,7 @@ public void method() { Body body = sootMethod.getBody(); assertNotNull(body); - SootClass superClass = + SootClass superClass = customTestWatcher.getView().getClass(sootClass.getSuperclass().get()).get(); SootMethod superMethod = superClass diff --git a/sootup.tests/src/test/java/sootup/tests/validator/FieldRefValidatorTest.java b/sootup.tests/src/test/java/sootup/tests/validator/FieldRefValidatorTest.java index 289e04003f..5cda834d5a 100644 --- a/sootup.tests/src/test/java/sootup/tests/validator/FieldRefValidatorTest.java +++ b/sootup.tests/src/test/java/sootup/tests/validator/FieldRefValidatorTest.java @@ -26,7 +26,7 @@ public class FieldRefValidatorTest { FieldRefValidator fieldRefValidator; JimpleView jimpleView; - Collection> classes; + Collection classes; @Before public void Setup() { @@ -61,12 +61,12 @@ public PackageName getPackageName() { new JimpleAnalysisInputLocation(Paths.get(classPath), SourceType.Application); jimpleView = new JimpleView(jimpleInputLocation); - final Optional> classSource1 = jimpleView.getClass(classTypeFieldRefValidator); + final Optional classSource1 = jimpleView.getClass(classTypeFieldRefValidator); assertFalse(classSource1.isPresent()); classes = new HashSet<>(); // Set to track the classes to check - for (SootClass aClass : jimpleView.getClasses()) { + for (SootClass aClass : jimpleView.getClasses()) { if (!aClass.isLibraryClass()) { classes.add(aClass); } diff --git a/sootup.tests/src/test/java/sootup/tests/validator/NewValidatorTest.java b/sootup.tests/src/test/java/sootup/tests/validator/NewValidatorTest.java index d414ac2e78..2db1b825d0 100644 --- a/sootup.tests/src/test/java/sootup/tests/validator/NewValidatorTest.java +++ b/sootup.tests/src/test/java/sootup/tests/validator/NewValidatorTest.java @@ -26,7 +26,7 @@ public class NewValidatorTest { NewValidator validator; JimpleView view; - Collection> classes; + Collection classes; @Before public void Setup() { @@ -61,12 +61,12 @@ public PackageName getPackageName() { new JimpleAnalysisInputLocation(Paths.get(classPath), SourceType.Application); view = new JimpleView(jimpleInputLocation); - final Optional> classSource1 = view.getClass(classTypeNewValidator); + final Optional classSource1 = view.getClass(classTypeNewValidator); assertFalse(classSource1.isPresent()); classes = new HashSet<>(); // Set to track the classes to check - for (SootClass aClass : view.getClasses()) { + for (SootClass aClass : view.getClasses()) { if (!aClass.isLibraryClass()) { classes.add(aClass); }