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.ProjectGenerator.java

/** @return Map from the generated project to all contained targets. */
public ImmutableSetMultimap<PBXProject, PBXTarget> getGeneratedProjectToGeneratedTargets() {
    Preconditions.checkState(projectGenerated, "Must have called createXcodeProjects");
    ImmutableSetMultimap.Builder<PBXProject, PBXTarget> generatedProjectToPbxTargetsBuilder = ImmutableSetMultimap
            .builder();//from  w ww.ja  v  a 2s  .  co m
    generatedProjectToPbxTargetsBuilder.putAll(getGeneratedProject(),
            targetNodeToGeneratedProjectTargetBuilder.build().values());
    return generatedProjectToPbxTargetsBuilder.build();
}

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

private void buildWorkspaceSchemes(TargetGraph projectGraph, boolean includeProjectTests,
        boolean includeDependenciesTests, String workspaceName,
        XcodeWorkspaceConfigDescription.Arg workspaceArguments,
        ImmutableMap.Builder<String, XcodeWorkspaceConfigDescription.Arg> schemeConfigsBuilder,
        ImmutableSetMultimap.Builder<String, Optional<TargetNode<?, ?>>> schemeNameToSrcTargetNodeBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<?, ?>> buildForTestNodesBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg, ?>> testsBuilder) {
    ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg, ?>> extraTestNodesBuilder = ImmutableSetMultimap
            .builder();//from   w  ww  .ja  v a 2s  .  c o  m
    addWorkspaceScheme(projectGraph, dependenciesCache, workspaceName, workspaceArguments, schemeConfigsBuilder,
            schemeNameToSrcTargetNodeBuilder, extraTestNodesBuilder);
    addExtraWorkspaceSchemes(projectGraph, dependenciesCache, workspaceArguments.extraSchemes,
            schemeConfigsBuilder, schemeNameToSrcTargetNodeBuilder, extraTestNodesBuilder);
    ImmutableSetMultimap<String, Optional<TargetNode<?, ?>>> schemeNameToSrcTargetNode = schemeNameToSrcTargetNodeBuilder
            .build();
    ImmutableSetMultimap<String, TargetNode<AppleTestDescription.Arg, ?>> extraTestNodes = extraTestNodesBuilder
            .build();

    buildWorkspaceSchemeTests(workspaceArguments.srcTarget, projectGraph, includeProjectTests,
            includeDependenciesTests, schemeNameToSrcTargetNode, extraTestNodes, testsBuilder,
            buildForTestNodesBuilder);
}

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

private static void addExtraWorkspaceSchemes(TargetGraph projectGraph,
        ImmutableSortedMap<String, BuildTarget> extraSchemes,
        ImmutableMap.Builder<String, XcodeWorkspaceConfigDescription.Arg> schemeConfigsBuilder,
        ImmutableSetMultimap.Builder<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNodeBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg>> extraTestNodesBuilder) {
    for (Map.Entry<String, BuildTarget> extraSchemeEntry : extraSchemes.entrySet()) {
        BuildTarget extraSchemeTarget = extraSchemeEntry.getValue();
        Optional<TargetNode<?>> extraSchemeNode = projectGraph.getOptional(extraSchemeTarget);
        if (!extraSchemeNode.isPresent()
                || extraSchemeNode.get().getType() != XcodeWorkspaceConfigDescription.TYPE) {
            throw new HumanReadableException(
                    "Extra scheme target '%s' should be of type 'xcode_workspace_config'", extraSchemeTarget);
        }// w w w  .  j  av  a 2s . c  o  m
        XcodeWorkspaceConfigDescription.Arg extraSchemeArg = (XcodeWorkspaceConfigDescription.Arg) extraSchemeNode
                .get().getConstructorArg();
        String schemeName = extraSchemeEntry.getKey();
        addWorkspaceScheme(projectGraph, schemeName, extraSchemeArg, schemeConfigsBuilder,
                schemeNameToSrcTargetNodeBuilder, extraTestNodesBuilder);
    }
}

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

private static void addWorkspaceScheme(TargetGraph projectGraph, AppleDependenciesCache dependenciesCache,
        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,/*from w  w  w  .j a  va2s.  c  om*/
                        Iterables
                                .transform(
                                        AppleBuildRules.getSchemeBuildableTargetNodes(projectGraph,
                                                Optional.of(dependenciesCache),
                                                projectGraph
                                                        .get(schemeArguments.srcTarget.get().getBuildTarget())),
                                        Optional::of));
    } else {
        schemeNameToSrcTargetNodeBuilder.put(
                XcodeWorkspaceConfigDescription.getWorkspaceNameFromArg(schemeArguments), Optional.empty());
    }

    for (BuildTarget extraTarget : schemeArguments.extraTargets) {
        schemeNameToSrcTargetNodeBuilder.putAll(schemeName,
                Iterables.transform(AppleBuildRules.getSchemeBuildableTargetNodes(projectGraph,
                        Optional.of(dependenciesCache),
                        Preconditions.checkNotNull(projectGraph.get(extraTarget))), Optional::of));
    }

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

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

