Example usage for com.google.common.collect ImmutableSortedSet.Builder add

List of usage examples for com.google.common.collect ImmutableSortedSet.Builder add

Introduction

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

Prototype

boolean add(E e);

Source Link

Document

Adds the specified element to this set if it is not already present (optional operation).

Usage

From source file:com.facebook.buck.android.AndroidBinaryGraphEnhancer.java

EnhancementResult createAdditionalBuildables() {
    ImmutableSortedSet.Builder<BuildRule> enhancedDeps = ImmutableSortedSet.naturalOrder();
    enhancedDeps.addAll(originalDeps);/*from   w w  w. j a va2s .c  o m*/

    ImmutableSortedSet<BuildRule> resourceRules = getAndroidResourcesAsRules();

    BuildTarget buildTargetForFilterResources = createBuildTargetWithFlavor(RESOURCES_FILTER_FLAVOR);
    FilteredResourcesProvider filteredResourcesProvider;
    boolean needsResourceFiltering = resourceFilter.isEnabled()
            || resourceCompressionMode.isStoreStringsAsAssets();

    if (needsResourceFiltering) {
        ResourcesFilter resourcesFilter = new ResourcesFilter(buildTargetForFilterResources,
                androidResourceDepsFinder, resourceCompressionMode, resourceFilter);
        BuildRule resourcesFilterBuildRule = buildRuleAndAddToIndex(resourcesFilter,
                BuildRuleType.RESOURCES_FILTER, buildTargetForFilterResources, resourceRules);

        filteredResourcesProvider = resourcesFilter;
        enhancedDeps.add(resourcesFilterBuildRule);
        resourceRules = ImmutableSortedSet.of(resourcesFilterBuildRule);
    } else {
        filteredResourcesProvider = new IdentityResourcesProvider(androidResourceDepsFinder);
    }

    BuildTarget buildTargetForUberRDotJava = createBuildTargetWithFlavor(UBER_R_DOT_JAVA_FLAVOR);
    UberRDotJava uberRDotJava = new UberRDotJava(buildTargetForUberRDotJava, filteredResourcesProvider,
            javacOptions, androidResourceDepsFinder, shouldPreDex, shouldBuildStringSourceMap);
    BuildRule uberRDotJavaBuildRule = buildRuleAndAddToIndex(uberRDotJava, BuildRuleType.UBER_R_DOT_JAVA,
            buildTargetForUberRDotJava, resourceRules);
    enhancedDeps.add(uberRDotJavaBuildRule);

    Optional<PackageStringAssets> packageStringAssets = Optional.absent();
    if (resourceCompressionMode.isStoreStringsAsAssets()) {
        BuildTarget buildTargetForPackageStringAssets = createBuildTargetWithFlavor(
                PACKAGE_STRING_ASSETS_FLAVOR);
        packageStringAssets = Optional.of(new PackageStringAssets(buildTargetForPackageStringAssets,
                filteredResourcesProvider, uberRDotJava));
        BuildRule packageStringAssetsRule = buildRuleAndAddToIndex(packageStringAssets.get(),
                BuildRuleType.PACKAGE_STRING_ASSETS, buildTargetForPackageStringAssets,
                ImmutableSortedSet.of(uberRDotJavaBuildRule));
        enhancedDeps.add(packageStringAssetsRule);
    }

    // Create the AaptPackageResourcesBuildable.
    BuildTarget buildTargetForAapt = createBuildTargetWithFlavor(AAPT_PACKAGE_FLAVOR);
    AaptPackageResources aaptPackageResources = new AaptPackageResources(buildTargetForAapt, manifest,
            filteredResourcesProvider, androidResourceDepsFinder.getAndroidTransitiveDependencies(),
            packageType, cpuFilters);
    BuildRule aaptPackageResourcesBuildRule = buildRuleAndAddToIndex(aaptPackageResources,
            BuildRuleType.AAPT_PACKAGE, buildTargetForAapt, getAdditionalAaptDeps(resourceRules));
    enhancedDeps.add(aaptPackageResourcesBuildRule);

    Optional<PreDexMerge> preDexMerge = Optional.absent();
    if (shouldPreDex) {
        BuildRule preDexMergeRule = createPreDexMergeRule(uberRDotJava);
        preDexMerge = Optional.of((PreDexMerge) preDexMergeRule.getBuildable());
        enhancedDeps.add(preDexMergeRule);
    }

    ImmutableSortedSet<BuildRule> finalDeps;
    Optional<ComputeExopackageDepsAbi> computeExopackageDepsAbi = Optional.absent();
    if (exopackage) {
        BuildTarget buildTargetForAbiCalculation = createBuildTargetWithFlavor(CALCULATE_ABI_FLAVOR);
        computeExopackageDepsAbi = Optional
                .of(new ComputeExopackageDepsAbi(buildTargetForAbiCalculation, androidResourceDepsFinder,
                        uberRDotJava, aaptPackageResources, packageStringAssets, preDexMerge, keystore));
        BuildRule computeExopackageDepsAbiRule = buildRuleAndAddToIndex(computeExopackageDepsAbi.get(),
                BuildRuleType.EXOPACKAGE_DEPS_ABI, buildTargetForAbiCalculation, enhancedDeps.build());
        finalDeps = ImmutableSortedSet.of(computeExopackageDepsAbiRule);
    } else {
        finalDeps = enhancedDeps.build();
    }

    return new EnhancementResult(filteredResourcesProvider, uberRDotJava, aaptPackageResources,
            packageStringAssets, preDexMerge, computeExopackageDepsAbi, finalDeps);
}

