diff --git a/Makefile b/Makefile index 62f215d7..301ff2e3 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,21 @@ test: test-e2e: bash scripts/test_e2e.sh $(type) +# Build the SootUp fat JAR from source. +# The built artifact is placed in: +# build/sootup/SootUpWrapper/target/sootup-wrapper-1.0.0.jar +.PHONY: build-sootup-jar +build-sootup-jar: + cd build/sootup/SootUpWrapper && mvn clean package -q + +# Build the SootUp fat JAR AND copy it into the Go CLI embedded directory so +# that it is picked up by the //go:embed directive in sootup_handler.go. +.PHONY: build-sootup-jar-embed +build-sootup-jar-embed: build-sootup-jar + cp build/sootup/SootUpWrapper/target/sootup-wrapper-1.0.0.jar \ + internal/callgraph/language/java/embedded/SootUpWrapper.jar + @echo "SootUpWrapper.jar embedded at internal/callgraph/language/java/embedded/SootUpWrapper.jar" + .PHONY: test-e2e-docker docker-build-dev: docker build -f build/docker/alpine.Dockerfile -t debricked/cli:dev --target dev . diff --git a/build/sootup/SootUpWrapper/pom.xml b/build/sootup/SootUpWrapper/pom.xml new file mode 100644 index 00000000..53b015ac --- /dev/null +++ b/build/sootup/SootUpWrapper/pom.xml @@ -0,0 +1,90 @@ + + + 4.0.0 + com.debricked.sootup + sootup-wrapper + 1.0.0 + SootUpWrapper + + Callgraph generator using SootUp — replaces SootWrapper (classic Soot). + Accepts the same CLI interface as SootWrapper.jar for drop-in comparison. + Algorithms: CHA (default) or RTA, selectable via -a flag. + + + 11 + 11 + UTF-8 + 1.3.0 + + + + + org.soot-oss + sootup.core + ${sootup.version} + + + + org.soot-oss + sootup.java.core + ${sootup.version} + + + + org.soot-oss + sootup.java.bytecode + ${sootup.version} + + + + org.soot-oss + sootup.callgraph + ${sootup.version} + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + + + org.apache.maven.plugins + maven-shade-plugin + 3.5.0 + + + package + + shade + + + false + + + com.debricked.sootup.SootUpWrapper + + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + diff --git a/build/sootup/SootUpWrapper/sootup/core/BaseViewChangeListener.class b/build/sootup/SootUpWrapper/sootup/core/BaseViewChangeListener.class new file mode 100644 index 00000000..fa47b30f Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/BaseViewChangeListener.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/IdentifierFactory.class b/build/sootup/SootUpWrapper/sootup/core/IdentifierFactory.class new file mode 100644 index 00000000..e45917dd Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/IdentifierFactory.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/Language.class b/build/sootup/SootUpWrapper/sootup/core/Language.class new file mode 100644 index 00000000..d7fd35fb Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/Language.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/ViewChangeListener.class b/build/sootup/SootUpWrapper/sootup/core/ViewChangeListener.class new file mode 100644 index 00000000..7e81a327 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/ViewChangeListener.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/ClassCache.class b/build/sootup/SootUpWrapper/sootup/core/cache/ClassCache.class new file mode 100644 index 00000000..65baf46d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/ClassCache.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/FullCache.class b/build/sootup/SootUpWrapper/sootup/core/cache/FullCache.class new file mode 100644 index 00000000..73e6802e Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/FullCache.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/LRUCache$1.class b/build/sootup/SootUpWrapper/sootup/core/cache/LRUCache$1.class new file mode 100644 index 00000000..1a881319 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/LRUCache$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/LRUCache.class b/build/sootup/SootUpWrapper/sootup/core/cache/LRUCache.class new file mode 100644 index 00000000..dbb30fd2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/LRUCache.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/MutableClassCache.class b/build/sootup/SootUpWrapper/sootup/core/cache/MutableClassCache.class new file mode 100644 index 00000000..c2fadf37 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/MutableClassCache.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/MutableFullCache.class b/build/sootup/SootUpWrapper/sootup/core/cache/MutableFullCache.class new file mode 100644 index 00000000..78c9256a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/MutableFullCache.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/provider/ClassCacheProvider.class b/build/sootup/SootUpWrapper/sootup/core/cache/provider/ClassCacheProvider.class new file mode 100644 index 00000000..21605c95 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/provider/ClassCacheProvider.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/provider/FullCacheProvider.class b/build/sootup/SootUpWrapper/sootup/core/cache/provider/FullCacheProvider.class new file mode 100644 index 00000000..f41a9262 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/provider/FullCacheProvider.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/provider/LRUCacheProvider.class b/build/sootup/SootUpWrapper/sootup/core/cache/provider/LRUCacheProvider.class new file mode 100644 index 00000000..85e6ccf2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/provider/LRUCacheProvider.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/cache/provider/MutableFullCacheProvider.class b/build/sootup/SootUpWrapper/sootup/core/cache/provider/MutableFullCacheProvider.class new file mode 100644 index 00000000..02b017a0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/cache/provider/MutableFullCacheProvider.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/frontend/AbstractClassSource.class b/build/sootup/SootUpWrapper/sootup/core/frontend/AbstractClassSource.class new file mode 100644 index 00000000..968900aa Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/frontend/AbstractClassSource.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/frontend/BodySource.class b/build/sootup/SootUpWrapper/sootup/core/frontend/BodySource.class new file mode 100644 index 00000000..d03617d2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/frontend/BodySource.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/frontend/ClassProvider.class b/build/sootup/SootUpWrapper/sootup/core/frontend/ClassProvider.class new file mode 100644 index 00000000..3dc08d02 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/frontend/ClassProvider.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/frontend/OverridingBodySource.class b/build/sootup/SootUpWrapper/sootup/core/frontend/OverridingBodySource.class new file mode 100644 index 00000000..8203e303 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/frontend/OverridingBodySource.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/frontend/OverridingClassSource.class b/build/sootup/SootUpWrapper/sootup/core/frontend/OverridingClassSource.class new file mode 100644 index 00000000..887919ff Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/frontend/OverridingClassSource.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/frontend/ResolveException.class b/build/sootup/SootUpWrapper/sootup/core/frontend/ResolveException.class new file mode 100644 index 00000000..2b4136ca Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/frontend/ResolveException.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/frontend/SootClassSource.class b/build/sootup/SootUpWrapper/sootup/core/frontend/SootClassSource.class new file mode 100644 index 00000000..2445f404 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/frontend/SootClassSource.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/BackwardsStmtGraph.class b/build/sootup/SootUpWrapper/sootup/core/graph/BackwardsStmtGraph.class new file mode 100644 index 00000000..c5ab340f Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/BackwardsStmtGraph.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/BasicBlock.class b/build/sootup/SootUpWrapper/sootup/core/graph/BasicBlock.class new file mode 100644 index 00000000..86db7416 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/BasicBlock.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$1.class b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$1.class new file mode 100644 index 00000000..1327a1c6 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$1.class b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$1.class new file mode 100644 index 00000000..3b6d287a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$2.class b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$2.class new file mode 100644 index 00000000..98e9eb11 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$2.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection.class b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection.class new file mode 100644 index 00000000..76ded2b6 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder.class b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder.class new file mode 100644 index 00000000..cf394709 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceFinder.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/DominanceTree.class b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceTree.class new file mode 100644 index 00000000..3e66b930 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/DominanceTree.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/ForwardingBasicBlock.class b/build/sootup/SootUpWrapper/sootup/core/graph/ForwardingBasicBlock.class new file mode 100644 index 00000000..c088634f Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/ForwardingBasicBlock.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/ForwardingStmtGraph.class b/build/sootup/SootUpWrapper/sootup/core/graph/ForwardingStmtGraph.class new file mode 100644 index 00000000..82b150c0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/ForwardingStmtGraph.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBasicBlock.class b/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBasicBlock.class new file mode 100644 index 00000000..34fa227b Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBasicBlock.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$1.class b/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$1.class new file mode 100644 index 00000000..4f1c4bf1 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$ImmutableBasicBlock.class b/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$ImmutableBasicBlock.class new file mode 100644 index 00000000..2e764dbf Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$ImmutableBasicBlock.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph.class b/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph.class new file mode 100644 index 00000000..304cea4a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlock.class b/build/sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlock.class new file mode 100644 index 00000000..387d4393 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlock.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlockImpl.class b/build/sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlockImpl.class new file mode 100644 index 00000000..ffb723c2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlockImpl.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/MutableBlockStmtGraph.class b/build/sootup/SootUpWrapper/sootup/core/graph/MutableBlockStmtGraph.class new file mode 100644 index 00000000..d6dde31c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/MutableBlockStmtGraph.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/MutableStmtGraph.class b/build/sootup/SootUpWrapper/sootup/core/graph/MutableStmtGraph.class new file mode 100644 index 00000000..864bd33d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/MutableStmtGraph.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/PostDominanceFinder.class b/build/sootup/SootUpWrapper/sootup/core/graph/PostDominanceFinder.class new file mode 100644 index 00000000..969f0e87 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/PostDominanceFinder.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator$Frame.class b/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator$Frame.class new file mode 100644 index 00000000..8b58d5d9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator$Frame.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator.class b/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator.class new file mode 100644 index 00000000..52761331 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal.class b/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal.class new file mode 100644 index 00000000..ace2bbb7 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal$BlockIterator.class b/build/sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal$BlockIterator.class new file mode 100644 index 00000000..278865c0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal$BlockIterator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal.class b/build/sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal.class new file mode 100644 index 00000000..7146fdc1 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIterator.class b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIterator.class new file mode 100644 index 00000000..acfff8ac Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIterator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIteratorAndTrapAggregator.class b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIteratorAndTrapAggregator.class new file mode 100644 index 00000000..5bb44f39 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIteratorAndTrapAggregator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockStmtGraphIterator.class b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockStmtGraphIterator.class new file mode 100644 index 00000000..132086f5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockStmtGraphIterator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph.class b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph.class new file mode 100644 index 00000000..bb4caa09 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraph.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraphBlockIterator.class b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraphBlockIterator.class new file mode 100644 index 00000000..8e76e8f5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/graph/StmtGraphBlockIterator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/inputlocation/AnalysisInputLocation.class b/build/sootup/SootUpWrapper/sootup/core/inputlocation/AnalysisInputLocation.class new file mode 100644 index 00000000..6cb5f0db Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/inputlocation/AnalysisInputLocation.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/inputlocation/EagerInputLocation.class b/build/sootup/SootUpWrapper/sootup/core/inputlocation/EagerInputLocation.class new file mode 100644 index 00000000..821fa775 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/inputlocation/EagerInputLocation.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/inputlocation/FileType.class b/build/sootup/SootUpWrapper/sootup/core/inputlocation/FileType.class new file mode 100644 index 00000000..4a01ae1a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/inputlocation/FileType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/IgnoreLocalNameComparator.class b/build/sootup/SootUpWrapper/sootup/core/jimple/IgnoreLocalNameComparator.class new file mode 100644 index 00000000..129ef5f8 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/IgnoreLocalNameComparator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/Jimple.class b/build/sootup/SootUpWrapper/sootup/core/jimple/Jimple.class new file mode 100644 index 00000000..8ea7c2b4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/Jimple.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/EquivTo.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/EquivTo.class new file mode 100644 index 00000000..1cd5d681 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/EquivTo.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/FullStmtPositionInfo.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/FullStmtPositionInfo.class new file mode 100644 index 00000000..0c1e1989 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/FullStmtPositionInfo.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Immediate.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Immediate.class new file mode 100644 index 00000000..d7862933 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Immediate.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/JimpleComparator.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/JimpleComparator.class new file mode 100644 index 00000000..982ae2cf Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/JimpleComparator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LValue.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LValue.class new file mode 100644 index 00000000..6bac4d4f Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LValue.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Local.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Local.class new file mode 100644 index 00000000..5e631c8a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Local.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$1.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$1.class new file mode 100644 index 00000000..374b9f20 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$NamingSwitch.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$NamingSwitch.class new file mode 100644 index 00000000..d977d682 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$NamingSwitch.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator.class new file mode 100644 index 00000000..dd558083 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/NoPositionInformation.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/NoPositionInformation.class new file mode 100644 index 00000000..13c23390 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/NoPositionInformation.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/SimpleStmtPositionInfo.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/SimpleStmtPositionInfo.class new file mode 100644 index 00000000..35126825 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/SimpleStmtPositionInfo.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo$1.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo$1.class new file mode 100644 index 00000000..ab864f6d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo.class new file mode 100644 index 00000000..446d5ca4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Trap.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Trap.class new file mode 100644 index 00000000..2af7661a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Trap.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Value.class b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Value.class new file mode 100644 index 00000000..eb221ad0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/basic/Value.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/BooleanConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/BooleanConstant.class new file mode 100644 index 00000000..2c42965d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/BooleanConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ClassConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ClassConstant.class new file mode 100644 index 00000000..33617767 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ClassConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ComparableConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ComparableConstant.class new file mode 100644 index 00000000..abd62764 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ComparableConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/Constant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/Constant.class new file mode 100644 index 00000000..4d16737e Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/Constant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/DoubleConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/DoubleConstant.class new file mode 100644 index 00000000..e40ea28a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/DoubleConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/EnumConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/EnumConstant.class new file mode 100644 index 00000000..68875c17 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/EnumConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/FloatConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/FloatConstant.class new file mode 100644 index 00000000..0463dbb4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/FloatConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/IntConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/IntConstant.class new file mode 100644 index 00000000..19b94bef Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/IntConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/LogicalConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/LogicalConstant.class new file mode 100644 index 00000000..c4c8ea5a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/LogicalConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/LongConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/LongConstant.class new file mode 100644 index 00000000..ee4bacb3 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/LongConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle$Kind.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle$Kind.class new file mode 100644 index 00000000..ab8faf45 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle$Kind.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle.class new file mode 100644 index 00000000..d80b5555 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodType.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodType.class new file mode 100644 index 00000000..31e61a66 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/NullConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/NullConstant.class new file mode 100644 index 00000000..2270fd99 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/NullConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/NumericConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/NumericConstant.class new file mode 100644 index 00000000..5efc4822 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/NumericConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/RealConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/RealConstant.class new file mode 100644 index 00000000..29d7c81e Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/RealConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ShiftableConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ShiftableConstant.class new file mode 100644 index 00000000..402ba8f0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/ShiftableConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/StringConstant.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/StringConstant.class new file mode 100644 index 00000000..921d6f06 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/constant/StringConstant.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractBinopExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractBinopExpr.class new file mode 100644 index 00000000..a6bfcae1 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractBinopExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractConditionExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractConditionExpr.class new file mode 100644 index 00000000..21030fa3 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractConditionExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractFloatBinopExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractFloatBinopExpr.class new file mode 100644 index 00000000..a635a309 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractFloatBinopExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInstanceInvokeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInstanceInvokeExpr.class new file mode 100644 index 00000000..5644a7d1 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInstanceInvokeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntBinopExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntBinopExpr.class new file mode 100644 index 00000000..ed3f7d26 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntBinopExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntLongBinopExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntLongBinopExpr.class new file mode 100644 index 00000000..478785cd Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntLongBinopExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInvokeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInvokeExpr.class new file mode 100644 index 00000000..279a633b Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInvokeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractUnopExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractUnopExpr.class new file mode 100644 index 00000000..d41fb3f4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractUnopExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/Expr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/Expr.class new file mode 100644 index 00000000..b63a0312 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/Expr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAddExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAddExpr.class new file mode 100644 index 00000000..7cccae24 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAddExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAndExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAndExpr.class new file mode 100644 index 00000000..a4bebd80 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAndExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCastExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCastExpr.class new file mode 100644 index 00000000..427ed3a2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCastExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpExpr.class new file mode 100644 index 00000000..6467c8ef Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpgExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpgExpr.class new file mode 100644 index 00000000..5a60fbf5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpgExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmplExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmplExpr.class new file mode 100644 index 00000000..b5adf1db Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmplExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDivExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDivExpr.class new file mode 100644 index 00000000..a6115314 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDivExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDynamicInvokeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDynamicInvokeExpr.class new file mode 100644 index 00000000..c1d573c8 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDynamicInvokeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JEqExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JEqExpr.class new file mode 100644 index 00000000..f5545942 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JEqExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGeExpr.class new file mode 100644 index 00000000..310fe93c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGtExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGtExpr.class new file mode 100644 index 00000000..69a22e4d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGtExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInstanceOfExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInstanceOfExpr.class new file mode 100644 index 00000000..dbd01b6c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInstanceOfExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInterfaceInvokeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInterfaceInvokeExpr.class new file mode 100644 index 00000000..73145527 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInterfaceInvokeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLeExpr.class new file mode 100644 index 00000000..8a9aa695 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLengthExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLengthExpr.class new file mode 100644 index 00000000..2e6160f2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLengthExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLtExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLtExpr.class new file mode 100644 index 00000000..be4226ce Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLtExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JMulExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JMulExpr.class new file mode 100644 index 00000000..ec83c708 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JMulExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNeExpr.class new file mode 100644 index 00000000..28557e3d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNegExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNegExpr.class new file mode 100644 index 00000000..428565e6 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNegExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewArrayExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewArrayExpr.class new file mode 100644 index 00000000..91850d4f Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewArrayExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewExpr.class new file mode 100644 index 00000000..e28f90ee Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewMultiArrayExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewMultiArrayExpr.class new file mode 100644 index 00000000..dff8597c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewMultiArrayExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JOrExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JOrExpr.class new file mode 100644 index 00000000..4cf97fd0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JOrExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JPhiExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JPhiExpr.class new file mode 100644 index 00000000..c156ea2f Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JPhiExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JRemExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JRemExpr.class new file mode 100644 index 00000000..d1208b1b Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JRemExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShlExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShlExpr.class new file mode 100644 index 00000000..ac06816d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShlExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShrExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShrExpr.class new file mode 100644 index 00000000..0b82c294 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShrExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSpecialInvokeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSpecialInvokeExpr.class new file mode 100644 index 00000000..034330aa Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSpecialInvokeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JStaticInvokeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JStaticInvokeExpr.class new file mode 100644 index 00000000..4bb23b5a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JStaticInvokeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSubExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSubExpr.class new file mode 100644 index 00000000..8c3de8fa Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSubExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JUshrExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JUshrExpr.class new file mode 100644 index 00000000..f97b27e9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JUshrExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JVirtualInvokeExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JVirtualInvokeExpr.class new file mode 100644 index 00000000..96e42725 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JVirtualInvokeExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JXorExpr.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JXorExpr.class new file mode 100644 index 00000000..b1258007 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/expr/JXorExpr.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/ConcreteRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/ConcreteRef.class new file mode 100644 index 00000000..af598797 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/ConcreteRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/IdentityRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/IdentityRef.class new file mode 100644 index 00000000..519467e5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/IdentityRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JArrayRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JArrayRef.class new file mode 100644 index 00000000..ef0da0f4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JArrayRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JCaughtExceptionRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JCaughtExceptionRef.class new file mode 100644 index 00000000..925fcafa Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JCaughtExceptionRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JFieldRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JFieldRef.class new file mode 100644 index 00000000..bbe4f6d7 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JFieldRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JInstanceFieldRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JInstanceFieldRef.class new file mode 100644 index 00000000..e812d7af Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JInstanceFieldRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JParameterRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JParameterRef.class new file mode 100644 index 00000000..dbd73d48 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JParameterRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JStaticFieldRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JStaticFieldRef.class new file mode 100644 index 00000000..a50d012f Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JStaticFieldRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JThisRef.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JThisRef.class new file mode 100644 index 00000000..d30e35f8 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/JThisRef.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/Ref.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/Ref.class new file mode 100644 index 00000000..ba0e2365 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/ref/Ref.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractDefinitionStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractDefinitionStmt.class new file mode 100644 index 00000000..40fbb97e Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractDefinitionStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractStmt.class new file mode 100644 index 00000000..17ba7e61 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/BranchingStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/BranchingStmt.class new file mode 100644 index 00000000..56afd3c0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/BranchingStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/FallsThroughStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/FallsThroughStmt.class new file mode 100644 index 00000000..5810a5b1 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/FallsThroughStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JAssignStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JAssignStmt.class new file mode 100644 index 00000000..e0a54d7c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JAssignStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JGotoStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JGotoStmt.class new file mode 100644 index 00000000..04f4c6f8 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JGotoStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIdentityStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIdentityStmt.class new file mode 100644 index 00000000..0d69be96 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIdentityStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIfStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIfStmt.class new file mode 100644 index 00000000..cccc0ded Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIfStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JInvokeStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JInvokeStmt.class new file mode 100644 index 00000000..f5435adf Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JInvokeStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JNopStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JNopStmt.class new file mode 100644 index 00000000..dd61fd70 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JNopStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnStmt.class new file mode 100644 index 00000000..a4a2993d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnVoidStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnVoidStmt.class new file mode 100644 index 00000000..7487d5a5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnVoidStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JThrowStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JThrowStmt.class new file mode 100644 index 00000000..b62ac8ce Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JThrowStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/Stmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/Stmt.class new file mode 100644 index 00000000..9f7f23c9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/common/stmt/Stmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JBreakpointStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JBreakpointStmt.class new file mode 100644 index 00000000..1d52eff5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JBreakpointStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JEnterMonitorStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JEnterMonitorStmt.class new file mode 100644 index 00000000..bc9f1bd9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JEnterMonitorStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JExitMonitorStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JExitMonitorStmt.class new file mode 100644 index 00000000..ce2aa527 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JExitMonitorStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JRetStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JRetStmt.class new file mode 100644 index 00000000..62b275f9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JRetStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList$1.class b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList$1.class new file mode 100644 index 00000000..3413dc5b Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList.class b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList.class new file mode 100644 index 00000000..b66806e4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt.class b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt.class new file mode 100644 index 00000000..82986564 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractConstantVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractConstantVisitor.class new file mode 100644 index 00000000..5f964dce Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractConstantVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractExprVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractExprVisitor.class new file mode 100644 index 00000000..e0ba74d6 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractExprVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractImmediateVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractImmediateVisitor.class new file mode 100644 index 00000000..06ac4805 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractImmediateVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractRefVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractRefVisitor.class new file mode 100644 index 00000000..0acd113c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractRefVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractStmtVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractStmtVisitor.class new file mode 100644 index 00000000..4e930f03 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractStmtVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractTypeVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractTypeVisitor.class new file mode 100644 index 00000000..3ebd6c3f Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractTypeVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractValueVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractValueVisitor.class new file mode 100644 index 00000000..37a1d673 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractValueVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractVisitor.class new file mode 100644 index 00000000..5e6107a1 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/Acceptor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/Acceptor.class new file mode 100644 index 00000000..87ad3e5a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/Acceptor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ConstantVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ConstantVisitor.class new file mode 100644 index 00000000..60703f79 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ConstantVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ExprVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ExprVisitor.class new file mode 100644 index 00000000..87239b4e Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ExprVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ImmediateVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ImmediateVisitor.class new file mode 100644 index 00000000..c3bac0f3 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ImmediateVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/RefVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/RefVisitor.class new file mode 100644 index 00000000..02d847e0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/RefVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseExprVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseExprVisitor.class new file mode 100644 index 00000000..49c43f95 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseExprVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseRefVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseRefVisitor.class new file mode 100644 index 00000000..ff90c063 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseRefVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseStmtVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseStmtVisitor.class new file mode 100644 index 00000000..29d27177 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseStmtVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/StmtVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/StmtVisitor.class new file mode 100644 index 00000000..30012af2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/StmtVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/TypeVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/TypeVisitor.class new file mode 100644 index 00000000..5874c7d4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/TypeVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ValueVisitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ValueVisitor.class new file mode 100644 index 00000000..61b5b22a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/ValueVisitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/Visitor.class b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/Visitor.class new file mode 100644 index 00000000..953954e1 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/jimple/visitor/Visitor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/AbstractClass.class b/build/sootup/SootUpWrapper/sootup/core/model/AbstractClass.class new file mode 100644 index 00000000..8d6e24b1 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/AbstractClass.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/Body$1.class b/build/sootup/SootUpWrapper/sootup/core/model/Body$1.class new file mode 100644 index 00000000..fc175b3a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/Body$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/Body$BodyBuilder.class b/build/sootup/SootUpWrapper/sootup/core/model/Body$BodyBuilder.class new file mode 100644 index 00000000..17aae9ab Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/Body$BodyBuilder.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/Body.class b/build/sootup/SootUpWrapper/sootup/core/model/Body.class new file mode 100644 index 00000000..72aa6ce0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/Body.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/BuilderException.class b/build/sootup/SootUpWrapper/sootup/core/model/BuilderException.class new file mode 100644 index 00000000..c8206b63 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/BuilderException.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/ClassModifier.class b/build/sootup/SootUpWrapper/sootup/core/model/ClassModifier.class new file mode 100644 index 00000000..a0745543 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/ClassModifier.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/Field.class b/build/sootup/SootUpWrapper/sootup/core/model/Field.class new file mode 100644 index 00000000..8b5dcc42 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/Field.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/FieldModifier.class b/build/sootup/SootUpWrapper/sootup/core/model/FieldModifier.class new file mode 100644 index 00000000..e88b3355 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/FieldModifier.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/FullPosition.class b/build/sootup/SootUpWrapper/sootup/core/model/FullPosition.class new file mode 100644 index 00000000..f16baf65 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/FullPosition.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/HasPosition.class b/build/sootup/SootUpWrapper/sootup/core/model/HasPosition.class new file mode 100644 index 00000000..2ed85cbc Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/HasPosition.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/LinePosition.class b/build/sootup/SootUpWrapper/sootup/core/model/LinePosition.class new file mode 100644 index 00000000..b6bc8226 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/LinePosition.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/Method.class b/build/sootup/SootUpWrapper/sootup/core/model/Method.class new file mode 100644 index 00000000..134c34a4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/Method.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/MethodModifier.class b/build/sootup/SootUpWrapper/sootup/core/model/MethodModifier.class new file mode 100644 index 00000000..b6f2fb38 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/MethodModifier.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/Position.class b/build/sootup/SootUpWrapper/sootup/core/model/Position.class new file mode 100644 index 00000000..779688ac Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/Position.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootClass.class b/build/sootup/SootUpWrapper/sootup/core/model/SootClass.class new file mode 100644 index 00000000..8bf6aded Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootClass.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootClassMember.class b/build/sootup/SootUpWrapper/sootup/core/model/SootClassMember.class new file mode 100644 index 00000000..c85e2740 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootClassMember.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootField$BuildStep.class b/build/sootup/SootUpWrapper/sootup/core/model/SootField$BuildStep.class new file mode 100644 index 00000000..3395c3c4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootField$BuildStep.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootField$ModifierStep.class b/build/sootup/SootUpWrapper/sootup/core/model/SootField$ModifierStep.class new file mode 100644 index 00000000..0ded0c60 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootField$ModifierStep.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootField$SignatureStep.class b/build/sootup/SootUpWrapper/sootup/core/model/SootField$SignatureStep.class new file mode 100644 index 00000000..033aafd9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootField$SignatureStep.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootField$SootFieldBuilder.class b/build/sootup/SootUpWrapper/sootup/core/model/SootField$SootFieldBuilder.class new file mode 100644 index 00000000..d2ac7dfa Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootField$SootFieldBuilder.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootField.class b/build/sootup/SootUpWrapper/sootup/core/model/SootField.class new file mode 100644 index 00000000..98c7dc3c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootField.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$BuildStep.class b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$BuildStep.class new file mode 100644 index 00000000..c7877b64 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$BuildStep.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$MethodSourceStep.class b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$MethodSourceStep.class new file mode 100644 index 00000000..a0cdd0b0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$MethodSourceStep.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$ModifierStep.class b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$ModifierStep.class new file mode 100644 index 00000000..c78435d5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$ModifierStep.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$SignatureStep.class b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$SignatureStep.class new file mode 100644 index 00000000..59aefeb4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$SignatureStep.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$SootMethodBuilder.class b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$SootMethodBuilder.class new file mode 100644 index 00000000..11567a35 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$SootMethodBuilder.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$ThrownExceptionsStep.class b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$ThrownExceptionsStep.class new file mode 100644 index 00000000..9ff00d41 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod$ThrownExceptionsStep.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SootMethod.class b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod.class new file mode 100644 index 00000000..83c26eab Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SootMethod.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/model/SourceType.class b/build/sootup/SootUpWrapper/sootup/core/model/SourceType.class new file mode 100644 index 00000000..4fc2f9bb Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/model/SourceType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/signatures/FieldSignature.class b/build/sootup/SootUpWrapper/sootup/core/signatures/FieldSignature.class new file mode 100644 index 00000000..4f7cef50 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/signatures/FieldSignature.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/signatures/FieldSubSignature.class b/build/sootup/SootUpWrapper/sootup/core/signatures/FieldSubSignature.class new file mode 100644 index 00000000..83ac3e0b Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/signatures/FieldSubSignature.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/signatures/MethodSignature.class b/build/sootup/SootUpWrapper/sootup/core/signatures/MethodSignature.class new file mode 100644 index 00000000..1bcec724 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/signatures/MethodSignature.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/signatures/MethodSubSignature.class b/build/sootup/SootUpWrapper/sootup/core/signatures/MethodSubSignature.class new file mode 100644 index 00000000..bf9d76ba Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/signatures/MethodSubSignature.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/signatures/PackageName.class b/build/sootup/SootUpWrapper/sootup/core/signatures/PackageName.class new file mode 100644 index 00000000..20080079 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/signatures/PackageName.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/signatures/Signature.class b/build/sootup/SootUpWrapper/sootup/core/signatures/Signature.class new file mode 100644 index 00000000..b5c7cbb9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/signatures/Signature.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSignature.class b/build/sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSignature.class new file mode 100644 index 00000000..9e318322 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSignature.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSubSignature.class b/build/sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSubSignature.class new file mode 100644 index 00000000..695f1158 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSubSignature.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/transform/BodyInterceptor.class b/build/sootup/SootUpWrapper/sootup/core/transform/BodyInterceptor.class new file mode 100644 index 00000000..f88d3ac9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/transform/BodyInterceptor.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/HierarchyComparator.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/HierarchyComparator.class new file mode 100644 index 00000000..fc72f83a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/HierarchyComparator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/MutableTypeHierarchy.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/MutableTypeHierarchy.class new file mode 100644 index 00000000..ef11a9b0 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/MutableTypeHierarchy.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy$1.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy$1.class new file mode 100644 index 00000000..a6d22632 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy.class new file mode 100644 index 00000000..9b4273e2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$1.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$1.class new file mode 100644 index 00000000..aa3510a3 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Edge.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Edge.class new file mode 100644 index 00000000..266828ce Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Edge.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$EdgeType.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$EdgeType.class new file mode 100644 index 00000000..17a983c8 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$EdgeType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Vertex.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Vertex.class new file mode 100644 index 00000000..78c9e354 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Vertex.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$VertexType.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$VertexType.class new file mode 100644 index 00000000..6ee051c8 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$VertexType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult.class new file mode 100644 index 00000000..65fe3ee7 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$SuperClassVertexIterator.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$SuperClassVertexIterator.class new file mode 100644 index 00000000..577ee926 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$SuperClassVertexIterator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy.class b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy.class new file mode 100644 index 00000000..44f472d4 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/ArrayType.class b/build/sootup/SootUpWrapper/sootup/core/types/ArrayType.class new file mode 100644 index 00000000..5cd2aa4a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/ArrayType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/ClassType.class b/build/sootup/SootUpWrapper/sootup/core/types/ClassType.class new file mode 100644 index 00000000..a2dd22e3 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/ClassType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/NullType.class b/build/sootup/SootUpWrapper/sootup/core/types/NullType.class new file mode 100644 index 00000000..d02a33fe Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/NullType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$1.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$1.class new file mode 100644 index 00000000..9932b9ae Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$1.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$BooleanType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$BooleanType.class new file mode 100644 index 00000000..e649abfa Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$BooleanType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ByteType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ByteType.class new file mode 100644 index 00000000..b940f95c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ByteType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$CharType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$CharType.class new file mode 100644 index 00000000..efc7db25 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$CharType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$DoubleType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$DoubleType.class new file mode 100644 index 00000000..00a7682c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$DoubleType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$FloatType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$FloatType.class new file mode 100644 index 00000000..8e31312b Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$FloatType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$IntType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$IntType.class new file mode 100644 index 00000000..2c263e9e Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$IntType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$LongType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$LongType.class new file mode 100644 index 00000000..51bc648e Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$LongType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ShortType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ShortType.class new file mode 100644 index 00000000..1560f36b Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ShortType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType.class b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType.class new file mode 100644 index 00000000..d1beeb27 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/PrimitiveType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/ReferenceType.class b/build/sootup/SootUpWrapper/sootup/core/types/ReferenceType.class new file mode 100644 index 00000000..04b2593e Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/ReferenceType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/Type.class b/build/sootup/SootUpWrapper/sootup/core/types/Type.class new file mode 100644 index 00000000..91b8fdc9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/Type.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/UnknownType.class b/build/sootup/SootUpWrapper/sootup/core/types/UnknownType.class new file mode 100644 index 00000000..3a0c6aba Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/UnknownType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/types/VoidType.class b/build/sootup/SootUpWrapper/sootup/core/types/VoidType.class new file mode 100644 index 00000000..9fe54c94 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/types/VoidType.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/CollectionUtils.class b/build/sootup/SootUpWrapper/sootup/core/util/CollectionUtils.class new file mode 100644 index 00000000..977af5b5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/CollectionUtils.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/DotExporter.class b/build/sootup/SootUpWrapper/sootup/core/util/DotExporter.class new file mode 100644 index 00000000..3d248241 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/DotExporter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/EscapedWriter.class b/build/sootup/SootUpWrapper/sootup/core/util/EscapedWriter.class new file mode 100644 index 00000000..b1fe3fc2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/EscapedWriter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/ImmutableUtils$ImmutableCollectors.class b/build/sootup/SootUpWrapper/sootup/core/util/ImmutableUtils$ImmutableCollectors.class new file mode 100644 index 00000000..5e49fb4d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/ImmutableUtils$ImmutableCollectors.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/ImmutableUtils.class b/build/sootup/SootUpWrapper/sootup/core/util/ImmutableUtils.class new file mode 100644 index 00000000..0482bab3 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/ImmutableUtils.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/PathUtils.class b/build/sootup/SootUpWrapper/sootup/core/util/PathUtils.class new file mode 100644 index 00000000..110154b5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/PathUtils.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/StreamUtils.class b/build/sootup/SootUpWrapper/sootup/core/util/StreamUtils.class new file mode 100644 index 00000000..fe7744ed Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/StreamUtils.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/StringTools.class b/build/sootup/SootUpWrapper/sootup/core/util/StringTools.class new file mode 100644 index 00000000..11e263ce Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/StringTools.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/Utils.class b/build/sootup/SootUpWrapper/sootup/core/util/Utils.class new file mode 100644 index 00000000..8c6dbd58 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/Utils.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/printer/AbstractStmtPrinter.class b/build/sootup/SootUpWrapper/sootup/core/util/printer/AbstractStmtPrinter.class new file mode 100644 index 00000000..3c5076ea Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/printer/AbstractStmtPrinter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/printer/BriefStmtPrinter.class b/build/sootup/SootUpWrapper/sootup/core/util/printer/BriefStmtPrinter.class new file mode 100644 index 00000000..2d37f29d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/printer/BriefStmtPrinter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter$Option.class b/build/sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter$Option.class new file mode 100644 index 00000000..440630b3 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter$Option.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter.class b/build/sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter.class new file mode 100644 index 00000000..401f9cda Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/printer/LabeledStmtPrinter.class b/build/sootup/SootUpWrapper/sootup/core/util/printer/LabeledStmtPrinter.class new file mode 100644 index 00000000..088785bd Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/printer/LabeledStmtPrinter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/printer/LegacyJimplePrinter.class b/build/sootup/SootUpWrapper/sootup/core/util/printer/LegacyJimplePrinter.class new file mode 100644 index 00000000..ec78ca8d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/printer/LegacyJimplePrinter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/printer/NormalStmtPrinter.class b/build/sootup/SootUpWrapper/sootup/core/util/printer/NormalStmtPrinter.class new file mode 100644 index 00000000..1d1666c9 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/printer/NormalStmtPrinter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/util/printer/StmtPrinter.class b/build/sootup/SootUpWrapper/sootup/core/util/printer/StmtPrinter.class new file mode 100644 index 00000000..5e36a7af Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/util/printer/StmtPrinter.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/BodyValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/BodyValidator.class new file mode 100644 index 00000000..826b69a2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/BodyValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/CheckInitValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/CheckInitValidator.class new file mode 100644 index 00000000..ccf3e32d Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/CheckInitValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/CheckTypesValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/CheckTypesValidator.class new file mode 100644 index 00000000..645035e2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/CheckTypesValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/ClassModifiersValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/ClassModifiersValidator.class new file mode 100644 index 00000000..c5f296a2 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/ClassModifiersValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/ClassValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/ClassValidator.class new file mode 100644 index 00000000..5d2cc621 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/ClassValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/FieldModifiersValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/FieldModifiersValidator.class new file mode 100644 index 00000000..861df454 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/FieldModifiersValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/FieldRefValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/FieldRefValidator.class new file mode 100644 index 00000000..ddc83e4b Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/FieldRefValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/IdentityStmtsValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/IdentityStmtsValidator.class new file mode 100644 index 00000000..aa46be0c Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/IdentityStmtsValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/InvokeArgumentValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/InvokeArgumentValidator.class new file mode 100644 index 00000000..de9b1354 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/InvokeArgumentValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/JimpleTrapValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/JimpleTrapValidator.class new file mode 100644 index 00000000..f19cebf5 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/JimpleTrapValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/LocalsValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/LocalsValidator.class new file mode 100644 index 00000000..4f9377ab Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/LocalsValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/MethodDeclarationValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/MethodDeclarationValidator.class new file mode 100644 index 00000000..2850f451 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/MethodDeclarationValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/MethodValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/MethodValidator.class new file mode 100644 index 00000000..6c5d4c31 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/MethodValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/NewValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/NewValidator.class new file mode 100644 index 00000000..4fc2d9ea Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/NewValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/OuterClassValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/OuterClassValidator.class new file mode 100644 index 00000000..7b639c43 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/OuterClassValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/StmtsValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/StmtsValidator.class new file mode 100644 index 00000000..43aea446 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/StmtsValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/TrapsValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/TrapsValidator.class new file mode 100644 index 00000000..e4dda216 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/TrapsValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/TypesValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/TypesValidator.class new file mode 100644 index 00000000..c613636a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/TypesValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/UsesValidator.class b/build/sootup/SootUpWrapper/sootup/core/validation/UsesValidator.class new file mode 100644 index 00000000..1f083a18 Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/UsesValidator.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/validation/ValidationException.class b/build/sootup/SootUpWrapper/sootup/core/validation/ValidationException.class new file mode 100644 index 00000000..c0a0cc0a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/validation/ValidationException.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/views/AbstractView.class b/build/sootup/SootUpWrapper/sootup/core/views/AbstractView.class new file mode 100644 index 00000000..27f72dce Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/views/AbstractView.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/views/MutableView.class b/build/sootup/SootUpWrapper/sootup/core/views/MutableView.class new file mode 100644 index 00000000..2cdbdb2a Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/views/MutableView.class differ diff --git a/build/sootup/SootUpWrapper/sootup/core/views/View.class b/build/sootup/SootUpWrapper/sootup/core/views/View.class new file mode 100644 index 00000000..2a7622cc Binary files /dev/null and b/build/sootup/SootUpWrapper/sootup/core/views/View.class differ diff --git a/build/sootup/SootUpWrapper/target/maven-archiver/pom.properties b/build/sootup/SootUpWrapper/target/maven-archiver/pom.properties new file mode 100644 index 00000000..d037a3d5 --- /dev/null +++ b/build/sootup/SootUpWrapper/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Thu May 14 05:01:01 UTC 2026 +groupId=com.debricked.sootup +artifactId=sootup-wrapper +version=1.0.0 diff --git a/build/sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/build/sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..0d352c87 --- /dev/null +++ b/build/sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,3 @@ +com/debricked/sootup/SootUpWrapper$Args.class +com/debricked/sootup/SootUpWrapper$CallerEntry.class +com/debricked/sootup/SootUpWrapper.class diff --git a/build/sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/build/sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..d22a5d70 --- /dev/null +++ b/build/sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1 @@ +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-sootup/SootUpWrapper/src/main/java/com/debricked/sootup/SootUpWrapper.java diff --git a/build/sootup/SootUpWrapper/target/original-sootup-wrapper-1.0.0.jar b/build/sootup/SootUpWrapper/target/original-sootup-wrapper-1.0.0.jar new file mode 100644 index 00000000..42f9dc09 Binary files /dev/null and b/build/sootup/SootUpWrapper/target/original-sootup-wrapper-1.0.0.jar differ diff --git a/build/sootup/SootUpWrapper/target/sootup-wrapper-1.0.0.jar b/build/sootup/SootUpWrapper/target/sootup-wrapper-1.0.0.jar new file mode 100644 index 00000000..4aeb8dee Binary files /dev/null and b/build/sootup/SootUpWrapper/target/sootup-wrapper-1.0.0.jar differ diff --git a/internal/callgraph/language/java/embedded/SootUpWrapper.jar b/internal/callgraph/language/java/embedded/SootUpWrapper.jar new file mode 100644 index 00000000..a472c686 Binary files /dev/null and b/internal/callgraph/language/java/embedded/SootUpWrapper.jar differ diff --git a/internal/callgraph/language/java/job.go b/internal/callgraph/language/java/job.go index 42bfa04f..8bb0b37d 100644 --- a/internal/callgraph/language/java/job.go +++ b/internal/callgraph/language/java/job.go @@ -4,6 +4,7 @@ import ( "os" "os/exec" "path" + "strings" "syscall" "github.com/debricked/cli/internal/callgraph/cgexec" @@ -14,10 +15,11 @@ import ( ) const ( - maven = "maven" - gradle = "gradle" - dependencyDir = ".debrickedTmpFolder" - outputName = "debricked-call-graph.java" + maven = "maven" + gradle = "gradle" + dependencyDir = ".debrickedTmpFolder" + outputName = "debricked-call-graph.java" + outputNameSootUp = "debricked-call-graph-sootup.java" ) type Job struct { @@ -55,6 +57,7 @@ func NewJob( func (j *Job) Run() { workingDirectory := j.GetDir() pmConfig := j.config.PackageManager() + outputName := j.outputName() targetDir := path.Join(workingDirectory, dependencyDir) targetClasses := []string{workingDirectory} if len(j.GetFiles()) > 0 { @@ -123,6 +126,7 @@ func (j *Job) runCallGraph(callgraph ICallgraph) { func (j *Job) runPostProcess() { workingDirectory := j.GetDir() + outputName := j.outputName() outputFullPath := path.Join(workingDirectory, outputName) outputFullPathZip := outputFullPath + ".zip" j.SendStatus("zipping callgraph") @@ -154,3 +158,13 @@ func (j *Job) runPostProcess() { } } } + +func (j *Job) outputName() string { + if j.config != nil { + if engine, ok := j.config.Kwargs()["java-callgraph-engine"]; ok && strings.EqualFold(strings.TrimSpace(engine), "sootup") { + return outputNameSootUp + } + } + + return outputName +} diff --git a/internal/callgraph/language/java/job_test.go b/internal/callgraph/language/java/job_test.go index 1d4ebcce..d1a6b1b0 100644 --- a/internal/callgraph/language/java/job_test.go +++ b/internal/callgraph/language/java/job_test.go @@ -42,6 +42,18 @@ func TestNewJob(t *testing.T) { assert.False(t, j.Errors().HasError()) } +func TestOutputNameDefault(t *testing.T) { + config := conf.NewConfig("java", nil, map[string]string{}, true, "maven", "") + j := NewJob(dir, files, testdata.NewEchoCmdFactory(), io.FileWriter{}, io.NewArchive("dir"), config, nil, io.FileSystem{}, testdata.MockSootHandler{}) + assert.Equal(t, "debricked-call-graph.java", j.outputName()) +} + +func TestOutputNameSootUp(t *testing.T) { + config := conf.NewConfig("java", nil, map[string]string{"java-callgraph-engine": "sootup"}, true, "maven", "") + j := NewJob(dir, files, testdata.NewEchoCmdFactory(), io.FileWriter{}, io.NewArchive("dir"), config, nil, io.FileSystem{}, testdata.MockSootHandler{}) + assert.Equal(t, "debricked-call-graph-sootup.java", j.outputName()) +} + func TestRunMakeMavenCopyDependenciesCmdErr(t *testing.T) { cmdErr := errors.New("cmd-error") cmdFactoryMock := testdata.NewEchoCmdFactory() diff --git a/internal/callgraph/language/java/soot_handler.go b/internal/callgraph/language/java/soot_handler.go index c8e6ae43..42f5ccec 100644 --- a/internal/callgraph/language/java/soot_handler.go +++ b/internal/callgraph/language/java/soot_handler.go @@ -114,20 +114,24 @@ func (sh SootHandler) GetSootWrapper(version string, fs ioFs.IFileSystem, arc io return "", err } } - path, err := filepath.Abs(path.Join(debrickedDir, "soot-wrapper.jar")) + absDebrickedDir, err := filepath.Abs(debrickedDir) + if err != nil { + return "", err + } + jarPath, err := filepath.Abs(path.Join(debrickedDir, "soot-wrapper.jar")) if err != nil { return "", err } - if _, err := fs.Stat(path); fs.IsNotExist(err) { + if _, err := fs.Stat(jarPath); fs.IsNotExist(err) { if version == "21" { - return sh.initializeSootWrapper(fs, debrickedDir) + return sh.initializeSootWrapper(fs, absDebrickedDir) } - return path, sh.downloadSootWrapper(arc, fs, path, version) + return jarPath, sh.downloadSootWrapper(arc, fs, jarPath, version) } - return path, nil + return jarPath, nil } func (sh SootHandler) getSootHandlerJavaVersion(version int) (string, error) { diff --git a/internal/callgraph/language/java/soot_handler_component_test.go b/internal/callgraph/language/java/soot_handler_component_test.go new file mode 100644 index 00000000..48cf7a3b --- /dev/null +++ b/internal/callgraph/language/java/soot_handler_component_test.go @@ -0,0 +1,58 @@ +package java + +import ( + "fmt" + "path/filepath" + "strings" + "testing" + + ioTestData "github.com/debricked/cli/internal/io/testdata" + "github.com/stretchr/testify/assert" +) + +func TestSootHandlerComponent_GetSootWrapperInvalidVersionString(t *testing.T) { + h := SootHandler{} + _, err := h.GetSootWrapper("not-a-number", ioTestData.FileSystemMock{}, ioTestData.ArchiveMock{}) + assert.EqualError(t, err, "could not convert version to int") +} + +func TestSootHandlerComponent_GetSootWrapperUnsupportedJavaVersion(t *testing.T) { + h := SootHandler{} + _, err := h.GetSootWrapper("8", ioTestData.FileSystemMock{}, ioTestData.ArchiveMock{}) + assert.EqualError(t, err, "lowest supported version for running callgraph generation is 11") +} + +func TestSootHandlerComponent_GetSootWrapperMkdirError(t *testing.T) { + h := SootHandler{} + fsMock := ioTestData.FileSystemMock{ + StatError: fmt.Errorf("missing"), + IsNotExistBool: true, + MkdirError: fmt.Errorf("mkdir failed"), + } + + _, err := h.GetSootWrapper("11", fsMock, ioTestData.ArchiveMock{}) + assert.EqualError(t, err, "mkdir failed") +} + +func TestSootHandlerComponent_GetSootWrapperVersion21UsesEmbeddedJar(t *testing.T) { + h := SootHandler{} + fsMock := ioTestData.FileSystemMock{ + StatError: fmt.Errorf("missing"), + IsNotExistBool: true, + } + + p, err := h.GetSootWrapper("21", fsMock, ioTestData.ArchiveMock{}) + assert.NoError(t, err) + assert.NotEmpty(t, p) + assert.True(t, strings.HasSuffix(filepath.ToSlash(p), "/.debricked/SootWrapper.jar")) +} + +func TestSootHandlerComponent_GetSootWrapperReturnsExistingPath(t *testing.T) { + h := SootHandler{} + fsMock := ioTestData.FileSystemMock{} + + p, err := h.GetSootWrapper("17", fsMock, ioTestData.ArchiveMock{}) + assert.NoError(t, err) + assert.True(t, strings.HasSuffix(filepath.ToSlash(p), "/.debricked/soot-wrapper.jar")) +} + diff --git a/internal/callgraph/language/java/sootup_handler.go b/internal/callgraph/language/java/sootup_handler.go new file mode 100644 index 00000000..e5f56548 --- /dev/null +++ b/internal/callgraph/language/java/sootup_handler.go @@ -0,0 +1,166 @@ +package java + +import ( + "embed" + "fmt" + "net/http" + "os" + "path" + "path/filepath" + "strconv" + "strings" + + ioFs "github.com/debricked/cli/internal/io" +) + +// ISootUpHandler is the interface for obtaining the SootUpWrapper JAR path. +// It is the SootUp equivalent of ISootHandler and will be used by the +// dual-engine callgraph runner. +type ISootUpHandler interface { + GetSootUpWrapper(version string, fs ioFs.IFileSystem, arc ioFs.IArchive) (string, error) +} + +// SootUpHandler resolves and extracts the SootUpWrapper.jar. +// cliVersion is used only when a per-version ZIP must be downloaded from +// GitHub Releases; for the embedded JAR (Java 11 bytecode, JVM 11/17/21 +// compatible) cliVersion is not needed. +type SootUpHandler struct{ cliVersion string } + +// GetSootWrapper keeps compatibility with the existing ISootHandler contract. +// It delegates to GetSootUpWrapper so callers can swap engines without +// changing callgraph/job wiring. +func (sh SootUpHandler) GetSootWrapper(version string, fs ioFs.IFileSystem, arc ioFs.IArchive) (string, error) { + return sh.GetSootUpWrapper(version, fs, arc) +} + +//go:embed embedded/SootUpWrapper.jar +var sootUpJarFS embed.FS + +// initializeSootUpWrapper copies the embedded SootUpWrapper.jar into tempDir +// and returns its absolute path. +func (sh SootUpHandler) initializeSootUpWrapper(fs ioFs.IFileSystem, tempDir string) (string, error) { + jarFile, err := fs.FsOpenEmbed(sootUpJarFS, "embedded/SootUpWrapper.jar") + if err != nil { + return "", err + } + defer fs.FsCloseFile(jarFile) + + tempJarFile := filepath.Join(tempDir, "SootUpWrapper.jar") + + jarBytes, err := fs.FsReadAll(jarFile) + if err != nil { + return "", err + } + + err = fs.FsWriteFile(tempJarFile, jarBytes, 0600) + if err != nil { + return "", err + } + + return tempJarFile, nil +} + +// downloadSootUpWrapper downloads a release-specific ZIP from GitHub and +// unzips it to path. Used for future per-version SootUp releases. +func (sh SootUpHandler) downloadSootUpWrapper(arc ioFs.IArchive, fs ioFs.IFileSystem, jarPath string, version string) error { + dir, err := fs.MkdirTemp(".tmp") + if err != nil { + return err + } + + zipPath := dir + "/sootup_wrapper.zip" + zipFile, err := fs.Create(zipPath) + if err != nil { + return err + } + defer zipFile.Close() + + err = sh.downloadCompressedSootUpWrapper(fs, zipFile, version) + if err != nil { + return err + } + + return arc.UnzipFile(zipPath, jarPath) +} + +func (sh SootUpHandler) downloadCompressedSootUpWrapper(fs ioFs.IFileSystem, zipFile *os.File, version string) error { + fullURLFile := strings.Join([]string{ + "https://github.com/debricked/cli/releases/download/", + sh.cliVersion, + "/sootup-wrapper-", + version, + ".zip", + }, "") + + client := http.Client{ + CheckRedirect: func(r *http.Request, via []*http.Request) error { + r.URL.Opaque = r.URL.Path + + return nil + }, + } + resp, err := client.Get(fullURLFile) + if err != nil { + return err + } + defer resp.Body.Close() + + _, err = fs.Copy(zipFile, resp.Body) + + return err +} + +// GetSootUpWrapper returns the path to a ready-to-run SootUpWrapper.jar for +// the given Java version. +// +// The SootUp JAR is compiled at Java 11 bytecode level and runs on JVM 11, +// 17, and 21 without modification, so a single embedded artifact covers all +// supported versions. The JAR is extracted to .debricked/ on first use and +// reused on subsequent runs. +func (sh SootUpHandler) GetSootUpWrapper(version string, fs ioFs.IFileSystem, arc ioFs.IArchive) (string, error) { + versionInt, err := strconv.Atoi(version) + if err != nil { + return "", fmt.Errorf("could not convert version to int") + } + if _, err = sh.getSootUpHandlerJavaVersion(versionInt); err != nil { + return "", err + } + + debrickedDir := ".debricked" + if _, err := fs.Stat(debrickedDir); fs.IsNotExist(err) { + if mkdirErr := fs.Mkdir(debrickedDir, 0755); mkdirErr != nil { + return "", mkdirErr + } + } + + absDebrickedDir, err := filepath.Abs(debrickedDir) + if err != nil { + return "", err + } + + jarPath, err := filepath.Abs(path.Join(debrickedDir, "SootUpWrapper.jar")) + if err != nil { + return "", err + } + + // Always use the embedded JAR; it covers all supported JVM versions. + if _, err := fs.Stat(jarPath); fs.IsNotExist(err) { + return sh.initializeSootUpWrapper(fs, absDebrickedDir) + } + + return jarPath, nil +} + +// getSootUpHandlerJavaVersion validates the JVM version and returns the +// canonical version string used by SootUp ("11", "17", or "21"). +func (sh SootUpHandler) getSootUpHandlerJavaVersion(version int) (string, error) { + if version >= 21 { + return "21", nil + } else if version >= 17 { + return "17", nil + } else if version >= 11 { + return "11", nil + } + + return "", fmt.Errorf("lowest supported version for running callgraph generation is 11") +} diff --git a/internal/callgraph/language/java/sootup_handler_component_test.go b/internal/callgraph/language/java/sootup_handler_component_test.go new file mode 100644 index 00000000..6b1ce9fd --- /dev/null +++ b/internal/callgraph/language/java/sootup_handler_component_test.go @@ -0,0 +1,57 @@ +package java + +import ( + "fmt" + "path/filepath" + "strings" + "testing" + + ioTestData "github.com/debricked/cli/internal/io/testdata" + "github.com/stretchr/testify/assert" +) + +func TestSootUpHandlerComponent_GetSootUpWrapperInvalidVersionString(t *testing.T) { + h := SootUpHandler{} + _, err := h.GetSootUpWrapper("not-a-number", ioTestData.FileSystemMock{}, ioTestData.ArchiveMock{}) + assert.Error(t, err) +} + +func TestSootUpHandlerComponent_GetSootUpWrapperUnsupportedJavaVersion(t *testing.T) { + h := SootUpHandler{} + _, err := h.GetSootUpWrapper("8", ioTestData.FileSystemMock{}, ioTestData.ArchiveMock{}) + assert.Error(t, err) +} + +func TestSootUpHandlerComponent_GetSootUpWrapperMkdirError(t *testing.T) { + h := SootUpHandler{} + errString := "mkdir error" + fsMock := ioTestData.FileSystemMock{ + IsNotExistBool: true, + MkdirError: fmt.Errorf("%s", errString), //nolint + } + arcMock := ioTestData.ArchiveMock{} + _, err := h.GetSootUpWrapper("21", fsMock, arcMock) + assert.EqualError(t, err, errString) +} + +func TestSootUpHandlerComponent_GetSootUpWrapperVersion21UsesEmbeddedJar(t *testing.T) { + h := SootUpHandler{} + fsMock := ioTestData.FileSystemMock{ + StatError: fmt.Errorf("missing"), + IsNotExistBool: true, + } + + p, err := h.GetSootUpWrapper("21", fsMock, ioTestData.ArchiveMock{}) + assert.NoError(t, err) + assert.NotEmpty(t, p) + assert.True(t, strings.HasSuffix(filepath.ToSlash(p), "/.debricked/SootUpWrapper.jar")) +} + +func TestSootUpHandlerComponent_GetSootUpWrapperReturnsExistingPath(t *testing.T) { + h := SootUpHandler{} + fsMock := ioTestData.FileSystemMock{} + + p, err := h.GetSootUpWrapper("17", fsMock, ioTestData.ArchiveMock{}) + assert.NoError(t, err) + assert.True(t, strings.HasSuffix(filepath.ToSlash(p), "/.debricked/SootUpWrapper.jar")) +} diff --git a/internal/callgraph/language/java/sootup_handler_test.go b/internal/callgraph/language/java/sootup_handler_test.go new file mode 100644 index 00000000..a26d9c83 --- /dev/null +++ b/internal/callgraph/language/java/sootup_handler_test.go @@ -0,0 +1,115 @@ +package java + +import ( + "fmt" + "testing" + + ioTestData "github.com/debricked/cli/internal/io/testdata" + + "github.com/stretchr/testify/assert" +) + +var sootUpHandler = SootUpHandler{} + +// ── initializeSootUpWrapper ─────────────────────────────────────────────────── + +func TestInitializeSootUpWrapper(t *testing.T) { + fsMock := ioTestData.FileSystemMock{} + tempDir, err := fsMock.MkdirTemp(".tmp") + assert.NoError(t, err) + jarPath, err := sootUpHandler.initializeSootUpWrapper(fsMock, tempDir) + assert.NotEmpty(t, jarPath) + assert.NoError(t, err) +} + +func TestInitializeSootUpWrapperOpenEmbedError(t *testing.T) { + errString := "fs open embed error" + fsMock := ioTestData.FileSystemMock{FsOpenEmbedError: fmt.Errorf("%s", errString)} //nolint + tempDir, err := fsMock.MkdirTemp(".tmp") + assert.NoError(t, err) + _, err = sootUpHandler.initializeSootUpWrapper(fsMock, tempDir) + assert.Error(t, err) + assert.Equal(t, errString, err.Error()) +} + +func TestInitializeSootUpWrapperFsReadAllError(t *testing.T) { + errString := "fs read all error" + fsMock := ioTestData.FileSystemMock{FsReadAllError: fmt.Errorf("%s", errString)} //nolint + tempDir, err := fsMock.MkdirTemp(".tmp") + assert.NoError(t, err) + _, err = sootUpHandler.initializeSootUpWrapper(fsMock, tempDir) + assert.Error(t, err) + assert.Equal(t, errString, err.Error()) +} + +func TestInitializeSootUpWrapperFsWriteFileError(t *testing.T) { + errString := "fs write file error" + fsMock := ioTestData.FileSystemMock{FsWriteFileError: fmt.Errorf("%s", errString)} //nolint + tempDir, err := fsMock.MkdirTemp(".tmp") + assert.NoError(t, err) + _, err = sootUpHandler.initializeSootUpWrapper(fsMock, tempDir) + assert.Error(t, err) + assert.Equal(t, errString, err.Error()) +} + +// ── downloadSootUpWrapper ───────────────────────────────────────────────────── + +func TestDownloadSootUpWrapperMkdirTempError(t *testing.T) { + errString := "mkdir temp error" + fsMock := ioTestData.FileSystemMock{MkdirTempError: fmt.Errorf("%s", errString)} //nolint + arcMock := ioTestData.ArchiveMock{} + err := sootUpHandler.downloadSootUpWrapper(arcMock, fsMock, "sootup-wrapper.jar", "11") + assert.Error(t, err) + assert.Equal(t, errString, err.Error()) +} + +func TestDownloadSootUpWrapperCreateError(t *testing.T) { + errString := "create error" + fsMock := ioTestData.FileSystemMock{CreateError: fmt.Errorf("%s", errString)} //nolint + arcMock := ioTestData.ArchiveMock{} + err := sootUpHandler.downloadSootUpWrapper(arcMock, fsMock, "sootup-wrapper.jar", "11") + assert.Error(t, err) + assert.Equal(t, errString, err.Error()) +} + +func TestDownloadSootUpWrapperUnzipError(t *testing.T) { + errString := "unzip error" + fsMock := ioTestData.FileSystemMock{} + arcMock := ioTestData.ArchiveMock{UnzipFileError: fmt.Errorf("%s", errString)} //nolint + err := sootUpHandler.downloadSootUpWrapper(arcMock, fsMock, "sootup-wrapper.jar", "11") + assert.Error(t, err) + assert.Equal(t, errString, err.Error()) +} + +// ── getSootUpHandlerJavaVersion ─────────────────────────────────────────────── + +func TestGetSootUpHandlerJavaVersionTooLow(t *testing.T) { + _, err := sootUpHandler.getSootUpHandlerJavaVersion(8) + assert.Error(t, err) +} + +func TestGetSootUpHandlerJavaVersion11(t *testing.T) { + v, err := sootUpHandler.getSootUpHandlerJavaVersion(11) + assert.NoError(t, err) + assert.Equal(t, "11", v) +} + +func TestGetSootUpHandlerJavaVersion17(t *testing.T) { + v, err := sootUpHandler.getSootUpHandlerJavaVersion(17) + assert.NoError(t, err) + assert.Equal(t, "17", v) +} + +func TestGetSootUpHandlerJavaVersion21(t *testing.T) { + v, err := sootUpHandler.getSootUpHandlerJavaVersion(21) + assert.NoError(t, err) + assert.Equal(t, "21", v) +} + +func TestGetSootUpHandlerJavaVersionAbove21(t *testing.T) { + v, err := sootUpHandler.getSootUpHandlerJavaVersion(23) + assert.NoError(t, err) + assert.Equal(t, "21", v) +} + +// Component tests moved to sootup_handler_component_test.go for consistency with soot_handler structure diff --git a/internal/callgraph/language/java/strategy.go b/internal/callgraph/language/java/strategy.go index 029fdebb..7224e318 100644 --- a/internal/callgraph/language/java/strategy.go +++ b/internal/callgraph/language/java/strategy.go @@ -3,6 +3,7 @@ package java import ( "fmt" "log" + "os" "path/filepath" "strings" @@ -25,6 +26,12 @@ type Strategy struct { ctx cgexec.IContext } +const ( + javaCallgraphEngineEnv = "DEBRICKED_JAVA_CALLGRAPH_ENGINE" + javaCallgraphEngineSoot = "soot" + javaCallgraphEngineSootUp = "sootup" +) + func (s Strategy) Invoke() ([]job.IJob, error) { var jobs []job.IJob // Filter relevant files @@ -86,6 +93,11 @@ func (s Strategy) Invoke() ([]job.IJob, error) { strategyWarning("Found " + fmt.Sprint(foundRootsWoClasses) + " roots without related classes, make sure to build your project before running.") } for rootFile, classDirs := range rootClassMapping { + handler := selectJavaCallgraphHandler(s.config) + if _, isSootUp := handler.(SootUpHandler); isSootUp { + classDirs = normalizeSootUpUserClassDirs(classDirs) + } + // For each class paths dir within the root, find GCDPath as entrypoint // classDir := finder.GCDPath(classDirs) rootDir := filepath.Dir(rootFile) @@ -98,7 +110,7 @@ func (s Strategy) Invoke() ([]job.IJob, error) { s.config, s.ctx, io.FileSystem{}, - SootHandler{s.config.Version()}, + handler, ), ) } @@ -106,6 +118,62 @@ func (s Strategy) Invoke() ([]job.IJob, error) { return jobs, nil } +func selectJavaCallgraphHandler(config conf.IConfig) ISootHandler { + engine := "" + cliVersion := "" + if config != nil { + cliVersion = config.Version() + engine = strings.ToLower(strings.TrimSpace(config.Kwargs()["java-callgraph-engine"])) + } + if engine == "" { + engine = strings.ToLower(strings.TrimSpace(os.Getenv(javaCallgraphEngineEnv))) + } + + switch engine { + case "", javaCallgraphEngineSoot: + return SootHandler{cliVersion} + case javaCallgraphEngineSootUp: + return SootUpHandler{cliVersion} + default: + strategyWarning(fmt.Sprintf("Unknown %s value '%s'; defaulting to '%s'", javaCallgraphEngineEnv, engine, javaCallgraphEngineSoot)) + return SootHandler{cliVersion} + } +} + +func normalizeSootUpUserClassDirs(classDirs []string) []string { + roots := make(map[string]struct{}) + + for _, classDir := range classDirs { + normalized := normalizeToClassRoot(classDir) + roots[normalized] = struct{}{} + } + + result := make([]string, 0, len(roots)) + for root := range roots { + result = append(result, root) + } + + return result +} + +func normalizeToClassRoot(classDir string) string { + clean := filepath.Clean(classDir) + markers := []string{ + filepath.Join("target", "classes"), + filepath.Join("target", "test-classes"), + filepath.Join("build", "classes", "java", "main"), + filepath.Join("build", "classes", "java", "test"), + } + + for _, marker := range markers { + if idx := strings.Index(clean, marker); idx >= 0 { + return clean[:idx+len(marker)] + } + } + + return clean +} + func NewStrategy( config conf.IConfig, paths []string, diff --git a/internal/callgraph/language/java/strategy_test.go b/internal/callgraph/language/java/strategy_test.go index 8d39d3c4..a9acbf67 100644 --- a/internal/callgraph/language/java/strategy_test.go +++ b/internal/callgraph/language/java/strategy_test.go @@ -97,3 +97,63 @@ func TestBuildProjectsError(t *testing.T) { assert.NotNil(t, err) } + +func TestSelectJavaCallgraphHandlerDefault(t *testing.T) { + t.Setenv(javaCallgraphEngineEnv, "") + config := config.NewConfig("java", []string{"."}, map[string]string{}, true, "maven", "v2.0.0") + h := selectJavaCallgraphHandler(config) + _, ok := h.(SootHandler) + assert.True(t, ok) +} + +func TestSelectJavaCallgraphHandlerSootUp(t *testing.T) { + config := config.NewConfig("java", []string{"."}, map[string]string{"java-callgraph-engine": "sootup"}, true, "maven", "v2.0.0") + h := selectJavaCallgraphHandler(config) + _, ok := h.(SootUpHandler) + assert.True(t, ok) +} + +func TestSelectJavaCallgraphHandlerUnknownFallsBackToSoot(t *testing.T) { + t.Setenv(javaCallgraphEngineEnv, "unknown") + + config := config.NewConfig("java", []string{"."}, map[string]string{}, true, "maven", "v2.0.0") + h := selectJavaCallgraphHandler(config) + _, ok := h.(SootHandler) + assert.True(t, ok) +} + +func TestSelectJavaCallgraphHandlerEnvFallback(t *testing.T) { + t.Setenv(javaCallgraphEngineEnv, "sootup") + config := config.NewConfig("java", []string{"."}, map[string]string{}, true, "maven", "v2.0.0") + h := selectJavaCallgraphHandler(config) + _, ok := h.(SootUpHandler) + assert.True(t, ok) +} + +func TestNormalizeToClassRootTargetClasses(t *testing.T) { + in := filepath.Join("/tmp", "demo", "target", "classes", "com", "example") + out := normalizeToClassRoot(in) + expected := filepath.Join("/tmp", "demo", "target", "classes") + assert.Equal(t, expected, out) +} + +func TestNormalizeToClassRootTargetTestClasses(t *testing.T) { + in := filepath.Join("/tmp", "demo", "target", "test-classes", "com", "example") + out := normalizeToClassRoot(in) + expected := filepath.Join("/tmp", "demo", "target", "test-classes") + assert.Equal(t, expected, out) +} + +func TestNormalizeSootUpUserClassDirsDeduplicatesRoots(t *testing.T) { + in := []string{ + filepath.Join("/tmp", "demo", "target", "classes", "com", "example", "a"), + filepath.Join("/tmp", "demo", "target", "classes", "com", "example", "b"), + filepath.Join("/tmp", "demo", "target", "test-classes", "com", "example"), + } + out := normalizeSootUpUserClassDirs(in) + + assert.ElementsMatch(t, []string{ + filepath.Join("/tmp", "demo", "target", "classes"), + filepath.Join("/tmp", "demo", "target", "test-classes"), + }, out) +} diff --git a/internal/callgraph/language/java/testdata/cmd_factory_mock.go b/internal/callgraph/language/java/testdata/cmd_factory_mock.go index a38a0161..56dceefd 100644 --- a/internal/callgraph/language/java/testdata/cmd_factory_mock.go +++ b/internal/callgraph/language/java/testdata/cmd_factory_mock.go @@ -53,3 +53,13 @@ type MockSootHandler struct { func (msh MockSootHandler) GetSootWrapper(version string, fs ioFs.IFileSystem, arc ioFs.IArchive) (string, error) { return "", msh.GetSootWrapperError } + +type MockSootUpHandler struct { + GetSootUpWrapperError error + GetSootUpWrapperPath string +} + +func (msh MockSootUpHandler) GetSootUpWrapper(version string, fs ioFs.IFileSystem, arc ioFs.IArchive) (string, error) { + return msh.GetSootUpWrapperPath, msh.GetSootUpWrapperError +} + diff --git a/internal/cmd/callgraph/callgraph.go b/internal/cmd/callgraph/callgraph.go index aab282cf..4bf3fe11 100644 --- a/internal/cmd/callgraph/callgraph.go +++ b/internal/cmd/callgraph/callgraph.go @@ -15,24 +15,29 @@ import ( ) var ( - exclusions = file.DefaultExclusions() - inclusions []string - buildDisabled bool - generateTimeout int - languages string - supportedLanguages = []string{"java", "golang"} - languageMap = map[string]string{ + exclusions = file.DefaultExclusions() + inclusions []string + buildDisabled bool + generateTimeout int + languages string + javaCallgraphEngine string + javaCallgraphEngineAlias string + supportedLanguages = []string{"java", "golang"} + supportedJavaCallgraphEngines = []string{"soot", "sootup"} + languageMap = map[string]string{ "java": "maven", "golang": "go", } ) const ( - ExclusionFlag = "exclusion" - InclusionFlag = "inclusion" - NoBuildFlag = "no-build" - GenerateTimeoutFlag = "generate-timeout" - LanguagesFlag = "languages" + ExclusionFlag = "exclusion" + InclusionFlag = "inclusion" + NoBuildFlag = "no-build" + GenerateTimeoutFlag = "generate-timeout" + LanguagesFlag = "languages" + JavaCallgraphEngineFlag = "java-callgraph-engine" + JavaCallgraphEngineAliasFlag = "engine" ) func NewCallgraphCmd(generator cg.IGenerator) *cobra.Command { @@ -82,6 +87,8 @@ This option requires a pre-built project. For more detailed documentation on the https://docs.debricked.com/tools-and-integrations/cli/debricked-cli#callgraph`) cmd.Flags().IntVar(&generateTimeout, GenerateTimeoutFlag, 60*60, "Timeout (in seconds) on call graph generation.") cmd.Flags().StringVarP(&languages, LanguagesFlag, "l", strings.Join(supportedLanguages, ","), "Colon separated list of languages to create a call graph for.") + cmd.Flags().StringVar(&javaCallgraphEngine, JavaCallgraphEngineFlag, "soot", "Java call graph engine to use: soot or sootup.") + cmd.Flags().StringVar(&javaCallgraphEngineAlias, JavaCallgraphEngineAliasFlag, "", "Alias for --java-callgraph-engine.") viper.MustBindEnv(ExclusionFlag) @@ -126,11 +133,22 @@ func RunE(callgraph callgraph.IGenerator) func(_ *cobra.Command, args []string) return err } + effectiveJavaEngine := resolveJavaCallgraphEngine(javaCallgraphEngine, javaCallgraphEngineAlias) + javaEngine, err := parseAndValidateJavaCallgraphEngine(effectiveJavaEngine) + if err != nil { + return err + } + configs := []conf.IConfig{} version := viper.GetString("cliVersion") for _, language := range languages { - configs = append(configs, conf.NewConfig(language, args, map[string]string{}, !buildDisabled, languageMap[language], version)) + kwargs := map[string]string{} + if language == "java" { + kwargs[JavaCallgraphEngineFlag] = javaEngine + } + + configs = append(configs, conf.NewConfig(language, args, kwargs, !buildDisabled, languageMap[language], version)) } options := cg.DebrickedOptions{ @@ -144,3 +162,22 @@ func RunE(callgraph callgraph.IGenerator) func(_ *cobra.Command, args []string) return callgraph.GenerateWithTimer(options) } } + +func parseAndValidateJavaCallgraphEngine(engine string) (string, error) { + normalized := strings.ToLower(strings.TrimSpace(engine)) + for _, supportedEngine := range supportedJavaCallgraphEngines { + if normalized == supportedEngine { + return normalized, nil + } + } + + return "", errors.New(engine + " is not a supported java callgraph engine") +} + +func resolveJavaCallgraphEngine(javaEngine string, aliasEngine string) string { + if strings.TrimSpace(aliasEngine) != "" { + return aliasEngine + } + + return javaEngine +} diff --git a/internal/cmd/callgraph/callgraph_test.go b/internal/cmd/callgraph/callgraph_test.go index ec854537..75099e5a 100644 --- a/internal/cmd/callgraph/callgraph_test.go +++ b/internal/cmd/callgraph/callgraph_test.go @@ -20,10 +20,12 @@ func TestNewCallgraphCmd(t *testing.T) { flags := cmd.Flags() flagAssertions := map[string]string{ - ExclusionFlag: "e", - InclusionFlag: "", - NoBuildFlag: "", - GenerateTimeoutFlag: "", + ExclusionFlag: "e", + InclusionFlag: "", + NoBuildFlag: "", + GenerateTimeoutFlag: "", + JavaCallgraphEngineFlag: "", + JavaCallgraphEngineAliasFlag: "", } for name, shorthand := range flagAssertions { flag := flags.Lookup(name) @@ -100,3 +102,22 @@ func TestParseAndValidateLanguages(t *testing.T) { _, err = parseAndValidateLanguages(languages) assert.Error(t, err) } + +func TestParseAndValidateJavaCallgraphEngine(t *testing.T) { + engine, err := parseAndValidateJavaCallgraphEngine("soot") + assert.NoError(t, err) + assert.Equal(t, "soot", engine) + + engine, err = parseAndValidateJavaCallgraphEngine(" SOOTUP ") + assert.NoError(t, err) + assert.Equal(t, "sootup", engine) + + _, err = parseAndValidateJavaCallgraphEngine("invalid") + assert.Error(t, err) +} + +func TestResolveJavaCallgraphEngine(t *testing.T) { + assert.Equal(t, "soot", resolveJavaCallgraphEngine("soot", "")) + assert.Equal(t, "sootup", resolveJavaCallgraphEngine("soot", "sootup")) + assert.Equal(t, " sootup ", resolveJavaCallgraphEngine("soot", " sootup ")) +}