private static void addExtraWorkspaceSchemes(TargetGraph projectGraph, AppleDependenciesCache dependenciesCache,
        ImmutableSortedMap<String, BuildTarget> extraSchemes,
        ImmutableMap.Builder<String, XcodeWorkspaceConfigDescription.Arg> schemeConfigsBuilder,
        ImmutableSetMultimap.Builder<String, Optional<TargetNode<?, ?>>> schemeNameToSrcTargetNodeBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg, ?>> extraTestNodesBuilder) {
    for (Map.Entry<String, BuildTarget> extraSchemeEntry : extraSchemes.entrySet()) {
        BuildTarget extraSchemeTarget = extraSchemeEntry.getValue();
        Optional<TargetNode<?, ?>> extraSchemeNode = projectGraph.getOptional(extraSchemeTarget);
        if (!extraSchemeNode.isPresent()
                || !(extraSchemeNode.get().getDescription() instanceof XcodeWorkspaceConfigDescription)) {
            throw new HumanReadableException(
                    "Extra scheme target '%s' should be of type 'xcode_workspace_config'", extraSchemeTarget);
        }/* w w  w .  ja  va2  s  . c  o  m*/
        XcodeWorkspaceConfigDescription.Arg extraSchemeArg = (XcodeWorkspaceConfigDescription.Arg) extraSchemeNode
                .get().getConstructorArg();
        String schemeName = extraSchemeEntry.getKey();
        addWorkspaceScheme(projectGraph, dependenciesCache, schemeName, extraSchemeArg, schemeConfigsBuilder,
                schemeNameToSrcTargetNodeBuilder, extraTestNodesBuilder);
    }
}

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

