Example usage for com.google.common.collect ImmutableList size

List of usage examples for com.google.common.collect ImmutableList size

Introduction

In this page you can find the example usage for com.google.common.collect ImmutableList size.

Prototype

int size();

Source Link

Document

Returns the number of elements in this list.

Usage

From source file:com.facebook.buck.js.JsBundleGenrule.java

@Override
public ImmutableList<Step> getBuildSteps(BuildContext context, BuildableContext buildableContext) {
    SourcePathResolver sourcePathResolver = context.getSourcePathResolver();
    ImmutableList<Step> buildSteps = super.getBuildSteps(context, buildableContext);
    OptionalInt lastRmStep = IntStream.range(0, buildSteps.size()).map(x -> buildSteps.size() - 1 - x)
            .filter(i -> buildSteps.get(i) instanceof RmStep).findFirst();

    Preconditions.checkState(lastRmStep.isPresent(), "Genrule is expected to have at least on RmDir step");

    ImmutableList.Builder<Step> builder = ImmutableList.<Step>builder()
            // First, all Genrule steps including the last RmDir step are added
            .addAll(buildSteps.subList(0, lastRmStep.getAsInt() + 1))
            // Our MkdirStep must run after all RmSteps created by Genrule to prevent immediate
            // deletion of the directory. It must, however, run before the genrule command itself
            // runs.
            .add(MkdirStep.of(BuildCellRelativePath.fromCellRelativePath(context.getBuildCellRootPath(),
                    getProjectFilesystem(), sourcePathResolver.getRelativePath(getSourcePathToOutput()))));

    if (rewriteSourcemap) {
        // If the genrule rewrites the source map, we have to create the parent dir, and record
        // the build artifact

        SourcePath sourcePathToSourceMap = getSourcePathToSourceMap();
        buildableContext.recordArtifact(sourcePathResolver.getRelativePath(sourcePathToSourceMap));
        builder.add(MkdirStep.of(BuildCellRelativePath.fromCellRelativePath(context.getBuildCellRootPath(),
                getProjectFilesystem(),//from   w  w  w .j  a v  a 2s. c o  m
                sourcePathResolver.getRelativePath(sourcePathToSourceMap).getParent())));
    }

    if (rewriteMisc) {
        // If the genrule rewrites the misc folder, we have to create the corresponding dir, and
        // record its contents

        SourcePath miscDirPath = getSourcePathToMisc();
        buildableContext.recordArtifact(sourcePathResolver.getRelativePath(miscDirPath));
        builder.add(MkdirStep.of(BuildCellRelativePath.fromCellRelativePath(context.getBuildCellRootPath(),
                getProjectFilesystem(), sourcePathResolver.getRelativePath(miscDirPath))));
    }

    // Last, we add all remaining genrule commands after the last RmStep
    return builder.addAll(buildSteps.subList(lastRmStep.getAsInt() + 1, buildSteps.size())).build();
}

From source file:com.facebook.buck.rules.coercer.CxxGenruleFilterAndTargetsMacroTypeCoercer.java

@Override
public M coerce(CellPathResolver cellRoots, ProjectFilesystem filesystem, Path pathRelativeToProjectRoot,
        TargetConfiguration targetConfiguration, ImmutableList<String> args) throws CoerceFailedException {

    if (args.isEmpty() && patternTypeCoercer.isPresent()) {
        throw new CoerceFailedException(
                String.format("expected at least one argument (found %d)", args.size()));
    }/*from  ww  w  . j  a v  a  2 s  . com*/

    Queue<String> mArgs = new ArrayDeque<>(args);

    // Parse filter arg.
    Optional<Pattern> filter = Optional.empty();
    if (patternTypeCoercer.isPresent()) {
        filter = Optional.of(patternTypeCoercer.get().coerce(cellRoots, filesystem, pathRelativeToProjectRoot,
                targetConfiguration, mArgs.remove()));
    }

    // Parse build target args.
    ImmutableList<BuildTarget> targets = buildTargetsTypeCoercer.coerce(cellRoots, filesystem,
            pathRelativeToProjectRoot, targetConfiguration, mArgs);

    return factory.apply(filter, targets);
}

