package org.rascalmpl.uri; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.Charset; import org.rascalmpl.value.ISourceLocation; public abstract class AbstractSourceLocationInputOutputAdapter implements ISourceLocationInputOutput { private final ISourceLocationInput input; private final ISourceLocationOutput output; protected AbstractSourceLocationInputOutputAdapter(ISourceLocationInput input) { this.input = input; this.output = input instanceof ISourceLocationOutput ? (ISourceLocationOutput) input : null; } @Override public InputStream getInputStream(ISourceLocation uri) throws IOException { return input.getInputStream(uri); } @Override public Charset getCharset(ISourceLocation uri) throws IOException { return input.getCharset(uri); } @Override public boolean exists(ISourceLocation uri) { return input.exists(uri); } @Override public long lastModified(ISourceLocation uri) throws IOException { return input.lastModified(uri); } @Override public boolean isDirectory(ISourceLocation uri) { return input.isDirectory(uri); } @Override public boolean isFile(ISourceLocation uri) { return input.isFile(uri); } @Override public String[] list(ISourceLocation uri) throws IOException { return input.list(uri); } @Override public String scheme() { return input.scheme(); } @Override public boolean supportsHost() { return input.supportsHost(); } @Override public OutputStream getOutputStream(ISourceLocation uri, boolean append) throws IOException { if (output != null) { return output.getOutputStream(uri, append); } throw new UnsupportedOperationException(); } @Override public void mkDirectory(ISourceLocation uri) throws IOException { if (output != null) { output.mkDirectory(uri); } throw new UnsupportedOperationException(); } @Override public void remove(ISourceLocation uri) throws IOException { if (output != null) { output.remove(uri); } throw new UnsupportedOperationException(); } }