1 package org.jetbrains.jps.server;
3 import org.jetbrains.jps.Project;
4 import org.jetbrains.jps.incremental.FSState;
5 import org.jetbrains.jps.incremental.ModuleRootsIndex;
6 import org.jetbrains.jps.incremental.storage.BuildDataManager;
7 import org.jetbrains.jps.incremental.storage.ProjectTimestamps;
9 import java.io.IOException;
12 * @author Eugene Zhuravlev
15 public final class ProjectDescriptor {
16 public final String projectName;
17 public final Project project;
18 public final FSState fsState;
19 public final ProjectTimestamps timestamps;
20 public final BuildDataManager dataManager;
21 public ModuleRootsIndex rootsIndex;
23 private int myUseCounter = 1;
25 public ProjectDescriptor(String projectName, Project project, FSState fsState, ProjectTimestamps timestamps, BuildDataManager dataManager) {
26 this.projectName = projectName;
27 this.project = project;
28 this.fsState = fsState;
29 this.timestamps = timestamps;
30 this.dataManager = dataManager;
31 this.rootsIndex = new ModuleRootsIndex(project);
33 public synchronized void incUsageCounter() {
37 public void release() {
41 shouldClose = myUseCounter == 0;
51 catch (IOException e) {
52 e.printStackTrace(System.err);
57 timestamps.getStorage().force();
58 dataManager.flush(false);