logic: added Gradle project setup (issue #379)

* added implementation for Gradle project setup (icon is still missing)
* refactored project loading/saving and SourceGroupSettings
* removed long deprecated Cxx UseSourcePathsForHeaderSearch option

fortune cookie message = There is true and sincere friendship between you and your friends.
This commit is contained in:
mlangkabel
2017-10-02 18:43:59 +02:00
parent 72ae4d5695
commit e604d24c40
83 changed files with 3518 additions and 1182 deletions
@@ -22,6 +22,21 @@ bool JavaEnvironment::callStaticVoidMethod(std::string className, std::string me
return false;
}
bool JavaEnvironment::callStaticVoidMethod(std::string className, std::string methodName, const std::string& arg1, const std::string& arg2, const std::string& arg3)
{
jclass javaClass = getJavaClass(className);
jmethodID javaMethodId = getJavaStaticMethod(javaClass, methodName, "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
if (javaMethodId != nullptr)
{
jstring jarg1 = m_env->NewStringUTF(arg1.c_str());
jstring jarg2 = m_env->NewStringUTF(arg2.c_str());
jstring jarg3 = m_env->NewStringUTF(arg3.c_str());
m_env->CallStaticVoidMethod(javaClass, javaMethodId, jarg1, jarg2, jarg3);
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);
@@ -39,11 +54,11 @@ bool JavaEnvironment::callStaticVoidMethod(std::string className, std::string me
return false;
}
bool JavaEnvironment::callStaticMethod(std::string className, std::string methodName, std::string& ret, std::string arg1)
bool JavaEnvironment::callStaticStringMethod(std::string className, std::string methodName, std::string& ret, const std::string& arg1)
{
jclass javaClass = getJavaClass(className);
jmethodID javaMethodId = getJavaStaticMethod(javaClass, methodName, "(Ljava/lang/String;)Ljava/lang/String;");
if(javaMethodId != nullptr)
jmethodID javaMethodId = getJavaStaticMethod(javaClass, methodName, "(Ljava/lang/String;)Ljava/lang/String;");
if (javaMethodId != nullptr)
{
jstring jarg1 = m_env->NewStringUTF(arg1.c_str());
jstring jret = (jstring)m_env->CallStaticObjectMethod(javaClass, javaMethodId, jarg1);
@@ -58,6 +73,26 @@ bool JavaEnvironment::callStaticMethod(std::string className, std::string method
return false;
}
bool JavaEnvironment::callStaticStringMethod(std::string className, std::string methodName, std::string& ret, const std::string& arg1, const std::string& arg2)
{
jclass javaClass = getJavaClass(className);
jmethodID javaMethodId = getJavaStaticMethod(javaClass, methodName, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
if (javaMethodId != nullptr)
{
jstring jarg1 = m_env->NewStringUTF(arg1.c_str());
jstring jarg2 = m_env->NewStringUTF(arg2.c_str());
jstring jret = (jstring)m_env->CallStaticObjectMethod(javaClass, javaMethodId, jarg1, jarg2);
if (jret)
{
const char *buffer = m_env->GetStringUTFChars(jret, JNI_FALSE);
ret = std::string(buffer);
m_env->ReleaseStringUTFChars(jret, buffer);
return true;
}
}
return false;
}
std::string JavaEnvironment::toStdString(jstring s)
{
const char *nativeString = m_env->GetStringUTFChars(s, 0);
@@ -33,8 +33,10 @@ public:
~JavaEnvironment();
bool callStaticVoidMethod(std::string className, std::string methodName);
bool callStaticVoidMethod(std::string className, std::string methodName, const std::string& arg1, const std::string& arg2, const std::string& arg3);
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);
bool callStaticStringMethod(std::string className, std::string methodName, std::string& ret, const std::string& arg1);
bool callStaticStringMethod(std::string className, std::string methodName, std::string& ret, const std::string& arg1, const std::string& arg2);
std::string toStdString(jstring s);
jstring toJString(std::string s);
+2 -58
View File
@@ -11,65 +11,9 @@
#include "utility/file/FileSystem.h"
#include "utility/text/TextAccess.h"
#include "utility/ResourcePaths.h"
#include "utility/utilityJava.h"
#include "utility/utilityString.h"
std::vector<std::string> JavaParser::getRequiredJarNames()
{
std::vector<std::string> jarNames = {
"java-indexer.jar",
"org.eclipse.core.commands-3.8.1.jar",
"org.eclipse.core.contenttype-3.5.100.jar",
"org.eclipse.core.expressions-3.5.100.jar",
"org.eclipse.core.filesystem-1.6.1.jar",
"org.eclipse.core.jobs-3.8.0.jar",
"org.eclipse.core.resources-3.11.1.jar",
"org.eclipse.core.runtime-3.12.0.jar",
"org.eclipse.equinox.app-1.3.400.jar",
"org.eclipse.equinox.common-3.8.0.jar",
"org.eclipse.equinox.preferences-3.6.1.jar",
"org.eclipse.equinox.registry-3.6.100.jar",
"org.eclipse.jdt.core-3.12.3.jar",
"org.eclipse.osgi-3.11.3.jar",
"org.eclipse.text-3.6.0.jar"
};
return jarNames;
}
std::string JavaParser::prepareJavaEnvironment()
{
std::string errorString;
if (!JavaEnvironmentFactory::getInstance())
{
#ifdef _WIN32
const std::string separator = ";";
#else
const std::string separator = ":";
#endif
std::string classPath = "";
{
const std::vector<std::string> jarNames = getRequiredJarNames();
for (size_t i = 0; i < jarNames.size(); i++)
{
if (i != 0)
{
classPath += separator;
}
classPath += ResourcePaths::getJavaPath().str() + jarNames[i];
}
}
JavaEnvironmentFactory::createInstance(
classPath,
errorString
);
}
return errorString;
}
void JavaParser::clearCaches()
{
std::shared_ptr<JavaEnvironmentFactory> factory = JavaEnvironmentFactory::getInstance();
@@ -90,7 +34,7 @@ JavaParser::JavaParser(std::shared_ptr<ParserClient> client, std::shared_ptr<Fil
: Parser(client)
, m_id(s_nextParserId++)
{
const std::string errorString = prepareJavaEnvironment();
const std::string errorString = utility::prepareJavaEnvironment();
if (errorString.size() > 0)
{
LOG_ERROR(errorString);
@@ -32,9 +32,6 @@ class FileRegister;
class JavaParser: public Parser
{
public:
static std::vector<std::string> getRequiredJarNames();
// returns: error message
static std::string prepareJavaEnvironment();
static void clearCaches();
JavaParser(std::shared_ptr<ParserClient> client, std::shared_ptr<FileRegister> fileRegister);