List of usage examples for com.google.common.collect ImmutableSetMultimap builder
public static <K, V> Builder<K, V> builder()
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)); })); }