Example usage for com.google.common.collect ImmutableSetMultimap builder

List of usage examples for com.google.common.collect ImmutableSetMultimap builder

Introduction

In this page you can find the example usage for com.google.common.collect ImmutableSetMultimap builder.

Prototype

public static <K, V> Builder<K, V> builder() 

Source Link

Document

Returns a new Builder .

Usage

From source file:com.facebook.buck.features.apple.project.WorkspaceAndProjectGenerator.java

private void generateProjects(Map<Path, ProjectGenerator> projectGenerators,
        ListeningExecutorService listeningExecutorService, String workspaceName, Path outputDirectory,
        WorkspaceGenerator workspaceGenerator, ImmutableSet<BuildTarget> targetsInRequiredProjects,
        ImmutableSetMultimap.Builder<PBXProject, PBXTarget> generatedProjectToPbxTargetsBuilder,
        ImmutableMap.Builder<BuildTarget, PBXTarget> buildTargetToPbxTargetMapBuilder,
        ImmutableMap.Builder<PBXTarget, Path> targetToProjectPathMapBuilder)
        throws IOException, InterruptedException {
    if (combinedProject) {
        generateCombinedProject(workspaceName, outputDirectory, workspaceGenerator, targetsInRequiredProjects,
                generatedProjectToPbxTargetsBuilder, buildTargetToPbxTargetMapBuilder,
                targetToProjectPathMapBuilder);
    } else {/*  w  ww. j  a  va2 s .  c om*/
        generateProject(projectGenerators, listeningExecutorService, workspaceGenerator,
                targetsInRequiredProjects, generatedProjectToPbxTargetsBuilder,
                buildTargetToPbxTargetMapBuilder, targetToProjectPathMapBuilder);
    }
}

From source file:com.google.devtools.build.lib.rules.objc.ProtobufSupport.java

private ImmutableSetMultimap<ImmutableSet<Artifact>, Artifact> getInputsToOutputsMap() {
    Iterable<ObjcProtoProvider> objcProtoProviders = getObjcProtoProviders();
    Iterable<ProtoSourcesProvider> protoProviders = getProtoSourcesProviders();

    ImmutableList.Builder<NestedSet<Artifact>> protoSets = new ImmutableList.Builder<NestedSet<Artifact>>();

    // Traverse all the dependencies ObjcProtoProviders and ProtoSourcesProviders to aggregate
    // all the transitive groups of proto.
    for (ObjcProtoProvider objcProtoProvider : objcProtoProviders) {
        protoSets.addAll(objcProtoProvider.getProtoGroups());
    }/*from  w  ww.  java  2s.c om*/
    for (ProtoSourcesProvider protoProvider : protoProviders) {
        protoSets.add(protoProvider.getTransitiveProtoSources());
    }

    HashMap<Artifact, Set<Artifact>> protoToGroupMap = new HashMap<>();

    // For each proto in each proto group, store the smallest group in which it is contained. This
    // group will be considered the smallest input group with which the proto can be generated.
    for (NestedSet<Artifact> nestedProtoSet : protoSets.build()) {
        ImmutableSet<Artifact> protoSet = ImmutableSet.copyOf(nestedProtoSet.toSet());
        for (Artifact proto : protoSet) {
            // If the proto is well known, don't store it as we don't need to generate it; it comes
            // generated with the runtime library.
            if (attributes.isProtoWellKnown(proto)) {
                continue;
            }
            if (!protoToGroupMap.containsKey(proto)) {
                protoToGroupMap.put(proto, protoSet);
            } else {
                protoToGroupMap.put(proto, Sets.intersection(protoSet, protoToGroupMap.get(proto)));
            }
        }
    }

    // Now that we have the smallest proto inputs groups for each proto to be generated, we reverse
    // that map into a multimap to take advantage of the fact that multiple protos can be generated
    // with the same inputs, to avoid having multiple generation actions with the same inputs and
    // different ouputs. This only applies for the generation actions, as the compilation actions
    // compile one generated file at a time.
    // It's OK to use ImmutableSet<Artifact> as the key, since Artifact caches it's hashCode, and
    // ImmutableSet calculates it's hashCode in O(n).
    ImmutableSetMultimap.Builder<ImmutableSet<Artifact>, Artifact> inputsToOutputsMapBuilder = ImmutableSetMultimap
            .builder();

    for (Artifact proto : protoToGroupMap.keySet()) {
        inputsToOutputsMapBuilder.put(ImmutableSet.copyOf(protoToGroupMap.get(proto)), proto);
    }
    return inputsToOutputsMapBuilder.build();
}

