logic: fix update of Java indexer to new version of Java dependencies

* reapplied previous reverts
* added cache for TypeSolvers in Java code
This commit is contained in:
malte_langkabel
2017-05-10 17:54:21 +02:00
parent f9a6c1ac09
commit 8a92453d60
39 changed files with 231 additions and 70 deletions
@@ -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<IndexerBase> IndexerFactoryModuleJava::createIndexer()
{
return std::make_shared<Indexer<IndexerCommandJava, JavaParser>>();
return std::make_shared<IndexerJava>();
}
+44
View File
@@ -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<IntermediateStorage> IndexerJava::doIndex(
std::shared_ptr<IndexerCommandJava> indexerCommand,
std::shared_ptr<FileRegister> fileRegister)
{
std::shared_ptr<ParserClientImpl> parserClient = std::make_shared<ParserClientImpl>();
std::shared_ptr<JavaParser> parser = std::make_shared<JavaParser>(parserClient, fileRegister);
std::shared_ptr<IntermediateStorage> storage = std::make_shared<IntermediateStorage>();
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<IntermediateStorage>();
}
return storage;
}
+19
View File
@@ -0,0 +1,19 @@
#ifndef INDEXER_JAVA_H
#define INDEXER_JAVA_H
#include <memory>
#include "data/indexer/IndexerCommandJava.h"
#include "data/indexer/Indexer.h"
class IndexerJava: public Indexer<IndexerCommandJava>
{
public:
virtual ~IndexerJava();
virtual std::shared_ptr<IntermediateStorage> doIndex(
std::shared_ptr<IndexerCommandJava> indexerCommand,
std::shared_ptr<FileRegister> fileRegister);
};
#endif // INDEXER_JAVA_H