private void generateCombinedProject(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 {
    LOG.debug("Generating a combined project");
    ProjectGenerator generator = new ProjectGenerator(xcodeDescriptions, projectGraph, dependenciesCache,
            projGenerationStateCache, targetsInRequiredProjects, rootCell, outputDirectory.getParent(),
            workspaceName, buildFileName, projectGeneratorOptions, ruleKeyConfiguration, true,
            workspaceArguments.getSrcTarget(), targetsInRequiredProjects, focusModules, defaultCxxPlatform,
            appleCxxFlavors, graphBuilderForNode, buckEventBus, halideBuckConfig, cxxBuckConfig, appleConfig,
            swiftBuckConfig, sharedLibraryToBundle);
    combinedProjectGenerator = Optional.of(generator);
    generator.createXcodeProjects();/*from   w w w .ja v a2 s.  c om*/

    GenerationResult result = GenerationResult.of(generator.getProjectPath(), generator.isProjectGenerated(),
            generator.getRequiredBuildTargets(), generator.getXcconfigPaths(),
            generator.getFilesToCopyInXcode(), generator.getBuildTargetToGeneratedTargetMap(),
            generator.getGeneratedProjectToGeneratedTargets());
    workspaceGenerator.addFilePath(result.getProjectPath(), Optional.empty());
    processGenerationResult(generatedProjectToPbxTargetsBuilder, buildTargetToPbxTargetMapBuilder,
            targetToProjectPathMapBuilder, result);
}

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

private void buildWorkspaceSchemes(TargetGraph projectGraph, boolean includeProjectTests,
        boolean includeDependenciesTests, String workspaceName,
        XcodeWorkspaceConfigDescriptionArg workspaceArguments,
        ImmutableMap.Builder<String, XcodeWorkspaceConfigDescriptionArg> schemeConfigsBuilder,
        ImmutableSetMultimap.Builder<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNodeBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<?>> buildForTestNodesBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescriptionArg>> testsBuilder) {
    ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescriptionArg>> extraTestNodesBuilder = ImmutableSetMultimap
            .builder();//  www. j ava  2s  .c  o m
    addWorkspaceScheme(xcodeDescriptions, projectGraph, dependenciesCache, workspaceName, workspaceArguments,
            schemeConfigsBuilder, schemeNameToSrcTargetNodeBuilder, extraTestNodesBuilder);
    addWorkspaceExtensionSchemes(projectGraph, workspaceName, workspaceArguments, schemeConfigsBuilder,
            schemeNameToSrcTargetNodeBuilder);
    addExtraWorkspaceSchemes(xcodeDescriptions, projectGraph, dependenciesCache,
            workspaceArguments.getExtraSchemes(), schemeConfigsBuilder, schemeNameToSrcTargetNodeBuilder,
            extraTestNodesBuilder);
    ImmutableSetMultimap<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNode = schemeNameToSrcTargetNodeBuilder
            .build();
    ImmutableSetMultimap<String, TargetNode<AppleTestDescriptionArg>> extraTestNodes = extraTestNodesBuilder
            .build();

    buildWorkspaceSchemeTests(workspaceArguments.getSrcTarget(), projectGraph, includeProjectTests,
            includeDependenciesTests, schemeNameToSrcTargetNode, extraTestNodes, testsBuilder,
            buildForTestNodesBuilder);
}

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

private static void addWorkspaceScheme(XCodeDescriptions xcodeDescriptions, TargetGraph projectGraph,
        AppleDependenciesCache dependenciesCache, String schemeName,
        XcodeWorkspaceConfigDescriptionArg schemeArguments,
        ImmutableMap.Builder<String, XcodeWorkspaceConfigDescriptionArg> schemeConfigsBuilder,
        ImmutableSetMultimap.Builder<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNodeBuilder,
        ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescriptionArg>> extraTestNodesBuilder) {
    LOG.debug("Adding scheme %s", schemeName);
    schemeConfigsBuilder.put(schemeName, schemeArguments);
    if (schemeArguments.getSrcTarget().isPresent()) {
        schemeNameToSrcTargetNodeBuilder.putAll(schemeName, Iterables.transform(
                AppleBuildRules.getSchemeBuildableTargetNodes(xcodeDescriptions, projectGraph,
                        Optional.of(dependenciesCache), projectGraph.get(schemeArguments.getSrcTarget().get())),
                Optional::of));//w ww . ja  v  a 2  s  .  c om
    } else {
        schemeNameToSrcTargetNodeBuilder.put(
                XcodeWorkspaceConfigDescription.getWorkspaceNameFromArg(schemeArguments), Optional.empty());
    }

    for (BuildTarget extraTarget : schemeArguments.getExtraTargets()) {
        schemeNameToSrcTargetNodeBuilder.putAll(schemeName, Iterables.transform(
                AppleBuildRules.getSchemeBuildableTargetNodes(xcodeDescriptions, projectGraph,
                        Optional.of(dependenciesCache), Objects.requireNonNull(projectGraph.get(extraTarget))),
                Optional::of));
    }

    for (BuildTarget extraShallowTarget : schemeArguments.getExtraShallowTargets()) {
        schemeNameToSrcTargetNodeBuilder.put(schemeName, Optional.of(projectGraph.get(extraShallowTarget)));
    }

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

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

/**
 * Groups the {@linkplain #isTaxItem tax items} (found in a given invoice)
 * by the identifier of their {@linkplain InvoiceItem#getLinkedItemId
 * related} taxable? items.//from   w  w  w.  j  a v  a 2  s. c o  m
 *
 * @param invoice
 *            An invoice.
 * @return An immutable multi-map of the tax items for the given invoice,
 *         grouped by the identifier of their related (taxed) item. Never
 *         {@code null}, and guaranteed not having any {@code null}
 *         elements.
 */
private SetMultimap<UUID, InvoiceItem> taxItemsGroupedByRelatedTaxedItems(Invoice invoice) {
    ImmutableSetMultimap.Builder<UUID, InvoiceItem> currentTaxItemsBuilder = builder();
    for (InvoiceItem item : invoice.getInvoiceItems()) {
        if (isTaxItem(item)) {
            currentTaxItemsBuilder.put(item.getLinkedItemId(), item);
        }
    }
    return currentTaxItemsBuilder.build();
}

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

/**
 * Add a workspace scheme for each extension bundled with the source target of the workspace.
 *
 * @param projectGraph/*from www  . j  ava  2  s . c o  m*/
 * @param schemeName
 * @param schemeArguments
 * @param schemeConfigsBuilder
 * @param schemeNameToSrcTargetNodeBuilder
 */
private static void addWorkspaceExtensionSchemes(TargetGraph projectGraph, String schemeName,
        XcodeWorkspaceConfigDescriptionArg schemeArguments,
        ImmutableMap.Builder<String, XcodeWorkspaceConfigDescriptionArg> schemeConfigsBuilder,
        ImmutableSetMultimap.Builder<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNodeBuilder) {
    if (!schemeArguments.getSrcTarget().isPresent()) {
        return;
    }

    LOG.debug("Potentially adding extension schemes for %s", schemeName);

    BuildTarget sourceBuildTarget = schemeArguments.getSrcTarget().get();
    TargetNode<?> sourceTargetNode = projectGraph.get(sourceBuildTarget);
    Set<BuildTarget> sourceTargetBuildDeps = sourceTargetNode.getBuildDeps();

    // Filter all of the source target's deps to find the bundled extensions that get an implicit
    // scheme.
    ImmutableSet<BuildTarget> implicitSchemeBuildTargets = sourceTargetBuildDeps.stream()
            .filter(t -> shouldIncludeImplicitExtensionSchemeForTargetNode(projectGraph.get(t)))
            .collect(ImmutableSet.toImmutableSet());

    // Create scheme for each bundled extension to allow Xcode to automatically begin debugging them
    // when this scheme it selected.
    implicitSchemeBuildTargets.forEach((buildTarget -> {
        String extensionSchemeName = schemeName + "+" + buildTarget.getShortName();
        TargetNode<?> targetNode = projectGraph.get(buildTarget);

        schemeConfigsBuilder.put(extensionSchemeName, createImplicitExtensionWorkspaceArgs(sourceBuildTarget));

        schemeNameToSrcTargetNodeBuilder.put(extensionSchemeName, Optional.of(sourceTargetNode));
        schemeNameToSrcTargetNodeBuilder.put(extensionSchemeName, Optional.of(targetNode));
    }));
}