From source file:com.facebook.buck.cxx.AbstractCxxSourceRuleFactory.java

private ImmutableSortedSet<BuildRule> getPreprocessDeps() {
    ImmutableSortedSet.Builder<BuildRule> builder = ImmutableSortedSet.naturalOrder();
    for (CxxPreprocessorInput input : getCxxPreprocessorInput()) {
        builder.addAll(input.getDeps(getResolver(), getRuleFinder()));
    }/*from w  w  w . j ava  2 s  .  c  om*/
    if (getPrefixHeader().isPresent()) {
        builder.addAll(getRuleFinder().filterBuildRuleInputs(getPrefixHeader().get()));
    }
    if (getPrecompiledHeader().isPresent()) {
        builder.addAll(getRuleFinder().filterBuildRuleInputs(getPrecompiledHeader().get()));
    }
    if (getSandboxTree().isPresent()) {
        SymlinkTree tree = getSandboxTree().get();
        builder.add(tree);
        builder.addAll(getRuleFinder().filterBuildRuleInputs(tree.getLinks().values()));
    }
    return builder.build();
}

From source file:com.facebook.buck.android.AndroidBinaryBuildable.java

private AbstractExecutionStep createAssetLibrariesMetadataStep(Path libSubdirectory, String metadataFilename,
        APKModule module, ImmutableSortedSet.Builder<Path> inputAssetLibrariesBuilder) {
    return new AbstractExecutionStep("write_metadata_for_asset_libraries_" + module.getName()) {
        @Override/*from   w ww . j  a va 2  s  .co  m*/
        public StepExecutionResult execute(ExecutionContext context) throws IOException {
            ProjectFilesystem filesystem = getProjectFilesystem();
            // Walk file tree to find libraries
            filesystem.walkRelativeFileTree(libSubdirectory, new SimpleFileVisitor<Path>() {
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                    if (!file.toString().endsWith(".so")) {
                        throw new IOException("unexpected file in lib directory");
                    }
                    inputAssetLibrariesBuilder.add(file);
                    return FileVisitResult.CONTINUE;
                }
            });

            // Write a metadata
            ImmutableList.Builder<String> metadataLines = ImmutableList.builder();
            Path metadataOutput = libSubdirectory.resolve(metadataFilename);
            for (Path libPath : inputAssetLibrariesBuilder.build()) {
                // Should return something like x86/libfoo.so
                Path relativeLibPath = libSubdirectory.relativize(libPath);
                long filesize = filesystem.getFileSize(libPath);
                String desiredOutput = relativeLibPath.toString();
                String checksum = filesystem.computeSha256(libPath);
                metadataLines.add(desiredOutput + ' ' + filesize + ' ' + checksum);
            }
            ImmutableList<String> metadata = metadataLines.build();
            if (!metadata.isEmpty()) {
                filesystem.writeLinesToPath(metadata, metadataOutput);
            }
            return StepExecutionResults.SUCCESS;
        }
    };
}