From source file:com.google.javascript.jscomp.newtypes.JSTypes.java

public JSType getArrayInstance(JSType t) {
    if (arrayType == null) {
        return JSType.UNKNOWN;
    }//from w  w  w.j  av  a 2s  .  co m
    ImmutableList<String> typeParams = arrayType.getTypeParameters();
    JSType result = arrayType.getInstanceAsJSType();
    if (typeParams.size() == 1) {
        String typeParam = Iterables.getOnlyElement(typeParams);
        result = result.substituteGenerics(ImmutableMap.of(typeParam, t));
    }
    return result;
}

From source file:com.facebook.buck.query.DepsFunction.java

/**
 * Evaluates to the dependencies of the argument.
 * Breadth first search from the given argument until there are no more unvisited nodes in the
 * transitive closure or the maximum depth (if supplied) is reached.
 *///  w ww.  j  av  a2 s.  c  om
@Override
public Set<QueryTarget> eval(QueryEnvironment env, ImmutableList<Argument> args,
        ListeningExecutorService executor) throws QueryException, InterruptedException {
    Set<QueryTarget> argumentSet = args.get(0).getExpression().eval(env, executor);
    int depthBound = args.size() > 1 ? args.get(1).getInteger() : Integer.MAX_VALUE;
    env.buildTransitiveClosure(argumentSet, depthBound, executor);

    // LinkedHashSet preserves the order of insertion when iterating over the values.
    // The order by which we traverse the result is meaningful because the dependencies are
    // traversed level-by-level.
    Set<QueryTarget> result = new LinkedHashSet<>();
    Set<QueryTarget> current = argumentSet;

    // Iterating depthBound+1 times because the first one processes the given argument set.
    for (int i = 0; i <= depthBound; i++) {
        Set<QueryTarget> next = env.getFwdDeps(Iterables.filter(current, Predicates.not(result::contains)));
        result.addAll(current);
        if (next.isEmpty()) {
            break;
        }
        current = next;
    }
    return result;
}

From source file:com.google.errorprone.refaster.BlockTemplate.java

@Override
public Fix replace(BlockTemplateMatch match) {
    checkNotNull(match);//from w  w w.jav  a 2s.  c o  m
    SuggestedFix.Builder fix = SuggestedFix.builder();
    Inliner inliner = match.createInliner();
    Context context = inliner.getContext();
    if (annotations().containsKey(UseImportPolicy.class)) {
        ImportPolicy.bind(context, annotations().getInstance(UseImportPolicy.class).value());
    } else {
        ImportPolicy.bind(context, ImportPolicy.IMPORT_TOP_LEVEL);
    }
    ImmutableList<JCStatement> targetStatements = match.getStatements();
    try {
        ImmutableList.Builder<JCStatement> inlinedStatementsBuilder = ImmutableList.builder();
        for (UStatement statement : templateStatements()) {
            inlinedStatementsBuilder.addAll(statement.inlineStatements(inliner));
        }
        ImmutableList<JCStatement> inlinedStatements = inlinedStatementsBuilder.build();
        int nInlined = inlinedStatements.size();
        int nTargets = targetStatements.size();
        if (nInlined <= nTargets) {
            for (int i = 0; i < nInlined; i++) {
                fix.replace(targetStatements.get(i), printStatement(context, inlinedStatements.get(i)));
            }
            for (int i = nInlined; i < nTargets; i++) {
                fix.delete(targetStatements.get(i));
            }
        } else {
            for (int i = 0; i < nTargets - 1; i++) {
                fix.replace(targetStatements.get(i), printStatement(context, inlinedStatements.get(i)));
            }
            int last = nTargets - 1;
            ImmutableList<JCStatement> remainingInlined = inlinedStatements.subList(last, nInlined);
            fix.replace(targetStatements.get(last),
                    CharMatcher.whitespace().trimTrailingFrom(printStatements(context, remainingInlined)));
        }
    } catch (CouldNotResolveImportException e) {
        logger.log(SEVERE, "Failure to resolve import in replacement", e);
    }
    return addImports(inliner, fix);
}

