use of com.google.idea.blaze.base.ideinfo.ArtifactLocation in project intellij by bazelbuild.
the class SourceDirectoryCalculator method sortArtifactLocationsByRootDirectory.
private static Multimap<WorkspacePath, SourceArtifact> sortArtifactLocationsByRootDirectory(BlazeContext context, ImportRoots importRoots, Collection<SourceArtifact> sources) {
Multimap<WorkspacePath, SourceArtifact> result = ArrayListMultimap.create();
for (SourceArtifact sourceArtifact : sources) {
String sourcePath = sourceArtifact.artifactLocation.getRelativePath();
if (importRoots.excludeDirectories().stream().anyMatch(excluded -> isUnderRootDirectory(excluded, sourcePath))) {
continue;
}
WorkspacePath foundWorkspacePath = importRoots.rootDirectories().stream().filter(rootDirectory -> isUnderRootDirectory(rootDirectory, sourcePath)).findFirst().orElse(null);
if (foundWorkspacePath != null) {
result.put(foundWorkspacePath, sourceArtifact);
} else if (sourceArtifact.artifactLocation.isSource()) {
ArtifactLocation sourceFile = sourceArtifact.artifactLocation;
String message = String.format("Did not add %s. You're probably using a java file from outside the workspace" + " that has been exported using export_files. Don't do that.", sourceFile);
IssueOutput.warn(message).submit(context);
}
}
return result;
}
use of com.google.idea.blaze.base.ideinfo.ArtifactLocation in project intellij by bazelbuild.
the class BlazeClassJarProviderIntegrationTest method javaInfoWithCheckedInJars.
private JavaIdeInfo.Builder javaInfoWithCheckedInJars(String... relativeJarPaths) {
JavaIdeInfo.Builder builder = JavaIdeInfo.builder();
for (String relativeJarPath : relativeJarPaths) {
ArtifactLocation jar = ArtifactLocation.builder().setRelativePath(relativeJarPath).setIsSource(true).build();
builder.addJar(LibraryArtifact.builder().setClassJar(jar));
fileSystem.createFile(jar.getExecutionRootRelativePath());
}
return builder;
}
use of com.google.idea.blaze.base.ideinfo.ArtifactLocation in project intellij by bazelbuild.
the class BlazeRenderErrorContributorTest method createTargetMapWithNonStandardAndroidManifestNameInDependency.
private void createTargetMapWithNonStandardAndroidManifestNameInDependency() {
Label mainResourceTarget = Label.create("//com/google/example:main");
Label dependencyResourceTarget = Label.create("//com/google/example:dependency");
ArtifactLocation mainManifest = artifact("com/google/example/main/AndroidManifest.xml", true);
ArtifactLocation mainResource = artifact("com/google/example/main/res", true);
ArtifactLocation mainBuildFile = artifact("com/google/example/main/BUILD", true);
ArtifactLocation dependencyManifest = artifact("com/google/example/dependency/MyManifest.xml", true);
ArtifactLocation dependencyResource = artifact("com/google/example/dependency/res", true);
ArtifactLocation dependencyBuildFile = artifact("com/google/example/dependency/BUILD", true);
AndroidResourceModuleRegistry registry = AndroidResourceModuleRegistry.getInstance(project);
registry.put(module, AndroidResourceModule.builder(TargetKey.forPlainTarget(mainResourceTarget)).addResource(mainResource).addTransitiveResourceDependency(dependencyResourceTarget).addTransitiveResource(dependencyResource).build());
registry.put(mock(Module.class), AndroidResourceModule.builder(TargetKey.forPlainTarget(dependencyResourceTarget)).addResource(dependencyResource).build());
TargetMap targetMap = TargetMapBuilder.builder().addTarget(TargetIdeInfo.builder().setLabel(mainResourceTarget).setBuildFile(mainBuildFile).setAndroidInfo(AndroidIdeInfo.builder().setGenerateResourceClass(true).setManifestFile(mainManifest).addResource(mainResource))).addTarget(TargetIdeInfo.builder().setLabel(dependencyResourceTarget).setBuildFile(dependencyBuildFile).setAndroidInfo(AndroidIdeInfo.builder().setGenerateResourceClass(true).setManifestFile(dependencyManifest).addResource(dependencyResource))).build();
projectDataManager.setTargetMap(targetMap);
}
use of com.google.idea.blaze.base.ideinfo.ArtifactLocation in project intellij by bazelbuild.
the class BlazeAndroidWorkspaceImporterTest method testIdlClassJarIsAddedAsLibrary.
@Test
public void testIdlClassJarIsAddedAsLibrary() {
ProjectView projectView = ProjectView.builder().add(ListSection.builder(DirectorySection.KEY).add(DirectoryEntry.include(new WorkspacePath("example")))).build();
TargetMapBuilder targetMapBuilder = TargetMapBuilder.builder().addTarget(TargetIdeInfo.builder().setLabel("//example:lib").setBuildFile(source("example/BUILD")).setKind("android_binary").addSource(source("example/MainActivity.java")).setAndroidInfo(AndroidIdeInfo.builder().setResourceJavaPackage("example").setIdlJar(LibraryArtifact.builder().setInterfaceJar(gen("example/libidl.jar")).addSourceJar(gen("example/libidl.srcjar")).build()).setHasIdlSources(true)));
TargetMap targetMap = targetMapBuilder.build();
BlazeAndroidJavaSyncAugmenter syncAugmenter = new BlazeAndroidJavaSyncAugmenter();
List<BlazeJarLibrary> jars = Lists.newArrayList();
List<BlazeJarLibrary> genJars = Lists.newArrayList();
ImportRoots importRoots = ImportRoots.builder(workspaceRoot, BuildSystem.Blaze).add(ProjectViewSet.builder().add(projectView).build()).build();
ProjectViewSet projectViewSet = ProjectViewSet.builder().add(projectView).build();
for (TargetIdeInfo target : targetMap.targets()) {
if (importRoots.importAsSource(target.key.label)) {
syncAugmenter.addJarsForSourceTarget(workspaceLanguageSettings, projectViewSet, target, jars, genJars);
}
}
assertThat(genJars.stream().map(library -> library.libraryArtifact.interfaceJar).map(artifactLocation -> new File(artifactLocation.relativePath).getName()).collect(Collectors.toList())).containsExactly("libidl.jar");
}
use of com.google.idea.blaze.base.ideinfo.ArtifactLocation in project intellij by bazelbuild.
the class BlazeAndroidWorkspaceImporter method addSourceTarget.
private void addSourceTarget(WorkspaceBuilder workspaceBuilder, TransitiveResourceMap transitiveResourceMap, TargetIdeInfo target) {
AndroidIdeInfo androidIdeInfo = target.androidIdeInfo;
assert androidIdeInfo != null;
if (shouldGenerateResources(androidIdeInfo) && shouldGenerateResourceModule(androidIdeInfo, whitelistedGenResourcePaths)) {
AndroidResourceModule.Builder builder = new AndroidResourceModule.Builder(target.key);
workspaceBuilder.androidResourceModules.add(builder);
for (ArtifactLocation artifactLocation : androidIdeInfo.resources) {
if (artifactLocation.isSource()) {
builder.addResource(artifactLocation);
} else {
workspaceBuilder.generatedResourceLocations.add(artifactLocation);
if (whitelistedGenResourcePaths.contains(artifactLocation.relativePath)) {
// Still track location in generatedResourceLocations, so that we can warn if a
// whitelist entry goes unused and can be removed.
builder.addResource(artifactLocation);
}
}
}
TransitiveResourceMap.TransitiveResourceInfo transitiveResourceInfo = transitiveResourceMap.get(target.key);
for (ArtifactLocation artifactLocation : transitiveResourceInfo.transitiveResources) {
if (artifactLocation.isSource()) {
builder.addTransitiveResource(artifactLocation);
} else {
workspaceBuilder.generatedResourceLocations.add(artifactLocation);
if (whitelistedGenResourcePaths.contains(artifactLocation.relativePath)) {
builder.addTransitiveResource(artifactLocation);
}
}
}
for (TargetKey resourceDependency : transitiveResourceInfo.transitiveResourceTargets) {
if (!resourceDependency.equals(target.key)) {
builder.addTransitiveResourceDependency(resourceDependency);
}
}
}
}
Aggregations