/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.uberfire.io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.uberfire.commons.lifecycle.PriorityDisposable;
import org.uberfire.java.nio.IOException;
import org.uberfire.java.nio.channels.SeekableByteChannel;
import org.uberfire.java.nio.file.AtomicMoveNotSupportedException;
import org.uberfire.java.nio.file.CopyOption;
import org.uberfire.java.nio.file.DeleteOption;
import org.uberfire.java.nio.file.DirectoryNotEmptyException;
import org.uberfire.java.nio.file.DirectoryStream;
import org.uberfire.java.nio.file.FileAlreadyExistsException;
import org.uberfire.java.nio.file.FileSystem;
import org.uberfire.java.nio.file.FileSystemAlreadyExistsException;
import org.uberfire.java.nio.file.FileSystemNotFoundException;
import org.uberfire.java.nio.file.NoSuchFileException;
import org.uberfire.java.nio.file.NotDirectoryException;
import org.uberfire.java.nio.file.OpenOption;
import org.uberfire.java.nio.file.Option;
import org.uberfire.java.nio.file.Path;
import org.uberfire.java.nio.file.ProviderNotFoundException;
import org.uberfire.java.nio.file.attribute.FileAttribute;
import org.uberfire.java.nio.file.attribute.FileAttributeView;
import org.uberfire.java.nio.file.attribute.FileTime;
/**
*
*/
public interface IOService extends PriorityDisposable {
public static Set<OpenOption> EMPTY_OPTIONS = new HashSet<OpenOption>();
void startBatch(final FileSystem fs);
void startBatch(final FileSystem[] fs,
final Option... options);
void startBatch(final FileSystem fs,
final Option... options);
void startBatch(final FileSystem... fs);
void endBatch();
FileAttribute<?>[] convert(final Map<String, ?> attrs);
Path get(final String first,
final String... more)
throws IllegalArgumentException;
Path get(final URI uri)
throws IllegalArgumentException, FileSystemNotFoundException, SecurityException;
Iterable<FileSystem> getFileSystems();
FileSystem getFileSystem(final URI uri)
throws IllegalArgumentException, FileSystemNotFoundException,
ProviderNotFoundException, SecurityException;
FileSystem newFileSystem(final URI uri,
final Map<String, ?> env)
throws IllegalArgumentException, FileSystemAlreadyExistsException,
ProviderNotFoundException, IOException, SecurityException;
void onNewFileSystem(final NewFileSystemListener listener);
InputStream newInputStream(final Path path,
final OpenOption... options)
throws IllegalArgumentException, NoSuchFileException,
UnsupportedOperationException, IOException, SecurityException;
OutputStream newOutputStream(final Path path,
final OpenOption... options)
throws IllegalArgumentException, UnsupportedOperationException,
IOException, SecurityException;
SeekableByteChannel newByteChannel(final Path path,
final OpenOption... options)
throws IllegalArgumentException, UnsupportedOperationException, FileAlreadyExistsException,
IOException, SecurityException;
SeekableByteChannel newByteChannel(final Path path,
final Set<? extends OpenOption> options,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException, FileAlreadyExistsException,
IOException, SecurityException;
DirectoryStream<Path> newDirectoryStream(final Path dir)
throws IllegalArgumentException, NotDirectoryException, IOException, SecurityException;
DirectoryStream<Path> newDirectoryStream(final Path dir,
final DirectoryStream.Filter<Path> filter)
throws IllegalArgumentException, NotDirectoryException, IOException, SecurityException;
Path createFile(final Path path,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException,
FileAlreadyExistsException, IOException, SecurityException;
Path createDirectory(final Path dir,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException,
FileAlreadyExistsException, IOException, SecurityException;
Path createDirectories(final Path dir,
final FileAttribute<?>... attrs)
throws UnsupportedOperationException, FileAlreadyExistsException,
IOException, SecurityException;
Path createDirectory(final Path dir,
final Map<String, ?> attrs)
throws IllegalArgumentException, UnsupportedOperationException,
FileAlreadyExistsException, IOException, SecurityException;
Path createDirectories(final Path dir,
final Map<String, ?> attrs)
throws UnsupportedOperationException, FileAlreadyExistsException,
IOException, SecurityException;
void delete(final Path path,
final DeleteOption... options)
throws IllegalArgumentException, NoSuchFileException,
DirectoryNotEmptyException, IOException, SecurityException;
boolean deleteIfExists(final Path path,
final DeleteOption... options)
throws IllegalArgumentException, DirectoryNotEmptyException,
IOException, SecurityException;
Path createTempFile(final String prefix,
final String suffix,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException,
IOException, SecurityException;
Path createTempFile(final Path dir,
final String prefix,
final String suffix,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException,
IOException, SecurityException;
Path createTempDirectory(final String prefix,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException,
IOException, SecurityException;
Path createTempDirectory(final Path dir,
final String prefix,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException,
IOException, SecurityException;
Path copy(final Path source,
final Path target,
final CopyOption... options)
throws UnsupportedOperationException, FileAlreadyExistsException,
DirectoryNotEmptyException, IOException, SecurityException;
Path move(final Path source,
final Path target,
final CopyOption... options)
throws UnsupportedOperationException, FileAlreadyExistsException,
DirectoryNotEmptyException, AtomicMoveNotSupportedException,
IOException, SecurityException;
<V extends FileAttributeView> V getFileAttributeView(final Path path,
final Class<V> type)
throws IllegalArgumentException;
Map<String, Object> readAttributes(final Path path)
throws UnsupportedOperationException, NoSuchFileException,
IllegalArgumentException, IOException, SecurityException;
Map<String, Object> readAttributes(final Path path,
final String attributes)
throws UnsupportedOperationException, NoSuchFileException,
IllegalArgumentException, IOException, SecurityException;
Path setAttributes(final Path path,
final FileAttribute<?>... attrs)
throws UnsupportedOperationException, IllegalArgumentException,
ClassCastException, IOException, SecurityException;
Path setAttributes(final Path path,
final Map<String, Object> attrs)
throws UnsupportedOperationException, IllegalArgumentException,
ClassCastException, IOException, SecurityException;
Path setAttribute(final Path path,
final String attribute,
final Object value)
throws UnsupportedOperationException, IllegalArgumentException,
ClassCastException, IOException, SecurityException;
Object getAttribute(final Path path,
final String attribute)
throws UnsupportedOperationException, IllegalArgumentException,
IOException, SecurityException;
FileTime getLastModifiedTime(final Path path)
throws IllegalArgumentException, IOException, SecurityException;
long size(final Path path)
throws IllegalArgumentException, IOException, SecurityException;
boolean exists(final Path path)
throws IllegalArgumentException, SecurityException;
boolean notExists(final Path path)
throws IllegalArgumentException, SecurityException;
boolean isSameFile(final Path path,
final Path path2)
throws IllegalArgumentException, IOException, SecurityException;
BufferedReader newBufferedReader(final Path path,
final Charset cs)
throws IllegalArgumentException, NoSuchFileException, IOException, SecurityException;
BufferedWriter newBufferedWriter(final Path path,
final Charset cs,
final OpenOption... options)
throws IllegalArgumentException, IOException, UnsupportedOperationException, SecurityException;
long copy(final InputStream in,
final Path target,
final CopyOption... options)
throws IOException, FileAlreadyExistsException, DirectoryNotEmptyException,
UnsupportedOperationException, SecurityException;
long copy(final Path source,
final OutputStream out)
throws IOException, SecurityException;
byte[] readAllBytes(final Path path)
throws IOException, OutOfMemoryError, SecurityException;
List<String> readAllLines(final Path path)
throws IllegalArgumentException, NoSuchFileException, IOException, SecurityException;
List<String> readAllLines(final Path path,
final Charset cs)
throws IllegalArgumentException, NoSuchFileException, IOException, SecurityException;
String readAllString(final Path path,
final Charset cs)
throws IllegalArgumentException, NoSuchFileException, IOException;
String readAllString(final Path path)
throws IllegalArgumentException, NoSuchFileException, IOException;
Path write(final Path path,
final byte[] bytes,
final OpenOption... options)
throws IOException, UnsupportedOperationException, SecurityException;
Path write(final Path path,
final byte[] bytes,
final Map<String, ?> attrs,
final OpenOption... options)
throws IOException, UnsupportedOperationException, SecurityException;
Path write(final Path path,
final byte[] bytes,
final Set<? extends OpenOption> options,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, IOException, UnsupportedOperationException;
Path write(final Path path,
final Iterable<? extends CharSequence> lines,
final Charset cs,
final OpenOption... options)
throws IllegalArgumentException, IOException, UnsupportedOperationException, SecurityException;
Path write(final Path path,
final String content,
final OpenOption... options)
throws IllegalArgumentException, IOException, UnsupportedOperationException;
Path write(final Path path,
final String content,
final Charset cs,
final OpenOption... options)
throws IllegalArgumentException, IOException, UnsupportedOperationException;
Path write(final Path path,
final String content,
final Set<? extends OpenOption> options,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, IOException, UnsupportedOperationException;
Path write(final Path path,
final String content,
final Charset cs,
final Set<? extends OpenOption> options,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, IOException, UnsupportedOperationException;
Path write(final Path path,
final String content,
final Map<String, ?> attrs,
final OpenOption... options)
throws IllegalArgumentException, IOException, UnsupportedOperationException;
Path write(final Path path,
final String content,
final Charset cs,
final Map<String, ?> attrs,
final OpenOption... options)
throws IllegalArgumentException, IOException, UnsupportedOperationException;
public abstract static class NewFileSystemListener {
public abstract void execute(final FileSystem newFileSystem,
final String scheme,
final String name,
final Map<String, ?> env);
}
}