Example usage for com.google.common.io Closer register

List of usage examples for com.google.common.io Closer register

Introduction

In this page you can find the example usage for com.google.common.io Closer register.

Prototype


public <C extends Closeable> C register(@Nullable C closeable) 

Source Link

Document

Registers the given closeable to be closed when this Closer is #close closed .

Usage

From source file:alluxio.worker.block.UnderFileSystemBlockReader.java

/**
 * Closes the block reader. After this, this block reader should not be used anymore.
 * This is recommended to be called after the client finishes reading the block. It is usually
 * triggered when the client unlocks the block.
 *
 * @throws IOException if any I/O errors occur
 *///from   w w  w .  j  a va2  s .c  om
@Override
public void close() throws IOException {
    if (mClosed) {
        return;
    }

    try {
        // This aborts the block if the block is not fully read.
        updateBlockWriter(mBlockMeta.getBlockSize());

        Closer closer = Closer.create();
        if (mBlockWriter != null) {
            closer.register(mBlockWriter);
        }
        if (mUnderFileSystemInputStream != null) {
            closer.register(mUnderFileSystemInputStream);
        }
        closer.close();
    } finally {
        mClosed = true;
    }
}

From source file:com.android.tools.lint.MultiProjectHtmlReporter.java

@Override
public void write(int errorCount, int warningCount, List<Warning> allIssues) throws IOException {
    Map<Project, List<Warning>> projectToWarnings = new HashMap<Project, List<Warning>>();
    for (Warning warning : allIssues) {
        List<Warning> list = projectToWarnings.get(warning.project);
        if (list == null) {
            list = new ArrayList<Warning>();
            projectToWarnings.put(warning.project, list);
        }//w w  w .ja va  2s. c o  m
        list.add(warning);
    }

    // Set of unique file names: lowercase names to avoid case conflicts in web environment
    Set<String> unique = Sets.newHashSet();
    unique.add(INDEX_NAME.toLowerCase(Locale.US));
    List<ProjectEntry> projects = Lists.newArrayList();

    for (Project project : projectToWarnings.keySet()) {
        // TODO: Can I get the project name from the Android manifest file instead?
        String projectName = project.getName();

        // Produce file names of the form Project.html, Project1.html, Project2.html, etc
        int number = 1;
        String fileName;
        while (true) {
            String numberString = number > 1 ? Integer.toString(number) : "";
            fileName = String.format("%1$s%2$s.html", projectName, numberString); //$NON-NLS-1$
            String lowercase = fileName.toLowerCase(Locale.US);
            if (!unique.contains(lowercase)) {
                unique.add(lowercase);
                break;
            }
            number++;
        }

        File output = new File(mDir, fileName);
        if (output.exists()) {
            boolean deleted = output.delete();
            if (!deleted) {
                mClient.log(null, "Could not delete old file %1$s", output);
                continue;
            }
        }
        if (!output.getParentFile().canWrite()) {
            mClient.log(null, "Cannot write output file %1$s", output);
            continue;
        }
        HtmlReporter reporter = new HtmlReporter(mClient, output);
        reporter.setBundleResources(mBundleResources);
        reporter.setSimpleFormat(mSimpleFormat);
        reporter.setUrlMap(mUrlMap);

        List<Warning> issues = projectToWarnings.get(project);
        int projectErrorCount = 0;
        int projectWarningCount = 0;
        for (Warning warning : issues) {
            if (warning.severity == Severity.ERROR || warning.severity == Severity.FATAL) {
                projectErrorCount++;
            } else if (warning.severity == Severity.WARNING) {
                projectWarningCount++;
            }
        }

        String prefix = project.getReferenceDir().getPath();
        String path = project.getDir().getPath();
        String relative;
        if (path.startsWith(prefix) && path.length() > prefix.length()) {
            int i = prefix.length();
            if (path.charAt(i) == File.separatorChar) {
                i++;
            }
            relative = path.substring(i);
        } else {
            relative = projectName;
        }
        reporter.setTitle(String.format("Lint Report for %1$s", relative));
        reporter.setStripPrefix(relative);
        reporter.write(projectErrorCount, projectWarningCount, issues);

        projects.add(new ProjectEntry(fileName, projectErrorCount, projectWarningCount, relative));
    }

    Closer closer = Closer.create();
    // Write overview index?
    try {
        closer.register(mWriter);
        writeOverview(errorCount, warningCount, projects);
    } catch (Throwable e) {
        throw closer.rethrow(e);
    } finally {
        closer.close();
    }

    if (!mClient.getFlags().isQuiet() && (mDisplayEmpty || errorCount > 0 || warningCount > 0)) {
        File index = new File(mDir, INDEX_NAME);
        String url = SdkUtils.fileToUrlString(index.getAbsoluteFile());
        System.out.println(String.format("Wrote overview index to %1$s", url));
    }
}

