diff --git a/aswb/BUILD b/aswb/BUILD index ab631af7312..f1190ac0bca 100644 --- a/aswb/BUILD +++ b/aswb/BUILD @@ -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", @@ -158,6 +159,7 @@ java_library( "//proto:proto_deps", "//querysync", "//shared", + "//shared:artifact", "//third_party/auto_value", "@gson//jar", ], @@ -190,6 +192,7 @@ intellij_unit_test_suite( "//java", "//proto:proto_deps", "//shared", + "//shared:artifact", "//testing:lib", "@com_google_guava_guava//jar", "@junit//jar", @@ -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", diff --git a/aswb/src/com/google/idea/blaze/android/filecache/ArtifactCache.java b/aswb/src/com/google/idea/blaze/android/filecache/ArtifactCache.java index 0cfe77549ee..aa4c0be7ba0 100644 --- a/aswb/src/com/google/idea/blaze/android/filecache/ArtifactCache.java +++ b/aswb/src/com/google/idea/blaze/android/filecache/ArtifactCache.java @@ -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; diff --git a/aswb/src/com/google/idea/blaze/android/filecache/ArtifactMetadata.java b/aswb/src/com/google/idea/blaze/android/filecache/ArtifactMetadata.java index 316603fc4bf..c23af23af27 100644 --- a/aswb/src/com/google/idea/blaze/android/filecache/ArtifactMetadata.java +++ b/aswb/src/com/google/idea/blaze/android/filecache/ArtifactMetadata.java @@ -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 */ @@ -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()); diff --git a/aswb/src/com/google/idea/blaze/android/filecache/ArtifactNotFoundException.java b/aswb/src/com/google/idea/blaze/android/filecache/ArtifactNotFoundException.java index 24f543230b6..9161f015b62 100644 --- a/aswb/src/com/google/idea/blaze/android/filecache/ArtifactNotFoundException.java +++ b/aswb/src/com/google/idea/blaze/android/filecache/ArtifactNotFoundException.java @@ -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. */ diff --git a/aswb/src/com/google/idea/blaze/android/filecache/CacheEntry.java b/aswb/src/com/google/idea/blaze/android/filecache/CacheEntry.java index cacc0b3dc44..23f99cc4605 100644 --- a/aswb/src/com/google/idea/blaze/android/filecache/CacheEntry.java +++ b/aswb/src/com/google/idea/blaze/android/filecache/CacheEntry.java @@ -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; diff --git a/aswb/src/com/google/idea/blaze/android/filecache/LocalArtifactCache.java b/aswb/src/com/google/idea/blaze/android/filecache/LocalArtifactCache.java index 5dd78211e57..e2ac2d64d18 100644 --- a/aswb/src/com/google/idea/blaze/android/filecache/LocalArtifactCache.java +++ b/aswb/src/com/google/idea/blaze/android/filecache/LocalArtifactCache.java @@ -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; @@ -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; @@ -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)) diff --git a/aswb/src/com/google/idea/blaze/android/libraries/AarLibraryContents.java b/aswb/src/com/google/idea/blaze/android/libraries/AarLibraryContents.java index 3638634f030..0fe195896bc 100644 --- a/aswb/src/com/google/idea/blaze/android/libraries/AarLibraryContents.java +++ b/aswb/src/com/google/idea/blaze/android/libraries/AarLibraryContents.java @@ -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. */ diff --git a/aswb/src/com/google/idea/blaze/android/libraries/RenderJarCache.java b/aswb/src/com/google/idea/blaze/android/libraries/RenderJarCache.java index 29f4c5550ad..1958e0fa040 100644 --- a/aswb/src/com/google/idea/blaze/android/libraries/RenderJarCache.java +++ b/aswb/src/com/google/idea/blaze/android/libraries/RenderJarCache.java @@ -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; @@ -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; diff --git a/aswb/src/com/google/idea/blaze/android/libraries/UnpackedAarUtils.java b/aswb/src/com/google/idea/blaze/android/libraries/UnpackedAarUtils.java index 4848e827ea3..60bb636aecd 100644 --- a/aswb/src/com/google/idea/blaze/android/libraries/UnpackedAarUtils.java +++ b/aswb/src/com/google/idea/blaze/android/libraries/UnpackedAarUtils.java @@ -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; diff --git a/aswb/src/com/google/idea/blaze/android/libraries/UnpackedAars.java b/aswb/src/com/google/idea/blaze/android/libraries/UnpackedAars.java index f7eddd1d6c0..0a5a0c491a8 100644 --- a/aswb/src/com/google/idea/blaze/android/libraries/UnpackedAars.java +++ b/aswb/src/com/google/idea/blaze/android/libraries/UnpackedAars.java @@ -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; @@ -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; @@ -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) diff --git a/aswb/src/com/google/idea/blaze/android/libraries/Unpacker.java b/aswb/src/com/google/idea/blaze/android/libraries/Unpacker.java index 1e8abb69fcb..e29f972299e 100644 --- a/aswb/src/com/google/idea/blaze/android/libraries/Unpacker.java +++ b/aswb/src/com/google/idea/blaze/android/libraries/Unpacker.java @@ -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; diff --git a/aswb/src/com/google/idea/blaze/android/run/deployinfo/BlazeApkDeployInfoProtoHelper.java b/aswb/src/com/google/idea/blaze/android/run/deployinfo/BlazeApkDeployInfoProtoHelper.java index c7173131253..88c62b3ee64 100644 --- a/aswb/src/com/google/idea/blaze/android/run/deployinfo/BlazeApkDeployInfoProtoHelper.java +++ b/aswb/src/com/google/idea/blaze/android/run/deployinfo/BlazeApkDeployInfoProtoHelper.java @@ -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; @@ -64,7 +64,7 @@ public AndroidDeployInfo readDeployInfoProtoForTarget( log.warn("All local artifacts for " + target + ":"); List allBuildArtifacts = buildResultHelper.getBuildArtifactsForTarget(target, path -> true); - List allLocalFiles = BlazeArtifact.getLocalFiles(allBuildArtifacts); + List allLocalFiles = LocalFileArtifact.getLocalFiles(allBuildArtifacts); for (File file : allLocalFiles) { String path = file.getPath(); log.warn(path); diff --git a/aswb/tests/integrationtests/sdkcompat/as223/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java b/aswb/tests/integrationtests/sdkcompat/as223/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java index 298fd4df9f9..e88f2dd9a35 100644 --- a/aswb/tests/integrationtests/sdkcompat/as223/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java +++ b/aswb/tests/integrationtests/sdkcompat/as223/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java @@ -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; @@ -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; diff --git a/aswb/tests/integrationtests/sdkcompat/as231/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java b/aswb/tests/integrationtests/sdkcompat/as231/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java index 298fd4df9f9..e88f2dd9a35 100644 --- a/aswb/tests/integrationtests/sdkcompat/as231/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java +++ b/aswb/tests/integrationtests/sdkcompat/as231/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java @@ -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; @@ -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; diff --git a/aswb/tests/integrationtests/sdkcompat/as232/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java b/aswb/tests/integrationtests/sdkcompat/as232/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java index 9c5b727d11f..194c7bc2551 100644 --- a/aswb/tests/integrationtests/sdkcompat/as232/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java +++ b/aswb/tests/integrationtests/sdkcompat/as232/com/google/idea/blaze/android/projectsystem/RenderJarClassFileFinderTest.java @@ -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; @@ -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; diff --git a/aswb/tests/unittests/com/google/idea/blaze/android/filecache/LocalArtifactCacheTest.java b/aswb/tests/unittests/com/google/idea/blaze/android/filecache/LocalArtifactCacheTest.java index 7152b7e605a..f79ddd35f54 100644 --- a/aswb/tests/unittests/com/google/idea/blaze/android/filecache/LocalArtifactCacheTest.java +++ b/aswb/tests/unittests/com/google/idea/blaze/android/filecache/LocalArtifactCacheTest.java @@ -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; @@ -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; diff --git a/aswb/tests/unittests/com/google/idea/blaze/android/libraries/RenderJarCacheTest.java b/aswb/tests/unittests/com/google/idea/blaze/android/libraries/RenderJarCacheTest.java index 94ca66841c6..77a676c5e38 100644 --- a/aswb/tests/unittests/com/google/idea/blaze/android/libraries/RenderJarCacheTest.java +++ b/aswb/tests/unittests/com/google/idea/blaze/android/libraries/RenderJarCacheTest.java @@ -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; @@ -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; diff --git a/aswb/tests/unittests/com/google/idea/blaze/android/libraries/UnpackedAarsTest.java b/aswb/tests/unittests/com/google/idea/blaze/android/libraries/UnpackedAarsTest.java index 6ca6ce23b34..10bffb346eb 100644 --- a/aswb/tests/unittests/com/google/idea/blaze/android/libraries/UnpackedAarsTest.java +++ b/aswb/tests/unittests/com/google/idea/blaze/android/libraries/UnpackedAarsTest.java @@ -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; @@ -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; diff --git a/aswb/tests/utils/integration/com/google/idea/blaze/android/filecache/MockArtifactCache.java b/aswb/tests/utils/integration/com/google/idea/blaze/android/filecache/MockArtifactCache.java index 26ac57198dd..e4e4bd8a39d 100644 --- a/aswb/tests/utils/integration/com/google/idea/blaze/android/filecache/MockArtifactCache.java +++ b/aswb/tests/utils/integration/com/google/idea/blaze/android/filecache/MockArtifactCache.java @@ -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; diff --git a/base/BUILD b/base/BUILD index 407322d03b8..7ec4734c6ba 100644 --- a/base/BUILD +++ b/base/BUILD @@ -40,6 +40,7 @@ java_library( "//querysync", "//sdkcompat", "//shared", + "//shared:artifact", "//shared:exception", "//shared:vcs", "//third_party/auto_value", @@ -358,10 +359,7 @@ java_library( testonly = 1, srcs = [ "src/com/google/idea/blaze/base/async/FutureUtil.java", - "src/com/google/idea/blaze/base/command/buildresult/BlazeArtifact.java", - "src/com/google/idea/blaze/base/command/buildresult/OutputArtifact.java", "src/com/google/idea/blaze/base/command/buildresult/OutputArtifactParser.java", - "src/com/google/idea/blaze/base/command/buildresult/OutputArtifactWithoutDigest.java", "src/com/google/idea/blaze/base/command/buildresult/RemoteOutputArtifact.java", "src/com/google/idea/blaze/base/ideinfo/ProtoWrapper.java", "src/com/google/idea/blaze/base/prefetch/DefaultPrefetcher.java", @@ -374,6 +372,7 @@ java_library( "//intellij_platform_sdk:jsr305", "//intellij_platform_sdk:plugin_api", "//proto:proto_deps", + "//shared:artifact", ], ) @@ -406,6 +405,7 @@ java_library( "//intellij_platform_sdk:jsr305", "//intellij_platform_sdk:plugin_api", "//proto:proto_deps", + "//shared:artifact", ], ) @@ -414,9 +414,7 @@ java_library( srcs = [ "src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifact.java", "src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifactWithoutDigest.java", - "src/com/google/idea/blaze/base/command/buildresult/OutputArtifact.java", - "src/com/google/idea/blaze/base/command/buildresult/OutputArtifactWithoutDigest.java", - "src/com/google/idea/blaze/base/qsync/cache/ArtifactFetcher.java", + "src/com/google/idea/blaze/base/qsync/cache/ArtifactFetchers.java", "src/com/google/idea/blaze/base/qsync/cache/FileApiArtifactFetcher.java", "src/com/google/idea/blaze/base/settings/BuildBinaryType.java", ], @@ -427,6 +425,7 @@ java_library( "//intellij_platform_sdk:jsr305", "//intellij_platform_sdk:plugin_api", "//shared", + "//shared:artifact", ], ) @@ -452,6 +451,7 @@ java_library( "//intellij_platform_sdk:jsr305", "//intellij_platform_sdk:plugin_api_for_tests", "//intellij_platform_sdk:test_libs", + "//shared:artifact", "//shared:exception", "//testing:lib", "//third_party/auto_value", @@ -481,6 +481,7 @@ java_library( "//intellij_platform_sdk:test_libs", "//proto:proto_deps", "//sdkcompat", + "//shared:artifact", "//shared:vcs", "//testing:lib", "@bazel_tools//tools/java/runfiles", @@ -525,6 +526,7 @@ intellij_unit_test_suite( "//querysync/javatests/com/google/idea/blaze/qsync:TestUtils", "//querysync/javatests/com/google/idea/blaze/qsync/testdata", "//shared", + "//shared:artifact", "//testing:lib", "//third_party/auto_value", "@com_google_guava_guava//jar", diff --git a/base/src/META-INF/blaze-base.xml b/base/src/META-INF/blaze-base.xml index 3a38fa7b9e2..685b9a8ef12 100644 --- a/base/src/META-INF/blaze-base.xml +++ b/base/src/META-INF/blaze-base.xml @@ -470,7 +470,7 @@ + interface="com.google.idea.blaze.common.artifact.ArtifactFetcher"/> getLocalFiles(Collection art .collect(toImmutableList()); } - static ImmutableList getRemoteArtifacts( - Collection artifacts) { - return artifacts.stream() - .filter(a -> a instanceof RemoteOutputArtifact) - .map(a -> ((RemoteOutputArtifact) a)) - .collect(toImmutableList()); - } - - /** A buffered input stream providing the contents of this artifact. */ - @MustBeClosed - BufferedInputStream getInputStream() throws IOException; - - /** A file artifact available on the local file system. */ - interface LocalFileArtifact extends BlazeArtifact { - File getFile(); + File getFile(); - @Override - default long getLength() { - return FileOperationProvider.getInstance().getFileSize(getFile()); - } + @Override + default long getLength() { + return FileOperationProvider.getInstance().getFileSize(getFile()); } } diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifact.java b/base/src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifact.java index 0d9cf997f9a..86b6c4c09b0 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifact.java +++ b/base/src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifact.java @@ -15,6 +15,7 @@ */ package com.google.idea.blaze.base.command.buildresult; +import com.google.idea.blaze.common.artifact.OutputArtifact; import java.io.File; /** diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifactWithoutDigest.java b/base/src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifactWithoutDigest.java index 14d7a599795..7b2ea0884ee 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifactWithoutDigest.java +++ b/base/src/com/google/idea/blaze/base/command/buildresult/LocalFileOutputArtifactWithoutDigest.java @@ -18,10 +18,10 @@ import com.google.common.base.MoreObjects; import com.google.common.base.Objects; import com.google.errorprone.annotations.MustBeClosed; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact.LocalFileArtifact; -import com.google.idea.blaze.base.filecache.ArtifactState; -import com.google.idea.blaze.base.filecache.ArtifactState.LocalFileState; +import com.google.idea.blaze.base.filecache.LocalFileState; import com.google.idea.blaze.base.io.FileOperationProvider; +import com.google.idea.blaze.common.artifact.ArtifactState; +import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactParser.java b/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactParser.java index 8071ed2a534..c1ad45f8f0c 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactParser.java +++ b/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactParser.java @@ -17,6 +17,7 @@ import com.google.common.base.Joiner; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.util.io.URLUtil; import java.io.File; diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactResolver.java b/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactResolver.java index 5d3e7cdae63..d2929a2fde0 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactResolver.java +++ b/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactResolver.java @@ -19,10 +19,10 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact.LocalFileArtifact; import com.google.idea.blaze.base.filecache.RemoteOutputsCache; import com.google.idea.blaze.base.ideinfo.ArtifactLocation; import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import com.intellij.openapi.project.Project; import java.io.File; import java.util.Collection; diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/ParsedBepOutput.java b/base/src/com/google/idea/blaze/base/command/buildresult/ParsedBepOutput.java index 7387db5582d..8919bfcf609 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/ParsedBepOutput.java +++ b/base/src/com/google/idea/blaze/base/command/buildresult/ParsedBepOutput.java @@ -41,6 +41,7 @@ import com.google.idea.blaze.base.command.buildresult.BuildEventStreamProvider.BuildEventStreamException; import com.google.idea.blaze.base.model.primitives.Label; import com.google.idea.blaze.base.sync.aspects.BuildResult; +import com.google.idea.blaze.common.artifact.OutputArtifact; import java.io.InputStream; import java.util.HashMap; import java.util.HashSet; diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/RemoteOutputArtifact.java b/base/src/com/google/idea/blaze/base/command/buildresult/RemoteOutputArtifact.java index bcc77c803f7..920f8ef684e 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/RemoteOutputArtifact.java +++ b/base/src/com/google/idea/blaze/base/command/buildresult/RemoteOutputArtifact.java @@ -15,10 +15,16 @@ */ package com.google.idea.blaze.base.command.buildresult; +import static com.google.common.collect.ImmutableList.toImmutableList; + +import com.google.common.collect.ImmutableList; import com.google.devtools.intellij.model.ProjectData; import com.google.idea.blaze.base.ideinfo.ProtoWrapper; +import com.google.idea.blaze.common.artifact.BlazeArtifact; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.intellij.openapi.extensions.ExtensionPointName; import java.util.Arrays; +import java.util.Collection; import java.util.Objects; import javax.annotation.Nullable; @@ -35,6 +41,14 @@ static RemoteOutputArtifact fromProto(ProjectData.OutputArtifact proto) { .orElse(null); } + static ImmutableList getRemoteArtifacts( + Collection artifacts) { + return artifacts.stream() + .filter(a -> a instanceof RemoteOutputArtifact) + .map(a -> ((RemoteOutputArtifact) a)) + .collect(toImmutableList()); + } + @Override default ProjectData.OutputArtifact toProto() { return ProjectData.OutputArtifact.newBuilder() diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/SourceArtifact.java b/base/src/com/google/idea/blaze/base/command/buildresult/SourceArtifact.java index b08ca8796c6..5f0cb094b0f 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/SourceArtifact.java +++ b/base/src/com/google/idea/blaze/base/command/buildresult/SourceArtifact.java @@ -16,7 +16,6 @@ package com.google.idea.blaze.base.command.buildresult; import com.google.errorprone.annotations.MustBeClosed; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact.LocalFileArtifact; import com.intellij.openapi.util.io.FileUtil; import java.io.BufferedInputStream; import java.io.File; diff --git a/base/src/com/google/idea/blaze/base/filecache/ArtifactStateProtoConverter.java b/base/src/com/google/idea/blaze/base/filecache/ArtifactStateProtoConverter.java index e0028cf2a5d..5a5f7eeab4f 100644 --- a/base/src/com/google/idea/blaze/base/filecache/ArtifactStateProtoConverter.java +++ b/base/src/com/google/idea/blaze/base/filecache/ArtifactStateProtoConverter.java @@ -15,7 +15,9 @@ */ package com.google.idea.blaze.base.filecache; +import com.google.common.base.Preconditions; import com.google.devtools.intellij.model.ProjectData.LocalFileOrOutputArtifact; +import com.google.idea.blaze.common.artifact.ArtifactState; import com.intellij.openapi.extensions.ExtensionPointName; import javax.annotation.Nullable; @@ -45,4 +47,9 @@ static ArtifactState fromProto(LocalFileOrOutputArtifact proto) { } return null; } + + static LocalFileOrOutputArtifact toProto(ArtifactState artifactState) { + Preconditions.checkState(artifactState instanceof SerializableArtifactState); + return ((SerializableArtifactState) artifactState).serializeToProto(); + } } diff --git a/base/src/com/google/idea/blaze/base/filecache/ArtifactsDiff.java b/base/src/com/google/idea/blaze/base/filecache/ArtifactsDiff.java index d2f99713606..0e1dcfc983b 100644 --- a/base/src/com/google/idea/blaze/base/filecache/ArtifactsDiff.java +++ b/base/src/com/google/idea/blaze/base/filecache/ArtifactsDiff.java @@ -22,11 +22,12 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact.LocalFileArtifact; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; import com.google.idea.blaze.base.io.FileAttributeScanner; import com.google.idea.blaze.base.prefetch.FetchExecutor; +import com.google.idea.blaze.common.artifact.ArtifactState; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; +import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest; import java.util.Collection; import java.util.HashSet; import java.util.Map; diff --git a/base/src/com/google/idea/blaze/base/filecache/FileCacheDiffer.java b/base/src/com/google/idea/blaze/base/filecache/FileCacheDiffer.java index 45c488bffcc..c16fb6bd472 100644 --- a/base/src/com/google/idea/blaze/base/filecache/FileCacheDiffer.java +++ b/base/src/com/google/idea/blaze/base/filecache/FileCacheDiffer.java @@ -18,11 +18,12 @@ import static com.google.common.collect.ImmutableMap.toImmutableMap; import com.google.common.collect.ImmutableMap; -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.io.ModifiedTimeScanner; import com.google.idea.blaze.base.model.RemoteOutputArtifacts; +import com.google.idea.blaze.common.artifact.ArtifactState; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import java.io.File; import java.util.HashSet; import java.util.Map; diff --git a/base/src/com/google/idea/blaze/base/filecache/LocalArtifactStateProtoConverter.java b/base/src/com/google/idea/blaze/base/filecache/LocalArtifactStateProtoConverter.java index df7f462a7cf..721a3f96913 100644 --- a/base/src/com/google/idea/blaze/base/filecache/LocalArtifactStateProtoConverter.java +++ b/base/src/com/google/idea/blaze/base/filecache/LocalArtifactStateProtoConverter.java @@ -16,7 +16,7 @@ package com.google.idea.blaze.base.filecache; import com.google.devtools.intellij.model.ProjectData.LocalFileOrOutputArtifact; -import com.google.idea.blaze.base.filecache.ArtifactState.LocalFileState; +import com.google.idea.blaze.common.artifact.ArtifactState; import javax.annotation.Nullable; /** Implementation of {@link ArtifactStateProtoConverter} for {@link LocalFileState} */ diff --git a/base/src/com/google/idea/blaze/base/filecache/LocalFileState.java b/base/src/com/google/idea/blaze/base/filecache/LocalFileState.java new file mode 100644 index 00000000000..3a19016f06b --- /dev/null +++ b/base/src/com/google/idea/blaze/base/filecache/LocalFileState.java @@ -0,0 +1,78 @@ +/* + * Copyright 2019 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.idea.blaze.base.filecache; + +import com.google.devtools.intellij.model.ProjectData.LocalFile; +import com.google.devtools.intellij.model.ProjectData.LocalFileOrOutputArtifact; +import com.google.idea.blaze.common.artifact.ArtifactState; + +/** Serialization state related to local files. */ +public class LocalFileState implements ArtifactState, SerializableArtifactState { + private final String blazeOutPath; + private final long timestamp; + + public LocalFileState(LocalFile localFile) { + this.blazeOutPath = + !localFile.getRelativePath().isEmpty() + ? localFile.getRelativePath() + : ArtifactState.migrateOldKeyFormat(localFile.getPath()); + this.timestamp = localFile.getTimestamp(); + } + + public LocalFileState(String blazeOutPath, long timestamp) { + this.blazeOutPath = blazeOutPath; + this.timestamp = timestamp; + } + + @Override + public String getKey() { + return blazeOutPath; + } + + @Override + public boolean isMoreRecent(ArtifactState output) { + return !(output instanceof com.google.idea.blaze.base.filecache.LocalFileState) + || timestamp < ((com.google.idea.blaze.base.filecache.LocalFileState) output).timestamp; + } + + @Override + public LocalFileOrOutputArtifact serializeToProto() { + return LocalFileOrOutputArtifact.newBuilder() + .setLocalFile(LocalFile.newBuilder().setPath(blazeOutPath).setTimestamp(timestamp)) + .build(); + } + + @Override + public int hashCode() { + return blazeOutPath.hashCode(); + } + + /** + * Returns true for {@link com.google.idea.blaze.base.filecache.LocalFileState} with the same key, + * as described in {@link #getKey()} See {@link ArtifactState#getKey()} for caveats abouts + * versioning. + */ + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof LocalFileState)) { + return false; + } + return blazeOutPath.equals(((LocalFileState) obj).blazeOutPath); + } +} diff --git a/base/src/com/google/idea/blaze/base/filecache/RemoteOutputsCache.java b/base/src/com/google/idea/blaze/base/filecache/RemoteOutputsCache.java index beadbefdb55..efe5de66fea 100644 --- a/base/src/com/google/idea/blaze/base/filecache/RemoteOutputsCache.java +++ b/base/src/com/google/idea/blaze/base/filecache/RemoteOutputsCache.java @@ -32,7 +32,6 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.errorprone.annotations.Keep; 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.RemoteOutputArtifact; import com.google.idea.blaze.base.ideinfo.ArtifactLocation; import com.google.idea.blaze.base.ideinfo.TargetIdeInfo; @@ -181,7 +180,7 @@ private void updateCache( } } ImmutableList artifactsToDownload = - BlazeArtifact.getRemoteArtifacts(updatedOutputs.values()); + RemoteOutputArtifact.getRemoteArtifacts(updatedOutputs.values()); ListenableFuture downloadArtifactsFuture = RemoteArtifactPrefetcher.getInstance() .downloadArtifacts( diff --git a/base/src/com/google/idea/blaze/base/filecache/SerializableArtifactState.java b/base/src/com/google/idea/blaze/base/filecache/SerializableArtifactState.java new file mode 100644 index 00000000000..2246ae25efb --- /dev/null +++ b/base/src/com/google/idea/blaze/base/filecache/SerializableArtifactState.java @@ -0,0 +1,31 @@ +/* + * Copyright 2024 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.idea.blaze.base.filecache; + +import com.google.devtools.intellij.model.ProjectData.LocalFileOrOutputArtifact; +import com.google.idea.blaze.common.artifact.ArtifactState; + +/** + * Legacy sync specific interface to complement {@link + * com.google.idea.blaze.common.artifact.ArtifactState}. The purpose of this interface is to contain + * legacy sync specific code that cannot be included directly inside the shared library due to its + * dependencies. + * + *