From source file:com.facebook.buck.cpp.AbstractNativeBuildable.java

@Override
public List<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) {
    ImmutableList.Builder<Step> steps = ImmutableList.builder();
    ImmutableSortedSet.Builder<Path> objectFiles = ImmutableSortedSet.naturalOrder();
    Set<Path> createdDirectories = Sets.newHashSet();

    addMkdirStepIfNeeded(createdDirectories, steps, getPathToOutputFile().getParent());

    for (SourcePath src : srcs) {
        Path srcFile = src.resolve();
        // We expect srcFile to be relative to the buck root
        Preconditions.checkState(!srcFile.isAbsolute());
        Path parent = srcFile.getParent();
        if (parent == null) {
            parent = Paths.get("");
        }/*from w w  w  .  j a v a  2  s  . c  o  m*/
        // To avoid collisions, objects files are created in directories that reflects the path to
        // source files rather than the (path-like) name of build targets
        Path targetDir = BuckConstant.GEN_PATH.resolve(parent);
        addMkdirStepIfNeeded(createdDirectories, steps, targetDir);

        Path objectFile = targetDir
                .resolve(Files.getNameWithoutExtension(srcFile.getFileName().toString()) + OBJECT_EXTENSION);
        steps.add(new CompilerStep(/* compiler */ getCompiler(), /* shouldLink */ false,
                /* srcs */ ImmutableSortedSet.of(src.resolve()), /* outputFile */ objectFile,
                /* shouldAddProjectRootToIncludePaths */ true,
                /* includePaths */ ImmutableSortedSet.<Path>of()));
        objectFiles.add(objectFile);
    }

    for (BuildRule dep : deps) {
        // Only c++ static libraries are supported for now.
        if (dep.getBuildable() instanceof CppLibrary) {
            objectFiles.add(dep.getBuildable().getPathToOutputFile());
        }
    }

    steps.addAll(getFinalBuildSteps(objectFiles.build(), getPathToOutputFile()));

    return steps.build();
}

From source file:com.facebook.buck.cxx.AbstractNativeBuildRule.java

@Override
public ImmutableList<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) {
    ImmutableList.Builder<Step> steps = ImmutableList.builder();
    ImmutableSortedSet.Builder<Path> objectFiles = ImmutableSortedSet.naturalOrder();
    Set<Path> createdDirectories = Sets.newHashSet();

    addMkdirStepIfNeeded(createdDirectories, steps, getPathToOutputFile().getParent());

    for (SourcePath src : srcs) {
        Path srcFile = getResolver().getPath(src);
        // We expect srcFile to be relative to the buck root
        Preconditions.checkState(!srcFile.isAbsolute());
        Path parent = srcFile.getParent();
        if (parent == null) {
            parent = Paths.get("");
        }/*from  w  w w .  j  a v a2s  .c  o m*/
        // To avoid collisions, objects files are created in directories that reflects the path to
        // source files rather than the (path-like) name of build targets
        Path targetDir = BuckConstant.GEN_PATH.resolve(parent);
        addMkdirStepIfNeeded(createdDirectories, steps, targetDir);

        Path objectFile = targetDir
                .resolve(Files.getNameWithoutExtension(srcFile.getFileName().toString()) + OBJECT_EXTENSION);
        steps.add(new CompilerStep(/* compiler */ getCompiler(), /* shouldLink */ false,
                /* srcs */ ImmutableSortedSet.of(srcFile), /* outputFile */ objectFile,
                /* shouldAddProjectRootToIncludePaths */ true, /* includePaths */ ImmutableSortedSet.<Path>of(),
                /* commandLineArgs */ commandLineArgsForFile(src, perSrcFileFlags)));
        objectFiles.add(objectFile);
    }

    for (BuildRule dep : getDeps()) {
        // Only c++ static libraries are supported for now.
        if (dep instanceof CxxLibrary) {
            objectFiles.add(Preconditions.checkNotNull(dep.getPathToOutputFile()));
        }
    }

    steps.addAll(getFinalBuildSteps(objectFiles.build(), getPathToOutputFile()));

    return steps.build();
}

