List of usage examples for com.google.common.io Closer register
public <C extends Closeable> C register(@Nullable C closeable)
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(); } }