See also {@link ArtifactStateProtoConverter#toProto(ArtifactState)}. + */ +public interface SerializableArtifactState { + LocalFileOrOutputArtifact serializeToProto(); +} diff --git a/base/src/com/google/idea/blaze/base/io/InputStreamProvider.java b/base/src/com/google/idea/blaze/base/io/InputStreamProvider.java index 17e1291aff4..5090cbf8fd5 100644 --- a/base/src/com/google/idea/blaze/base/io/InputStreamProvider.java +++ b/base/src/com/google/idea/blaze/base/io/InputStreamProvider.java @@ -16,7 +16,7 @@ package com.google.idea.blaze.base.io; import com.google.errorprone.annotations.MustBeClosed; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import com.intellij.openapi.components.ServiceManager; import java.io.BufferedInputStream; import java.io.File; diff --git a/base/src/com/google/idea/blaze/base/io/InputStreamProviderImpl.java b/base/src/com/google/idea/blaze/base/io/InputStreamProviderImpl.java index 61f16b5e51b..7aa4e9a65d7 100644 --- a/base/src/com/google/idea/blaze/base/io/InputStreamProviderImpl.java +++ b/base/src/com/google/idea/blaze/base/io/InputStreamProviderImpl.java @@ -16,7 +16,7 @@ package com.google.idea.blaze.base.io; import com.google.errorprone.annotations.MustBeClosed; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; diff --git a/base/src/com/google/idea/blaze/base/model/RemoteOutputArtifacts.java b/base/src/com/google/idea/blaze/base/model/RemoteOutputArtifacts.java index 48c3671dcaf..38861747cd7 100644 --- a/base/src/com/google/idea/blaze/base/model/RemoteOutputArtifacts.java +++ b/base/src/com/google/idea/blaze/base/model/RemoteOutputArtifacts.java @@ -22,7 +22,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.devtools.intellij.model.ProjectData; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; import com.google.idea.blaze.base.command.info.BlazeConfigurationHandler; import com.google.idea.blaze.base.ideinfo.ArtifactLocation; @@ -30,6 +29,7 @@ import com.google.idea.blaze.base.ideinfo.TargetIdeInfo; import com.google.idea.blaze.base.ideinfo.TargetMap; import com.google.idea.blaze.base.sync.projectview.WorkspaceLanguageSettings; +import com.google.idea.blaze.common.artifact.OutputArtifact; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; diff --git a/base/src/com/google/idea/blaze/base/qsync/AppInspectorInfo.java b/base/src/com/google/idea/blaze/base/qsync/AppInspectorInfo.java index 03d97e21d05..ac58bc347f4 100644 --- a/base/src/com/google/idea/blaze/base/qsync/AppInspectorInfo.java +++ b/base/src/com/google/idea/blaze/base/qsync/AppInspectorInfo.java @@ -18,7 +18,7 @@ import com.google.auto.value.AutoValue; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; +import com.google.idea.blaze.common.artifact.OutputArtifact; /** A data class that collecting and converting render jar artifacts. */ @AutoValue diff --git a/base/src/com/google/idea/blaze/base/qsync/BazelAppInspectorBuilder.java b/base/src/com/google/idea/blaze/base/qsync/BazelAppInspectorBuilder.java index 4428cc214cb..578042c5bc5 100644 --- a/base/src/com/google/idea/blaze/base/qsync/BazelAppInspectorBuilder.java +++ b/base/src/com/google/idea/blaze/base/qsync/BazelAppInspectorBuilder.java @@ -27,12 +27,12 @@ import com.google.idea.blaze.base.command.BlazeFlags; import com.google.idea.blaze.base.command.BlazeInvocationContext; import com.google.idea.blaze.base.command.buildresult.BuildResultHelper; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.base.projectview.ProjectViewManager; import com.google.idea.blaze.base.projectview.ProjectViewSet; import com.google.idea.blaze.base.scope.BlazeContext; import com.google.idea.blaze.base.sync.aspects.BlazeBuildOutputs; import com.google.idea.blaze.common.Label; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.blaze.exception.BuildException; import com.intellij.openapi.project.Project; import java.io.IOException; diff --git a/base/src/com/google/idea/blaze/base/qsync/BazelDependencyBuilder.java b/base/src/com/google/idea/blaze/base/qsync/BazelDependencyBuilder.java index 344c62c5f4c..2233db91ca9 100644 --- a/base/src/com/google/idea/blaze/base/qsync/BazelDependencyBuilder.java +++ b/base/src/com/google/idea/blaze/base/qsync/BazelDependencyBuilder.java @@ -39,9 +39,7 @@ import com.google.idea.blaze.base.command.BlazeCommandName; import com.google.idea.blaze.base.command.BlazeFlags; import com.google.idea.blaze.base.command.BlazeInvocationContext; -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.OutputArtifact; import com.google.idea.blaze.base.logging.utils.querysync.BuildDepsStats; import com.google.idea.blaze.base.logging.utils.querysync.BuildDepsStatsScope; import com.google.idea.blaze.base.model.primitives.WorkspaceRoot; @@ -53,6 +51,8 @@ import com.google.idea.blaze.base.vcs.BlazeVcsHandlerProvider.BlazeVcsHandler; import com.google.idea.blaze.common.Label; import com.google.idea.blaze.common.PrintOutput; +import com.google.idea.blaze.common.artifact.BlazeArtifact; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.blaze.common.vcs.VcsState; import com.google.idea.blaze.exception.BuildException; import com.google.idea.blaze.qsync.BlazeQueryParser; diff --git a/base/src/com/google/idea/blaze/base/qsync/BazelRenderJarBuilder.java b/base/src/com/google/idea/blaze/base/qsync/BazelRenderJarBuilder.java index a67fabca0e5..45a38ba01e6 100644 --- a/base/src/com/google/idea/blaze/base/qsync/BazelRenderJarBuilder.java +++ b/base/src/com/google/idea/blaze/base/qsync/BazelRenderJarBuilder.java @@ -28,13 +28,13 @@ import com.google.idea.blaze.base.command.BlazeInvocationContext; import com.google.idea.blaze.base.command.buildresult.BuildResultHelper; import com.google.idea.blaze.base.command.buildresult.LocalFileOutputArtifact; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; import com.google.idea.blaze.base.projectview.ProjectViewManager; import com.google.idea.blaze.base.projectview.ProjectViewSet; import com.google.idea.blaze.base.scope.BlazeContext; import com.google.idea.blaze.base.sync.aspects.BlazeBuildOutputs; import com.google.idea.blaze.common.Label; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.blaze.exception.BuildException; import com.intellij.openapi.project.Project; import java.io.File; diff --git a/base/src/com/google/idea/blaze/base/qsync/DynamicallyDispatchingArtifactFetcher.java b/base/src/com/google/idea/blaze/base/qsync/DynamicallyDispatchingArtifactFetcher.java index 8db171e7228..37a7214883a 100644 --- a/base/src/com/google/idea/blaze/base/qsync/DynamicallyDispatchingArtifactFetcher.java +++ b/base/src/com/google/idea/blaze/base/qsync/DynamicallyDispatchingArtifactFetcher.java @@ -20,9 +20,9 @@ import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; -import com.google.idea.blaze.base.qsync.cache.ArtifactFetcher; import com.google.idea.blaze.common.Context; +import com.google.idea.blaze.common.artifact.ArtifactFetcher; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.intellij.openapi.util.Pair; import java.util.stream.Collectors; diff --git a/base/src/com/google/idea/blaze/base/qsync/GroupedOutputArtifacts.java b/base/src/com/google/idea/blaze/base/qsync/GroupedOutputArtifacts.java index 2b25b3337f1..267a8946c7e 100644 --- a/base/src/com/google/idea/blaze/base/qsync/GroupedOutputArtifacts.java +++ b/base/src/com/google/idea/blaze/base/qsync/GroupedOutputArtifacts.java @@ -20,9 +20,9 @@ import com.google.common.collect.ImmutableListMultimap; import com.google.errorprone.annotations.CanIgnoreReturnValue; import com.google.idea.blaze.base.command.buildresult.LocalFileOutputArtifact; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; import com.google.idea.blaze.base.sync.aspects.BlazeBuildOutputs; +import com.google.idea.blaze.common.artifact.OutputArtifact; import java.io.File; import java.util.Set; diff --git a/base/src/com/google/idea/blaze/base/qsync/OutputInfo.java b/base/src/com/google/idea/blaze/base/qsync/OutputInfo.java index 900aeaf2d2f..43c4b73a624 100644 --- a/base/src/com/google/idea/blaze/base/qsync/OutputInfo.java +++ b/base/src/com/google/idea/blaze/base/qsync/OutputInfo.java @@ -19,8 +19,8 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.common.Label; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.blaze.common.vcs.VcsState; import com.google.idea.blaze.qsync.java.JavaTargetInfo.JavaArtifacts; import com.google.idea.blaze.qsync.java.cc.CcCompilationInfoOuterClass.CcCompilationInfo; 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 9492bf8c754..4ad3a9f7b9a 100644 --- a/base/src/com/google/idea/blaze/base/qsync/ProjectLoader.java +++ b/base/src/com/google/idea/blaze/base/qsync/ProjectLoader.java @@ -23,13 +23,12 @@ import com.google.common.util.concurrent.ListeningExecutorService; import com.google.idea.blaze.base.bazel.BuildSystem; import com.google.idea.blaze.base.bazel.BuildSystemProvider; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.base.model.primitives.WorkspaceRoot; import com.google.idea.blaze.base.projectview.ProjectViewManager; import com.google.idea.blaze.base.projectview.ProjectViewSet; import com.google.idea.blaze.base.projectview.section.Glob; import com.google.idea.blaze.base.projectview.section.sections.TestSourceSection; -import com.google.idea.blaze.base.qsync.cache.ArtifactFetcher; +import com.google.idea.blaze.base.qsync.cache.ArtifactFetchers; import com.google.idea.blaze.base.qsync.cache.ArtifactTrackerImpl; import com.google.idea.blaze.base.scope.BlazeContext; import com.google.idea.blaze.base.settings.BlazeImportSettings; @@ -42,6 +41,8 @@ import com.google.idea.blaze.base.sync.workspace.WorkspacePathResolverImpl; import com.google.idea.blaze.base.vcs.BlazeVcsHandlerProvider; import com.google.idea.blaze.base.vcs.BlazeVcsHandlerProvider.BlazeVcsHandler; +import com.google.idea.blaze.common.artifact.ArtifactFetcher; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.blaze.exception.BuildException; import com.google.idea.blaze.qsync.BlazeProject; import com.google.idea.blaze.qsync.BlazeProjectSnapshotBuilder; @@ -240,7 +241,7 @@ private Path getSnapshotFilePath(BlazeImportSettings importSettings) { private ArtifactFetcher createArtifactFetcher() { return new DynamicallyDispatchingArtifactFetcher( - ImmutableList.copyOf(ArtifactFetcher.EP_NAME.getExtensions())); + ImmutableList.copyOf(ArtifactFetchers.EP_NAME.getExtensions())); } /** diff --git a/base/src/com/google/idea/blaze/base/qsync/RenderJarInfo.java b/base/src/com/google/idea/blaze/base/qsync/RenderJarInfo.java index c72c6b4634c..af6b4709ccf 100644 --- a/base/src/com/google/idea/blaze/base/qsync/RenderJarInfo.java +++ b/base/src/com/google/idea/blaze/base/qsync/RenderJarInfo.java @@ -18,7 +18,7 @@ import com.google.auto.value.AutoValue; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; +import com.google.idea.blaze.common.artifact.OutputArtifact; /** A data class that collecting and converting render jar artifacts. */ @AutoValue diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactFetchers.java b/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactFetchers.java new file mode 100644 index 00000000000..0ba7f7146c8 --- /dev/null +++ b/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactFetchers.java @@ -0,0 +1,35 @@ +/* + * Copyright 2023 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.idea.blaze.base.qsync.cache; + +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.idea.blaze.common.artifact.ArtifactFetcher; +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.util.concurrency.AppExecutorUtil; + +/** Static utilities for use with {@link ArtifactFetcher} and implementations. */ +public class ArtifactFetchers { + + private ArtifactFetchers() {} + + public static final ExtensionPointName> EP_NAME = + ExtensionPointName.create("com.google.idea.blaze.qsync.ArtifactFetcher"); + + public static final ListeningExecutorService EXECUTOR = + MoreExecutors.listeningDecorator( + AppExecutorUtil.createBoundedApplicationPoolExecutor("ArtifactBulkCopyExecutor", 128)); +} diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactPathCacheLayout.java b/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactPathCacheLayout.java index 091ce5497e3..9e2179b01fa 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactPathCacheLayout.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactPathCacheLayout.java @@ -16,9 +16,9 @@ package com.google.idea.blaze.base.qsync.cache; import com.google.common.collect.ImmutableList; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.qsync.cache.FileCache.CacheLayout; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestinationAndLayout; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import java.nio.file.Path; import java.util.Collection; diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactTrackerImpl.java b/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactTrackerImpl.java index d34447784e3..f0d7e0f57e6 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactTrackerImpl.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactTrackerImpl.java @@ -48,7 +48,6 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.devtools.intellij.qsync.ArtifactTrackerData.ArtifactTrackerState; import com.google.devtools.intellij.qsync.ArtifactTrackerData.CachedArtifacts; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.base.logging.utils.querysync.BuildDepsStats; import com.google.idea.blaze.base.logging.utils.querysync.BuildDepsStatsScope; import com.google.idea.blaze.base.qsync.AppInspectorArtifactTracker; @@ -60,7 +59,6 @@ import com.google.idea.blaze.base.qsync.QuerySync; import com.google.idea.blaze.base.qsync.RenderJarArtifactTracker; import com.google.idea.blaze.base.qsync.RenderJarInfo; -import com.google.idea.blaze.base.qsync.cache.ArtifactFetcher.ArtifactDestination; import com.google.idea.blaze.base.qsync.cache.FileCache.CacheLayout; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestination; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestinationAndLayout; @@ -70,6 +68,9 @@ import com.google.idea.blaze.common.DownloadTrackingScope; import com.google.idea.blaze.common.Label; import com.google.idea.blaze.common.PrintOutput; +import com.google.idea.blaze.common.artifact.ArtifactFetcher; +import com.google.idea.blaze.common.artifact.ArtifactFetcher.ArtifactDestination; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.blaze.exception.BuildException; import com.google.idea.blaze.qsync.ProjectProtoTransform; import com.google.idea.blaze.qsync.TestSourceGlobMatcher; @@ -378,7 +379,7 @@ ListenableFuture> fetchArtifacts( }, String.format("Store %d artifact digests", artifactToDestinationPathMap.size()), Duration.ofSeconds(1)), - ArtifactFetcher.EXECUTOR); + ArtifactFetchers.EXECUTOR); } /** diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/CacheDirectoryManager.java b/base/src/com/google/idea/blaze/base/qsync/cache/CacheDirectoryManager.java index 4e09d560aa5..879fd5e75f6 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/CacheDirectoryManager.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/CacheDirectoryManager.java @@ -19,7 +19,7 @@ import com.google.common.collect.ImmutableCollection; import com.google.common.hash.Hashing; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.util.PathUtil; diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/DelegatingCacheLayout.java b/base/src/com/google/idea/blaze/base/qsync/cache/DelegatingCacheLayout.java index 510d7a0e760..34b6d1fba16 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/DelegatingCacheLayout.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/DelegatingCacheLayout.java @@ -20,9 +20,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.errorprone.annotations.CanIgnoreReturnValue; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.qsync.cache.FileCache.CacheLayout; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestinationAndLayout; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import java.nio.file.Path; import java.util.Collection; diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/FileApiArtifactFetcher.java b/base/src/com/google/idea/blaze/base/qsync/cache/FileApiArtifactFetcher.java index b5a372f2159..1c456281062 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/FileApiArtifactFetcher.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/FileApiArtifactFetcher.java @@ -22,6 +22,7 @@ import com.google.idea.blaze.base.command.buildresult.LocalFileOutputArtifact; import com.google.idea.blaze.base.io.FileOperationProvider; import com.google.idea.blaze.common.Context; +import com.google.idea.blaze.common.artifact.ArtifactFetcher; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -38,7 +39,7 @@ public ListenableFuture copy( for (Entry entry : artifactToDest.entrySet()) { tasks.add( - EXECUTOR.submit( + ArtifactFetchers.EXECUTOR.submit( () -> { Path dest = entry.getValue().path; LocalFileOutputArtifact localFileOutputArtifact = entry.getKey(); diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/FileCache.java b/base/src/com/google/idea/blaze/base/qsync/cache/FileCache.java index dee026daf1d..99c0ccd41e2 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/FileCache.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/FileCache.java @@ -21,9 +21,10 @@ import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.scope.BlazeContext; +import com.google.idea.blaze.common.artifact.ArtifactFetcher; +import com.google.idea.blaze.common.artifact.OutputArtifact; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import com.google.idea.blaze.exception.BuildException; import java.io.IOException; import java.nio.file.Files; diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/JavaSourcesArchiveCacheLayout.java b/base/src/com/google/idea/blaze/base/qsync/cache/JavaSourcesArchiveCacheLayout.java index dd68b11ec30..af281b0bb25 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/JavaSourcesArchiveCacheLayout.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/JavaSourcesArchiveCacheLayout.java @@ -19,9 +19,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.qsync.cache.FileCache.CacheLayout; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestinationAndLayout; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import java.nio.file.Path; import java.util.Collection; import javax.annotation.Nullable; diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/JavaSourcesCacheLayout.java b/base/src/com/google/idea/blaze/base/qsync/cache/JavaSourcesCacheLayout.java index dc9370e8de9..1fe38f4b335 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/JavaSourcesCacheLayout.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/JavaSourcesCacheLayout.java @@ -19,9 +19,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.qsync.cache.FileCache.CacheLayout; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestinationAndLayout; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import java.nio.file.Path; import java.util.Collection; import javax.annotation.Nullable; diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/KeyBasedCacheLayout.java b/base/src/com/google/idea/blaze/base/qsync/cache/KeyBasedCacheLayout.java index ed3af0a0b04..a1c79d11520 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/KeyBasedCacheLayout.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/KeyBasedCacheLayout.java @@ -16,9 +16,9 @@ package com.google.idea.blaze.base.qsync.cache; import com.google.common.collect.ImmutableList; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.qsync.cache.FileCache.CacheLayout; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestinationAndLayout; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import java.nio.file.Path; import java.util.Collection; diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/UnzippingCacheLayout.java b/base/src/com/google/idea/blaze/base/qsync/cache/UnzippingCacheLayout.java index 88d224e5eb7..00540f72a0b 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/UnzippingCacheLayout.java +++ b/base/src/com/google/idea/blaze/base/qsync/cache/UnzippingCacheLayout.java @@ -18,9 +18,9 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.qsync.cache.FileCache.CacheLayout; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestinationAndLayout; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import com.intellij.openapi.util.io.FileUtilRt; import java.nio.file.Path; import java.util.Collection; diff --git a/base/src/com/google/idea/blaze/base/run/smrunner/BlazeXmlToTestEventsConverter.java b/base/src/com/google/idea/blaze/base/run/smrunner/BlazeXmlToTestEventsConverter.java index 5199fbaeea8..b2a279289e6 100644 --- a/base/src/com/google/idea/blaze/base/run/smrunner/BlazeXmlToTestEventsConverter.java +++ b/base/src/com/google/idea/blaze/base/run/smrunner/BlazeXmlToTestEventsConverter.java @@ -20,7 +20,6 @@ import com.google.common.collect.ImmutableMap; 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.BuildResultHelper.GetArtifactsException; import com.google.idea.blaze.base.model.BlazeProjectData; import com.google.idea.blaze.base.model.primitives.Kind; @@ -38,6 +37,7 @@ import com.google.idea.blaze.base.settings.Blaze; import com.google.idea.blaze.base.settings.BuildSystemName; import com.google.idea.blaze.base.sync.data.BlazeProjectDataManager; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import com.google.idea.common.experiments.BoolExperiment; import com.intellij.execution.process.ProcessOutputTypes; import com.intellij.execution.testframework.TestConsoleProperties; diff --git a/base/src/com/google/idea/blaze/base/run/testlogs/BlazeTestResult.java b/base/src/com/google/idea/blaze/base/run/testlogs/BlazeTestResult.java index 9f8d980d7ba..e7c9708633f 100644 --- a/base/src/com/google/idea/blaze/base/run/testlogs/BlazeTestResult.java +++ b/base/src/com/google/idea/blaze/base/run/testlogs/BlazeTestResult.java @@ -17,9 +17,9 @@ import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableSet; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact; import com.google.idea.blaze.base.model.primitives.Kind; import com.google.idea.blaze.base.model.primitives.Label; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import javax.annotation.Nullable; /** The result of a single blaze test action. */ diff --git a/base/src/com/google/idea/blaze/base/sync/aspects/BlazeBuildOutputs.java b/base/src/com/google/idea/blaze/base/sync/aspects/BlazeBuildOutputs.java index 8e143a54bec..7cbf31eec79 100644 --- a/base/src/com/google/idea/blaze/base/sync/aspects/BlazeBuildOutputs.java +++ b/base/src/com/google/idea/blaze/base/sync/aspects/BlazeBuildOutputs.java @@ -25,10 +25,10 @@ import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.Sets; import com.google.idea.blaze.base.command.buildresult.BepArtifactData; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.base.command.buildresult.ParsedBepOutput; import com.google.idea.blaze.base.model.primitives.Label; import com.google.idea.blaze.base.sync.aspects.BuildResult.Status; +import com.google.idea.blaze.common.artifact.OutputArtifact; import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; diff --git a/base/src/com/google/idea/blaze/base/sync/aspects/BlazeIdeInterfaceAspectsImpl.java b/base/src/com/google/idea/blaze/base/sync/aspects/BlazeIdeInterfaceAspectsImpl.java index c5a1de4d8ef..0ed218edc85 100644 --- a/base/src/com/google/idea/blaze/base/sync/aspects/BlazeIdeInterfaceAspectsImpl.java +++ b/base/src/com/google/idea/blaze/base/sync/aspects/BlazeIdeInterfaceAspectsImpl.java @@ -39,13 +39,10 @@ import com.google.idea.blaze.base.command.BlazeFlags; import com.google.idea.blaze.base.command.BlazeInvocationContext; import com.google.idea.blaze.base.command.BlazeInvocationContext.ContextType; -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.BuildResultHelper; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactWithoutDigest; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; +import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; import com.google.idea.blaze.base.command.info.BlazeConfigurationHandler; -import com.google.idea.blaze.base.filecache.ArtifactState; import com.google.idea.blaze.base.filecache.ArtifactsDiff; import com.google.idea.blaze.base.ideinfo.TargetIdeInfo; import com.google.idea.blaze.base.ideinfo.TargetKey; @@ -92,6 +89,9 @@ import com.google.idea.blaze.base.sync.sharding.ShardedTargetList; import com.google.idea.blaze.base.toolwindow.Task; import com.google.idea.blaze.common.PrintOutput; +import com.google.idea.blaze.common.artifact.ArtifactState; +import com.google.idea.blaze.common.artifact.OutputArtifact; +import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest; import com.google.idea.blaze.exception.BuildException; import com.google.idea.common.experiments.BoolExperiment; import com.intellij.openapi.diagnostic.Logger; @@ -236,11 +236,13 @@ private static TargetMapAndInterfaceState updateTargetMap( RemoteArtifactPrefetcher.getInstance() .downloadArtifacts( /* projectName= */ project.getName(), - /* outputArtifacts= */ BlazeArtifact.getRemoteArtifacts(diff.getUpdatedOutputs())); + /* outputArtifacts= */ RemoteOutputArtifact.getRemoteArtifacts( + diff.getUpdatedOutputs())); ListenableFuture loadFilesInJvmFuture = RemoteArtifactPrefetcher.getInstance() .loadFilesInJvm( - /* outputArtifacts= */ BlazeArtifact.getRemoteArtifacts(diff.getUpdatedOutputs())); + /* outputArtifacts= */ RemoteOutputArtifact.getRemoteArtifacts( + diff.getUpdatedOutputs())); if (!FutureUtil.waitForFuture( context, Futures.allAsList(downloadArtifactsFuture, loadFilesInJvmFuture)) @@ -254,7 +256,7 @@ private static TargetMapAndInterfaceState updateTargetMap( ListenableFuture fetchLocalFilesFuture = PrefetchService.getInstance() .prefetchFiles( - /* files= */ BlazeArtifact.getLocalFiles(diff.getUpdatedOutputs()), + /* files= */ LocalFileArtifact.getLocalFiles(diff.getUpdatedOutputs()), /* refetchCachedFiles= */ true, /* fetchFileTypes= */ false); if (!FutureUtil.waitForFuture(context, fetchLocalFilesFuture) diff --git a/base/src/com/google/idea/blaze/base/sync/aspects/BlazeIdeInterfaceState.java b/base/src/com/google/idea/blaze/base/sync/aspects/BlazeIdeInterfaceState.java index 56b2c5ee11c..c273498ac77 100644 --- a/base/src/com/google/idea/blaze/base/sync/aspects/BlazeIdeInterfaceState.java +++ b/base/src/com/google/idea/blaze/base/sync/aspects/BlazeIdeInterfaceState.java @@ -23,10 +23,10 @@ import com.google.common.collect.Maps; import com.google.devtools.intellij.model.ProjectData; import com.google.devtools.intellij.model.ProjectData.LocalFileOrOutputArtifact; -import com.google.idea.blaze.base.filecache.ArtifactState; import com.google.idea.blaze.base.filecache.ArtifactStateProtoConverter; import com.google.idea.blaze.base.ideinfo.ProtoWrapper; import com.google.idea.blaze.base.ideinfo.TargetKey; +import com.google.idea.blaze.common.artifact.ArtifactState; import java.util.Map; import java.util.Objects; import java.util.function.Predicate; @@ -76,7 +76,7 @@ public ProjectData.BlazeIdeInterfaceState toProto() { .putAllFileToTarget( ProtoWrapper.map(ideInfoFileToTargetKey, Functions.identity(), TargetKey::toProto)); for (String key : ideInfoFileState.keySet()) { - proto.addIdeInfoFiles(ideInfoFileState.get(key).serializeToProto()); + proto.addIdeInfoFiles(ArtifactStateProtoConverter.toProto(ideInfoFileState.get(key))); } return proto.build(); } diff --git a/base/src/com/google/idea/blaze/base/sync/aspects/strategy/AspectStrategy.java b/base/src/com/google/idea/blaze/base/sync/aspects/strategy/AspectStrategy.java index 4ed4feb1ae9..5aa660408b7 100644 --- a/base/src/com/google/idea/blaze/base/sync/aspects/strategy/AspectStrategy.java +++ b/base/src/com/google/idea/blaze/base/sync/aspects/strategy/AspectStrategy.java @@ -25,9 +25,9 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.intellij.ideinfo.IntellijIdeInfo; import com.google.idea.blaze.base.command.BlazeCommand; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact; import com.google.idea.blaze.base.model.BlazeVersionData; import com.google.idea.blaze.base.model.primitives.LanguageClass; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import com.google.idea.common.experiments.BoolExperiment; import com.google.protobuf.TextFormat; import java.io.IOException; diff --git a/base/src/com/google/idea/blaze/base/sync/workspace/ArtifactLocationDecoder.java b/base/src/com/google/idea/blaze/base/sync/workspace/ArtifactLocationDecoder.java index 7cd18e57acb..28cd5c2e562 100644 --- a/base/src/com/google/idea/blaze/base/sync/workspace/ArtifactLocationDecoder.java +++ b/base/src/com/google/idea/blaze/base/sync/workspace/ArtifactLocationDecoder.java @@ -15,8 +15,8 @@ */ package com.google.idea.blaze.base.sync.workspace; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact; import com.google.idea.blaze.base.ideinfo.ArtifactLocation; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import java.io.File; import java.util.Collection; import java.util.List; diff --git a/base/src/com/google/idea/blaze/base/sync/workspace/ArtifactLocationDecoderImpl.java b/base/src/com/google/idea/blaze/base/sync/workspace/ArtifactLocationDecoderImpl.java index e53b7c40a95..8489ceb0ac9 100644 --- a/base/src/com/google/idea/blaze/base/sync/workspace/ArtifactLocationDecoderImpl.java +++ b/base/src/com/google/idea/blaze/base/sync/workspace/ArtifactLocationDecoderImpl.java @@ -15,12 +15,12 @@ */ package com.google.idea.blaze.base.sync.workspace; -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.SourceArtifact; import com.google.idea.blaze.base.command.info.BlazeInfo; import com.google.idea.blaze.base.ideinfo.ArtifactLocation; import com.google.idea.blaze.base.model.RemoteOutputArtifacts; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.io.FileUtil; import java.io.File; diff --git a/base/tests/unittests/com/google/idea/blaze/base/command/buildresult/BuildEventProtocolOutputReaderTest.java b/base/tests/unittests/com/google/idea/blaze/base/command/buildresult/BuildEventProtocolOutputReaderTest.java index 460ce2ae782..2604d3bdca0 100644 --- a/base/tests/unittests/com/google/idea/blaze/base/command/buildresult/BuildEventProtocolOutputReaderTest.java +++ b/base/tests/unittests/com/google/idea/blaze/base/command/buildresult/BuildEventProtocolOutputReaderTest.java @@ -47,6 +47,7 @@ import com.google.idea.blaze.base.run.testlogs.BlazeTestResult; import com.google.idea.blaze.base.run.testlogs.BlazeTestResult.TestStatus; import com.google.idea.blaze.base.run.testlogs.BlazeTestResults; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.common.experiments.ExperimentService; import com.google.idea.common.experiments.MockExperimentService; import com.intellij.openapi.extensions.impl.ExtensionPointImpl; @@ -115,7 +116,7 @@ public void parseAllOutputs_singleTargetEvents_returnsAllOutputs() throws Except ParsedBepOutput.parseBepArtifacts(asInputStream(events)) .getAllOutputArtifacts(path -> true); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactlyElementsIn(filePaths.stream().map(File::new).toArray()) .inOrder(); } @@ -138,7 +139,7 @@ public void parseAllOutputsWithFilter_singleFileEvent_returnsFilteredOutputs() t ImmutableSet parsedFilenames = ParsedBepOutput.parseBepArtifacts(asInputStream(events)).getAllOutputArtifacts(filter); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactly(new File("/usr/local/lib/File.py")); } @@ -179,7 +180,7 @@ public void parseAllOutputs_singleTargetEventsPlusExtras_returnsAllOutputs() thr ParsedBepOutput.parseBepArtifacts(asInputStream(events)) .getAllOutputArtifacts(path -> true); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactlyElementsIn(filePaths.stream().map(File::new).toArray()) .inOrder(); } @@ -224,7 +225,7 @@ public void parseAllOutputs_singleTargetWithMultipleFileSets_returnsAllOutputs() ParsedBepOutput.parseBepArtifacts(asInputStream(events)) .getAllOutputArtifacts(path -> true); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactlyElementsIn(allFiles) .inOrder(); } @@ -261,7 +262,7 @@ public void parseAllOutputs_streamWithDuplicateFiles_returnsUniqueOutputs() thro ParsedBepOutput.parseBepArtifacts(asInputStream(events)) .getAllOutputArtifacts(path -> true); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactlyElementsIn(allFiles) .inOrder(); } @@ -293,7 +294,7 @@ public void parseArtifactsForTarget_singleTarget_returnsTargetOutputs() throws E ParsedBepOutput.parseBepArtifacts(asInputStream(events)) .getDirectArtifactsForTarget(Label.create("//some:target"), path -> true); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactlyElementsIn(allFiles) .inOrder(); } @@ -333,7 +334,7 @@ public void parseArtifactsForTarget_twoTargets_returnsCorrectTargetOutputs() thr ParsedBepOutput.parseBepArtifacts(asInputStream(events)) .getDirectArtifactsForTarget(Label.create("//some:target"), path -> true); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactlyElementsIn(allFiles) .inOrder(); } @@ -379,7 +380,7 @@ public void parseAllArtifactsInOutputGroups_oneGroup_returnsAllOutputs() throws ParsedBepOutput.parseBepArtifacts(asInputStream(events)) .getOutputGroupArtifacts("group-name", path -> true); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactlyElementsIn(allFiles) .inOrder(); } @@ -420,7 +421,7 @@ public void parseAllArtifactsInOutputGroups_oneOfTwoGroups_returnsCorrectOutputs ParsedBepOutput.parseBepArtifacts(asInputStream(events)) .getOutputGroupArtifacts("group-1", path -> true); - assertThat(BlazeArtifact.getLocalFiles(parsedFilenames)) + assertThat(LocalFileArtifact.getLocalFiles(parsedFilenames)) .containsExactlyElementsIn(allFiles) .inOrder(); } @@ -457,7 +458,7 @@ public void getFullArtifactData_returnsTransitiveOutputs() throws Exception { ImmutableList outputs = outputData.values().stream().map(d -> d.artifact).collect(toImmutableList()); - assertThat(BlazeArtifact.getLocalFiles(outputs)).containsExactlyElementsIn(allOutputs); + assertThat(LocalFileArtifact.getLocalFiles(outputs)).containsExactlyElementsIn(allOutputs); } @Test @@ -645,7 +646,7 @@ public void parseTestResults_multipleEvents_returnsAllResults() throws Exception } private static ImmutableList getOutputXmlFiles(BlazeTestResult result) { - return BlazeArtifact.getLocalFiles(result.getOutputXmlFiles()); + return LocalFileArtifact.getLocalFiles(result.getOutputXmlFiles()); } private static InputStream asInputStream(BuildEvent.Builder... events) throws Exception { diff --git a/base/tests/unittests/com/google/idea/blaze/base/filecache/ArtifactStateTest.java b/base/tests/unittests/com/google/idea/blaze/base/filecache/ArtifactStateTest.java index 743c78dccaf..392e72b6d90 100644 --- a/base/tests/unittests/com/google/idea/blaze/base/filecache/ArtifactStateTest.java +++ b/base/tests/unittests/com/google/idea/blaze/base/filecache/ArtifactStateTest.java @@ -17,6 +17,7 @@ import static com.google.common.truth.Truth.assertThat; +import com.google.idea.blaze.common.artifact.ArtifactState; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; diff --git a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/ArtifactTrackerImplTest.java b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/ArtifactTrackerImplTest.java index b7e7314311a..2b73c5ba8d3 100644 --- a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/ArtifactTrackerImplTest.java +++ b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/ArtifactTrackerImplTest.java @@ -27,8 +27,6 @@ import com.google.common.collect.Maps; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; -import com.google.idea.blaze.base.filecache.ArtifactState; import com.google.idea.blaze.base.qsync.AppInspectorInfo; import com.google.idea.blaze.base.qsync.FileRefresher; import com.google.idea.blaze.base.qsync.GroupedOutputArtifacts; @@ -37,6 +35,9 @@ import com.google.idea.blaze.base.scope.BlazeContext; import com.google.idea.blaze.common.Context; import com.google.idea.blaze.common.Label; +import com.google.idea.blaze.common.artifact.ArtifactFetcher; +import com.google.idea.blaze.common.artifact.ArtifactState; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.blaze.qsync.ProjectProtoTransform; import com.google.idea.blaze.qsync.java.JavaTargetInfo.JavaArtifacts; import com.google.idea.blaze.qsync.java.JavaTargetInfo.JavaTargetArtifacts; diff --git a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/CacheDirectoryManagerTest.java b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/CacheDirectoryManagerTest.java index 1fada3d94bd..457f65fd6b2 100644 --- a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/CacheDirectoryManagerTest.java +++ b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/CacheDirectoryManagerTest.java @@ -18,8 +18,8 @@ import static com.google.common.truth.Truth.assertThat; import com.google.common.collect.ImmutableList; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; -import com.google.idea.blaze.base.filecache.ArtifactState; +import com.google.idea.blaze.common.artifact.ArtifactState; +import com.google.idea.blaze.common.artifact.OutputArtifact; import java.io.BufferedInputStream; import java.io.IOException; import javax.annotation.Nullable; diff --git a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/KeyBasedCacheLayoutTest.java b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/KeyBasedCacheLayoutTest.java index 2e2447637ce..93535db7c77 100644 --- a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/KeyBasedCacheLayoutTest.java +++ b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/KeyBasedCacheLayoutTest.java @@ -17,8 +17,8 @@ import static com.google.common.truth.Truth.assertThat; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.qsync.cache.FileCache.OutputArtifactDestination; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import java.nio.file.Path; import org.junit.Rule; import org.junit.Test; diff --git a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/TestOutputArtifactInfo.java b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/TestOutputArtifactInfo.java index ccc47581c5f..5ec719c4ee6 100644 --- a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/TestOutputArtifactInfo.java +++ b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/TestOutputArtifactInfo.java @@ -16,7 +16,7 @@ package com.google.idea.blaze.base.qsync.cache; import com.google.auto.value.AutoValue; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; @AutoValue public abstract class TestOutputArtifactInfo implements OutputArtifactInfo { diff --git a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/UnzippingCacheLayoutTest.java b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/UnzippingCacheLayoutTest.java index 28e2b435829..357a27706a4 100644 --- a/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/UnzippingCacheLayoutTest.java +++ b/base/tests/unittests/com/google/idea/blaze/base/qsync/cache/UnzippingCacheLayoutTest.java @@ -18,8 +18,8 @@ import static com.google.common.truth.Truth.assertThat; import com.google.common.collect.ImmutableSet; -import com.google.idea.blaze.base.command.buildresult.OutputArtifactInfo; import com.google.idea.blaze.base.qsync.cache.FileCache.CacheLayout; +import com.google.idea.blaze.common.artifact.OutputArtifactInfo; import java.nio.file.Path; import org.junit.Rule; import org.junit.Test; diff --git a/base/tests/utils/integration/com/google/idea/blaze/base/BlazeIntegrationTestCase.java b/base/tests/utils/integration/com/google/idea/blaze/base/BlazeIntegrationTestCase.java index 86d7b96066b..80f5ac17a7a 100644 --- a/base/tests/utils/integration/com/google/idea/blaze/base/BlazeIntegrationTestCase.java +++ b/base/tests/utils/integration/com/google/idea/blaze/base/BlazeIntegrationTestCase.java @@ -15,8 +15,7 @@ */ package com.google.idea.blaze.base; -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.io.InputStreamProvider; import com.google.idea.blaze.base.io.VirtualFileSystemProvider; @@ -28,6 +27,7 @@ import com.google.idea.blaze.base.settings.BlazeImportSettingsManager; import com.google.idea.blaze.base.settings.BuildSystemName; import com.google.idea.blaze.base.sync.SyncCache; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import com.google.idea.testing.EdtRule; import com.google.idea.testing.IntellijTestSetupRule; import com.google.idea.testing.ServiceHelper; diff --git a/base/tests/utils/unit/com/google/idea/blaze/base/io/MockInputStreamProvider.java b/base/tests/utils/unit/com/google/idea/blaze/base/io/MockInputStreamProvider.java index b1be953c25b..140d26faa07 100644 --- a/base/tests/utils/unit/com/google/idea/blaze/base/io/MockInputStreamProvider.java +++ b/base/tests/utils/unit/com/google/idea/blaze/base/io/MockInputStreamProvider.java @@ -18,8 +18,8 @@ import static org.junit.Assert.fail; import com.google.errorprone.annotations.CanIgnoreReturnValue; -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.common.artifact.BlazeArtifact; import com.intellij.util.containers.HashMap; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; diff --git a/base/tests/utils/unit/com/google/idea/blaze/base/sync/FakeRemoteOutputArtifact.java b/base/tests/utils/unit/com/google/idea/blaze/base/sync/FakeRemoteOutputArtifact.java index 166f4cf2ab4..f5222ea6866 100644 --- a/base/tests/utils/unit/com/google/idea/blaze/base/sync/FakeRemoteOutputArtifact.java +++ b/base/tests/utils/unit/com/google/idea/blaze/base/sync/FakeRemoteOutputArtifact.java @@ -16,7 +16,7 @@ package com.google.idea.blaze.base.sync; import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; -import com.google.idea.blaze.base.filecache.ArtifactState; +import com.google.idea.blaze.common.artifact.ArtifactState; import com.intellij.openapi.util.io.FileUtil; import java.io.BufferedInputStream; import java.io.File; diff --git a/base/tests/utils/unit/com/google/idea/blaze/base/sync/workspace/MockArtifactLocationDecoder.java b/base/tests/utils/unit/com/google/idea/blaze/base/sync/workspace/MockArtifactLocationDecoder.java index dded915057c..828c18493d9 100644 --- a/base/tests/utils/unit/com/google/idea/blaze/base/sync/workspace/MockArtifactLocationDecoder.java +++ b/base/tests/utils/unit/com/google/idea/blaze/base/sync/workspace/MockArtifactLocationDecoder.java @@ -15,11 +15,11 @@ */ package com.google.idea.blaze.base.sync.workspace; -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.SourceArtifact; import com.google.idea.blaze.base.ideinfo.ArtifactLocation; import com.google.idea.blaze.base.sync.FakeRemoteOutputArtifact; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import java.io.File; import org.jetbrains.annotations.Nullable; diff --git a/clwb/BUILD b/clwb/BUILD index d2640e5ce1e..254c9059a89 100644 --- a/clwb/BUILD +++ b/clwb/BUILD @@ -2,6 +2,11 @@ # Description: Builds clwb # +load( + "//:build-visibility.bzl", + "CLWB_PACKAGES_VISIBILITY", + "PLUGIN_PACKAGES_VISIBILITY", +) load("//:version.bzl", "VERSION") load( "//build_defs:build_defs.bzl", @@ -20,11 +25,6 @@ load( "//testing:test_defs.bzl", "intellij_unit_test_suite", ) -load( - "//:build-visibility.bzl", - "CLWB_PACKAGES_VISIBILITY", - "PLUGIN_PACKAGES_VISIBILITY", -) licenses(["notice"]) diff --git a/clwb/src/com/google/idea/blaze/clwb/run/BlazeCidrRunConfigurationRunner.java b/clwb/src/com/google/idea/blaze/clwb/run/BlazeCidrRunConfigurationRunner.java index 43dcaa44277..42d92cfeb67 100644 --- a/clwb/src/com/google/idea/blaze/clwb/run/BlazeCidrRunConfigurationRunner.java +++ b/clwb/src/com/google/idea/blaze/clwb/run/BlazeCidrRunConfigurationRunner.java @@ -20,10 +20,10 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.idea.blaze.base.command.BlazeCommandName; import com.google.idea.blaze.base.command.BlazeInvocationContext; -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.BuildResultHelperProvider; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; import com.google.idea.blaze.base.model.primitives.Label; import com.google.idea.blaze.base.model.primitives.TargetExpression; import com.google.idea.blaze.base.model.primitives.WorkspaceRoot; @@ -163,7 +163,7 @@ private File getExecutableToDebug(ExecutionEnvironment env) throws ExecutionExce List candidateFiles; try { candidateFiles = - BlazeArtifact.getLocalFiles( + LocalFileArtifact.getLocalFiles( buildResultHelper.getBuildArtifactsForTarget(target, file -> true)) .stream() .filter(File::canExecute) diff --git a/golang/BUILD b/golang/BUILD index af9b2dce48a..21fac1a9e53 100644 --- a/golang/BUILD +++ b/golang/BUILD @@ -1,7 +1,7 @@ load( - "//testing:test_defs.bzl", - "intellij_integration_test_suite", - "intellij_unit_test_suite", + "//:build-visibility.bzl", + "GOLANG_PACKAGES_VISIBILITY", + "PLUGIN_PACKAGES_VISIBILITY", ) load( "//build_defs:build_defs.bzl", @@ -11,9 +11,9 @@ load( "stamped_plugin_xml", ) load( - "//:build-visibility.bzl", - "GOLANG_PACKAGES_VISIBILITY", - "PLUGIN_PACKAGES_VISIBILITY", + "//testing:test_defs.bzl", + "intellij_integration_test_suite", + "intellij_unit_test_suite", ) licenses(["notice"]) diff --git a/golang/src/com/google/idea/blaze/golang/run/BlazeGoRunConfigurationRunner.java b/golang/src/com/google/idea/blaze/golang/run/BlazeGoRunConfigurationRunner.java index fa012e8e395..efad6c78165 100644 --- a/golang/src/com/google/idea/blaze/golang/run/BlazeGoRunConfigurationRunner.java +++ b/golang/src/com/google/idea/blaze/golang/run/BlazeGoRunConfigurationRunner.java @@ -31,10 +31,10 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.idea.blaze.base.command.BlazeCommandName; import com.google.idea.blaze.base.command.BlazeInvocationContext; -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.BuildResultHelperProvider; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; import com.google.idea.blaze.base.command.info.BlazeInfo; import com.google.idea.blaze.base.io.FileOperationProvider; import com.google.idea.blaze.base.model.BlazeProjectData; @@ -358,7 +358,7 @@ private static ExecutableInfo getExecutableToDebug(ExecutionEnvironment env) List candidateFiles; try { candidateFiles = - BlazeArtifact.getLocalFiles( + LocalFileArtifact.getLocalFiles( buildResultHelper.getBuildArtifactsForTarget(label, file -> true)) .stream() .filter(File::canExecute) diff --git a/java/BUILD b/java/BUILD index d83e4162070..0fcace93fee 100644 --- a/java/BUILD +++ b/java/BUILD @@ -55,6 +55,7 @@ java_library( "//querysync", "//sdkcompat", "//shared", + "//shared:artifact", "//third_party/auto_value", "@error_prone_annotations//jar", ], diff --git a/java/src/com/google/idea/blaze/java/fastbuild/FastBuildServiceImpl.java b/java/src/com/google/idea/blaze/java/fastbuild/FastBuildServiceImpl.java index 907e07418e7..6460b01c9f5 100644 --- a/java/src/com/google/idea/blaze/java/fastbuild/FastBuildServiceImpl.java +++ b/java/src/com/google/idea/blaze/java/fastbuild/FastBuildServiceImpl.java @@ -34,10 +34,10 @@ import com.google.idea.blaze.base.command.BlazeCommandName; import com.google.idea.blaze.base.command.BlazeFlags; import com.google.idea.blaze.base.command.BlazeInvocationContext; -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.BuildResultHelperProvider; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; import com.google.idea.blaze.base.command.info.BlazeInfo; import com.google.idea.blaze.base.command.info.BlazeInfoRunner; import com.google.idea.blaze.base.console.BlazeConsoleLineProcessorProvider; @@ -317,7 +317,7 @@ private FastBuildState.BuildOutput buildDeployJar( Predicate jarPredicate = file -> file.endsWith(deployJarLabel.targetName().toString()); try { ImmutableList deployJarArtifacts = - BlazeArtifact.getLocalFiles( + LocalFileArtifact.getLocalFiles( resultHelper.getBuildArtifactsForTarget( deployJarStrategy.deployJarOwnerLabel(label, blazeVersionData), jarPredicate)); checkState(deployJarArtifacts.size() == 1); @@ -326,7 +326,7 @@ private FastBuildState.BuildOutput buildDeployJar( Predicate filePredicate = file -> aspectStrategy.getAspectOutputFilePredicate().test(file); ImmutableList ideInfoFiles = - BlazeArtifact.getLocalFiles( + LocalFileArtifact.getLocalFiles( resultHelper.getArtifactsForOutputGroup( aspectStrategy.getAspectOutputGroup(), filePredicate)); diff --git a/java/src/com/google/idea/blaze/java/libraries/JarCache.java b/java/src/com/google/idea/blaze/java/libraries/JarCache.java index f80db8bc65b..8e3363db05e 100644 --- a/java/src/com/google/idea/blaze/java/libraries/JarCache.java +++ b/java/src/com/google/idea/blaze/java/libraries/JarCache.java @@ -28,9 +28,7 @@ import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; 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.OutputArtifactWithoutDigest; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; import com.google.idea.blaze.base.command.buildresult.SourceArtifact; import com.google.idea.blaze.base.filecache.FileCache; @@ -55,6 +53,8 @@ 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.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest; import com.google.idea.blaze.java.settings.BlazeJavaUserSettings; import com.google.idea.blaze.java.sync.model.BlazeJarLibrary; import com.intellij.openapi.application.ApplicationManager; @@ -224,7 +224,7 @@ private void refresh( RemoteArtifactPrefetcher.getInstance() .downloadArtifacts( /* projectName= */ project.getName(), - /* outputArtifacts= */ BlazeArtifact.getRemoteArtifacts(updated.values())); + /* outputArtifacts= */ RemoteOutputArtifact.getRemoteArtifacts(updated.values())); FutureUtil.waitForFuture(context, downloadArtifactsFuture) .timed("FetchJars", EventType.Prefetching) .withProgressMessage("Fetching jar files...") diff --git a/java/src/com/google/idea/blaze/java/libraries/LintJarHelper.java b/java/src/com/google/idea/blaze/java/libraries/LintJarHelper.java index fb457e3a579..4b3fc94fa92 100644 --- a/java/src/com/google/idea/blaze/java/libraries/LintJarHelper.java +++ b/java/src/com/google/idea/blaze/java/libraries/LintJarHelper.java @@ -18,9 +18,9 @@ import static com.google.common.collect.ImmutableList.toImmutableList; import com.google.common.collect.ImmutableList; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact; import com.google.idea.blaze.base.model.BlazeProjectData; import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import com.google.idea.blaze.java.sync.model.BlazeJavaSyncData; /** Utility class for collecting lint jars from {@link BlazeProjectData} */ diff --git a/java/src/com/google/idea/blaze/java/run/hotswap/ClassFileManifestBuilder.java b/java/src/com/google/idea/blaze/java/run/hotswap/ClassFileManifestBuilder.java index 4eebe3795e8..46a052a4331 100644 --- a/java/src/com/google/idea/blaze/java/run/hotswap/ClassFileManifestBuilder.java +++ b/java/src/com/google/idea/blaze/java/run/hotswap/ClassFileManifestBuilder.java @@ -21,10 +21,10 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.idea.blaze.base.command.BlazeCommandName; import com.google.idea.blaze.base.command.BlazeInvocationContext; -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.BuildResultHelperProvider; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; import com.google.idea.blaze.base.model.BlazeProjectData; import com.google.idea.blaze.base.model.BlazeVersionData; import com.google.idea.blaze.base.run.BlazeBeforeRunCommandHelper; @@ -132,7 +132,7 @@ public static ClassFileManifest.Diff buildManifest( ImmutableList jars; try { jars = - BlazeArtifact.getLocalFiles( + LocalFileArtifact.getLocalFiles( buildResultHelper.getArtifactsForOutputGroup( JavaClasspathAspectStrategy.OUTPUT_GROUP, file -> true)) .stream() diff --git a/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyJarTracker.java b/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyJarTracker.java index 12dcdb81177..53d9d66b6d0 100644 --- a/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyJarTracker.java +++ b/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyJarTracker.java @@ -19,10 +19,10 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.intellij.model.ProjectData; import com.google.errorprone.annotations.CanIgnoreReturnValue; -import com.google.idea.blaze.base.filecache.ArtifactState; import com.google.idea.blaze.base.filecache.ArtifactStateProtoConverter; import com.google.idea.blaze.base.ideinfo.ProtoWrapper; import com.google.idea.blaze.base.model.SyncState; +import com.google.idea.blaze.common.artifact.ArtifactState; import com.google.idea.blaze.java.sync.model.BlazeJavaSyncData; import java.util.HashMap; import java.util.Map; @@ -68,7 +68,7 @@ public ProjectData.EmptyJarTracker toProto() { .map( e -> ProjectData.EmptyJarTracker.Entry.newBuilder() - .setArtifact(e.getKey().serializeToProto()) + .setArtifact(ArtifactStateProtoConverter.toProto(e.getKey())) .setIsEmpty(e.getValue())) .forEach(trackerBuilder::addEntries); return trackerBuilder.build(); diff --git a/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyLibrary.java b/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyLibrary.java index 6e9d46bd719..92b89d23d03 100644 --- a/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyLibrary.java +++ b/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyLibrary.java @@ -23,9 +23,7 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; 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.filecache.ArtifactState; +import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; import com.google.idea.blaze.base.filecache.ArtifactsDiff; import com.google.idea.blaze.base.ideinfo.ArtifactLocation; import com.google.idea.blaze.base.model.LibraryKey; @@ -40,6 +38,9 @@ import com.google.idea.blaze.base.scope.scopes.TimingScope.EventType; import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder; 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.blaze.common.artifact.OutputArtifactWithoutDigest; import com.google.idea.blaze.java.sync.model.BlazeJarLibrary; import com.google.idea.blaze.java.sync.model.BlazeJavaImportResult; import com.intellij.openapi.diagnostic.Logger; @@ -183,7 +184,8 @@ private static EmptyJarTracker getUpdatedEmptyJarTracker( // Prefetch updated artifacts ListenableFuture future = RemoteArtifactPrefetcher.getInstance() - .downloadArtifacts(project.getName(), BlazeArtifact.getRemoteArtifacts(updated)); + .downloadArtifacts( + project.getName(), RemoteOutputArtifact.getRemoteArtifacts(updated)); FutureUtil.waitForFuture(context, future) .timed("FetchJarsForEmptyStatusTracking", EventType.Prefetching) diff --git a/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyLibraryFilter.java b/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyLibraryFilter.java index 889d6cc64d6..3850fbc3721 100644 --- a/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyLibraryFilter.java +++ b/java/src/com/google/idea/blaze/java/sync/importer/emptylibrary/EmptyLibraryFilter.java @@ -16,7 +16,7 @@ package com.google.idea.blaze.java.sync.importer.emptylibrary; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact; +import com.google.idea.blaze.common.artifact.BlazeArtifact; import com.google.idea.common.experiments.IntExperiment; import com.intellij.openapi.diagnostic.Logger; import java.io.IOException; diff --git a/java/src/com/google/idea/blaze/java/sync/jdeps/JdepsFileReader.java b/java/src/com/google/idea/blaze/java/sync/jdeps/JdepsFileReader.java index bd1e22c13ae..8fbf3f90178 100644 --- a/java/src/com/google/idea/blaze/java/sync/jdeps/JdepsFileReader.java +++ b/java/src/com/google/idea/blaze/java/sync/jdeps/JdepsFileReader.java @@ -24,8 +24,8 @@ import com.google.devtools.build.lib.view.proto.Deps; import com.google.devtools.build.lib.view.proto.Deps.Dependency; 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.LocalFileArtifact; +import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; import com.google.idea.blaze.base.filecache.ArtifactsDiff; import com.google.idea.blaze.base.ideinfo.JavaIdeInfo; import com.google.idea.blaze.base.ideinfo.TargetIdeInfo; @@ -41,6 +41,8 @@ import com.google.idea.blaze.base.sync.SyncMode; 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.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest; import com.google.idea.blaze.java.sync.jdeps.JdepsState.JdepsData; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; @@ -155,10 +157,10 @@ private JdepsState doLoadJdepsFiles( RemoteArtifactPrefetcher.getInstance() .downloadArtifacts( /* projectName= */ project.getName(), - /* outputArtifacts= */ BlazeArtifact.getRemoteArtifacts(outputArtifacts)); + /* outputArtifacts= */ RemoteOutputArtifact.getRemoteArtifacts(outputArtifacts)); ListenableFuture fetchLocalFilesFuture = PrefetchService.getInstance() - .prefetchFiles(BlazeArtifact.getLocalFiles(outputArtifacts), true, false); + .prefetchFiles(LocalFileArtifact.getLocalFiles(outputArtifacts), true, false); if (!FutureUtil.waitForFuture( context, Futures.allAsList(downloadArtifactsFuture, fetchLocalFilesFuture)) .timed("FetchJdeps", EventType.Prefetching) diff --git a/java/src/com/google/idea/blaze/java/sync/jdeps/JdepsState.java b/java/src/com/google/idea/blaze/java/sync/jdeps/JdepsState.java index 1878022c896..62ec0ff5016 100644 --- a/java/src/com/google/idea/blaze/java/sync/jdeps/JdepsState.java +++ b/java/src/com/google/idea/blaze/java/sync/jdeps/JdepsState.java @@ -23,11 +23,11 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.intellij.model.ProjectData; -import com.google.idea.blaze.base.filecache.ArtifactState; import com.google.idea.blaze.base.filecache.ArtifactStateProtoConverter; import com.google.idea.blaze.base.ideinfo.ProtoWrapper; import com.google.idea.blaze.base.ideinfo.TargetKey; import com.google.idea.blaze.base.model.SyncData; +import com.google.idea.blaze.common.artifact.ArtifactState; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -118,7 +118,7 @@ public ProjectData.JdepsState toProto() { s -> ProjectData.TargetToJdepsMap.Entry.newBuilder() .setKey(s.getTargetKey().toProto()) - .setFile(s.getFile().serializeToProto()) + .setFile(ArtifactStateProtoConverter.toProto(s.getFile())) .addAllValue(s.getJdeps()) .build()) .collect(toImmutableList())); diff --git a/java/src/com/google/idea/blaze/java/sync/source/PackageManifestReader.java b/java/src/com/google/idea/blaze/java/sync/source/PackageManifestReader.java index 20867068fb3..b41e99c9a4a 100644 --- a/java/src/com/google/idea/blaze/java/sync/source/PackageManifestReader.java +++ b/java/src/com/google/idea/blaze/java/sync/source/PackageManifestReader.java @@ -29,10 +29,8 @@ import com.google.devtools.intellij.ideinfo.IntellijIdeInfo.JavaSourcePackage; import com.google.devtools.intellij.ideinfo.IntellijIdeInfo.PackageManifest; 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.LocalFileArtifact; import com.google.idea.blaze.base.command.buildresult.RemoteOutputArtifact; -import com.google.idea.blaze.base.filecache.ArtifactState; import com.google.idea.blaze.base.filecache.ArtifactsDiff; import com.google.idea.blaze.base.filecache.RemoteOutputsCache; import com.google.idea.blaze.base.ideinfo.ArtifactLocation; @@ -46,6 +44,9 @@ import com.google.idea.blaze.base.scope.scopes.NetworkTrafficTrackingScope.NetworkTrafficUsedOutput; import com.google.idea.blaze.base.scope.scopes.TimingScope.EventType; import com.google.idea.blaze.base.sync.workspace.ArtifactLocationDecoder; +import com.google.idea.blaze.common.artifact.ArtifactState; +import com.google.idea.blaze.common.artifact.BlazeArtifact; +import com.google.idea.blaze.common.artifact.OutputArtifactWithoutDigest; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; @@ -106,7 +107,7 @@ public Map> readPackageManifestFiles( // Find all not cached {@link RemoteOutputArtifact} and download them before parsing manifest // file ImmutableList toDownload = - BlazeArtifact.getRemoteArtifacts(diff.getUpdatedOutputs()).stream() + RemoteOutputArtifact.getRemoteArtifacts(diff.getUpdatedOutputs()).stream() .filter(a -> findArtifactInCache(project, a) == null) .collect(toImmutableList()); @@ -114,7 +115,7 @@ public Map> readPackageManifestFiles( RemoteArtifactPrefetcher.getInstance().downloadArtifacts(project.getName(), toDownload); ListenableFuture fetchLocalFilesFuture = PrefetchService.getInstance() - .prefetchFiles(BlazeArtifact.getLocalFiles(diff.getUpdatedOutputs()), true, false); + .prefetchFiles(LocalFileArtifact.getLocalFiles(diff.getUpdatedOutputs()), true, false); if (!FutureUtil.waitForFuture( context, Futures.allAsList(fetchRemoteArtifactFuture, fetchLocalFilesFuture)) diff --git a/plugin_dev/BUILD b/plugin_dev/BUILD index 294ee77b8d6..2c950ab74e8 100644 --- a/plugin_dev/BUILD +++ b/plugin_dev/BUILD @@ -29,6 +29,7 @@ java_library( "//java", "//proto:proto_deps", "//shared", + "//shared:artifact", "//third_party/devkit", ], ) diff --git a/plugin_dev/src/com/google/idea/blaze/plugin/run/BlazeIntellijPluginDeployer.java b/plugin_dev/src/com/google/idea/blaze/plugin/run/BlazeIntellijPluginDeployer.java index dfd724be5e4..e9b433c9df6 100644 --- a/plugin_dev/src/com/google/idea/blaze/plugin/run/BlazeIntellijPluginDeployer.java +++ b/plugin_dev/src/com/google/idea/blaze/plugin/run/BlazeIntellijPluginDeployer.java @@ -28,8 +28,8 @@ import com.google.devtools.intellij.plugin.IntellijPluginTargetDeployInfo.IntellijPluginDeployInfo; import com.google.idea.blaze.base.async.executor.BlazeExecutor; 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.sync.aspects.BlazeBuildOutputs; +import com.google.idea.blaze.common.artifact.OutputArtifact; import com.google.idea.common.experiments.BoolExperiment; import com.google.protobuf.TextFormat; import com.intellij.concurrency.AsyncUtil; diff --git a/python/src/com/google/idea/blaze/python/run/BlazePyRunConfigurationRunner.java b/python/src/com/google/idea/blaze/python/run/BlazePyRunConfigurationRunner.java index a7f9544c2c1..81de18d57bc 100644 --- a/python/src/com/google/idea/blaze/python/run/BlazePyRunConfigurationRunner.java +++ b/python/src/com/google/idea/blaze/python/run/BlazePyRunConfigurationRunner.java @@ -23,10 +23,10 @@ import com.google.idea.blaze.base.command.BlazeCommandName; import com.google.idea.blaze.base.command.BlazeFlags; import com.google.idea.blaze.base.command.BlazeInvocationContext; -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.BuildResultHelperProvider; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; import com.google.idea.blaze.base.ideinfo.PyIdeInfo; import com.google.idea.blaze.base.ideinfo.TargetIdeInfo; import com.google.idea.blaze.base.ideinfo.TargetKey; @@ -338,7 +338,7 @@ private static PyExecutionInfo getExecutableToDebug(ExecutionEnvironment env) List candidateFiles; try { candidateFiles = - BlazeArtifact.getLocalFiles( + LocalFileArtifact.getLocalFiles( buildResultHelper.getBuildArtifactsForTarget(target, file -> true)) .stream() .filter(File::canExecute) diff --git a/scala/src/com/google/idea/blaze/scala/run/producers/GenerateDeployableJarTaskProvider.java b/scala/src/com/google/idea/blaze/scala/run/producers/GenerateDeployableJarTaskProvider.java index b6147e592d4..61eea6a103a 100644 --- a/scala/src/com/google/idea/blaze/scala/run/producers/GenerateDeployableJarTaskProvider.java +++ b/scala/src/com/google/idea/blaze/scala/run/producers/GenerateDeployableJarTaskProvider.java @@ -24,10 +24,10 @@ import com.google.idea.blaze.base.command.BlazeCommandName; import com.google.idea.blaze.base.command.BlazeFlags; import com.google.idea.blaze.base.command.BlazeInvocationContext; -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.BuildResultHelperProvider; +import com.google.idea.blaze.base.command.buildresult.LocalFileArtifact; import com.google.idea.blaze.base.console.BlazeConsoleLineProcessorProvider; import com.google.idea.blaze.base.issueparser.BlazeIssueParser; import com.google.idea.blaze.base.model.primitives.Label; @@ -186,7 +186,7 @@ private static File getDeployableJar( } List outputs = - BlazeArtifact.getLocalFiles( + LocalFileArtifact.getLocalFiles( buildResultHelper.getBuildArtifactsForTarget( target.withTargetName(target.targetName() + "_deploy.jar"), file -> true)); if (outputs.isEmpty()) { diff --git a/shared/BUILD b/shared/BUILD index ec14c11543e..86cbabc5b66 100644 --- a/shared/BUILD +++ b/shared/BUILD @@ -31,6 +31,14 @@ java_library( ], ) +java_library( + name = "artifact", + visibility = PLUGIN_PACKAGES_VISIBILITY, + exports = [ + "//shared/java/com/google/idea/blaze/common/artifact", + ], +) + test_suite( name = "tests", tests = [ diff --git a/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactFetcher.java b/shared/java/com/google/idea/blaze/common/artifact/ArtifactFetcher.java similarity index 69% rename from base/src/com/google/idea/blaze/base/qsync/cache/ArtifactFetcher.java rename to shared/java/com/google/idea/blaze/common/artifact/ArtifactFetcher.java index 8e480ecaa8d..5ae43175c2f 100644 --- a/base/src/com/google/idea/blaze/base/qsync/cache/ArtifactFetcher.java +++ b/shared/java/com/google/idea/blaze/common/artifact/ArtifactFetcher.java @@ -13,26 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.idea.blaze.base.qsync.cache; +package com.google.idea.blaze.common.artifact; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; -import com.google.idea.blaze.base.command.buildresult.OutputArtifact; import com.google.idea.blaze.common.Context; -import com.intellij.openapi.extensions.ExtensionPointName; -import com.intellij.util.concurrency.AppExecutorUtil; import java.nio.file.Path; /** Copy a bunch of artifacts. */ public interface ArtifactFetcher { - ExtensionPointName> EP_NAME = - ExtensionPointName.create("com.google.idea.blaze.qsync.ArtifactFetcher"); - - ListeningExecutorService EXECUTOR = - MoreExecutors.listeningDecorator( - AppExecutorUtil.createBoundedApplicationPoolExecutor("ArtifactBulkCopyExecutor", 128)); /** A structure that describes that destination location to which an artifact has to be copied. */ final class ArtifactDestination { diff --git a/base/src/com/google/idea/blaze/base/filecache/ArtifactState.java b/shared/java/com/google/idea/blaze/common/artifact/ArtifactState.java similarity index 50% rename from base/src/com/google/idea/blaze/base/filecache/ArtifactState.java rename to shared/java/com/google/idea/blaze/common/artifact/ArtifactState.java index dbf4bd795a8..b053b9fd6a2 100644 --- a/base/src/com/google/idea/blaze/base/filecache/ArtifactState.java +++ b/shared/java/com/google/idea/blaze/common/artifact/ArtifactState.java @@ -13,11 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.idea.blaze.base.filecache; +package com.google.idea.blaze.common.artifact; -import com.google.devtools.intellij.model.ProjectData.LocalFile; -import com.google.devtools.intellij.model.ProjectData.LocalFileOrOutputArtifact; -import com.google.idea.blaze.base.command.buildresult.BlazeArtifact; import java.io.File; /** Used to diff blaze {@link BlazeArtifact}s from different builds. */ @@ -58,61 +55,5 @@ static String migrateOldKeyFormat(String key) { */ boolean isMoreRecent(ArtifactState output); - LocalFileOrOutputArtifact serializeToProto(); - /** Serialization state related to local files. */ - class LocalFileState implements ArtifactState { - private final String blazeOutPath; - private final long timestamp; - - public LocalFileState(LocalFile localFile) { - this.blazeOutPath = - !localFile.getRelativePath().isEmpty() - ? localFile.getRelativePath() - : migrateOldKeyFormat(localFile.getPath()); - this.timestamp = localFile.getTimestamp(); - } - - public LocalFileState(String blazeOutPath, long timestamp) { - this.blazeOutPath = blazeOutPath; - this.timestamp = timestamp; - } - - @Override - public String getKey() { - return blazeOutPath; - } - - @Override - public boolean isMoreRecent(ArtifactState output) { - return !(output instanceof LocalFileState) || timestamp < ((LocalFileState) output).timestamp; - } - - @Override - public LocalFileOrOutputArtifact serializeToProto() { - return LocalFileOrOutputArtifact.newBuilder() - .setLocalFile(LocalFile.newBuilder().setPath(blazeOutPath).setTimestamp(timestamp)) - .build(); - } - - @Override - public int hashCode() { - return blazeOutPath.hashCode(); - } - - /** - * Returns true for {@link LocalFileState} with the same key, as described in {@link #getKey()} - * See {@link ArtifactState#getKey()} for caveats abouts versioning. - */ - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof LocalFileState)) { - return false; - } - return blazeOutPath.equals(((LocalFileState) obj).blazeOutPath); - } - } } diff --git a/shared/java/com/google/idea/blaze/common/artifact/BUILD b/shared/java/com/google/idea/blaze/common/artifact/BUILD new file mode 100644 index 00000000000..ce03f648dd9 --- /dev/null +++ b/shared/java/com/google/idea/blaze/common/artifact/BUILD @@ -0,0 +1,13 @@ +licenses(["notice"]) + +java_library( + name = "artifact", + srcs = glob(["*.java"]), + visibility = ["//shared:__subpackages__"], + deps = [ + "//shared/java/com/google/idea/blaze/common", + "@com_google_guava_guava//jar", + "@error_prone_annotations//jar", + "@jsr305_annotations//jar", + ], +) diff --git a/shared/java/com/google/idea/blaze/common/artifact/BlazeArtifact.java b/shared/java/com/google/idea/blaze/common/artifact/BlazeArtifact.java new file mode 100644 index 00000000000..606a7699b26 --- /dev/null +++ b/shared/java/com/google/idea/blaze/common/artifact/BlazeArtifact.java @@ -0,0 +1,32 @@ +/* + * Copyright 2019 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.idea.blaze.common.artifact; + +import com.google.errorprone.annotations.MustBeClosed; +import java.io.BufferedInputStream; +import java.io.IOException; + +/** A build artifact, either a source or output (generated) artifact. */ +public interface BlazeArtifact { + + /** Returns the length of the underlying file in bytes, or 0 if this can't be determined. */ + long getLength(); + + /** A buffered input stream providing the contents of this artifact. */ + @MustBeClosed + BufferedInputStream getInputStream() throws IOException; + +} diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifact.java b/shared/java/com/google/idea/blaze/common/artifact/OutputArtifact.java similarity index 95% rename from base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifact.java rename to shared/java/com/google/idea/blaze/common/artifact/OutputArtifact.java index 27f996adc71..5afada685f3 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifact.java +++ b/shared/java/com/google/idea/blaze/common/artifact/OutputArtifact.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.idea.blaze.base.command.buildresult; +package com.google.idea.blaze.common.artifact; /** A variant of {@link OutputArtifactWithoutDigest} that includes the digest of its content. */ public interface OutputArtifact extends OutputArtifactWithoutDigest { diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactInfo.java b/shared/java/com/google/idea/blaze/common/artifact/OutputArtifactInfo.java similarity index 93% rename from base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactInfo.java rename to shared/java/com/google/idea/blaze/common/artifact/OutputArtifactInfo.java index 43d099d9713..d8a3e421715 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactInfo.java +++ b/shared/java/com/google/idea/blaze/common/artifact/OutputArtifactInfo.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.idea.blaze.base.command.buildresult; +package com.google.idea.blaze.common.artifact; /** A descriptor of an output artifact that contains data needed to identify the artifact. */ public interface OutputArtifactInfo { diff --git a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactWithoutDigest.java b/shared/java/com/google/idea/blaze/common/artifact/OutputArtifactWithoutDigest.java similarity index 84% rename from base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactWithoutDigest.java rename to shared/java/com/google/idea/blaze/common/artifact/OutputArtifactWithoutDigest.java index ddb9024a4f2..bbeb49b04b0 100644 --- a/base/src/com/google/idea/blaze/base/command/buildresult/OutputArtifactWithoutDigest.java +++ b/shared/java/com/google/idea/blaze/common/artifact/OutputArtifactWithoutDigest.java @@ -13,9 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.idea.blaze.base.command.buildresult; +package com.google.idea.blaze.common.artifact; -import com.google.idea.blaze.base.filecache.ArtifactState; import javax.annotation.Nullable; /** A blaze output artifact, generated during some build action. */ @@ -27,6 +26,9 @@ public interface OutputArtifactWithoutDigest extends BlazeArtifact, OutputArtifa /** * Returns the {@link ArtifactState} for this output, used for serialization/diffing purposes. Can * require file system operations. + * + *

Note, this method is kept here to support legacy sync codepaths only. Ideally it would not + * be here but achieving that now is too much work. */ @Nullable ArtifactState toArtifactState();