Example usage for com.google.common.collect ImmutableSortedMap.Builder putAll

List of usage examples for com.google.common.collect ImmutableSortedMap.Builder putAll

Introduction

In this page you can find the example usage for com.google.common.collect ImmutableSortedMap.Builder putAll.

Prototype

void putAll(Map<? extends K, ? extends V> m);

Source Link

Document

Copies all of the mappings from the specified map to this map (optional operation).

Usage

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();
    }
}