From source file:eu.eidas.auth.commons.attribute.AttributeSetPropertiesConverter.java

@Nonnull
private static ImmutableSortedSet<AttributeDefinition<?>> toAttributeSetFromProperties(
        @Nonnull Map<?, ?> properties) {
    ImmutableSortedSet.Builder<AttributeDefinition<?>> setBuilder = new ImmutableSortedSet.Builder<AttributeDefinition<?>>(
            Ordering.natural());/*from   w  w w.  j  av  a 2s  .c om*/
    for (Map.Entry<?, ?> entry : properties.entrySet()) {
        String key = (String) entry.getKey();
        if (Suffix.NAME_URI.matches(key)) {
            String id = Suffix.NAME_URI.extractKeyPrefix(key);
            String fullName = getMandatoryString(properties, Suffix.NAME_URI, id);
            String friendlyName = getMandatoryString(properties, Suffix.FRIENDLY_NAME, id);
            boolean required = getOptionalFlag(properties, Suffix.REQUIRED, id);
            boolean transliterationMandatory = getOptionalFlag(properties, Suffix.TRANSLITERATION_MANDATORY,
                    id);
            boolean uniqueIdentifier = getOptionalFlag(properties, Suffix.UNIQUE_IDENTIFIER, id);
            String typeStr = getMandatoryString(properties, Suffix.PERSON_TYPE, id);
            PersonType personType = PersonType.fromString(typeStr);
            if (null == personType) {
                throw new IllegalArgumentException("Entry \"" + Suffix.PERSON_TYPE.computeEntry(id)
                        + "\" has an illegal value \"" + typeStr + "\"");
            }
            String xmlNamespaceUri = getMandatoryString(properties, Suffix.XML_TYPE_NAMESPACE_URI, id);
            String localPart = getMandatoryString(properties, Suffix.XML_TYPE_LOCAL_PART, id);
            String xmlNamespacePrefix = getMandatoryString(properties, Suffix.XML_TYPE_NAMESPACE_PREFIX, id);
            String attributeValueMarshaller = getMandatoryString(properties, Suffix.ATTRIBUTE_VALUE_MARSHALLER,
                    id);

            AttributeDefinition.Builder<?> builder = AttributeDefinition.builder();
            builder.nameUri(fullName);
            builder.friendlyName(friendlyName);
            builder.personType(personType);
            builder.required(required);
            builder.transliterationMandatory(transliterationMandatory);
            builder.uniqueIdentifier(uniqueIdentifier);
            builder.xmlType(xmlNamespaceUri, localPart, xmlNamespacePrefix);
            builder.attributeValueMarshaller(attributeValueMarshaller);
            setBuilder.add(builder.build());
        }
    }
    return setBuilder.build();
}

From source file:com.facebook.buck.features.go.GoTestDescription.java

