Skip to content

Commit

Permalink
Move createBlazeProjectSnapshot instantiation to QuerySyncProject
Browse files Browse the repository at this point in the history
This results in:

1. `ProjectQuerier` being responsible for the query phase only
2. `QuerySyncProject` being able to apply artifact related transformations consistently at
   sync and build dependencies stages (not in this change).

PiperOrigin-RevId: 570048673
  • Loading branch information
Googler authored and copybara-github committed Oct 2, 2023
1 parent 8694e90 commit dac806a
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 21 deletions.
9 changes: 3 additions & 6 deletions base/src/com/google/idea/blaze/base/qsync/ProjectLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,7 @@ public QuerySyncProject loadProject(BlazeContext context) throws IOException {
new BlazeProjectSnapshotBuilder(
executor, createWorkspaceRelativePackageReader(), workspaceRoot.path(), handledRules);
QueryRunner queryRunner = createQueryRunner(buildSystem);
ProjectQuerier projectQuerier =
createProjectQuerier(
projectRefresher, blazeProjectSnapshotBuilder, queryRunner, vcsHandler);
ProjectQuerier projectQuerier = createProjectQuerier(projectRefresher, queryRunner, vcsHandler);
ProjectUpdater projectUpdater =
new ProjectUpdater(
project, importSettings, projectViewSet, workspaceRoot, projectPathResolver);
Expand All @@ -176,6 +174,7 @@ public QuerySyncProject loadProject(BlazeContext context) throws IOException {
artifactTracker,
dependencyTracker,
projectQuerier,
blazeProjectSnapshotBuilder,
latestProjectDef,
projectViewSet,
workspacePathResolver,
Expand All @@ -191,11 +190,9 @@ private ParallelPackageReader createWorkspaceRelativePackageReader() {

private ProjectQuerierImpl createProjectQuerier(
ProjectRefresher projectRefresher,
BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder,
QueryRunner queryRunner,
Optional<BlazeVcsHandler> vcsHandler) {
return new ProjectQuerierImpl(
queryRunner, projectRefresher, blazeProjectSnapshotBuilder, vcsHandler);
return new ProjectQuerierImpl(queryRunner, projectRefresher, vcsHandler);
}

protected QueryRunner createQueryRunner(BuildSystem buildSystem) {
Expand Down
5 changes: 2 additions & 3 deletions base/src/com/google/idea/blaze/base/qsync/ProjectQuerier.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import com.google.idea.blaze.base.scope.BlazeContext;
import com.google.idea.blaze.exception.BuildException;
import com.google.idea.blaze.qsync.project.BlazeProjectSnapshot;
import com.google.idea.blaze.qsync.project.PostQuerySyncData;
import com.google.idea.blaze.qsync.project.ProjectDefinition;
import java.io.IOException;
Expand All @@ -28,10 +27,10 @@
*/
public interface ProjectQuerier {

BlazeProjectSnapshot fullQuery(ProjectDefinition projectDef, BlazeContext context)
PostQuerySyncData fullQuery(ProjectDefinition projectDef, BlazeContext context)
throws IOException, BuildException;

BlazeProjectSnapshot update(
PostQuerySyncData update(
ProjectDefinition currentProjectDef, PostQuerySyncData previousState, BlazeContext context)
throws IOException, BuildException;
}
15 changes: 4 additions & 11 deletions base/src/com/google/idea/blaze/base/qsync/ProjectQuerierImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,8 @@
import com.google.idea.blaze.base.vcs.BlazeVcsHandlerProvider.BlazeVcsHandler;
import com.google.idea.blaze.common.vcs.VcsState;
import com.google.idea.blaze.exception.BuildException;
import com.google.idea.blaze.qsync.BlazeProjectSnapshotBuilder;
import com.google.idea.blaze.qsync.ProjectRefresher;
import com.google.idea.blaze.qsync.RefreshOperation;
import com.google.idea.blaze.qsync.project.BlazeProjectSnapshot;
import com.google.idea.blaze.qsync.project.PostQuerySyncData;
import com.google.idea.blaze.qsync.project.ProjectDefinition;
import com.google.idea.blaze.qsync.query.QuerySpec;
Expand All @@ -45,18 +43,15 @@ public class ProjectQuerierImpl implements ProjectQuerier {

private final QueryRunner queryRunner;
private final ProjectRefresher projectRefresher;
private final BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder;
private final Optional<BlazeVcsHandler> vcsHandler;

@VisibleForTesting
public ProjectQuerierImpl(
QueryRunner queryRunner,
ProjectRefresher projectRefresher,
BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder,
Optional<BlazeVcsHandler> vcsHandler) {
this.queryRunner = queryRunner;
this.projectRefresher = projectRefresher;
this.blazeProjectSnapshotBuilder = blazeProjectSnapshotBuilder;
this.vcsHandler = vcsHandler;
}

Expand All @@ -66,7 +61,7 @@ public ProjectQuerierImpl(
* <p>This includes reloading the project view.
*/
@Override
public BlazeProjectSnapshot fullQuery(ProjectDefinition projectDef, BlazeContext context)
public PostQuerySyncData fullQuery(ProjectDefinition projectDef, BlazeContext context)
throws IOException, BuildException {

Optional<VcsState> vcsState = getVcsState(context);
Expand All @@ -82,8 +77,7 @@ public BlazeProjectSnapshot fullQuery(ProjectDefinition projectDef, BlazeContext
RefreshOperation fullQuery = projectRefresher.startFullUpdate(context, projectDef, vcsState);

QuerySpec querySpec = fullQuery.getQuerySpec().get();
return blazeProjectSnapshotBuilder.createBlazeProjectSnapshot(
context, fullQuery.createPostQuerySyncData(queryRunner.runQuery(querySpec, context)));
return fullQuery.createPostQuerySyncData(queryRunner.runQuery(querySpec, context));
}

private Optional<VcsState> getVcsState(BlazeContext context) {
Expand Down Expand Up @@ -115,7 +109,7 @@ private Optional<VcsState> getVcsState(BlazeContext context) {
* </ul>
*/
@Override
public BlazeProjectSnapshot update(
public PostQuerySyncData update(
ProjectDefinition currentProjectDef, PostQuerySyncData previousState, BlazeContext context)
throws IOException, BuildException {

Expand All @@ -138,7 +132,6 @@ public BlazeProjectSnapshot update(
} else {
querySummary = QuerySummary.EMPTY;
}
return blazeProjectSnapshotBuilder.createBlazeProjectSnapshot(
context, refresh.createPostQuerySyncData(querySummary));
return refresh.createPostQuerySyncData(querySummary);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
import com.google.idea.blaze.common.PrintOutput;
import com.google.idea.blaze.exception.BuildException;
import com.google.idea.blaze.qsync.BlazeProject;
import com.google.idea.blaze.qsync.BlazeProjectSnapshotBuilder;
import com.google.idea.blaze.qsync.project.BlazeProjectSnapshot;
import com.google.idea.blaze.qsync.project.PostQuerySyncData;
import com.google.idea.blaze.qsync.project.ProjectDefinition;
Expand Down Expand Up @@ -84,6 +85,7 @@ public class QuerySyncProject {
private final ArtifactTracker artifactTracker;
private final DependencyTracker dependencyTracker;
private final ProjectQuerier projectQuerier;
private final BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder;
private final ProjectDefinition projectDefinition;
private final ProjectViewSet projectViewSet;
private final WorkspacePathResolver workspacePathResolver;
Expand All @@ -104,6 +106,7 @@ public QuerySyncProject(
ArtifactTracker artifactTracker,
DependencyTracker dependencyTracker,
ProjectQuerier projectQuerier,
BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder,
ProjectDefinition projectDefinition,
ProjectViewSet projectViewSet,
WorkspacePathResolver workspacePathResolver,
Expand All @@ -119,6 +122,7 @@ public QuerySyncProject(
this.artifactTracker = artifactTracker;
this.dependencyTracker = dependencyTracker;
this.projectQuerier = projectQuerier;
this.blazeProjectSnapshotBuilder = blazeProjectSnapshotBuilder;
this.projectDefinition = projectDefinition;
this.projectViewSet = projectViewSet;
this.workspacePathResolver = workspacePathResolver;
Expand Down Expand Up @@ -183,10 +187,12 @@ public void sync(BlazeContext parentContext, Optional<PostQuerySyncData> lastQue
context.push(new SyncQueryStatsScope());
try {
SaveUtil.saveAllFiles();
BlazeProjectSnapshot newSnapshot =
PostQuerySyncData postQuerySyncData =
lastQuery.isEmpty()
? projectQuerier.fullQuery(projectDefinition, context)
: projectQuerier.update(projectDefinition, lastQuery.get(), context);
BlazeProjectSnapshot newSnapshot =
blazeProjectSnapshotBuilder.createBlazeProjectSnapshot(context, postQuerySyncData);
newSnapshot =
newSnapshot.toBuilder()
.project(artifactTracker.updateProjectProto(newSnapshot.project()))
Expand Down

0 comments on commit dac806a

Please sign in to comment.