@Override public @CheckForNull FsNode node( BitField<FsAccessOption> options, FsNodeName name) throws IOException { return controller.node(options, name); }
@Override public void checkAccess( BitField<FsAccessOption> options, FsNodeName name, BitField<Access> types) throws IOException { controller.checkAccess(options, name, types); }
protected FsDecoratingController(final FsController controller) { super(controller.getModel()); this.controller = controller; }
SeekableByteChannel newByteChannel( final TPath path, final Set<? extends OpenOption> options, final FileAttribute<?>... attrs) throws IOException { final FsNodeName name = path.getNodeName(); final FsController controller = getController(); if (options.isEmpty() || options.contains(StandardOpenOption.READ)) { final BitField<FsAccessOption> o = path.inputOptions(options).set(CACHE); return controller .input(o, name) .channel(null); } else { final BitField<FsAccessOption> o = path.outputOptions(options).set(CACHE); try { return controller .output(o, name, null) .channel(null); } catch (final IOException ex) { // TODO: Filter FileAlreadyExistsException. if (o.get(EXCLUSIVE) && null != controller.node(o, name)) throw (IOException) new FileAlreadyExistsException(path.toString()) .initCause(ex); throw ex; } } }
void createDirectory(final TPath path, final FileAttribute<?>... attrs) throws IOException { if (0 < attrs.length) throw new UnsupportedOperationException(); final FsController controller = getController(); final FsNodeName name = path.getNodeName(); final BitField<FsAccessOption> options = path.getAccessPreferences(); try { controller.make( options, name, DIRECTORY, null); } catch (IOException ex) { if (null != controller.node(options, name)) throw (IOException) new FileAlreadyExistsException(path.toString()) .initCause(ex); throw ex; } }
@Override public OutputSocket<? extends Entry> output( BitField<FsAccessOption> options, FsNodeName name, @CheckForNull Entry template) { return controller.output(options, name, template); }
@Override public void unlink( BitField<FsAccessOption> options, FsNodeName name) throws IOException { controller.unlink(options, name); }
@Override public InputSocket<? extends Entry> input( BitField<FsAccessOption> options, FsNodeName name) { return controller.input(options, name); }
@Override public boolean setTime( BitField<FsAccessOption> options, FsNodeName name, BitField<Access> types, long value) throws IOException { return controller.setTime(options, name, types, value); }
@Override public void make( BitField<FsAccessOption> options, FsNodeName name, Type type, @CheckForNull Entry template) throws IOException { controller.make(options, name, type, template); }
@Override public void setReadOnly(BitField<FsAccessOption> options, FsNodeName name) throws IOException { controller.setReadOnly(options, name); }
@Override public final OutputSocket<? extends Entry> output(BitField<FsAccessOption> options, FsNodeName name, Entry template) { return controller.output(map(options), name, template); }
@Override public final void unlink(BitField<FsAccessOption> options, FsNodeName name) throws IOException { controller.unlink(map(options), name); } }
@Override public final InputSocket<? extends Entry> input(BitField<FsAccessOption> options, FsNodeName name) { return controller.input(map(options), name); }
@Override public final boolean setTime(BitField<FsAccessOption> options, FsNodeName name, Map<Access, Long> times) throws IOException { return controller.setTime(map(options), name, times); }
@Override public final void make(BitField<FsAccessOption> options, FsNodeName name, Type type, Entry template) throws IOException { controller.make(map(options), name, type, template); }
@Override public final void setReadOnly(BitField<FsAccessOption> options, FsNodeName name) throws IOException { controller.setReadOnly(map(options), name); }
@Override public FsController getParent() { return controller.getParent(); }