From source file:com.publictransitanalytics.scoregenerator.environment.StoredGrid.java

private static ImmutableSetMultimap<GridPoint, Sector> dispositionSectors(
        final NavigableSet<GeoLatitude> latitudeGridlines,
        final ImmutableSetMultimap<GeoLatitude, GridPoint> latitudePointMap,
        final NavigableSet<GeoLongitude> longitudeGridlines,
        final ImmutableSetMultimap<GeoLongitude, GridPoint> longitudePointMap,
        TreeBasedTable<GeoLatitude, GeoLongitude, Sector> sectorTable) throws InterruptedException {
    final ImmutableSetMultimap.Builder<GridPoint, Sector> pointSectorMapBuilder = ImmutableSetMultimap
            .builder();/*from  w w w.  j a  v  a 2s .  com*/

    final Iterator<GeoLongitude> longitudeIterator = longitudeGridlines.iterator();

    final GeoLongitude firstLongitude = longitudeIterator.next();
    GeoLongitude longitude = firstLongitude;
    TreeMultimap<GeoLatitude, GridPoint> latitudeSortedPoints = getLatitudeSortedPointsForLongitude(longitude,
            longitudePointMap);

    while (longitudeIterator.hasNext()) {
        final GeoLongitude nextLongitude = longitudeIterator.next();
        final TreeMultimap<GeoLatitude, GridPoint> nextLatitudeSortedPoints = getLatitudeSortedPointsForLongitude(
                nextLongitude, longitudePointMap);

        final Iterator<GeoLatitude> latitudeIterator = latitudeGridlines.iterator();

        final GeoLatitude firstLatitude = latitudeIterator.next();
        GeoLatitude latitude = firstLatitude;
        TreeMultimap<GeoLongitude, GridPoint> longitudeSortedPoints = getLongitudeSortedPointsForLatitude(
                latitude, latitudePointMap);

        while (latitudeIterator.hasNext()) {
            final GeoLatitude nextLatitude = latitudeIterator.next();
            final TreeMultimap<GeoLongitude, GridPoint> nextLongitudeSortedPoints = getLongitudeSortedPointsForLatitude(
                    nextLatitude, latitudePointMap);

            final Sector sector = sectorTable.get(latitude, longitude);

            if (sector != null) {

                final Set<GridPoint> filteredLatitudePoints = latitudeSortedPoints.asMap()
                        .subMap(latitude, true, nextLatitude, true).values().stream()
                        .flatMap(Collection::stream).collect(Collectors.toSet());
                for (final GridPoint point : filteredLatitudePoints) {
                    pointSectorMapBuilder.put(point, sector);
                }

                final Set<GridPoint> filteredNextLatitudePoints = nextLatitudeSortedPoints.asMap()
                        .subMap(latitude, true, nextLatitude, true).values().stream()
                        .flatMap(Collection::stream).collect(Collectors.toSet());
                for (final GridPoint point : filteredNextLatitudePoints) {
                    pointSectorMapBuilder.put(point, sector);
                }

                final Set<GridPoint> filteredLongitudePoints = longitudeSortedPoints.asMap()
                        .subMap(longitude, true, nextLongitude, true).values().stream()
                        .flatMap(Collection::stream).collect(Collectors.toSet());
                for (final GridPoint point : filteredLongitudePoints) {
                    pointSectorMapBuilder.put(point, sector);
                }

                final Set<GridPoint> filteredNextLongitudePoints = nextLongitudeSortedPoints.asMap()
                        .subMap(longitude, true, nextLongitude, true).values().stream()
                        .flatMap(Collection::stream).collect(Collectors.toSet());
                for (final GridPoint point : filteredNextLongitudePoints) {
                    pointSectorMapBuilder.put(point, sector);
                }

            }

            latitude = nextLatitude;
            longitudeSortedPoints = nextLongitudeSortedPoints;
        }

        longitude = nextLongitude;
        latitudeSortedPoints = nextLatitudeSortedPoints;
    }

    return pointSectorMapBuilder.build();
}

From source file:com.facebook.buck.features.apple.project.WorkspaceAndProjectGenerator.java

