use of meghanada.project.gradle.GradleProject in project meghanada-server by mopemope.
the class Session method searchAndChangeProject.
private boolean searchAndChangeProject(final File base) throws IOException {
final File projectRoot = Session.findProjectRoot(base);
if (isNull(projectRoot) || this.currentProject.getProjectRoot().equals(projectRoot)) {
// not change
return false;
}
if (this.projects.containsKey(projectRoot)) {
// loaded project
this.currentProject = this.projects.get(projectRoot);
log.info("change project {}", this.currentProject.getName());
String projectRootPath = this.currentProject.getProjectRootPath();
Config.setProjectRoot(projectRootPath);
this.getLocationSearcher().setProject(currentProject);
this.getDeclarationSearcher().setProject(this.currentProject);
this.getVariableCompletion().setProject(this.currentProject);
this.getCompletion().setProject(this.currentProject);
return true;
}
if (currentProject instanceof GradleProject) {
return loadProject(projectRoot, Project.GRADLE_PROJECT_FILE).map(project -> setProject(projectRoot, project)).orElse(false);
} else if (currentProject instanceof MavenProject) {
return loadProject(projectRoot, Project.MVN_PROJECT_FILE).map(project -> setProject(projectRoot, project)).orElse(false);
}
return loadProject(projectRoot, Config.MEGHANADA_CONF_FILE).map(project -> setProject(projectRoot, project)).orElse(false);
}
use of meghanada.project.gradle.GradleProject in project meghanada-server by mopemope.
the class Session method loadProject.
private static Optional<Project> loadProject(final File projectRoot, final String targetFile) throws IOException {
final EntryMessage entryMessage = log.traceEntry("projectRoot={} targetFile={}", projectRoot, targetFile);
final String projectRootPath = projectRoot.getCanonicalPath();
Config.setProjectRoot(projectRootPath);
try {
final Config config = Config.load();
final String id = FileUtils.findProjectID(projectRoot, targetFile);
if (Project.loadedProject.containsKey(id)) {
// loaded skip
final Project project = Project.loadedProject.get(id);
log.traceExit(entryMessage);
Config.setProjectRoot(projectRootPath);
return Optional.of(project);
}
log.trace("project projectID={} projectRoot={}", id, projectRoot);
if (config.useFastBoot()) {
try {
final Project tempProject = Project.loadProject(projectRootPath);
if (nonNull(tempProject) && tempProject.getId().equals(id)) {
tempProject.setId(id);
log.debug("load from cache project={}", tempProject);
log.info("load project from cache. projectRoot:{}", tempProject.getProjectRoot());
log.traceExit(entryMessage);
return Optional.of(tempProject.mergeFromProjectConfig());
}
} catch (Exception ex) {
log.catching(ex);
}
}
Project project;
switch(targetFile) {
case Project.GRADLE_PROJECT_FILE:
project = new GradleProject(projectRoot);
break;
case Project.MVN_PROJECT_FILE:
project = new MavenProject(projectRoot);
break;
default:
project = new MeghanadaProject(projectRoot);
break;
}
project.setId(id);
final Stopwatch stopwatch = Stopwatch.createStarted();
final Project parsed = project.parseProject();
if (config.useFastBoot()) {
parsed.saveProject();
}
log.info("loaded project:{} elapsed:{}", project.getProjectRoot(), stopwatch.stop());
log.traceExit(entryMessage);
return Optional.of(parsed.mergeFromProjectConfig());
} finally {
Config.setProjectRoot(projectRootPath);
}
}
use of meghanada.project.gradle.GradleProject in project meghanada-server by mopemope.
the class Session method reloadProject.
public void reloadProject() throws IOException {
final Project currentProject = this.currentProject;
final File projectRoot = currentProject.getProjectRoot();
this.projects.clear();
if (currentProject instanceof GradleProject) {
loadProject(projectRoot, Project.GRADLE_PROJECT_FILE).ifPresent(project -> {
boolean ret = setProject(projectRoot, project);
});
} else if (currentProject instanceof MavenProject) {
loadProject(projectRoot, Project.MVN_PROJECT_FILE).ifPresent(project -> {
boolean ret = setProject(projectRoot, project);
});
} else {
loadProject(projectRoot, Config.MEGHANADA_CONF_FILE).ifPresent(project -> {
boolean ret = setProject(projectRoot, project);
});
}
final Set<File> temp = new HashSet<>(this.currentProject.getSources());
temp.addAll(this.currentProject.getTestSources());
this.sessionEventBus.requestWatchFiles(new ArrayList<>(temp));
final CachedASMReflector reflector = CachedASMReflector.getInstance();
reflector.addClasspath(Session.getSystemJars());
this.sessionEventBus.requestCreateCache();
this.projects.values().forEach(project -> this.sessionEventBus.requestWatchFile(project.getProjectRoot()));
}
use of meghanada.project.gradle.GradleProject in project meghanada-server by mopemope.
the class GradleTestBase method setupProject.
@SuppressWarnings("CheckReturnValue")
public static void setupProject(boolean useCache) throws Exception {
if (useCache) {
System.setProperty("meghanada.source.cache", "true");
} else {
System.setProperty("meghanada.source.cache", "false");
}
if (project == null) {
// replace tmp
Project newProject = new GradleProject(new File("./").getCanonicalFile());
final File tempDir = Files.createTempDir();
tempDir.deleteOnExit();
final String path = tempDir.getCanonicalPath();
System.setProperty(TEMP_PROJECT_SETTING_DIR, path);
log.info("create database {}", path);
project = newProject.parseProject().mergeFromProjectConfig();
}
Config config = Config.load();
if (useCache) {
config.update("source-cache", true);
} else {
config.update("source-cache", false);
}
log.info("finish setupProject");
}
use of meghanada.project.gradle.GradleProject in project meghanada-server by mopemope.
the class AnnoTest2 method init.
@BeforeSuite
public static void init() throws Exception {
final Project project = new GradleProject(new File("./").getCanonicalFile());
project.parseProject();
project.compileJava(false);
project.compileTestJava(false);
List<String> list = new ArrayList<>();
final JCDiagnostic.DiagnosticPosition pos = null;
}
Aggregations