From source file:org.jclouds.cloudsigma2.compute.functions.TemplateOptionsToStatementWithoutPublicKey.java

@Override
public Statement apply(TemplateOptions options) {
    ImmutableList.Builder<Statement> builder = ImmutableList.builder();
    if (options.getRunScript() != null) {
        builder.add(options.getRunScript());
    }//from  w w  w. j  a v a  2  s.c  om
    if (options.getPrivateKey() != null) {
        builder.add(new InstallRSAPrivateKey(options.getPrivateKey()));
    }

    ImmutableList<Statement> bootstrap = builder.build();
    if (bootstrap.isEmpty()) {
        return null;
    }

    if (options.getTaskName() == null && !(options.getRunScript() instanceof InitScript)) {
        options.nameTask("bootstrap");
    }
    return bootstrap.size() == 1 ? bootstrap.get(0) : new StatementList(bootstrap);
}

From source file:com.facebook.presto.cli.AlignedTuplePrinter.java

@Override
public void printRows(List<List<?>> rows, boolean complete) throws IOException {
    rowCount += rows.size();/*from w  ww. j a  va  2 s .  c  o m*/
    int columns = fieldNames.size();

    int[] maxWidth = new int[columns];
    for (int i = 0; i < columns; i++) {
        maxWidth[i] = max(1, fieldNames.get(i).length());
    }
    for (List<?> row : rows) {
        for (int i = 0; i < row.size(); i++) {
            String s = formatValue(row.get(i));
            maxWidth[i] = max(maxWidth[i], maxLineLength(s));
        }
    }

    if (!headerOutput) {
        headerOutput = true;

        for (int i = 0; i < columns; i++) {
            if (i > 0) {
                writer.append('|');
            }
            String name = fieldNames.get(i);
            writer.append(center(name, maxWidth[i], 1));
        }
        writer.append('\n');

        for (int i = 0; i < columns; i++) {
            if (i > 0) {
                writer.append('+');
            }
            writer.append(repeat("-", maxWidth[i] + 2));
        }
        writer.append('\n');
    }

    for (List<?> row : rows) {
        List<List<String>> columnLines = new ArrayList<>(columns);
        int maxLines = 1;
        for (int i = 0; i < columns; i++) {
            String s = formatValue(row.get(i));
            ImmutableList<String> lines = ImmutableList.copyOf(LINE_SPLITTER.split(s));
            columnLines.add(lines);
            maxLines = max(maxLines, lines.size());
        }

        for (int line = 0; line < maxLines; line++) {
            for (int column = 0; column < columns; column++) {
                if (column > 0) {
                    writer.append('|');
                }
                List<String> lines = columnLines.get(column);
                String s = (line < lines.size()) ? lines.get(line) : "";
                boolean numeric = row.get(column) instanceof Number;
                String out = align(s, maxWidth[column], 1, numeric);
                if ((!complete || (rowCount > 1)) && ((line + 1) < lines.size())) {
                    out = out.substring(0, out.length() - 1) + "+";
                }
                writer.append(out);
            }
            writer.append('\n');
        }
    }

    writer.flush();
}

From source file:com.facebook.buck.remoteexecution.util.MultiThreadedBlobUploader.java