private void generateProject(Map<Path, ProjectGenerator> projectGenerators,
        ListeningExecutorService listeningExecutorService, WorkspaceGenerator workspaceGenerator,
        ImmutableSet<BuildTarget> targetsInRequiredProjects,
        ImmutableSetMultimap.Builder<PBXProject, PBXTarget> generatedProjectToPbxTargetsBuilder,
        ImmutableMap.Builder<BuildTarget, PBXTarget> buildTargetToPbxTargetMapBuilder,
        ImmutableMap.Builder<PBXTarget, Path> targetToProjectPathMapBuilder)
        throws IOException, InterruptedException {
    ImmutableMultimap.Builder<Cell, BuildTarget> projectCellToBuildTargetsBuilder = ImmutableMultimap.builder();
    for (TargetNode<?> targetNode : projectGraph.getNodes()) {
        BuildTarget buildTarget = targetNode.getBuildTarget();
        projectCellToBuildTargetsBuilder.put(rootCell.getCell(buildTarget), buildTarget);
    }//from   www . j a  v  a  2  s  .c o  m
    ImmutableMultimap<Cell, BuildTarget> projectCellToBuildTargets = projectCellToBuildTargetsBuilder.build();
    List<ListenableFuture<GenerationResult>> projectGeneratorFutures = new ArrayList<>();
    for (Cell projectCell : projectCellToBuildTargets.keySet()) {
        ImmutableMultimap.Builder<Path, BuildTarget> projectDirectoryToBuildTargetsBuilder = ImmutableMultimap
                .builder();
        ImmutableSet<BuildTarget> cellRules = ImmutableSet.copyOf(projectCellToBuildTargets.get(projectCell));
        for (BuildTarget buildTarget : cellRules) {
            projectDirectoryToBuildTargetsBuilder.put(buildTarget.getBasePath(), buildTarget);
        }
        ImmutableMultimap<Path, BuildTarget> projectDirectoryToBuildTargets = projectDirectoryToBuildTargetsBuilder
                .build();
        Path relativeTargetCell = rootCell.getRoot().relativize(projectCell.getRoot());
        for (Path projectDirectory : projectDirectoryToBuildTargets.keySet()) {
            ImmutableSet<BuildTarget> rules = filterRulesForProjectDirectory(projectGraph,
                    ImmutableSet.copyOf(projectDirectoryToBuildTargets.get(projectDirectory)));
            if (Sets.intersection(targetsInRequiredProjects, rules).isEmpty()) {
                continue;
            }

            boolean isMainProject = workspaceArguments.getSrcTarget().isPresent()
                    && rules.contains(workspaceArguments.getSrcTarget().get());
            projectGeneratorFutures.add(listeningExecutorService.submit(() -> {
                GenerationResult result = generateProjectForDirectory(projectGenerators, projectCell,
                        projectDirectory, rules, isMainProject, targetsInRequiredProjects);
                // convert the projectPath to relative to the target cell here
                result = GenerationResult.of(relativeTargetCell.resolve(result.getProjectPath()),
                        result.isProjectGenerated(), result.getRequiredBuildTargets(),
                        result.getXcconfigPaths(), result.getFilesToCopyInXcode(),
                        result.getBuildTargetToGeneratedTargetMap(), result.getGeneratedProjectToPbxTargets());
                return result;
            }));
        }
    }

    List<GenerationResult> generationResults;
    try {
        generationResults = Futures.allAsList(projectGeneratorFutures).get();
    } catch (ExecutionException e) {
        Throwables.throwIfInstanceOf(e.getCause(), IOException.class);
        Throwables.throwIfUnchecked(e.getCause());
        throw new IllegalStateException("Unexpected exception: ", e);
    }
    for (GenerationResult result : generationResults) {
        if (!result.isProjectGenerated()) {
            continue;
        }
        workspaceGenerator.addFilePath(result.getProjectPath());
        processGenerationResult(generatedProjectToPbxTargetsBuilder, buildTargetToPbxTargetMapBuilder,
                targetToProjectPathMapBuilder, result);
    }
}

From source file:com.facebook.buck.apple.WorkspaceAndProjectGenerator.java