From source file:com.adobe.epubcheck.opf.OPFPeeker.java

public OPFData peek() throws InvalidVersionException, IOException {
    Closer closer = Closer.create();
    try {//from ww  w.  j a  va  2  s .c o  m
        InputStream in = resourceProvider.getInputStream(path);
        if (in == null)
            throw new IOException("Couldn't find resource " + path);
        in = closer.register(resourceProvider.getInputStream(path));
        return peek(in);
    } catch (Throwable e) {
        throw closer.rethrow(e, InvalidVersionException.class);
    } finally {
        closer.close();
    }
}

From source file:org.apache.jackrabbit.oak.upgrade.cli.node.SegmentFactory.java

@Override
public NodeStore create(BlobStore blobStore, Closer closer) throws IOException {
    Builder builder = FileStore.builder(new File(dir, "segmentstore"));
    if (blobStore != null) {
        builder.withBlobStore(blobStore);
    }/* w w w .  ja  v  a 2s .  c o  m*/
    builder.withMaxFileSize(256).withMemoryMapping(mmap);
    final FileStore fs = builder.build();
    closer.register(asCloseable(fs));
    return new TarNodeStore(SegmentNodeStore.builder(fs).build(), new TarNodeStore.SuperRootProvider() {
        @Override
        public void setSuperRoot(NodeBuilder builder) {
            checkArgument(builder instanceof SegmentNodeBuilder);
            SegmentNodeBuilder segmentBuilder = (SegmentNodeBuilder) builder;
            SegmentNodeState lastRoot = (SegmentNodeState) getSuperRoot();

            if (!lastRoot.getRecordId()
                    .equals(((SegmentNodeState) segmentBuilder.getBaseState()).getRecordId())) {
                throw new IllegalArgumentException("The new head is out of date");
            }

            fs.setHead(lastRoot, ((SegmentNodeBuilder) builder).getNodeState());
        }

        @Override
        public NodeState getSuperRoot() {
            return fs.getHead();
        }
    });
}

From source file:org.apache.jackrabbit.oak.upgrade.cli.blob.S3DataStoreFactory.java

@Override
public BlobStore create(Closer closer) throws IOException {
    S3DataStore delegate = new S3DataStore();
    delegate.setProperties(props);/*  w w w  .  j a v a2s  .com*/
    delegate.setPath(directory);
    try {
        delegate.init(tempHomeDir.getPath());
    } catch (RepositoryException e) {
        throw new IOException(e);
    }
    closer.register(asCloseable(delegate, tempHomeDir));
    return new DataStoreBlobStore(delegate);
}

From source file:org.apache.jackrabbit.oak.upgrade.cli.node.SegmentTarFactory.java

@Override
public NodeStore create(BlobStore blobStore, Closer closer) throws IOException {
    final FileStoreBuilder builder = fileStoreBuilder(new File(dir, "segmentstore"));
    if (blobStore != null) {
        builder.withBlobStore(blobStore);
    }/*from w  w  w.  jav a  2s  .  c  om*/
    builder.withMaxFileSize(256).withMemoryMapping(mmap);
    final FileStore fs = builder.build();
    closer.register(asCloseable(fs));

    return new TarNodeStore(SegmentNodeStoreBuilders.builder(fs).build(), new TarNodeStore.SuperRootProvider() {
        @Override
        public void setSuperRoot(NodeBuilder builder) {
            checkArgument(builder instanceof SegmentNodeBuilder);
            SegmentNodeBuilder segmentBuilder = (SegmentNodeBuilder) builder;
            SegmentNodeState lastRoot = (SegmentNodeState) getSuperRoot();

            if (!lastRoot.getRecordId()
                    .equals(((SegmentNodeState) segmentBuilder.getBaseState()).getRecordId())) {
                throw new IllegalArgumentException("The new head is out of date");
            }

            fs.getRevisions().setHead(lastRoot.getRecordId(), segmentBuilder.getNodeState().getRecordId());
        }

        @Override
        public NodeState getSuperRoot() {
            return fs.getHead();
        }
    });
}

From source file:org.apache.jackrabbit.oak.upgrade.cli.node.MongoFactory.java

@Override
public NodeStore create(BlobStore blobStore, Closer closer) throws UnknownHostException {
    String db;//from  w  w w. j  av  a 2s  .  c o  m
    if (uri.getDatabase() == null) {
        db = "aem-author"; // assume an author instance
    } else {
        db = uri.getDatabase();
    }
    DocumentMK.Builder builder = getBuilder(cacheSize);
    MongoClient client = new MongoClient(uri);
    closer.register(asCloseable(client));
    builder.setMongoDB(client.getDB(db));
    if (blobStore != null) {
        builder.setBlobStore(blobStore);
    }
    DocumentNodeStore documentNodeStore = builder.getNodeStore();
    closer.register(asCloseable(documentNodeStore));
    return documentNodeStore;
}

