Skip to content

Commit

Permalink
Move core build artifact interfaces into the shared library.
Browse files Browse the repository at this point in the history
This allows them to be used from the querysync library in future. To enable this:

- Move implementation-specific code out of `BlazeArtifact` into the appropriate implementation classes (`getLocalFiles`, `getRemoteArtifacts`)
- Move inner class `BlazeArtifact.LocalFileArtifact` into a top level class, and leave it in its existing package
- Move inner class `ArtifactState.LocalFileState` into a top level class, and leave it in its existing package
- Move proto serialization method out of `ArtifactState` into a new interface, in order to keep the now shared interface independant of these legacy implementation details. This is a compromise on several levels which we make to keep legacy sync specific code out of the shared library. Ideally, `ArtifactState` itself would not be moved into the shared library since query sync does not use it, and does not intend to. However, the class is very widely used so this would be a disproportionate amount of effort. Instead, we move it for now, but move the proto serialization method out into a new interface along with a new helper method inside `ArtifactStateProtoConverter`.
- Move IDE-integration code out of `ArtifactFetcher` into a new static helper class `ArtifactFatchers`.

This CL is intended to allow more build artifact management logic to be moved into the shared library, and in turn to allow the querysync library to use it. This then makes development and testing of new code quicker and easier.

(cherry picked from commit 330ae13)
  • Loading branch information