private static void buildWorkspaceSchemes(Optional<BuildTarget> mainTarget, TargetGraph projectGraph,
        boolean includeProjectTests, boolean includeDependenciesTests,
        ImmutableSet<TargetNode<AppleTestDescription.Arg>> groupableTests, String workspaceName,
        XcodeWorkspaceConfigDescription.Arg workspaceArguments,
        ImmutableMap.Builder<String, XcodeWorkspaceConfigDescription.Arg> schemeConfigsBuilder,
        ImmutableSetMultimap.Builder<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNodeBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<?>> buildForTestNodesBuilder,
        ImmutableMultimap.Builder<AppleTestBundleParamsKey, TargetNode<AppleTestDescription.Arg>> groupedTestsBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg>> ungroupedTestsBuilder) {
    ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg>> extraTestNodesBuilder = ImmutableSetMultimap
            .builder();/*from ww w.  ja va  2s .  com*/
    addWorkspaceScheme(projectGraph, workspaceName, workspaceArguments, schemeConfigsBuilder,
            schemeNameToSrcTargetNodeBuilder, extraTestNodesBuilder);
    addExtraWorkspaceSchemes(projectGraph, workspaceArguments.extraSchemes.get(), schemeConfigsBuilder,
            schemeNameToSrcTargetNodeBuilder, extraTestNodesBuilder);
    ImmutableSetMultimap<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNode = schemeNameToSrcTargetNodeBuilder
            .build();
    ImmutableSetMultimap<String, TargetNode<AppleTestDescription.Arg>> extraTestNodes = extraTestNodesBuilder
            .build();

    ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg>> selectedTestsBuilder = ImmutableSetMultimap
            .builder();
    buildWorkspaceSchemeTests(mainTarget, projectGraph, includeProjectTests, includeDependenciesTests,
            schemeNameToSrcTargetNode, extraTestNodes, selectedTestsBuilder, buildForTestNodesBuilder);
    ImmutableSetMultimap<String, TargetNode<AppleTestDescription.Arg>> selectedTests = selectedTestsBuilder
            .build();

    groupSchemeTests(groupableTests, selectedTests, groupedTestsBuilder, ungroupedTestsBuilder);
}

From source file:org.killbill.billing.plugin.simpletax.SimpleTaxPlugin.java

/**
 * Groups the {@linkplain CustomField custom fields} on
 * {@linkplain #INVOICE_ITEM invoice items} by the
 * {@linkplain Invoice#getId() identifier} of their related
 * {@linkplain Invoice invoices}./*from   w  w  w  .  ja v a  2s . co m*/
 *
 * @param account
 *            The account to consider
 * @param allInvoices
 *            The collection of all invoices for the given account.
 * @param tenantCtx
 *            The context in which this code is running.
 * @return A new immutable multi-map containing the custom fields on all
 *         invoice items of the given account, grouped by the identifier of
 *         their relate invoice. Never {@code null}, and guaranteed not
 *         having any {@code null} elements.
 */
private SetMultimap<UUID, CustomField> taxFieldsOfInvoices(Account account, Set<Invoice> allInvoices,
        TenantContext tenantCtx) {
    CustomFieldUserApi customFieldsService = services().getCustomFieldUserApi();
    List<CustomField> allCustomFields = customFieldsService.getCustomFieldsForAccountType(account.getId(),
            INVOICE_ITEM, tenantCtx);
    if ((allCustomFields == null) || allCustomFields.isEmpty()) {
        return ImmutableSetMultimap.of();
    }

    Map<UUID, Invoice> invoiceOfItem = newHashMap();
    for (Invoice invoice : allInvoices) {
        for (InvoiceItem item : invoice.getInvoiceItems()) {
            invoiceOfItem.put(item.getId(), invoice);
        }
    }

    ImmutableSetMultimap.Builder<UUID, CustomField> taxFieldsOfInvoice = ImmutableSetMultimap.builder();
    for (CustomField field : allCustomFields) {
        if (TAX_CODES_FIELD_NAME.equals(field.getFieldName())) {
            Invoice invoice = invoiceOfItem.get(field.getObjectId());
            taxFieldsOfInvoice.put(invoice.getId(), field);
        }
    }
    return taxFieldsOfInvoice.build();
}

From source file:com.facebook.buck.apple.WorkspaceAndProjectGenerator.java