From source file:org.apache.gobblin.compaction.hive.SerialCompactor.java

@Override
public void compact() throws IOException {

    checkSchemaCompatibility();/*from   w  w w.  j a v  a 2 s.  co m*/

    Closer closer = Closer.create();

    try {
        this.conn = closer.register(HiveJdbcConnector.newConnectorWithProps(CompactionRunner.properties));

        setHiveParameters();
        createTables();
        HiveTable mergedDelta = mergeDeltas();
        HiveManagedTable notUpdated = getNotUpdatedRecords(this.snapshot, mergedDelta);
        unionNotUpdatedRecordsAndDeltas(notUpdated, mergedDelta);
    } catch (SQLException e) {
        LOG.error("SQLException during compaction: " + e.getMessage());
        throw new RuntimeException(e);
    } catch (IOException e) {
        LOG.error("IOException during compaction: " + e.getMessage());
        throw new RuntimeException(e);
    } catch (RuntimeException e) {
        LOG.error("Runtime Exception during compaction: " + e.getMessage());
        throw e;
    } finally {
        try {
            deleteTmpFiles();
        } finally {
            closer.close();
        }
    }
}

From source file:org.basepom.mojo.propertyhelper.ValueCache.java

@VisibleForTesting
Optional<Map<String, String>> getValues(final AbstractDefinition<?> definition) throws IOException {
    final Optional<File> definitionFile = definition.getPropertyFile();

    // Ephemeral, so return null.
    if (!definitionFile.isPresent()) {
        return Optional.absent();
    }//from w  w  w  .  ja v a 2s.  co m

    ValueCacheEntry cacheEntry;
    final File canonicalFile = definitionFile.get().getCanonicalFile();

    // Throws an exception if the file must exist and does not.
    final boolean createFile = IgnoreWarnFailCreate.checkState(definition.getOnMissingFile(),
            canonicalFile.exists(), definitionFile.get().getCanonicalPath());

    cacheEntry = valueFiles.get(canonicalFile);

    if (cacheEntry != null) {
        // If there is a cache hit, something either has loaded the file
        // or another property has already put in a creation order.
        // Make sure that if this number has a creation order it is obeyed.
        if (createFile) {
            cacheEntry.doCreate();
        }
    } else {
        // Try loading or creating properties.
        final Properties props = new Properties();

        if (!canonicalFile.exists()) {
            cacheEntry = new ValueCacheEntry(props, false, createFile); // does not exist
            valueFiles.put(canonicalFile, cacheEntry);
        } else {
            if (canonicalFile.isFile() && canonicalFile.canRead()) {
                final Closer closer = Closer.create();
                try {
                    final InputStream stream = closer.register(new FileInputStream(canonicalFile));
                    props.load(stream);
                    cacheEntry = new ValueCacheEntry(props, true, createFile);
                    valueFiles.put(canonicalFile, cacheEntry);
                } finally {
                    closer.close();
                }
            } else {
                throw new IllegalStateException(
                        format("Can not load %s, not a file!", definitionFile.get().getCanonicalPath()));
            }
        }
    }

    return Optional.of(cacheEntry.getValues());
}

From source file:org.basepom.mojo.duplicatefinder.classpath.ClasspathDescriptor.java

private void addArchive(final ClasspathCacheElement.Builder cacheBuilder, final File element)
        throws IOException {
    final Closer closer = Closer.create();

    try {//from   w w  w . j  a  v  a  2  s. c  om
        final InputStream input = closer.register(element.toURI().toURL().openStream());
        final ZipInputStream zipInput = closer.register(new ZipInputStream(input));

        ZipEntry entry;

        while ((entry = zipInput.getNextEntry()) != null) {
            if (!entry.isDirectory()) {
                final String name = entry.getName();
                if ("class".equals(Files.getFileExtension(name))) {
                    final List<String> nameElements = Splitter.on("/").splitToList(name); // ZIP/Jars always use "/" as separators
                    if (nameElements.isEmpty()) {
                        LOG.warn("ZIP entry '%s' split into empty list!", entry);
                    } else {
                        final PackageNameHolder packageName = new PackageNameHolder(
                                nameElements.subList(0, nameElements.size() - 1));
                        final String className = packageName
                                .getQualifiedName(Files.getNameWithoutExtension(name));
                        cacheBuilder.addClass(className);
                    }
                } else {
                    final String resourcePath = name.replace('\\', File.separatorChar);
                    cacheBuilder.addResource(resourcePath);
                }
            }
        }
    } finally {
        closer.close();
    }
}