Example usage for com.google.common.collect FluentIterable transform

List of usage examples for com.google.common.collect FluentIterable transform

Introduction

In this page you can find the example usage for com.google.common.collect FluentIterable transform.

Prototype

@CheckReturnValue
public final <T> FluentIterable<T> transform(Function<? super E, T> function) 

Source Link

Document

Returns a fluent iterable that applies function to each element of this fluent iterable.

Usage

From source file:dagger2.internal.codegen.ComponentGenerator.java

private void writeEntry(List<Object> argsBuilder, Binding binding, Snippet factory) {
    AnnotationMirror mapKeyAnnotationMirror = Iterables.getOnlyElement(getMapKeys(binding.bindingElement()));
    Map<? extends ExecutableElement, ? extends AnnotationValue> map = mapKeyAnnotationMirror.getElementValues();
    MapKey mapKey = mapKeyAnnotationMirror.getAnnotationType().asElement().getAnnotation(MapKey.class);
    if (!mapKey.unwrapValue()) {// wrapped key case
        FluentIterable<AnnotationValue> originIterable = FluentIterable
                .from(AnnotationMirrors.getAnnotationValuesWithDefaults(mapKeyAnnotationMirror).values());
        FluentIterable<Snippet> annotationValueNames = originIterable
                .transform(new Function<AnnotationValue, Snippet>() {
                    @Override/*from ww  w.  j  av  a 2 s . co  m*/
                    public Snippet apply(AnnotationValue value) {
                        return getValueSnippet(value);
                    }
                });
        ImmutableList.Builder<Snippet> snippets = ImmutableList.builder();
        for (Snippet snippet : annotationValueNames) {
            snippets.add(snippet);
        }
        argsBuilder.add(Snippet.format("%s.create(%s)",
                Util.getMapKeyCreatorClassName(
                        MoreTypes.asTypeElement(mapKeyAnnotationMirror.getAnnotationType())),
                Snippet.makeParametersSnippet(snippets.build())));
        argsBuilder.add(factory);
    } else { // unwrapped key case
        argsBuilder.add(Iterables.getOnlyElement(map.entrySet()).getValue());
        argsBuilder.add(factory);
    }
}

From source file:org.sosy_lab.cpachecker.core.algorithm.BMCAlgorithm.java

/**
 * @param pReachedSet/*from   w  w w .  j  a  v a  2 s . c o m*/
 * @param pTargetLocations
 * @return
 */
private Set<CFAEdge> getRelevantAssumeEdges(ReachedSet pReachedSet, ImmutableSet<CFANode> pTargetLocations) {
    FluentIterable<AbstractState> targetStates = from(pReachedSet).filter(IS_TARGET_STATE);
    final Set<CFAEdge> assumeEdges = new HashSet<>();
    Set<CFANode> targetLocations = from(
            Iterables.concat(pTargetLocations, targetStates.transform(EXTRACT_LOCATION))).toSet();
    Set<CFANode> visited = new HashSet<>(targetLocations);
    Queue<CFANode> waitlist = new ArrayDeque<>(targetLocations);
    while (!waitlist.isEmpty()) {
        CFANode current = waitlist.poll();
        for (CFAEdge enteringEdge : CFAUtils.enteringEdges(current)) {
            CFANode predecessor = enteringEdge.getPredecessor();
            if (enteringEdge.getEdgeType() == CFAEdgeType.AssumeEdge) {
                assumeEdges.add(enteringEdge);
            } else if (visited.add(predecessor)) {
                waitlist.add(predecessor);
            }
        }
    }
    return assumeEdges;
}

From source file:org.apache.aurora.scheduler.thrift.SchedulerThriftInterface.java