private static void addWorkspaceScheme(TargetGraph projectGraph, String schemeName,
        XcodeWorkspaceConfigDescription.Arg schemeArguments,
        ImmutableMap.Builder<String, XcodeWorkspaceConfigDescription.Arg> schemeConfigsBuilder,
        ImmutableSetMultimap.Builder<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNodeBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg>> extraTestNodesBuilder) {
    LOG.debug("Adding scheme %s", schemeName);
    schemeConfigsBuilder.put(schemeName, schemeArguments);
    if (schemeArguments.srcTarget.isPresent()) {
        schemeNameToSrcTargetNodeBuilder
                .putAll(schemeName,//ww w .j a  va  2 s.c  o m
                        Iterables
                                .transform(
                                        AppleBuildRules.getSchemeBuildableTargetNodes(projectGraph,
                                                projectGraph
                                                        .get(schemeArguments.srcTarget.get().getBuildTarget())),
                                        Optionals.<TargetNode<?>>toOptional()));
    } else {
        schemeNameToSrcTargetNodeBuilder.put(
                XcodeWorkspaceConfigDescription.getWorkspaceNameFromArg(schemeArguments),
                Optional.<TargetNode<?>>absent());
    }

    for (BuildTarget extraTarget : schemeArguments.extraTargets.get()) {
        schemeNameToSrcTargetNodeBuilder.putAll(schemeName,
                Iterables.transform(
                        AppleBuildRules.getSchemeBuildableTargetNodes(projectGraph,
                                Preconditions.checkNotNull(projectGraph.get(extraTarget))),
                        Optionals.<TargetNode<?>>toOptional()));
    }

    extraTestNodesBuilder.putAll(schemeName,
            getExtraTestTargetNodes(projectGraph, schemeArguments.extraTests.get()));
}

From source file:com.facebook.buck.java.DefaultJavaLibraryRule.java

/**
 * Building a java_library() rule entails compiling the .java files specified in the srcs
 * attribute. They are compiled into a directory under {@link BuckConstant#BIN_DIR}.
 */// w w  w  .  jav a  2s  . c  om
@Override
public final List<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext)
        throws IOException {
    ImmutableList.Builder<Step> commands = ImmutableList.builder();
    BuildTarget buildTarget = getBuildTarget();

    JavacOptions javacOptions = this.javacOptions;
    // Only override the bootclasspath if this rule is supposed to compile Android code.
    if (getProperties().is(ANDROID)) {
        javacOptions = JavacOptions.builder(this.javacOptions)
                .setBootclasspath(context.getAndroidBootclasspathSupplier().get()).build();
    }

    // If this rule depends on AndroidResourceRules, then we need to generate the R.java files that
    // this rule needs in order to be able to compile itself.
    androidResourceDeps = UberRDotJavaUtil.getAndroidResourceDeps(this);
    boolean dependsOnAndroidResourceRules = !androidResourceDeps.isEmpty();
    if (dependsOnAndroidResourceRules) {
        UberRDotJavaUtil.createDummyRDotJavaFiles(androidResourceDeps, buildTarget, commands);
    }

    ImmutableSetMultimap<JavaLibraryRule, String> transitiveClasspathEntries = getTransitiveClasspathEntries();
    ImmutableSetMultimap<JavaLibraryRule, String> declaredClasspathEntries = getDeclaredClasspathEntries();

    // If this rule depends on AndroidResourceRules, then we need to include the compiled R.java
    // files on the classpath when compiling this rule.
    if (dependsOnAndroidResourceRules) {
        ImmutableSetMultimap.Builder<JavaLibraryRule, String> transitiveClasspathEntriesWithRDotJava = ImmutableSetMultimap
                .builder();
        transitiveClasspathEntriesWithRDotJava.putAll(transitiveClasspathEntries);

        ImmutableSetMultimap.Builder<JavaLibraryRule, String> declaredClasspathEntriesWithRDotJava = ImmutableSetMultimap
                .builder();
        declaredClasspathEntriesWithRDotJava.putAll(declaredClasspathEntries);

        ImmutableSet<String> rDotJavaClasspath = ImmutableSet
                .of(UberRDotJavaUtil.getRDotJavaBinFolder(buildTarget));

        transitiveClasspathEntriesWithRDotJava.putAll(this, rDotJavaClasspath);
        declaredClasspathEntriesWithRDotJava.putAll(this, rDotJavaClasspath);

        declaredClasspathEntries = declaredClasspathEntriesWithRDotJava.build();
        transitiveClasspathEntries = transitiveClasspathEntriesWithRDotJava.build();
    }

    // Javac requires that the root directory for generated sources already exist.
    String annotationGenFolder = javacOptions.getAnnotationProcessingData().getGeneratedSourceFolderName();
    if (annotationGenFolder != null) {
        MakeCleanDirectoryStep mkdirGeneratedSources = new MakeCleanDirectoryStep(annotationGenFolder);
        commands.add(mkdirGeneratedSources);
    }

    // Always create the output directory, even if there are no .java files to compile because there
    // might be resources that need to be copied there.
    String outputDirectory = getClassesDir(getBuildTarget());
    commands.add(new MakeCleanDirectoryStep(outputDirectory));

    Optional<JavacInMemoryStep.SuggestBuildRules> suggestBuildRule = createSuggestBuildFunction(context,
            transitiveClasspathEntries, declaredClasspathEntries, JAR_RESOLVER);

    // This adds the javac command, along with any supporting commands.
    createCommandsForJavac(outputDirectory, ImmutableSet.copyOf(transitiveClasspathEntries.values()),
            ImmutableSet.copyOf(declaredClasspathEntries.values()), javacOptions,
            context.getBuildDependencies(), suggestBuildRule, commands);

    // If there are resources, then link them to the appropriate place in the classes directory.
    addResourceCommands(context, commands, outputDirectory, context.getJavaPackageFinder());

    if (outputJar.isPresent()) {
        commands.add(new MakeCleanDirectoryStep(getOutputJarDirPath(getBuildTarget())));
        commands.add(new JarDirectoryStep(outputJar.get(), Collections.singleton(outputDirectory),
                /* mainClass */ null, /* manifestFile */ null));
    }

    Preconditions.checkNotNull(abiKeySupplier, "abiKeySupplier must be set so that getAbiKey() will "
            + "return a non-null value if this rule builds successfully.");

    addStepsToRecordAbiToDisk(commands, buildableContext);

    return commands.build();
}