@Override
public BuildRule createBuildRule(BuildRuleCreationContextWithTargetGraph context, BuildTarget buildTarget,
        BuildRuleParams params, GoTestDescriptionArg args) {
    GoPlatform platform = GoDescriptors.getPlatformForRule(getGoToolchain(), this.goBuckConfig, buildTarget,
            args);/*  w  w w. j  a  v a2s  .com*/

    ActionGraphBuilder graphBuilder = context.getActionGraphBuilder();
    SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(graphBuilder);
    SourcePathResolver pathResolver = DefaultSourcePathResolver.from(ruleFinder);
    ProjectFilesystem projectFilesystem = context.getProjectFilesystem();

    GoTestCoverStep.Mode coverageMode;
    ImmutableSortedSet.Builder<BuildRule> extraDeps = ImmutableSortedSet.naturalOrder();
    ImmutableSet.Builder<SourcePath> srcs;
    ImmutableMap<String, Path> coverVariables;

    ImmutableSet.Builder<SourcePath> rawSrcs = ImmutableSet.builder();
    rawSrcs.addAll(args.getSrcs());
    if (args.getLibrary().isPresent()) {
        GoLibraryDescriptionArg libraryArg = graphBuilder
                .requireMetadata(args.getLibrary().get(), GoLibraryDescriptionArg.class).get();

        rawSrcs.addAll(libraryArg.getSrcs());
    }
    if (args.getCoverageMode().isPresent()) {
        coverageMode = args.getCoverageMode().get();
        GoTestCoverStep.Mode coverage = coverageMode;

        GoTestCoverSource coverSource = (GoTestCoverSource) graphBuilder.computeIfAbsent(
                buildTarget.withAppendedFlavors(InternalFlavor.of("gen-cover")),
                target -> new GoTestCoverSource(target, projectFilesystem, ruleFinder, pathResolver, platform,
                        rawSrcs.build(), platform.getCover(), coverage));

        coverVariables = coverSource.getVariables();
        srcs = ImmutableSet.builder();
        srcs.addAll(coverSource.getCoveredSources()).addAll(coverSource.getTestSources());
        extraDeps.add(coverSource);
    } else {
        srcs = rawSrcs;
        coverVariables = ImmutableMap.of();
        coverageMode = GoTestCoverStep.Mode.NONE;
    }

    if (buildTarget.getFlavors().contains(TEST_LIBRARY_FLAVOR)) {
        return createTestLibrary(buildTarget, projectFilesystem,
                params.copyAppendingExtraDeps(extraDeps.build()), graphBuilder, srcs.build(), args, platform);
    }

    GoBinary testMain = createTestMainRule(buildTarget, projectFilesystem,
            params.copyAppendingExtraDeps(extraDeps.build()), graphBuilder, srcs.build(), coverVariables,
            coverageMode, args, platform);
    graphBuilder.addToIndex(testMain);

    StringWithMacrosConverter macrosConverter = StringWithMacrosConverter.builder().setBuildTarget(buildTarget)
            .setCellPathResolver(context.getCellPathResolver()).setExpanders(MACRO_EXPANDERS).build();

    return new GoTest(buildTarget, projectFilesystem,
            params.withDeclaredDeps(ImmutableSortedSet.of(testMain)).withoutExtraDeps(), testMain,
            args.getLabels(), args.getContacts(),
            args.getTestRuleTimeoutMs().map(Optional::of).orElse(
                    goBuckConfig.getDelegate().getView(TestBuckConfig.class).getDefaultTestRuleTimeoutMs()),
            ImmutableMap
                    .copyOf(Maps.transformValues(args.getEnv(), x -> macrosConverter.convert(x, graphBuilder))),
            args.getRunTestSeparately(), args.getResources(), coverageMode);
}

From source file:edu.upenn.cis.orchestra.datamodel.AbstractRelation.java

private void initKeyColumnList(SortedSet<Integer> keyColumnList) {
    ImmutableSortedSet.Builder<Integer> keyColumnBuilder = ImmutableSortedSet.naturalOrder();

    for (Integer column : keyColumnList) {
        keyColumnBuilder.add(column);
    }/*from   w ww.  j a v a 2 s. c  om*/
    _keyColumnList = keyColumnBuilder.build();
}

From source file:edu.upenn.cis.orchestra.datamodel.AbstractRelation.java

