List of usage examples for com.google.common.collect ImmutableSortedMap.Builder putAll
void putAll(Map<? extends K, ? extends V> m);
From source file:com.facebook.buck.file.downloader.impl.DownloadConfig.java
public ImmutableMap<String, String> getAllMavenRepos() { ImmutableSortedMap.Builder<String, String> repos = ImmutableSortedMap.naturalOrder(); repos.putAll(delegate.getEntriesForSection("maven_repositories")); Optional<String> defaultRepo = getMavenRepo(); if (defaultRepo.isPresent()) { repos.put(defaultRepo.get(), defaultRepo.get()); }/*from w w w. j a v a 2 s . com*/ return repos.build(); }
From source file:com.facebook.buck.features.rust.RustCompileUtils.java
/** * Collect all the shared libraries generated by {@link RustLinkable}s found by transitively * traversing all unbroken dependency chains of {@link * com.facebook.buck.features.rust.RustLinkable} objects found via the passed in {@link BuildRule} * roots./*from w ww.j a va 2 s .c om*/ * * @return a mapping of library name to the library {@link SourcePath}. */ public static Map<String, SourcePath> getTransitiveRustSharedLibraries(RustPlatform rustPlatform, Iterable<? extends BuildRule> inputs, boolean forceRlib) { ImmutableSortedMap.Builder<String, SourcePath> libs = ImmutableSortedMap.naturalOrder(); new AbstractBreadthFirstTraversal<BuildRule>(inputs) { @Override public Iterable<BuildRule> visit(BuildRule rule) { Iterable<BuildRule> deps = ImmutableSet.of(); if (rule instanceof RustLinkable) { RustLinkable rustLinkable = (RustLinkable) rule; if (!rustLinkable.isProcMacro()) { deps = rustLinkable.getRustLinakbleDeps(rustPlatform); if (!forceRlib && rustLinkable.getPreferredLinkage() != NativeLinkable.Linkage.STATIC) { libs.putAll(rustLinkable.getRustSharedLibraries(rustPlatform)); } } } return deps; } }.start(); return libs.build(); }
From source file:com.facebook.buck.core.toolchain.tool.impl.CommandTool.java
@Override public ImmutableSortedMap<String, String> getEnvironment(SourcePathResolver resolver) { ImmutableSortedMap.Builder<String, String> env = ImmutableSortedMap.naturalOrder(); if (baseTool.isPresent()) { env.putAll(baseTool.get().getEnvironment(resolver)); }/*from w ww . j ava2s . co m*/ env.putAll(Arg.stringify(environment, resolver)); return env.build(); }
From source file:com.facebook.buck.thrift.ThriftCxxEnhancer.java
@Override public BuildRule createBuildRule(TargetGraph targetGraph, BuildRuleParams params, BuildRuleResolver resolver, ThriftConstructorArg args, ImmutableMap<String, ThriftSource> sources, ImmutableSortedSet<BuildRule> deps) throws NoSuchBuildTargetException { SourcePathResolver pathResolver = new SourcePathResolver(new SourcePathRuleFinder(resolver)); // Grab all the sources and headers generated from the passed in thrift sources. CxxHeadersAndSources spec = getThriftHeaderSourceSpec(params, args, sources); // Add all the passed in language-specific thrift deps, and any C/C++ specific deps // passed in via the constructor arg. ImmutableSortedSet<BuildRule> allDeps = ImmutableSortedSet.<BuildRule>naturalOrder().addAll(deps) .addAll(resolver.getAllRules((cpp2 ? args.cpp2Deps : args.cppDeps))).build(); // Create language specific build params by using the deps we formed above. BuildRuleParams langParams = params.copyWithDeps(Suppliers.ofInstance(ImmutableSortedSet.of()), Suppliers.ofInstance(allDeps)); // Merge the thrift generated headers with the ones passed in via the description. ImmutableSortedMap.Builder<String, SourcePath> headersBuilder = ImmutableSortedMap.naturalOrder(); headersBuilder.putAll(spec.getHeaders()); if (args.cppExportedHeaders.getNamedSources().isPresent()) { headersBuilder.putAll(args.cppExportedHeaders.getNamedSources().get()); } else {/*from w w w. j av a 2 s. co m*/ headersBuilder.putAll(pathResolver.getSourcePathNames(params.getBuildTarget(), "cpp_headers", args.cppExportedHeaders.getUnnamedSources().get())); } ImmutableSortedMap<String, SourcePath> headers = headersBuilder.build(); // Merge the thrift generated sources with the ones passed in via the description. ImmutableSortedMap.Builder<String, SourceWithFlags> srcsBuilder = ImmutableSortedMap.naturalOrder(); srcsBuilder.putAll(spec.getSources()); if (args.cppSrcs.getNamedSources().isPresent()) { srcsBuilder.putAll(args.cppSrcs.getNamedSources().get()); } else { for (SourceWithFlags sourceWithFlags : args.cppSrcs.getUnnamedSources().get()) { srcsBuilder.put( pathResolver.getSourcePathName(params.getBuildTarget(), sourceWithFlags.getSourcePath()), sourceWithFlags); } } ImmutableSortedMap<String, SourceWithFlags> srcs = srcsBuilder.build(); // Construct the C/C++ library description argument to pass to the CxxLibraryDescription.Arg langArgs = CxxLibraryDescription.createEmptyConstructorArg(); langArgs.headerNamespace = args.cppHeaderNamespace; langArgs.srcs = ImmutableSortedSet.copyOf(srcs.values()); langArgs.exportedHeaders = SourceList.ofNamedSources(headers); langArgs.canBeAsset = Optional.empty(); langArgs.compilerFlags = cpp2 ? args.cpp2CompilerFlags : args.cppCompilerFlags; // Since thrift generated C/C++ code uses lots of templates, just use exported deps throughout. langArgs.exportedDeps = FluentIterable.from(allDeps).transform(HasBuildTarget::getBuildTarget) .toSortedSet(Ordering.natural()); return cxxLibraryDescription.createBuildRule(targetGraph, langParams, resolver, langArgs); }
From source file:com.facebook.buck.android.NativeLibraryMergeEnhancer.java
@SuppressWarnings("PMD.PrematureDeclaration") static NativeLibraryMergeEnhancementResult enhance(CxxBuckConfig cxxBuckConfig, BuildRuleResolver ruleResolver, SourcePathResolver pathResolver, SourcePathRuleFinder ruleFinder, BuildRuleParams buildRuleParams, ImmutableMap<NdkCxxPlatforms.TargetCpuType, NdkCxxPlatform> nativePlatforms, Map<String, List<Pattern>> mergeMap, Optional<BuildTarget> nativeLibraryMergeGlue, ImmutableMultimap<APKModule, NativeLinkable> linkables, ImmutableMultimap<APKModule, NativeLinkable> linkablesAssets) throws NoSuchBuildTargetException { NativeLibraryMergeEnhancer.ruleFinder = ruleFinder; NativeLibraryMergeEnhancementResult.Builder builder = NativeLibraryMergeEnhancementResult.builder(); ImmutableSet<APKModule> modules = ImmutableSet.<APKModule>builder().addAll(linkables.keySet()) .addAll(linkablesAssets.keySet()).build(); ImmutableSortedMap.Builder<String, String> sonameMapBuilder = ImmutableSortedMap.naturalOrder(); for (APKModule module : modules) { // Sort by build target here to ensure consistent behavior. Iterable<NativeLinkable> allLinkables = FluentIterable .from(Iterables.concat(linkables.get(module), linkablesAssets.get(module))) .toSortedList(HasBuildTarget.BUILD_TARGET_COMPARATOR); final ImmutableSet<NativeLinkable> linkableAssetSet = ImmutableSet.copyOf(linkablesAssets.get(module)); Map<NativeLinkable, MergedNativeLibraryConstituents> linkableMembership = makeConstituentMap( buildRuleParams, mergeMap, allLinkables, linkableAssetSet); sonameMapBuilder.putAll(makeSonameMap( // sonames can *theoretically* differ per-platform, but right now they don't on Android, // so just pick the first platform and use that to get all the sonames. nativePlatforms.values().iterator().next().getCxxPlatform(), linkableMembership)); Iterable<MergedNativeLibraryConstituents> orderedConstituents = getOrderedMergedConstituents( buildRuleParams, linkableMembership); Optional<NativeLinkable> glueLinkable = Optional.empty(); if (nativeLibraryMergeGlue.isPresent()) { BuildRule rule = ruleResolver.getRule(nativeLibraryMergeGlue.get()); if (!(rule instanceof NativeLinkable)) { throw new RuntimeException("Native library merge glue " + rule.getBuildTarget() + " for application " + buildRuleParams.getBuildTarget() + " is not linkable."); }//from w w w . ja v a 2s . co m glueLinkable = Optional.of(((NativeLinkable) rule)); } Set<MergedLibNativeLinkable> mergedLinkables = createLinkables(cxxBuckConfig, ruleResolver, pathResolver, buildRuleParams, glueLinkable, orderedConstituents); for (MergedLibNativeLinkable linkable : mergedLinkables) { if (Collections.disjoint(linkable.constituents.getLinkables(), linkableAssetSet)) { builder.putMergedLinkables(module, linkable); } else if (linkableAssetSet.containsAll(linkable.constituents.getLinkables())) { builder.putMergedLinkablesAssets(module, linkable); } } } builder.setSonameMapping(sonameMapBuilder.build()); return builder.build(); }
From source file:org.onosproject.onosjar.ProjectJavadocDescription.java
@Override public <A extends Arg> BuildRule createBuildRule(TargetGraph targetGraph, BuildRuleParams params, BuildRuleResolver resolver, A args) throws NoSuchBuildTargetException { ImmutableSet.Builder<SourcePath> srcs = ImmutableSet.builder(); ImmutableSet.Builder<BuildRule> deps = ImmutableSet.builder(); ImmutableSortedMap.Builder<SourcePath, Path> docfiles = ImmutableSortedMap.naturalOrder(); for (BuildTarget dep : args.deps) { BuildRule rule = resolver.requireRule(dep.withFlavors(JavaLibrary.JAVADOC_JAR)); if (rule instanceof JavadocJar) { JavadocJar jarRule = (JavadocJar) rule; srcs.addAll(jarRule.getSources()); deps.addAll(jarRule.getDeps()); docfiles.putAll(jarRule.getDocFiles()); } else {/*from ww w .j a v a 2s . c o m*/ throw new RuntimeException("rule is not a javalib"); //FIXME } } BuildRuleParams newParams = params.copyWithDeps( Suppliers.ofInstance(FluentIterable.from(deps.build()).toSortedSet(Ordering.<BuildRule>natural())), Suppliers.ofInstance(ImmutableSortedSet.<BuildRule>of())); SourcePathResolver sourceResolver = new SourcePathResolver(resolver); ImmutableList.Builder<SourcePath> auxSources = ImmutableList.builder(); JavadocJar.JavadocArgs.Builder javadocArgs = JavadocJar.JavadocArgs.builder() .addArg("-windowtitle", args.projectTitle).addArg("-doctitle", args.projectTitle) .addArg("-link", "http://docs.oracle.com/javase/8/docs/api") .addArg("-tag", "onos.rsModel:a:\"onos model\""); //FIXME from buckconfig + rule if (args.groups.isPresent()) { for (Pair<String, ImmutableList<String>> pair : args.groups.get()) { javadocArgs.addArg("-group", pair.getFirst(), pair.getSecond()); } } if (args.excludePackages.isPresent() && !args.excludePackages.get().isEmpty()) { javadocArgs.addArg("-exclude", args.excludePackages.get()); } if (args.overview.isPresent()) { javadocArgs.addArg("-overview", sourceResolver.getAbsolutePath(args.overview.get()).toString()); } if (args.javadocFiles.isPresent()) { for (SourcePath path : args.javadocFiles.get()) { docfiles.put(path, JavadocJar.getDocfileWithPath(sourceResolver, path, args.javadocFilesRoot.orNull())); } } JavadocJar javadocJar = new JavadocJar(newParams, sourceResolver, ImmutableSortedSet.copyOf(srcs.build()), docfiles.build(), javadocArgs.build(), /* mavenCoords */ Optional.absent()); return javadocJar; }
From source file:org.apache.calcite.jdbc.CalciteSchema.java
/** Returns a collection of sub-schemas, both explicit (defined using * {@link #add(String, org.apache.calcite.schema.Schema)}) and implicit * (defined using {@link org.apache.calcite.schema.Schema#getSubSchemaNames()} * and {@link Schema#getSubSchema(String)}). */ public final NavigableMap<String, CalciteSchema> getSubSchemaMap() { // Build a map of implicit sub-schemas first, then explicit sub-schemas. // If there are implicit and explicit with the same name, explicit wins. final ImmutableSortedMap.Builder<String, CalciteSchema> builder = new ImmutableSortedMap.Builder<>( NameSet.COMPARATOR);//from w w w.j a v a 2 s. c om builder.putAll(subSchemaMap.map()); addImplicitSubSchemaToBuilder(builder); return Compatible.INSTANCE.navigableMap(builder.build()); }
From source file:kr.co.bitnine.octopus.engine.calcite.CalciteSchema.java
/** * Returns a collection of sub-schemas, both explicit (defined using * {@link #add(String, org.apache.calcite.schema.Schema)}) and implicit * (defined using {@link org.apache.calcite.schema.Schema#getSubSchemaNames()} * and {@link Schema#getSubSchema(String)}). *//*from ww w . j av a 2s. co m*/ public final NavigableMap<String, CalciteSchema> getSubSchemaMap() { // Build a map of implicit sub-schemas first, then explicit sub-schemas. // If there are implicit and explicit with the same name, explicit wins. final ImmutableSortedMap.Builder<String, CalciteSchema> builder = new ImmutableSortedMap.Builder<>( COMPARATOR); builder.putAll(subSchemaMap); addImplicitSubSchemaToBuilder(builder); return Compatible.INSTANCE.navigableMap(builder.build()); }
From source file:google.registry.tools.CreateOrUpdateTldCommand.java
@Override protected final void init() throws Exception { assertAllowedEnvironment();/*from w w w . ja v a 2s. co m*/ initTldCommand(); String duplicates = Joiner.on(", ").join(findDuplicates(mainParameters)); checkArgument(duplicates.isEmpty(), "Duplicate arguments found: \"%s\"", duplicates); Set<String> tlds = ImmutableSet.copyOf(mainParameters); checkArgument(roidSuffix == null || tlds.size() == 1, "Can't update roid suffixes on multiple TLDs simultaneously"); for (String tld : tlds) { checkArgument(tld.equals(canonicalizeDomainName(tld))); checkArgument(!CharMatcher.javaDigit().matches(tld.charAt(0)), "TLDs cannot begin with a number."); Registry oldRegistry = getOldRegistry(tld); if (roidSuffix != null) { checkArgument( !isRoidSuffixUsed(roidSuffix) || (oldRegistry != null && roidSuffix.equals(oldRegistry.getRoidSuffix())), "The roid suffix %s is already in use", roidSuffix); } // TODO(b/26901539): Add a flag to set the pricing engine once we have more than one option. Registry.Builder builder = oldRegistry == null ? new Registry.Builder().setTldStr(tld) .setPremiumPricingEngine(StaticPremiumListPricingEngine.NAME) : oldRegistry.asBuilder(); if (escrow != null) { builder.setEscrowEnabled(escrow); } if (dns != null) { builder.setDnsPaused(!dns); } Optional<Map.Entry<DateTime, TldState>> tldStateTransitionToAdd = getTldStateTransitionToAdd(); if (!tldStateTransitions.isEmpty()) { builder.setTldStateTransitions(tldStateTransitions); } else if (tldStateTransitionToAdd.isPresent()) { ImmutableSortedMap.Builder<DateTime, TldState> newTldStateTransitions = ImmutableSortedMap .naturalOrder(); if (oldRegistry != null) { checkArgument( oldRegistry.getTldStateTransitions().lastKey() .isBefore(tldStateTransitionToAdd.get().getKey()), "Cannot add %s at %s when there is a later transition already scheduled", tldStateTransitionToAdd.get().getValue(), tldStateTransitionToAdd.get().getKey()); newTldStateTransitions.putAll(oldRegistry.getTldStateTransitions()); } builder.setTldStateTransitions( newTldStateTransitions.put(getTldStateTransitionToAdd().get()).build()); } if (!renewBillingCostTransitions.isEmpty()) { // TODO(b/20764952): need invoicing support for multiple renew billing costs. if (renewBillingCostTransitions.size() > 1) { System.err.println("----------------------\n" + "WARNING: Do not set multiple renew cost transitions until b/20764952 is fixed.\n" + "----------------------\n"); } builder.setRenewBillingCostTransitions(renewBillingCostTransitions); } if (!eapFeeSchedule.isEmpty()) { builder.setEapFeeSchedule(eapFeeSchedule); } if (addGracePeriod != null) { builder.setAddGracePeriodLength(addGracePeriod); } if (redemptionGracePeriod != null) { builder.setRedemptionGracePeriodLength(redemptionGracePeriod); } if (pendingDeleteLength != null) { builder.setPendingDeleteLength(pendingDeleteLength); } if (automaticTransferLength != null) { builder.setAutomaticTransferLength(automaticTransferLength); } if (driveFolderId != null) { builder.setDriveFolderId(driveFolderId.orNull()); } if (createBillingCost != null) { builder.setCreateBillingCost(createBillingCost); } if (restoreBillingCost != null) { builder.setRestoreBillingCost(restoreBillingCost); } if (roidSuffix != null) { builder.setRoidSuffix(roidSuffix); } if (serverStatusChangeCost != null) { builder.setServerStatusChangeBillingCost(serverStatusChangeCost); } if (tldType != null) { builder.setTldType(tldType); } if (premiumPriceAckRequired != null) { builder.setPremiumPriceAckRequired(premiumPriceAckRequired); } if (lordnUsername != null) { builder.setLordnUsername(lordnUsername.orNull()); } if (claimsPeriodEnd != null) { builder.setClaimsPeriodEnd(claimsPeriodEnd); } if (premiumListName != null) { if (premiumListName.isPresent()) { Optional<PremiumList> premiumList = PremiumList.get(premiumListName.get()); checkArgument(premiumList.isPresent(), String.format("The premium list '%s' doesn't exist", premiumListName.get())); builder.setPremiumList(premiumList.get()); } else { builder.setPremiumList(null); } } if (dnsWriter != null) { if (dnsWriter.isPresent()) { checkArgument(dnsWriterNames.contains(dnsWriter.get()), "The DNS writer '%s' doesn't exist", dnsWriter.get()); builder.setDnsWriter(dnsWriter.get()); } } if (lrpPeriod != null) { builder.setLrpPeriod(lrpPeriod.orNull()); } ImmutableSet<String> newReservedListNames = getReservedLists(oldRegistry); checkReservedListValidityForTld(tld, newReservedListNames); builder.setReservedListsByName(newReservedListNames); builder.setAllowedRegistrantContactIds(getAllowedRegistrants(oldRegistry)); builder.setAllowedFullyQualifiedHostNames(getAllowedNameservers(oldRegistry)); // Update the Registry object. setCommandSpecificProperties(builder); stageEntityChange(oldRegistry, builder.build()); } }
From source file:com.palantir.atlasdb.transaction.impl.CachingTransaction.java
@Override public SortedMap<byte[], RowResult<byte[]>> getRows(String tableName, Iterable<byte[]> rows, ColumnSelection columnSelection) { if (Iterables.isEmpty(rows)) { log.info("Attempted getRows on '{}' table and {} with empty rows argument", tableName, columnSelection); return AbstractTransaction.EMPTY_SORTED_ROWS; }/*from www .j a va2 s . com*/ ConcurrentMap<Cell, byte[]> colCache = getColCacheForTable(tableName); if (columnSelection.allColumnsSelected()) { SortedMap<byte[], RowResult<byte[]>> loaded = super.getRows(tableName, rows, columnSelection); cacheLoadedRows(colCache, loaded.values()); return loaded; } else { Set<byte[]> toLoad = Sets.newHashSet(); ImmutableSortedMap.Builder<byte[], RowResult<byte[]>> inCache = ImmutableSortedMap .orderedBy(UnsignedBytes.lexicographicalComparator()); for (byte[] row : rows) { ImmutableSortedMap.Builder<byte[], byte[]> matches = ImmutableSortedMap .orderedBy(UnsignedBytes.lexicographicalComparator()); boolean nonEmpty = false; boolean shouldLoad = false; for (byte[] col : columnSelection.getSelectedColumns()) { byte[] val = colCache.get(Cell.create(row, col)); if (val == null) { shouldLoad = true; break; } else if (val.length != 0) { matches.put(col, val); nonEmpty = true; } } if (shouldLoad) { toLoad.add(row); } else if (nonEmpty) { inCache.put(row, RowResult.create(row, matches.build())); } } SortedMap<byte[], RowResult<byte[]>> results = super.getRows(tableName, toLoad, columnSelection); cacheLoadedRows(colCache, results.values()); inCache.putAll(results); return inCache.build(); } }