diff --git a/deployment/windows/wixSetup/installDir.wxs b/deployment/windows/wixSetup/installDir.wxs index 797b79b1..aaf35d0a 100644 --- a/deployment/windows/wixSetup/installDir.wxs +++ b/deployment/windows/wixSetup/installDir.wxs @@ -673,7 +673,7 @@ - + diff --git a/java_indexer/src/com/sourcetrail/JavaIndexer.java b/java_indexer/src/com/sourcetrail/JavaIndexer.java index 0a117a19..16308615 100644 --- a/java_indexer/src/com/sourcetrail/JavaIndexer.java +++ b/java_indexer/src/com/sourcetrail/JavaIndexer.java @@ -4,6 +4,8 @@ import java.io.File; import java.io.IOException; import java.io.StringReader; import java.lang.String; +import java.util.HashMap; +import java.util.Map; import java.util.Optional; import com.github.javaparser.ast.CompilationUnit; @@ -14,6 +16,7 @@ import com.github.javaparser.Problem; import com.github.javaparser.Range; import com.github.javaparser.symbolsolver.javaparser.Navigator; import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; +import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.JarTypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; @@ -21,41 +24,58 @@ import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeS public class JavaIndexer { + + private static Map typeSolvers = new HashMap<>(); + public static void processFile(int address, String filePath, String fileContent, String classPath, int verbose) { logInfo(address, "indexing source file: " + filePath); try { - CombinedTypeSolver typeSolver = new CombinedTypeSolver(); + CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver(); - typeSolver.add(new ReflectionTypeSolver()); + combinedTypeSolver.add(new ReflectionTypeSolver()); for (String path: classPath.split("\\;")) { - if (path.endsWith(".jar")) + if (typeSolvers.containsKey(path)) { - try - { - JarTypeSolver solver = new JarTypeSolver(path); - typeSolver.add(solver); - } - catch (IOException e) - { - System.out.println("unable to add jar file: " + path); - } + combinedTypeSolver.add(typeSolvers.get(path)); } - else if (!path.isEmpty()) + else { - JavaParserTypeSolver solver = new JavaParserTypeSolver(new File(path)); - typeSolver.add(solver); + TypeSolver typeSolver = null; + + if (path.endsWith(".jar")) + { + try + { + typeSolver = new JarTypeSolver(path); + } + catch (IOException e) + { + System.out.println("unable to add jar file: " + path); + } + } + else if (!path.isEmpty()) + { + typeSolver = new JavaParserTypeSolver(new File(path)); + } + + if (typeSolver != null) + { + typeSolvers.put(path, typeSolver); + combinedTypeSolver.add(typeSolver); + } } } + CompilationUnit cu = JavaParser.parse(new StringReader(fileContent)); JavaAstVisitor astVisitor = ( verbose == 1 ? - new JavaVerboseAstVisitor(address, filePath, new FileContent(fileContent), typeSolver) : - new JavaAstVisitor(address, filePath, new FileContent(fileContent), typeSolver) + new JavaVerboseAstVisitor(address, filePath, new FileContent(fileContent), combinedTypeSolver) : + new JavaAstVisitor(address, filePath, new FileContent(fileContent), combinedTypeSolver) ); cu.accept(astVisitor, null); @@ -95,8 +115,6 @@ public class JavaIndexer } } } - - JavaParserFacade.clearInstances(); } public static String getPackageName(String fileContent) @@ -123,6 +141,13 @@ public class JavaIndexer return packageName; } + public static void clearCaches() + { + typeSolvers.clear(); + JavaParserFacade.clearInstances(); + Runtime.getRuntime().gc(); + } + // helpers static public void recordSymbol( diff --git a/setup/jars/MacOSX/guava-18.0.jar b/setup/jars/MacOSX/guava-18.0.jar deleted file mode 100644 index 8f89e490..00000000 Binary files a/setup/jars/MacOSX/guava-18.0.jar and /dev/null differ diff --git a/setup/jars/MacOSX/guava-21.0.jar b/setup/jars/MacOSX/guava-21.0.jar new file mode 100644 index 00000000..06181959 Binary files /dev/null and b/setup/jars/MacOSX/guava-21.0.jar differ diff --git a/setup/jars/MacOSX/java-symbol-solver-core.jar b/setup/jars/MacOSX/java-symbol-solver-core.jar index 31c5d439..336c0cb8 100644 Binary files a/setup/jars/MacOSX/java-symbol-solver-core.jar and b/setup/jars/MacOSX/java-symbol-solver-core.jar differ diff --git a/setup/jars/MacOSX/java-symbol-solver-logic.jar b/setup/jars/MacOSX/java-symbol-solver-logic.jar index 128b69dd..6bbbcb99 100644 Binary files a/setup/jars/MacOSX/java-symbol-solver-logic.jar and b/setup/jars/MacOSX/java-symbol-solver-logic.jar differ diff --git a/setup/jars/MacOSX/java-symbol-solver-model.jar b/setup/jars/MacOSX/java-symbol-solver-model.jar index f2c974f8..f7efa962 100644 Binary files a/setup/jars/MacOSX/java-symbol-solver-model.jar and b/setup/jars/MacOSX/java-symbol-solver-model.jar differ diff --git a/setup/jars/MacOSX/javaparser-core.jar b/setup/jars/MacOSX/javaparser-core.jar index f77308aa..37825d8c 100644 Binary files a/setup/jars/MacOSX/javaparser-core.jar and b/setup/jars/MacOSX/javaparser-core.jar differ diff --git a/setup/jars/linux/guava-18.0.jar b/setup/jars/linux/guava-18.0.jar deleted file mode 100644 index 8f89e490..00000000 Binary files a/setup/jars/linux/guava-18.0.jar and /dev/null differ diff --git a/setup/jars/linux/guava-21.0.jar b/setup/jars/linux/guava-21.0.jar new file mode 100644 index 00000000..06181959 Binary files /dev/null and b/setup/jars/linux/guava-21.0.jar differ diff --git a/setup/jars/linux/java-symbol-solver-core.jar b/setup/jars/linux/java-symbol-solver-core.jar index de713982..01137b43 100644 Binary files a/setup/jars/linux/java-symbol-solver-core.jar and b/setup/jars/linux/java-symbol-solver-core.jar differ diff --git a/setup/jars/linux/java-symbol-solver-logic.jar b/setup/jars/linux/java-symbol-solver-logic.jar index 4b8c527e..90252f83 100644 Binary files a/setup/jars/linux/java-symbol-solver-logic.jar and b/setup/jars/linux/java-symbol-solver-logic.jar differ diff --git a/setup/jars/linux/java-symbol-solver-model.jar b/setup/jars/linux/java-symbol-solver-model.jar index 648c4fa5..434c8242 100644 Binary files a/setup/jars/linux/java-symbol-solver-model.jar and b/setup/jars/linux/java-symbol-solver-model.jar differ diff --git a/setup/jars/linux/javaparser-core.jar b/setup/jars/linux/javaparser-core.jar index 1e7b9355..c4b3f5d4 100644 Binary files a/setup/jars/linux/javaparser-core.jar and b/setup/jars/linux/javaparser-core.jar differ diff --git a/setup/jars/windows/guava-18.0.jar b/setup/jars/windows/guava-18.0.jar deleted file mode 100644 index 8f89e490..00000000 Binary files a/setup/jars/windows/guava-18.0.jar and /dev/null differ diff --git a/setup/jars/windows/guava-21.0.jar b/setup/jars/windows/guava-21.0.jar new file mode 100644 index 00000000..06181959 Binary files /dev/null and b/setup/jars/windows/guava-21.0.jar differ diff --git a/setup/jars/windows/java-symbol-solver-core.jar b/setup/jars/windows/java-symbol-solver-core.jar index 876e84ea..4b0ca94d 100644 Binary files a/setup/jars/windows/java-symbol-solver-core.jar and b/setup/jars/windows/java-symbol-solver-core.jar differ diff --git a/setup/jars/windows/java-symbol-solver-logic.jar b/setup/jars/windows/java-symbol-solver-logic.jar index c31f577b..0aaa2d06 100644 Binary files a/setup/jars/windows/java-symbol-solver-logic.jar and b/setup/jars/windows/java-symbol-solver-logic.jar differ diff --git a/setup/jars/windows/java-symbol-solver-model.jar b/setup/jars/windows/java-symbol-solver-model.jar index f600b5a7..333fa396 100644 Binary files a/setup/jars/windows/java-symbol-solver-model.jar and b/setup/jars/windows/java-symbol-solver-model.jar differ diff --git a/setup/jars/windows/javaparser-core.jar b/setup/jars/windows/javaparser-core.jar index b5056345..d3af50e2 100644 Binary files a/setup/jars/windows/javaparser-core.jar and b/setup/jars/windows/javaparser-core.jar differ diff --git a/src/lib/component/view/UndoRedoView.h b/src/lib/component/view/UndoRedoView.h index 24522fea..4ee5d6b0 100644 --- a/src/lib/component/view/UndoRedoView.h +++ b/src/lib/component/view/UndoRedoView.h @@ -1,6 +1,8 @@ #ifndef UNDO_REDO_VIEW_H #define UNDO_REDO_VIEW_H +#include + #include "component/view/View.h" #include diff --git a/src/lib/data/indexer/Indexer.h b/src/lib/data/indexer/Indexer.h index 58cb74b3..44d445a4 100644 --- a/src/lib/data/indexer/Indexer.h +++ b/src/lib/data/indexer/Indexer.h @@ -4,11 +4,10 @@ #include #include "data/indexer/IndexerBase.h" -#include "data/parser/ParserClientImpl.h" -#include "utility/file/FileRegister.h" +#include "data/indexer/IndexerCommand.h" #include "utility/logging/logging.h" -template +template class Indexer : public IndexerBase { @@ -20,21 +19,25 @@ public: virtual std::shared_ptr index( std::shared_ptr indexerCommand, std::shared_ptr fileRegister); + + virtual std::shared_ptr doIndex( + std::shared_ptr indexerCommand, + std::shared_ptr fileRegister) = 0; }; -template -Indexer::~Indexer() +template +Indexer::~Indexer() { } -template -std::string Indexer::getKindString() const +template +std::string Indexer::getKindString() const { return IndexerCommandType::getIndexerKindString(); } -template -std::shared_ptr Indexer::index( +template +std::shared_ptr Indexer::index( std::shared_ptr indexerCommand, std::shared_ptr fileRegister) { std::shared_ptr castedCommand = std::dynamic_pointer_cast(indexerCommand); @@ -46,33 +49,7 @@ std::shared_ptr Indexer::in return std::shared_ptr(); } - std::shared_ptr parserClient = std::make_shared(); - - std::shared_ptr parser = std::make_shared(parserClient, fileRegister); - - std::shared_ptr storage = std::make_shared(); - parserClient->setStorage(storage); - - parser->buildIndex(castedCommand); - - parserClient->resetStorage(); - - if (parserClient->hasFatalErrors() || indexerCommand->preprocessorOnly()) - { - storage->setAllFilesIncomplete(); - } - else - { - storage->setFilesWithErrorsIncomplete(); - fileRegister->markIndexingFilesIndexed(); - } - - if (interrupted()) - { - return std::shared_ptr(); - } - - return storage; + return doIndex(castedCommand, fileRegister); } #endif // INDEXER_H diff --git a/src/lib/data/indexer/IndexerBase.h b/src/lib/data/indexer/IndexerBase.h index 23d608f3..3cd9df82 100644 --- a/src/lib/data/indexer/IndexerBase.h +++ b/src/lib/data/indexer/IndexerBase.h @@ -2,11 +2,11 @@ #define INDEXER_BASE_H #include - -#include "data/indexer/IndexerCommand.h" -#include "data/IntermediateStorage.h" +#include class FileRegister; +class IndexerCommand; +class IntermediateStorage; class IndexerBase { diff --git a/src/lib/data/indexer/IndexerComposite.cpp b/src/lib/data/indexer/IndexerComposite.cpp index f400db41..c218b5b7 100644 --- a/src/lib/data/indexer/IndexerComposite.cpp +++ b/src/lib/data/indexer/IndexerComposite.cpp @@ -1,5 +1,8 @@ #include "data/indexer/IndexerComposite.h" + +#include "data/indexer/IndexerCommand.h" #include "utility/logging/logging.h" +#include "data/IntermediateStorage.h" IndexerComposite::~IndexerComposite() { diff --git a/src/lib_cxx/CMakeLists.txt b/src/lib_cxx/CMakeLists.txt index f6d7de44..d10f1404 100644 --- a/src/lib_cxx/CMakeLists.txt +++ b/src/lib_cxx/CMakeLists.txt @@ -8,6 +8,7 @@ add_files( data/indexer/IndexerCommandCxxCdb.h data/indexer/IndexerCommandCxxManual.cpp data/indexer/IndexerCommandCxxManual.h + data/indexer/IndexerCxx.h data/indexer/IndexerFactoryModuleCxxCdb.cpp data/indexer/IndexerFactoryModuleCxxCdb.h data/indexer/IndexerFactoryModuleCxxManual.cpp diff --git a/src/lib_cxx/data/indexer/IndexerCxx.h b/src/lib_cxx/data/indexer/IndexerCxx.h new file mode 100644 index 00000000..f71eacc9 --- /dev/null +++ b/src/lib_cxx/data/indexer/IndexerCxx.h @@ -0,0 +1,60 @@ +#ifndef INDEXER_CXX_H +#define INDEXER_CXX_H + +#include + +#include "data/indexer/Indexer.h" +#include "data/parser/ParserClientImpl.h" +#include "utility/file/FileRegister.h" + +template +class IndexerCxx: public Indexer +{ +public: + virtual ~IndexerCxx(); + + virtual std::shared_ptr doIndex( + std::shared_ptr indexerCommand, + std::shared_ptr fileRegister); +}; + +template +IndexerCxx::~IndexerCxx() +{ +} + +template +std::shared_ptr IndexerCxx::doIndex( + std::shared_ptr indexerCommand, + std::shared_ptr fileRegister) +{ + std::shared_ptr parserClient = std::make_shared(); + + std::shared_ptr parser = std::make_shared(parserClient, fileRegister); + + std::shared_ptr storage = std::make_shared(); + parserClient->setStorage(storage); + + parser->buildIndex(indexerCommand); + + parserClient->resetStorage(); + + if (parserClient->hasFatalErrors() || indexerCommand->preprocessorOnly()) + { + storage->setAllFilesIncomplete(); + } + else + { + storage->setFilesWithErrorsIncomplete(); + fileRegister->markIndexingFilesIndexed(); + } + + if (interrupted()) + { + return std::shared_ptr(); + } + + return storage; +} + +#endif // INDEXER_CXX_H diff --git a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.cpp b/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.cpp index e66bcd49..be1d782b 100644 --- a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.cpp +++ b/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.cpp @@ -1,6 +1,6 @@ #include "data/indexer/IndexerFactoryModuleCxxCdb.h" -#include "data/indexer/Indexer.h" +#include "data/indexer/IndexerCxx.h" #include "data/indexer/IndexerCommandCxxCdb.h" #include "data/parser/cxx/CxxParser.h" @@ -10,5 +10,5 @@ IndexerFactoryModuleCxxCdb::~IndexerFactoryModuleCxxCdb() std::shared_ptr IndexerFactoryModuleCxxCdb::createIndexer() { - return std::make_shared>(); + return std::make_shared>(); } diff --git a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxManual.cpp b/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxManual.cpp index 32e37638..ed4d7d0f 100644 --- a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxManual.cpp +++ b/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxManual.cpp @@ -1,6 +1,6 @@ #include "data/indexer/IndexerFactoryModuleCxxManual.h" -#include "data/indexer/Indexer.h" +#include "data/indexer/IndexerCxx.h" #include "data/indexer/IndexerCommandCxxManual.h" #include "data/parser/cxx/CxxParser.h" @@ -10,5 +10,5 @@ IndexerFactoryModuleCxxManual::~IndexerFactoryModuleCxxManual() std::shared_ptr IndexerFactoryModuleCxxManual::createIndexer() { - return std::make_shared>(); + return std::make_shared>(); } diff --git a/src/lib_java/CMakeLists.txt b/src/lib_java/CMakeLists.txt index 5bb5066c..05edd67f 100644 --- a/src/lib_java/CMakeLists.txt +++ b/src/lib_java/CMakeLists.txt @@ -6,6 +6,8 @@ add_files( data/indexer/IndexerCommandJava.h data/indexer/IndexerFactoryModuleJava.cpp data/indexer/IndexerFactoryModuleJava.h + data/indexer/IndexerJava.cpp + data/indexer/IndexerJava.h data/parser/java/JavaParser.cpp data/parser/java/JavaParser.h diff --git a/src/lib_java/data/indexer/IndexerFactoryModuleJava.cpp b/src/lib_java/data/indexer/IndexerFactoryModuleJava.cpp index 4e78aebf..cb68183f 100644 --- a/src/lib_java/data/indexer/IndexerFactoryModuleJava.cpp +++ b/src/lib_java/data/indexer/IndexerFactoryModuleJava.cpp @@ -1,8 +1,6 @@ #include "data/indexer/IndexerFactoryModuleJava.h" -#include "data/indexer/Indexer.h" -#include "data/indexer/IndexerCommandJava.h" -#include "data/parser/java/JavaParser.h" +#include "data/indexer/IndexerJava.h" IndexerFactoryModuleJava::~IndexerFactoryModuleJava() { @@ -10,5 +8,5 @@ IndexerFactoryModuleJava::~IndexerFactoryModuleJava() std::shared_ptr IndexerFactoryModuleJava::createIndexer() { - return std::make_shared>(); + return std::make_shared(); } diff --git a/src/lib_java/data/indexer/IndexerJava.cpp b/src/lib_java/data/indexer/IndexerJava.cpp new file mode 100644 index 00000000..d7e46fdc --- /dev/null +++ b/src/lib_java/data/indexer/IndexerJava.cpp @@ -0,0 +1,44 @@ +#include "data/indexer/IndexerJava.h" + +#include "data/indexer/IndexerCommandJava.h" +#include "data/parser/ParserClientImpl.h" +#include "data/parser/java/JavaParser.h" +#include "utility/file/FileRegister.h" + +IndexerJava::~IndexerJava() +{ + JavaParser::clearCaches(); +} + +std::shared_ptr IndexerJava::doIndex( + std::shared_ptr indexerCommand, + std::shared_ptr fileRegister) +{ + std::shared_ptr parserClient = std::make_shared(); + + std::shared_ptr parser = std::make_shared(parserClient, fileRegister); + + std::shared_ptr storage = std::make_shared(); + parserClient->setStorage(storage); + + parser->buildIndex(indexerCommand); + + parserClient->resetStorage(); + + if (parserClient->hasFatalErrors() || indexerCommand->preprocessorOnly()) + { + storage->setAllFilesIncomplete(); + } + else + { + storage->setFilesWithErrorsIncomplete(); + fileRegister->markIndexingFilesIndexed(); + } + + if (interrupted()) + { + return std::shared_ptr(); + } + + return storage; +} diff --git a/src/lib_java/data/indexer/IndexerJava.h b/src/lib_java/data/indexer/IndexerJava.h new file mode 100644 index 00000000..e106024e --- /dev/null +++ b/src/lib_java/data/indexer/IndexerJava.h @@ -0,0 +1,19 @@ +#ifndef INDEXER_JAVA_H +#define INDEXER_JAVA_H + +#include + +#include "data/indexer/IndexerCommandJava.h" +#include "data/indexer/Indexer.h" + +class IndexerJava: public Indexer +{ +public: + virtual ~IndexerJava(); + + virtual std::shared_ptr doIndex( + std::shared_ptr indexerCommand, + std::shared_ptr fileRegister); +}; + +#endif // INDEXER_JAVA_H diff --git a/src/lib_java/data/parser/java/JavaEnvironment.cpp b/src/lib_java/data/parser/java/JavaEnvironment.cpp index 752560b1..e1c4b667 100644 --- a/src/lib_java/data/parser/java/JavaEnvironment.cpp +++ b/src/lib_java/data/parser/java/JavaEnvironment.cpp @@ -10,6 +10,18 @@ JavaEnvironment::~JavaEnvironment() JavaEnvironmentFactory::getInstance()->unregisterEnvironment(); } +bool JavaEnvironment::callStaticVoidMethod(std::string className, std::string methodName) +{ + jclass javaClass = getJavaClass(className); + jmethodID javaMethodId = getJavaStaticMethod(javaClass, methodName, "()V"); + if(javaMethodId != nullptr) + { + m_env->CallStaticVoidMethod(javaClass, javaMethodId); + return true; + } + return false; +} + bool JavaEnvironment::callStaticVoidMethod(std::string className, std::string methodName, int arg1, std::string arg2, std::string arg3, std::string arg4, int arg5) { jclass javaClass = getJavaClass(className); diff --git a/src/lib_java/data/parser/java/JavaEnvironment.h b/src/lib_java/data/parser/java/JavaEnvironment.h index b6911dfd..2da48d7e 100644 --- a/src/lib_java/data/parser/java/JavaEnvironment.h +++ b/src/lib_java/data/parser/java/JavaEnvironment.h @@ -32,6 +32,7 @@ public: }; ~JavaEnvironment(); + bool callStaticVoidMethod(std::string className, std::string methodName); bool callStaticVoidMethod(std::string className, std::string methodName, int arg1, std::string arg2, std::string arg3, std::string arg4, int arg5); bool callStaticMethod(std::string className, std::string methodName, std::string& ret, std::string arg1); diff --git a/src/lib_java/data/parser/java/JavaEnvironmentFactory.cpp b/src/lib_java/data/parser/java/JavaEnvironmentFactory.cpp index cb3d2691..998bc6ac 100644 --- a/src/lib_java/data/parser/java/JavaEnvironmentFactory.cpp +++ b/src/lib_java/data/parser/java/JavaEnvironmentFactory.cpp @@ -28,7 +28,6 @@ void JavaEnvironmentFactory::createInstance(std::string classPath, std::string& } std::function createInstanceFunction; - const FilePath javaPath(ApplicationSettings::getInstance()->getJavaPath()); createInstanceFunction = utility::loadFunctionFromLibrary( javaPath, diff --git a/src/lib_java/data/parser/java/JavaParser.cpp b/src/lib_java/data/parser/java/JavaParser.cpp index c1b66a2b..5a603d3f 100644 --- a/src/lib_java/data/parser/java/JavaParser.cpp +++ b/src/lib_java/data/parser/java/JavaParser.cpp @@ -26,7 +26,7 @@ std::string JavaParser::prepareJavaEnvironment() const std::string separator = ":"; #endif JavaEnvironmentFactory::createInstance( - ResourcePaths::getJavaPath().str() + "guava-18.0.jar" + separator + + ResourcePaths::getJavaPath().str() + "guava-21.0.jar" + separator + ResourcePaths::getJavaPath().str() + "java-indexer.jar" + separator + ResourcePaths::getJavaPath().str() + "javaparser-core.jar" + separator + ResourcePaths::getJavaPath().str() + "javaslang-2.0.3.jar" + separator + @@ -41,6 +41,22 @@ std::string JavaParser::prepareJavaEnvironment() return errorString; } +void JavaParser::clearCaches() +{ + std::shared_ptr factory = JavaEnvironmentFactory::getInstance(); + if (factory) + { + std::shared_ptr environment = factory->createEnvironment(); + if (environment) + { + environment->callStaticVoidMethod( + "com/sourcetrail/JavaIndexer", + "clearCaches" + ); + } + } +} + JavaParser::JavaParser(std::shared_ptr client, std::shared_ptr fileRegister) : Parser(client) , m_id(s_nextParserId++) diff --git a/src/lib_java/data/parser/java/JavaParser.h b/src/lib_java/data/parser/java/JavaParser.h index 5ade75a8..59b9684a 100644 --- a/src/lib_java/data/parser/java/JavaParser.h +++ b/src/lib_java/data/parser/java/JavaParser.h @@ -33,6 +33,7 @@ class JavaParser: public Parser public: // returns: error message static std::string prepareJavaEnvironment(); + static void clearCaches(); JavaParser(std::shared_ptr client, std::shared_ptr fileRegister); ~JavaParser(); diff --git a/src/lib_java/project/SourceGroupJava.cpp b/src/lib_java/project/SourceGroupJava.cpp index 5ad5610a..5438dd96 100644 --- a/src/lib_java/project/SourceGroupJava.cpp +++ b/src/lib_java/project/SourceGroupJava.cpp @@ -108,6 +108,7 @@ std::vector> SourceGroupJava::getIndexerCommands bool SourceGroupJava::prepareJavaEnvironment() { const std::string errorString = JavaParser::prepareJavaEnvironment(); + if (errorString.size() > 0) { LOG_ERROR(errorString); diff --git a/src/test/JavaParserTestSuite.h b/src/test/JavaParserTestSuite.h index b6535280..b7458f9e 100644 --- a/src/test/JavaParserTestSuite.h +++ b/src/test/JavaParserTestSuite.h @@ -817,7 +817,7 @@ private: const std::string separator = ":"; #endif JavaEnvironmentFactory::createInstance( - "../app/data/java/guava-18.0.jar" + separator + + "../app/data/java/guava-21.0.jar" + separator + "../app/data/java/java-indexer.jar" + separator + "../app/data/java/javaparser-core.jar" + separator + "../app/data/java/javaslang-2.0.3.jar" + separator +