@Override
public Response addInstances(InstanceKey key, int count) {
    IJobKey jobKey = JobKeys.assertValid(IJobKey.build(key.getJobKey()));

    Response response = empty();//from   www  .ja v  a  2  s.c  o m
    return storage.write(storeProvider -> {
        try {
            if (getCronJob(storeProvider, jobKey).isPresent()) {
                return invalidRequest("Instances may not be added to cron jobs.");
            }

            lockManager.assertNotLocked(ILockKey.build(LockKey.job(jobKey.newBuilder())));

            FluentIterable<IScheduledTask> currentTasks = FluentIterable
                    .from(storeProvider.getTaskStore().fetchTasks(Query.jobScoped(jobKey).active()));

            if (count <= 0) {
                return invalidRequest(INVALID_INSTANCE_COUNT);
            }

            Optional<IScheduledTask> templateTask = Iterables.tryFind(currentTasks,
                    e -> e.getAssignedTask().getInstanceId() == key.getInstanceId());
            if (!templateTask.isPresent()) {
                return invalidRequest(INVALID_INSTANCE_ID);
            }

            int lastId = currentTasks.transform(e -> e.getAssignedTask().getInstanceId()).toList().stream()
                    .max(Comparator.naturalOrder()).get();

            Set<Integer> instanceIds = ContiguousSet.create(Range.openClosed(lastId, lastId + count),
                    DiscreteDomain.integers());

            ITaskConfig task = templateTask.get().getAssignedTask().getTask();
            validateTaskLimits(task, Iterables.size(currentTasks) + instanceIds.size(),
                    quotaManager.checkInstanceAddition(task, instanceIds.size(), storeProvider));

            stateManager.insertPendingTasks(storeProvider, task, instanceIds);
            addInstancesCounter.addAndGet(instanceIds.size());

            return response.setResponseCode(OK);
        } catch (LockException e) {
            return error(LOCK_ERROR, e);
        } catch (TaskValidationException | IllegalArgumentException e) {
            return error(INVALID_REQUEST, e);
        }
    });
}

From source file:com.facebook.buck.jvm.java.DefaultJavaLibrary.java

/**
 * Building a java_library() rule entails compiling the .java files specified in the srcs
 * attribute. They are compiled into a directory under {@link BuckPaths#getScratchDir()}.
 *//*from  www  .j ava  2  s  . co  m*/
@Override
public final ImmutableList<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) {
    ImmutableList.Builder<Step> steps = ImmutableList.builder();

    FluentIterable<JavaLibrary> declaredClasspathDeps = JavaLibraryClasspathProvider
            .getJavaLibraryDeps(getDepsForTransitiveClasspathEntries());

    // Always create the output directory, even if there are no .java files to compile because there
    // might be resources that need to be copied there.
    BuildTarget target = getBuildTarget();
    Path outputDirectory = getClassesDir(target, getProjectFilesystem());
    steps.add(new MakeCleanDirectoryStep(getProjectFilesystem(), outputDirectory));

    SuggestBuildRules suggestBuildRule = DefaultSuggestBuildRules.createSuggestBuildFunction(JAR_RESOLVER,
            declaredClasspathDeps.toSet(),
            ImmutableSet.<JavaLibrary>builder().addAll(getTransitiveClasspathDeps()).add(this).build(),
            context.getActionGraph().getNodes());

    // We don't want to add these to the declared or transitive deps, since they're only used at
    // compile time.
    Collection<Path> provided = JavaLibraryClasspathProvider.getJavaLibraryDeps(providedDeps)
            .transformAndConcat(JavaLibrary::getOutputClasspaths).filter(Objects::nonNull).toSet();

    ProjectFilesystem projectFilesystem = getProjectFilesystem(); // NOPMD confused by lambda
    Iterable<Path> declaredClasspaths = declaredClasspathDeps
            .transformAndConcat(JavaLibrary::getOutputClasspaths).transform(projectFilesystem::resolve);
    // Only override the bootclasspath if this rule is supposed to compile Android code.
    ImmutableSortedSet<Path> declared = ImmutableSortedSet.<Path>naturalOrder().addAll(declaredClasspaths)
            .addAll(additionalClasspathEntries).addAll(provided).build();

    // Make sure that this directory exists because ABI information will be written here.
    Step mkdir = new MakeCleanDirectoryStep(getProjectFilesystem(), getPathToAbiOutputDir());
    steps.add(mkdir);

    // If there are resources, then link them to the appropriate place in the classes directory.
    JavaPackageFinder finder = context.getJavaPackageFinder();
    if (resourcesRoot.isPresent()) {
        finder = new ResourcesRootPackageFinder(resourcesRoot.get(), finder);
    }

    steps.add(new CopyResourcesStep(getProjectFilesystem(), getResolver(), ruleFinder, target, resources,
            outputDirectory, finder));

    steps.add(new MakeCleanDirectoryStep(getProjectFilesystem(),
            getOutputJarDirPath(target, getProjectFilesystem())));

    // Only run javac if there are .java files to compile or we need to shovel the manifest file
    // into the built jar.
    if (!getJavaSrcs().isEmpty()) {
        ClassUsageFileWriter usedClassesFileWriter;
        if (trackClassUsage) {
            final Path usedClassesFilePath = getUsedClassesFilePath(getBuildTarget(), getProjectFilesystem());
            depFileOutputPath = getProjectFilesystem().getPathForRelativePath(usedClassesFilePath);
            usedClassesFileWriter = new DefaultClassUsageFileWriter(usedClassesFilePath);

            buildableContext.recordArtifact(usedClassesFilePath);
        } else {
            usedClassesFileWriter = NoOpClassUsageFileWriter.instance();
        }

        // This adds the javac command, along with any supporting commands.
        Path pathToSrcsList = BuildTargets.getGenPath(getProjectFilesystem(), getBuildTarget(), "__%s__srcs");
        steps.add(new MkdirStep(getProjectFilesystem(), pathToSrcsList.getParent()));

        Path scratchDir = BuildTargets.getGenPath(getProjectFilesystem(), target,
                "lib__%s____working_directory");
        steps.add(new MakeCleanDirectoryStep(getProjectFilesystem(), scratchDir));
        Optional<Path> workingDirectory = Optional.of(scratchDir);

        ImmutableSortedSet<Path> javaSrcs = getJavaSrcs().stream().map(getResolver()::getRelativePath)
                .collect(MoreCollectors.toImmutableSortedSet());

        compileStepFactory.createCompileToJarStep(context, javaSrcs, target, getResolver(), ruleFinder,
                getProjectFilesystem(), declared, outputDirectory, workingDirectory, pathToSrcsList,
                Optional.of(suggestBuildRule), postprocessClassesCommands,
                ImmutableSortedSet.of(outputDirectory), /* mainClass */ Optional.empty(),
                manifestFile.map(getResolver()::getAbsolutePath), outputJar.get(), usedClassesFileWriter,
                /* output params */
                steps, buildableContext, classesToRemoveFromJar);
    }

    if (outputJar.isPresent()) {
        Path output = outputJar.get();

        // No source files, only resources
        if (getJavaSrcs().isEmpty()) {
            steps.add(
                    new JarDirectoryStep(getProjectFilesystem(), output, ImmutableSortedSet.of(outputDirectory),
                            /* mainClass */ null, manifestFile.map(getResolver()::getAbsolutePath).orElse(null),
                            true, classesToRemoveFromJar));
        }
        buildableContext.recordArtifact(output);
    }

    JavaLibraryRules.addAccumulateClassNamesStep(this, buildableContext, steps);

    return steps.build();
}

