/*
* 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.impl;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.uberfire.io.IOService;
import org.uberfire.io.IOWatchService;
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.FileAlreadyExistsException;
import org.uberfire.java.nio.file.Files;
import org.uberfire.java.nio.file.NoSuchFileException;
import org.uberfire.java.nio.file.OpenOption;
import org.uberfire.java.nio.file.Path;
import org.uberfire.java.nio.file.attribute.FileAttribute;
import org.uberfire.java.nio.file.attribute.FileAttributeView;
public class IOServiceNio2WrapperImpl
extends AbstractIOService
implements IOService {
public IOServiceNio2WrapperImpl() {
super();
}
public IOServiceNio2WrapperImpl(final String id) {
super(id);
}
public IOServiceNio2WrapperImpl(final IOWatchService watchService) {
super(watchService);
}
public IOServiceNio2WrapperImpl(final String id,
final IOWatchService watchService) {
super(id,
watchService);
}
@Override
public void delete(final Path path,
final DeleteOption... options)
throws IllegalArgumentException, NoSuchFileException, DirectoryNotEmptyException,
IOException, SecurityException {
Files.delete(path,
options);
}
@Override
public boolean deleteIfExists(final Path path,
final DeleteOption... options)
throws IllegalArgumentException, DirectoryNotEmptyException, IOException, SecurityException {
return Files.deleteIfExists(path,
options);
}
@Override
public SeekableByteChannel newByteChannel(final Path path,
final Set<? extends OpenOption> options,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException, FileAlreadyExistsException, IOException, SecurityException {
return Files.newByteChannel(path,
options,
attrs);
}
@Override
public Path createDirectory(final Path dir,
final FileAttribute<?>... attrs)
throws IllegalArgumentException, UnsupportedOperationException, FileAlreadyExistsException,
IOException, SecurityException {
return Files.createDirectory(dir,
attrs);
}
@Override
public Path createDirectories(final Path dir,
final FileAttribute<?>... attrs)
throws UnsupportedOperationException, FileAlreadyExistsException,
IOException, SecurityException {
return Files.createDirectories(dir,
attrs);
}
@Override
public Path copy(final Path source,
final Path target,
final CopyOption... options)
throws UnsupportedOperationException, FileAlreadyExistsException,
DirectoryNotEmptyException, IOException, SecurityException {
return Files.copy(source,
target,
options);
}
@Override
public Path move(final Path source,
final Path target,
final CopyOption... options)
throws UnsupportedOperationException, FileAlreadyExistsException,
DirectoryNotEmptyException, AtomicMoveNotSupportedException, IOException, SecurityException {
return Files.move(source,
target,
options);
}
@Override
public <V extends FileAttributeView> V getFileAttributeView(final Path path,
final Class<V> type)
throws IllegalArgumentException {
return Files.getFileAttributeView(path,
type);
}
@Override
public Map<String, Object> readAttributes(final Path path,
final String attributes)
throws UnsupportedOperationException, NoSuchFileException, IllegalArgumentException,
IOException, SecurityException {
return Files.readAttributes(path,
attributes);
}
@Override
public Path setAttributes(final Path path,
final FileAttribute<?>... attrs)
throws UnsupportedOperationException, IllegalArgumentException, ClassCastException,
IOException, SecurityException {
Path out = null;
for (final FileAttribute<?> attr : attrs) {
out = Files.setAttribute(path,
attr.name(),
attr.value());
}
return out;
}
@Override
public Object getAttribute(final Path path,
final String attribute)
throws UnsupportedOperationException, IllegalArgumentException, IOException, SecurityException {
return Files.getAttribute(path,
attribute);
}
@Override
protected Set<? extends OpenOption> buildOptions(final Set<? extends OpenOption> options,
final OpenOption... others) {
return new HashSet<OpenOption>(options) {{
if (others != null) {
for (final OpenOption other : others) {
add(other);
}
}
}};
}
@Override
public int priority() {
return 10;
}
}