From source file:com.opengamma.strata.collect.Guavate.java

/**
 * Collector used at the end of a stream to build an immutable multimap.
 * <p>/*from  w  ww . jav  a  2  s .  c  o m*/
 * A collector is used to gather data at the end of a stream operation.
 * This method returns a collector allowing streams to be gathered into
 * an {@link ImmutableSetMultimap}.
 * <p>
 * This returns a multimap by converting each stream element to a key and value.
 * Stream elements may be converted to the same key, with the values forming a multimap set.
 *
 * @param <T> the type of the stream elements
 * @param <K> the type of the keys in the result multimap
 * @param <V> the type of the values in the result multimap
 * @param keyExtractor  function to produce keys from stream elements
 * @param valueExtractor  function to produce values from stream elements
 * @return the immutable multimap collector
 */
public static <T, K, V> Collector<T, ?, ImmutableSetMultimap<K, V>> toImmutableSetMultimap(
        Function<? super T, ? extends K> keyExtractor, Function<? super T, ? extends V> valueExtractor) {

    return Collector.of(ImmutableSetMultimap.Builder<K, V>::new,
            (builder, val) -> builder.put(keyExtractor.apply(val), valueExtractor.apply(val)),
            (l, r) -> l.putAll(r.build()), ImmutableSetMultimap.Builder<K, V>::build,
            Collector.Characteristics.UNORDERED);
}

From source file:com.facebook.buck.features.apple.project.WorkspaceAndProjectGenerator.java

private void processGenerationResult(
        ImmutableSetMultimap.Builder<PBXProject, PBXTarget> generatedProjectToPbxTargetsBuilder,
        ImmutableMap.Builder<BuildTarget, PBXTarget> buildTargetToPbxTargetMapBuilder,
        ImmutableMap.Builder<PBXTarget, Path> targetToProjectPathMapBuilder, GenerationResult result) {
    requiredBuildTargetsBuilder.addAll(result.getRequiredBuildTargets());
    ImmutableSortedSet<Path> relativeXcconfigPaths = result.getXcconfigPaths().stream()
            .map((Path p) -> rootCell.getFilesystem().relativize(p))
            .collect(ImmutableSortedSet.toImmutableSortedSet(Ordering.natural()));
    xcconfigPathsBuilder.addAll(relativeXcconfigPaths);
    filesToCopyInXcodeBuilder.addAll(result.getFilesToCopyInXcode());
    buildTargetToPbxTargetMapBuilder.putAll(result.getBuildTargetToGeneratedTargetMap());
    generatedProjectToPbxTargetsBuilder.putAll(result.getGeneratedProjectToPbxTargets());
    for (PBXTarget target : result.getBuildTargetToGeneratedTargetMap().values()) {
        targetToProjectPathMapBuilder.put(target, result.getProjectPath());
    }//w w  w  .j  av a 2 s. c o  m
}