From dac806a75b9cadf993e1bbec08e8904f7f669848 Mon Sep 17 00:00:00 2001 From: Googler Date: Mon, 2 Oct 2023 06:33:14 -0700 Subject: [PATCH] Move `createBlazeProjectSnapshot` instantiation to `QuerySyncProject` 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 --- .../idea/blaze/base/qsync/ProjectLoader.java | 9 +++------ .../idea/blaze/base/qsync/ProjectQuerier.java | 5 ++--- .../idea/blaze/base/qsync/ProjectQuerierImpl.java | 15 ++++----------- .../idea/blaze/base/qsync/QuerySyncProject.java | 8 +++++++- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/base/src/com/google/idea/blaze/base/qsync/ProjectLoader.java b/base/src/com/google/idea/blaze/base/qsync/ProjectLoader.java index fe19c94e699..d6f918d58a2 100644 --- a/base/src/com/google/idea/blaze/base/qsync/ProjectLoader.java +++ b/base/src/com/google/idea/blaze/base/qsync/ProjectLoader.java @@ -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); @@ -176,6 +174,7 @@ public QuerySyncProject loadProject(BlazeContext context) throws IOException { artifactTracker, dependencyTracker, projectQuerier, + blazeProjectSnapshotBuilder, latestProjectDef, projectViewSet, workspacePathResolver, @@ -191,11 +190,9 @@ private ParallelPackageReader createWorkspaceRelativePackageReader() { private ProjectQuerierImpl createProjectQuerier( ProjectRefresher projectRefresher, - BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder, QueryRunner queryRunner, Optional vcsHandler) { - return new ProjectQuerierImpl( - queryRunner, projectRefresher, blazeProjectSnapshotBuilder, vcsHandler); + return new ProjectQuerierImpl(queryRunner, projectRefresher, vcsHandler); } protected QueryRunner createQueryRunner(BuildSystem buildSystem) { diff --git a/base/src/com/google/idea/blaze/base/qsync/ProjectQuerier.java b/base/src/com/google/idea/blaze/base/qsync/ProjectQuerier.java index ac69523c0fc..176323dd1e3 100644 --- a/base/src/com/google/idea/blaze/base/qsync/ProjectQuerier.java +++ b/base/src/com/google/idea/blaze/base/qsync/ProjectQuerier.java @@ -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; @@ -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; } diff --git a/base/src/com/google/idea/blaze/base/qsync/ProjectQuerierImpl.java b/base/src/com/google/idea/blaze/base/qsync/ProjectQuerierImpl.java index 4bb4969effd..985b700e52d 100644 --- a/base/src/com/google/idea/blaze/base/qsync/ProjectQuerierImpl.java +++ b/base/src/com/google/idea/blaze/base/qsync/ProjectQuerierImpl.java @@ -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; @@ -45,18 +43,15 @@ public class ProjectQuerierImpl implements ProjectQuerier { private final QueryRunner queryRunner; private final ProjectRefresher projectRefresher; - private final BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder; private final Optional vcsHandler; @VisibleForTesting public ProjectQuerierImpl( QueryRunner queryRunner, ProjectRefresher projectRefresher, - BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder, Optional vcsHandler) { this.queryRunner = queryRunner; this.projectRefresher = projectRefresher; - this.blazeProjectSnapshotBuilder = blazeProjectSnapshotBuilder; this.vcsHandler = vcsHandler; } @@ -66,7 +61,7 @@ public ProjectQuerierImpl( *

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 = getVcsState(context); @@ -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 getVcsState(BlazeContext context) { @@ -115,7 +109,7 @@ private Optional getVcsState(BlazeContext context) { * */ @Override - public BlazeProjectSnapshot update( + public PostQuerySyncData update( ProjectDefinition currentProjectDef, PostQuerySyncData previousState, BlazeContext context) throws IOException, BuildException { @@ -138,7 +132,6 @@ public BlazeProjectSnapshot update( } else { querySummary = QuerySummary.EMPTY; } - return blazeProjectSnapshotBuilder.createBlazeProjectSnapshot( - context, refresh.createPostQuerySyncData(querySummary)); + return refresh.createPostQuerySyncData(querySummary); } } diff --git a/base/src/com/google/idea/blaze/base/qsync/QuerySyncProject.java b/base/src/com/google/idea/blaze/base/qsync/QuerySyncProject.java index fe2282e76fc..cc2b922ddc9 100644 --- a/base/src/com/google/idea/blaze/base/qsync/QuerySyncProject.java +++ b/base/src/com/google/idea/blaze/base/qsync/QuerySyncProject.java @@ -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; @@ -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; @@ -104,6 +106,7 @@ public QuerySyncProject( ArtifactTracker artifactTracker, DependencyTracker dependencyTracker, ProjectQuerier projectQuerier, + BlazeProjectSnapshotBuilder blazeProjectSnapshotBuilder, ProjectDefinition projectDefinition, ProjectViewSet projectViewSet, WorkspacePathResolver workspacePathResolver, @@ -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; @@ -183,10 +187,12 @@ public void sync(BlazeContext parentContext, Optional 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()))