From source file:com.facebook.buck.features.apple.project.ProjectGenerator.java

@VisibleForTesting
static FluentIterable<TargetNode<?>> swapSharedLibrariesForBundles(FluentIterable<TargetNode<?>> targetDeps,
        ImmutableMap<BuildTarget, TargetNode<?>> sharedLibrariesToBundles) {
    return targetDeps.transform(t -> sharedLibrariesToBundles.getOrDefault(t.getBuildTarget(), t));
}

From source file:com.facebook.buck.features.apple.project.ProjectGenerator.java

private ImmutableSet<PBXFileReference> targetNodesIterableToPBXFileReference(
        FluentIterable<TargetNode<?>> targetNodes) {
    return targetNodes.transform(this::getLibraryFileReference).toSet();
}

From source file:com.facebook.buck.features.apple.project.ProjectGenerator.java

private ImmutableList<String> collectLibraryLinkerFlags(FluentIterable<TargetNode<?>> targetNodes) {
    return targetNodes.transform(dep -> getLibraryLinkerFlag(dep)).filter(Optional::isPresent)
            .transform(input -> input.get()).toList();
}

From source file:com.facebook.buck.features.apple.project.ProjectGenerator.java

private ImmutableList<String> collectFrameworkLinkerFlags(FluentIterable<TargetNode<?>> targetNodes) {
    return targetNodes
            .transform(input -> TargetNodes.castArg(input, AppleBundleDescriptionArg.class)
                    .flatMap(this::getFrameworkLinkerFlag))
            .filter(Optional::isPresent).transform(input -> input.get()).toList();
}

From source file:com.facebook.buck.features.apple.project.ProjectGenerator.java

private ImmutableList<String> collectForceLoadLinkerFlags(FluentIterable<TargetNode<?>> targetNodes) {
    return targetNodes
            .transform(input -> TargetNodes.castArg(input, CxxLibraryDescription.CommonArg.class)
                    .flatMap(this::getForceLoadLinkerFlag))
            .filter(Optional::isPresent).transform(input -> input.get()).toList();
}

From source file:com.facebook.buck.features.apple.project.ProjectGenerator.java

private ImmutableList<String> collectSystemLibraryAndFrameworkLinkerFlags(ImmutableSet<FrameworkPath> paths) {
    FluentIterable<FrameworkPath> pathList = FluentIterable.from(paths);
    return pathList.transform(fwkOrLib -> getSystemFrameworkOrLibraryLinkerFlag(fwkOrLib))
            .filter(Optional::isPresent).transform(input -> input.get()).toList();
}