private void initKeyColumnList() {
    ImmutableSortedSet.Builder<Integer> keyColumnBuilder = ImmutableSortedSet.naturalOrder();

    for (RelationField f : (_pk == null ? _fields : _pk.getFields())) {
        keyColumnBuilder.add(_columnNum.get(f.getName()));
    }//from w  w w  .  ja  v  a2 s .  c o m
    _keyColumnList = keyColumnBuilder.build();
}

From source file:com.facebook.buck.features.gwt.GwtBinaryDescription.java

@Override
public BuildRule createBuildRule(BuildRuleCreationContextWithTargetGraph context, BuildTarget buildTarget,
        BuildRuleParams params, GwtBinaryDescriptionArg args) {

    ActionGraphBuilder graphBuilder = context.getActionGraphBuilder();
    SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(graphBuilder);

    ImmutableSortedSet.Builder<BuildRule> extraDeps = ImmutableSortedSet.naturalOrder();

    // Find all of the reachable JavaLibrary rules and grab their associated GwtModules.
    ImmutableSortedSet.Builder<SourcePath> gwtModuleJarsBuilder = ImmutableSortedSet.naturalOrder();
    ImmutableSortedSet<BuildRule> moduleDependencies = graphBuilder.getAllRules(args.getModuleDeps());
    new AbstractBreadthFirstTraversal<BuildRule>(moduleDependencies) {
        @Override/*  w  w  w  .jav  a 2  s  . c  om*/
        public Iterable<BuildRule> visit(BuildRule rule) {
            if (!(rule instanceof JavaLibrary)) {
                return ImmutableSet.of();
            }

            JavaLibrary javaLibrary = (JavaLibrary) rule;
            Iterable<BuildRule> ruleDeps = javaLibrary.getDepsForTransitiveClasspathEntries();

            // If the java library doesn't generate any output, it doesn't contribute a GwtModule
            if (javaLibrary.getSourcePathToOutput() == null) {
                return ruleDeps;
            }

            BuildRule gwtModule = graphBuilder.computeIfAbsent(
                    javaLibrary.getBuildTarget().assertUnflavored().withFlavors(JavaLibrary.GWT_MODULE_FLAVOR),
                    gwtModuleTarget -> {
                        ImmutableSortedSet<SourcePath> filesForGwtModule = ImmutableSortedSet
                                .<SourcePath>naturalOrder().addAll(javaLibrary.getSources())
                                .addAll(javaLibrary.getResources()).build();
                        ImmutableSortedSet<BuildRule> deps = ImmutableSortedSet
                                .copyOf(ruleFinder.filterBuildRuleInputs(filesForGwtModule));

                        return new GwtModule(gwtModuleTarget, context.getProjectFilesystem(),
                                params.withDeclaredDeps(deps).withoutExtraDeps(), ruleFinder, filesForGwtModule,
                                javaLibrary.getResourcesRoot());
                    });

            extraDeps.add(gwtModule);
            gwtModuleJarsBuilder.add(Objects.requireNonNull(gwtModule.getSourcePathToOutput()));

            Optional<SourcePath> generatedCode = javaLibrary.getGeneratedAnnotationSourcePath();
            if (generatedCode.isPresent()) {
                extraDeps.add(javaLibrary);
                gwtModuleJarsBuilder.add(generatedCode.get());
            }

            // Traverse all of the deps of this rule.
            return ruleDeps;
        }
    }.start();

    return new GwtBinary(buildTarget, context.getProjectFilesystem(), params.withExtraDeps(extraDeps.build()),
            args.getModules(), javaOptions.get().getJavaRuntimeLauncher(graphBuilder), args.getVmArgs(),
            args.getStyle().orElse(DEFAULT_STYLE), args.getDraftCompile().orElse(DEFAULT_DRAFT_COMPILE),
            args.getOptimize().orElse(DEFAULT_OPTIMIZE),
            args.getLocalWorkers().orElse(DEFAULT_NUM_LOCAL_WORKERS), args.getStrict().orElse(DEFAULT_STRICT),
            args.getExperimentalArgs(), gwtModuleJarsBuilder.build());
}