private void processUploads() {
    processMissing();//from w w  w .j av  a  2  s. c om
    ImmutableMap.Builder<String, PendingUpload> dataBuilder = ImmutableMap.builder();
    int size = 0;
    while (size < uploadSizeLimit && !waitingUploads.isEmpty()) {
        PendingUpload data = waitingUploads.poll();
        if (data == null) {
            break;
        }
        dataBuilder.put(data.getHash(), data);
        size += data.uploadData.digest.getSize();
    }
    ImmutableMap<String, PendingUpload> data = dataBuilder.build();

    if (!data.isEmpty()) {
        try {
            ImmutableList.Builder<UploadData> blobsBuilder = ImmutableList.builder();
            for (PendingUpload entry : data.values()) {
                blobsBuilder.add(entry.uploadData);
            }

            ImmutableList<UploadData> blobs = data.values().stream().map(e -> e.uploadData)
                    .collect(ImmutableList.toImmutableList());

            ImmutableList<UploadResult> results = asyncBlobUploader.batchUpdateBlobs(blobs);
            Preconditions.checkState(results.size() == blobs.size());
            results.forEach(result -> {
                PendingUpload pendingUpload = Objects.requireNonNull(data.get(result.digest.getHash()));
                if (result.status == 0) {
                    pendingUpload.future.set(null);
                } else {
                    pendingUpload.future.setException(new IOException(
                            String.format("Failed uploading with message: %s. When uploading blob: %s.",
                                    result.message, pendingUpload.uploadData.data.describe())));
                }
            });
            data.forEach((k, pending) -> pending.future.setException(new RuntimeException("idk")));
        } catch (Exception e) {
            data.forEach((k, pending) -> pending.future.setException(e));
        }
    }
    if (!waitingMissingCheck.isEmpty() || !waitingUploads.isEmpty()) {
        uploadService.submit(this::processUploads);
    }
}

From source file:de.metanome.backend.input.sql.ResultSetTwoLinesFixture.java

public ResultSet getTestData() throws SQLException {
    ResultSet resultSet = mock(ResultSet.class);
    ResultSetMetaData resultSetMetaData = mock(ResultSetMetaData.class);
    // Expected values
    // Expected column count
    when(resultSetMetaData.getColumnCount()).thenReturn(numberOfColumns());
    // Simulate SQLException when starting count at 0.
    when(resultSetMetaData.getTableName(0)).thenThrow(new SQLException());
    when(resultSetMetaData.getTableName(1)).thenReturn(getExpectedRelationName());
    ImmutableList<String> expectedColumnNames = getExpectedColumnNames();
    // Simulate SQLException when starting count at 0.
    when(resultSetMetaData.getColumnName(0)).thenThrow(new SQLException());
    for (int i = 0; i < expectedColumnNames.size(); i++) {
        when(resultSetMetaData.getColumnLabel(i + 1)).thenReturn(expectedColumnNames.get(i));
    }//from   w  ww  .  j ava  2 s.  c  o  m
    // Expected values when calling getMetaData
    when(resultSet.getMetaData()).thenReturn(resultSetMetaData);
    // Expected values when calling next
    when(resultSet.next()).thenReturn(getFirstExpectedNextValue(), getExpectedNextValuesExceptFirstAsArray());
    List<ImmutableList<String>> expectedRecords = getExpectedRecords();
    // Simulate SQLException when starting count at 0.
    when(resultSet.getString(0)).thenThrow(new SQLException());
    // Expected values when calling getString
    for (int columnIndex = 0; columnIndex < numberOfColumns(); columnIndex++) {
        when(resultSet.getString(columnIndex + 1)).thenReturn(expectedRecords.get(0).get(columnIndex))
                .thenReturn(expectedRecords.get(1).get(columnIndex));
    }

    return resultSet;
}

From source file:com.facebook.buck.cxx.toolchain.elf.ElfVerDef.java

public ElfVerDef compact() {
    return new ElfVerDef(RichStream.from(MoreIterables.enumerate(this.entries)).map(vdp -> {
        int verdefIndex = vdp.getFirst();
        Verdef verdef = vdp.getSecond().getFirst();
        ImmutableList<Verdaux> verdauxes = vdp.getSecond().getSecond();
        return new Pair<>(
                new Verdef(verdef.vd_version, verdef.vd_flags, verdef.vd_ndx, verdauxes.size(), verdef.vd_hash,
                        verdauxes.isEmpty() ? 0 : Verdef.BYTES,
                        verdefIndex == entries.size() - 1 ? 0
                                : Verdef.BYTES + Verdaux.BYTES * verdauxes.size()),
                RichStream.from(MoreIterables.enumerate(verdauxes))
                        .map(vdxp -> new Verdaux(vdxp.getSecond().vda_name,
                                vdxp.getFirst() == verdauxes.size() - 1 ? 0 : Verdaux.BYTES))
                        .toImmutableList());
    }).toImmutableList());/*from  w  ww  .jav a 2s  . c o m*/
}