Googler authored and mai93 committed Feb 26, 2024
1 parent 70648b1 commit a505437
Show file tree
Hide file tree
Showing 108 changed files with 434 additions and 272 deletions.
4 changes: 4 additions & 0 deletions aswb/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ java_library(
"//intellij_platform_sdk:plugin_api_for_tests", # unuseddeps: keep
"//intellij_platform_sdk:test_libs",
"//java",
"//shared:artifact",
"//testing:lib",
"@com_google_guava_guava//jar",
"@error_prone_annotations//jar",
Expand Down Expand Up @@ -158,6 +159,7 @@ java_library(
"//proto:proto_deps",
"//querysync",
"//shared",
"//shared:artifact",
"//third_party/auto_value",
"@gson//jar",
],
Expand Down Expand Up @@ -190,6 +192,7 @@ intellij_unit_test_suite(
"//java",
"//proto:proto_deps",
"//shared",
"//shared:artifact",
"//testing:lib",
"@com_google_guava_guava//jar",
"@junit//jar",
Expand Down Expand Up @@ -255,6 +258,7 @@ intellij_integration_test_suite(
"//intellij_platform_sdk:test_libs",
"//java",
"//proto:proto_deps",
"//shared:artifact",
"@com_google_guava_guava//jar",
"@gson//jar",
"@junit//jar",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
*/
package com.google.idea.blaze.android.filecache;

import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.scope.BlazeContext;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import java.nio.file.Path;
import java.util.Collection;
import javax.annotation.Nullable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@
import com.google.devtools.intellij.model.ProjectData;
import com.google.devtools.intellij.model.ProjectData.LocalFile;
import com.google.devtools.intellij.model.ProjectData.LocalFileOrOutputArtifact;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.filecache.ArtifactState;
import com.google.idea.blaze.base.filecache.ArtifactStateProtoConverter;
import com.google.idea.blaze.common.artifact.ArtifactState;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import java.util.Objects;

/** Data class to (de)serialize metadata of an artifact in cache */
Expand Down Expand Up @@ -73,7 +74,8 @@ public static ArtifactMetadata forArtifact(OutputArtifactWithoutDigest artifact)
throw new ArtifactNotFoundException(artifact);
}
// Serialize to proto to make grabbing the fields easier
LocalFileOrOutputArtifact serializedArtifact = artifactState.serializeToProto();
LocalFileOrOutputArtifact serializedArtifact =
ArtifactStateProtoConverter.toProto(artifactState);
if (serializedArtifact.hasArtifact()) {
ProjectData.OutputArtifact o = serializedArtifact.getArtifact();
return new ArtifactMetadata(o.getRelativePath(), o.getId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
package com.google.idea.blaze.android.filecache;

import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import java.io.IOException;

/** Signals that a particular artifact cannot be located. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@

import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableSet;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.common.artifact.BlazeArtifact;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.PathUtil;
import java.util.Objects;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.idea.blaze.base.async.FutureUtil;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact;
import com.google.idea.blaze.base.io.FileOperationProvider;
import com.google.idea.blaze.base.logging.EventLoggingService;
import com.google.idea.blaze.base.prefetch.FetchExecutor;
Expand All @@ -34,6 +33,7 @@
import com.google.idea.blaze.base.scope.output.IssueOutput;
import com.google.idea.blaze.base.scope.scopes.TimingScope.EventType;
import com.google.idea.blaze.common.PrintOutput;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
Expand Down Expand Up @@ -206,7 +206,7 @@ public synchronized void putAll(
RemoteArtifactPrefetcher.getInstance()
.downloadArtifacts(
project.getName(),
BlazeArtifact.getRemoteArtifacts(updatedKeyToArtifact.values()));
RemoteOutputArtifact.getRemoteArtifacts(updatedKeyToArtifact.values()));
FutureUtil.waitForFuture(context, downloadArtifactsFuture)
.timed("FetchCacheArtifacts", EventType.Prefetching)
.withProgressMessage(String.format("Fetching Artifacts for %s...", cacheName))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.common.artifact.BlazeArtifact;
import javax.annotation.Nullable;

/* Provides BlazeArtifacts to unpack an Aar. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@
import com.google.idea.blaze.android.projectsystem.RenderJarClassFileFinder;
import com.google.idea.blaze.android.sync.aspects.strategy.RenderResolveOutputGroupProvider;
import com.google.idea.blaze.android.sync.importer.BlazeImportUtil;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.filecache.FileCache;
import com.google.idea.blaze.base.ideinfo.AndroidIdeInfo;
import com.google.idea.blaze.base.ideinfo.ArtifactLocation;
Expand All @@ -39,6 +37,8 @@
import com.google.idea.blaze.base.sync.data.BlazeDataStorage;
import com.google.idea.blaze.base.sync.data.BlazeProjectDataManager;
import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder;
import com.google.idea.blaze.common.artifact.BlazeArtifact;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import java.io.File;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
import static com.android.SdkConstants.FN_LINT_JAR;

import com.android.SdkConstants;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.command.buildresult.SourceArtifact;
import com.google.idea.blaze.common.artifact.BlazeArtifact;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.PathUtil;
import java.io.File;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@
import com.google.common.util.concurrent.ListenableFuture;
import com.google.idea.blaze.android.sync.model.AarLibrary;
import com.google.idea.blaze.base.async.FutureUtil;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact.LocalFileArtifact;
import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact;
import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact;
import com.google.idea.blaze.base.filecache.FileCache;
import com.google.idea.blaze.base.filecache.FileCacheDiffer;
Expand All @@ -49,6 +48,7 @@
import com.google.idea.blaze.base.sync.libraries.BlazeLibraryCollector;
import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder;
import com.google.idea.blaze.common.PrintOutput;
import com.google.idea.blaze.common.artifact.BlazeArtifact;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import java.io.File;
Expand Down Expand Up @@ -176,7 +176,8 @@ private void refresh(
RemoteArtifactPrefetcher.getInstance()
.downloadArtifacts(
/* projectName= */ project.getName(),
/* outputArtifacts= */ BlazeArtifact.getRemoteArtifacts(artifactsToDownload));
/* outputArtifacts= */ RemoteOutputArtifact.getRemoteArtifacts(
artifactsToDownload));

FutureUtil.waitForFuture(context, downloadArtifactsFuture)
.timed("FetchAars", EventType.Prefetching)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact.LocalFileArtifact;
import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact;
import com.google.idea.blaze.base.io.FileOperationProvider;
import com.google.idea.blaze.base.prefetch.FetchExecutor;
import com.google.idea.blaze.common.artifact.BlazeArtifact;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.io.ZipUtil;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@
import com.google.devtools.build.lib.rules.android.deployinfo.AndroidDeployInfoOuterClass.Artifact;
import com.google.idea.blaze.android.manifest.ManifestParser.ParsedManifest;
import com.google.idea.blaze.android.manifest.ParsedManifestService;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.BuildResultHelper;
import com.google.idea.blaze.base.command.buildresult.BuildResultHelper.GetArtifactsException;
import com.google.idea.blaze.base.command.buildresult.OutputArtifact;
import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact;
import com.google.idea.blaze.base.command.buildresult.ParsedBepOutput;
import com.google.idea.blaze.base.model.primitives.Label;
import com.google.idea.blaze.common.artifact.OutputArtifact;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import java.io.File;
Expand Down Expand Up @@ -64,7 +64,7 @@ public AndroidDeployInfo readDeployInfoProtoForTarget(
log.warn("All local artifacts for " + target + ":");
List<OutputArtifact> allBuildArtifacts =
buildResultHelper.getBuildArtifactsForTarget(target, path -> true);
List<File> allLocalFiles = BlazeArtifact.getLocalFiles(allBuildArtifacts);
List<File> allLocalFiles = LocalFileArtifact.getLocalFiles(allBuildArtifacts);
for (File file : allLocalFiles) {
String path = file.getPath();
log.warn(path);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.google.idea.blaze.android.sync.model.AndroidResourceModule;
import com.google.idea.blaze.android.sync.model.AndroidResourceModuleRegistry;
import com.google.idea.blaze.base.command.buildresult.LocalFileOutputArtifactWithoutDigest;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.filecache.FileCache;
import com.google.idea.blaze.base.ideinfo.AndroidIdeInfo;
import com.google.idea.blaze.base.ideinfo.ArtifactLocation;
Expand All @@ -47,6 +46,7 @@
import com.google.idea.blaze.base.sync.projectstructure.ModuleEditorProvider;
import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder;
import com.google.idea.blaze.base.sync.workspace.MockArtifactLocationDecoder;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.google.idea.common.experiments.ExperimentService;
import com.google.idea.common.experiments.MockExperimentService;
import com.intellij.openapi.application.ApplicationManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.google.idea.blaze.android.sync.model.AndroidResourceModule;
import com.google.idea.blaze.android.sync.model.AndroidResourceModuleRegistry;
import com.google.idea.blaze.base.command.buildresult.LocalFileOutputArtifactWithoutDigest;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.filecache.FileCache;
import com.google.idea.blaze.base.ideinfo.AndroidIdeInfo;
import com.google.idea.blaze.base.ideinfo.ArtifactLocation;
Expand All @@ -47,6 +46,7 @@
import com.google.idea.blaze.base.sync.projectstructure.ModuleEditorProvider;
import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder;
import com.google.idea.blaze.base.sync.workspace.MockArtifactLocationDecoder;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.google.idea.common.experiments.ExperimentService;
import com.google.idea.common.experiments.MockExperimentService;
import com.intellij.openapi.application.ApplicationManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.google.idea.blaze.android.sync.model.AndroidResourceModule;
import com.google.idea.blaze.android.sync.model.AndroidResourceModuleRegistry;
import com.google.idea.blaze.base.command.buildresult.LocalFileOutputArtifactWithoutDigest;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.filecache.FileCache;
import com.google.idea.blaze.base.ideinfo.AndroidIdeInfo;
import com.google.idea.blaze.base.ideinfo.ArtifactLocation;
Expand All @@ -47,6 +46,7 @@
import com.google.idea.blaze.base.sync.projectstructure.ModuleEditorProvider;
import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder;
import com.google.idea.blaze.base.sync.workspace.MockArtifactLocationDecoder;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.google.idea.common.experiments.ExperimentService;
import com.google.idea.common.experiments.MockExperimentService;
import com.intellij.openapi.application.ApplicationManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@

import com.google.common.collect.ImmutableList;
import com.google.idea.blaze.base.command.buildresult.LocalFileOutputArtifactWithoutDigest;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.ideinfo.ArtifactLocation;
import com.google.idea.blaze.base.io.FileOperationProvider;
import com.google.idea.blaze.base.model.MockBlazeProjectDataBuilder;
Expand All @@ -32,6 +31,7 @@
import com.google.idea.blaze.base.sync.data.BlazeProjectDataManager;
import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder;
import com.google.idea.blaze.base.sync.workspace.MockArtifactLocationDecoder;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.google.idea.testing.IntellijRule;
import java.io.File;
import java.io.IOException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@
import com.google.idea.blaze.base.MockProjectViewManager;
import com.google.idea.blaze.base.async.executor.BlazeExecutor;
import com.google.idea.blaze.base.async.executor.MockBlazeExecutor;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.LocalFileOutputArtifactWithoutDigest;
import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.filecache.FileCache;
import com.google.idea.blaze.base.ideinfo.AndroidIdeInfo;
import com.google.idea.blaze.base.ideinfo.ArtifactLocation;
Expand Down Expand Up @@ -62,6 +60,8 @@
import com.google.idea.blaze.base.sync.workspace.MockArtifactLocationDecoder;
import com.google.idea.blaze.base.sync.workspace.WorkspacePathResolverImpl;
import com.google.idea.blaze.common.PrintOutput;
import com.google.idea.blaze.common.artifact.BlazeArtifact;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import com.google.idea.blaze.java.AndroidBlazeRules;
import com.google.idea.blaze.java.AndroidBlazeRules.RuleTypes;
import com.google.idea.blaze.java.sync.BlazeJavaSyncPlugin;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@
import com.google.idea.blaze.android.sync.model.BlazeAndroidImportResult;
import com.google.idea.blaze.android.sync.model.BlazeAndroidSyncData;
import com.google.idea.blaze.base.BlazeTestCase;
import com.google.idea.blaze.base.command.buildresult.BlazeArtifact;
import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact;
import com.google.idea.blaze.base.filecache.ArtifactState;
import com.google.idea.blaze.base.filecache.FileCache;
import com.google.idea.blaze.base.ideinfo.ArtifactLocation;
import com.google.idea.blaze.base.ideinfo.LibraryArtifact;
Expand Down Expand Up @@ -60,6 +58,8 @@
import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder;
import com.google.idea.blaze.base.sync.workspace.MockArtifactLocationDecoder;
import com.google.idea.blaze.common.PrintOutput;
import com.google.idea.blaze.common.artifact.ArtifactState;
import com.google.idea.blaze.common.artifact.BlazeArtifact;
import com.google.idea.common.experiments.ExperimentService;
import com.google.idea.common.experiments.MockExperimentService;
import com.intellij.openapi.util.io.FileUtil;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
*/
package com.google.idea.blaze.android.filecache;

import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest;
import com.google.idea.blaze.base.scope.BlazeContext;
import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collection;
Expand Down
Loading

0 comments on commit a505437

Please sign in to comment.