Example usage for com.google.common.collect ImmutableSortedSet of

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

Introduction

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

Prototype

@SuppressWarnings("unchecked")
    public static <E extends Comparable<? super E>> ImmutableSortedSet<E> of(E e1, E e2, E e3) 

Source Link

Usage

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

@Override
public <A extends Arg> BuildRule createBuildRule(TargetGraph targetGraph,
        BuildRuleParams originalBuildRuleParams, BuildRuleResolver resolver, A args)
        throws NoSuchBuildTargetException {

    UnflavoredBuildTarget originalBuildTarget = originalBuildRuleParams.getBuildTarget().checkUnflavored();
    SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(resolver);
    SourcePathResolver pathResolver = new SourcePathResolver(ruleFinder);
    ImmutableList.Builder<BuildRule> aarExtraDepsBuilder = ImmutableList.<BuildRule>builder()
            .addAll(originalBuildRuleParams.getExtraDeps().get());

    /* android_manifest */
    AndroidManifestDescription.Arg androidManifestArgs = androidManifestDescription
            .createUnpopulatedConstructorArg();
    androidManifestArgs.skeleton = args.manifestSkeleton;
    androidManifestArgs.deps = args.deps;

    BuildRuleParams androidManifestParams = originalBuildRuleParams.copyWithChanges(
            BuildTargets.createFlavoredBuildTarget(originalBuildTarget, AAR_ANDROID_MANIFEST_FLAVOR),
            originalBuildRuleParams.getDeclaredDeps(), originalBuildRuleParams.getExtraDeps());

    AndroidManifest manifest = androidManifestDescription.createBuildRule(targetGraph, androidManifestParams,
            resolver, androidManifestArgs);
    aarExtraDepsBuilder.add(resolver.addToIndex(manifest));

    final APKModuleGraph apkModuleGraph = new APKModuleGraph(targetGraph,
            originalBuildRuleParams.getBuildTarget(), Optional.empty());

    /* assemble dirs */
    AndroidPackageableCollector collector = new AndroidPackageableCollector(
            originalBuildRuleParams.getBuildTarget(), /* buildTargetsToExcludeFromDex */ ImmutableSet.of(),
            /* resourcesToExclude */ ImmutableSet.of(), apkModuleGraph);
    collector.addPackageables(/*from w  ww. j  ava  2 s.  co  m*/
            AndroidPackageableCollector.getPackageableRules(originalBuildRuleParams.getDeps()));
    AndroidPackageableCollection packageableCollection = collector.build();

    ImmutableSortedSet<BuildRule> androidResourceDeclaredDeps = AndroidResourceHelper
            .androidResOnly(originalBuildRuleParams.getDeclaredDeps().get());
    ImmutableSortedSet<BuildRule> androidResourceExtraDeps = AndroidResourceHelper
            .androidResOnly(originalBuildRuleParams.getExtraDeps().get());

    BuildRuleParams assembleAssetsParams = originalBuildRuleParams.copyWithChanges(
            BuildTargets.createFlavoredBuildTarget(originalBuildTarget, AAR_ASSEMBLE_ASSETS_FLAVOR),
            Suppliers.ofInstance(androidResourceDeclaredDeps), Suppliers.ofInstance(androidResourceExtraDeps));
    ImmutableCollection<SourcePath> assetsDirectories = packageableCollection.getAssetsDirectories();
    AssembleDirectories assembleAssetsDirectories = new AssembleDirectories(assembleAssetsParams, pathResolver,
            assetsDirectories);
    aarExtraDepsBuilder.add(resolver.addToIndex(assembleAssetsDirectories));

    BuildRuleParams assembleResourceParams = originalBuildRuleParams.copyWithChanges(
            BuildTargets.createFlavoredBuildTarget(originalBuildTarget, AAR_ASSEMBLE_RESOURCE_FLAVOR),
            Suppliers.ofInstance(androidResourceDeclaredDeps), Suppliers.ofInstance(androidResourceExtraDeps));
    ImmutableCollection<SourcePath> resDirectories = packageableCollection.getResourceDetails()
            .getResourceDirectories();
    MergeAndroidResourceSources assembleResourceDirectories = new MergeAndroidResourceSources(
            assembleResourceParams, pathResolver, resDirectories);
    aarExtraDepsBuilder.add(resolver.addToIndex(assembleResourceDirectories));

    /* android_resource */
    BuildRuleParams androidResourceParams = originalBuildRuleParams.copyWithChanges(
            BuildTargets.createFlavoredBuildTarget(originalBuildTarget, AAR_ANDROID_RESOURCE_FLAVOR),
            Suppliers.ofInstance(
                    ImmutableSortedSet.of(manifest, assembleAssetsDirectories, assembleResourceDirectories)),
            Suppliers.ofInstance(ImmutableSortedSet.of()));

    AndroidResource androidResource = new AndroidResource(androidResourceParams, ruleFinder,
            /* deps */ ImmutableSortedSet.<BuildRule>naturalOrder().add(assembleAssetsDirectories)
                    .add(assembleResourceDirectories).addAll(originalBuildRuleParams.getDeclaredDeps().get())
                    .build(),
            new BuildTargetSourcePath(assembleResourceDirectories.getBuildTarget()),
            /* resSrcs */ ImmutableSortedSet.of(), Optional.empty(), /* rDotJavaPackage */ null,
            new BuildTargetSourcePath(assembleAssetsDirectories.getBuildTarget()),
            /* assetsSrcs */ ImmutableSortedSet.of(), Optional.empty(),
            new BuildTargetSourcePath(manifest.getBuildTarget()), /* hasWhitelistedStrings */ false);
    aarExtraDepsBuilder.add(resolver.addToIndex(androidResource));

    /* native_libraries */
    AndroidNativeLibsPackageableGraphEnhancer packageableGraphEnhancer = new AndroidNativeLibsPackageableGraphEnhancer(
            resolver, originalBuildRuleParams, nativePlatforms, ImmutableSet.of(), cxxBuckConfig,
            /* nativeLibraryMergeMap */ Optional.empty(), /* nativeLibraryMergeGlue */ Optional.empty(),
            AndroidBinary.RelinkerMode.DISABLED, apkModuleGraph);
    Optional<ImmutableMap<APKModule, CopyNativeLibraries>> nativeLibrariesOptional = packageableGraphEnhancer
            .enhance(packageableCollection).getCopyNativeLibraries();
    if (nativeLibrariesOptional.isPresent()
            && nativeLibrariesOptional.get().containsKey(apkModuleGraph.getRootAPKModule())) {
        aarExtraDepsBuilder
                .add(resolver.addToIndex(nativeLibrariesOptional.get().get(apkModuleGraph.getRootAPKModule())));
    }

    Optional<Path> assembledNativeLibsDir = nativeLibrariesOptional.map(input -> {
        // there will be only one value for the root module
        CopyNativeLibraries copyNativeLibraries = input.get(apkModuleGraph.getRootAPKModule());
        if (copyNativeLibraries == null) {
            throw new HumanReadableException(
                    "Native libraries are present but not in the root application module.");
        }
        return copyNativeLibraries.getPathToNativeLibsDir();
    });
    BuildRuleParams androidAarParams = originalBuildRuleParams
            .copyWithExtraDeps(Suppliers.ofInstance(ImmutableSortedSet.copyOf(aarExtraDepsBuilder.build())));
    return new AndroidAar(androidAarParams, manifest, androidResource,
            assembleResourceDirectories.getPathToOutput(), assembleAssetsDirectories.getPathToOutput(),
            assembledNativeLibsDir,
            ImmutableSet.copyOf(packageableCollection.getNativeLibAssetsDirectories().values()));
}