100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair/*
200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Copyright 2008 the original author or authors.
300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Licensed under the Apache License, Version 2.0 (the "License");
500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * you may not use this file except in compliance with the License.
600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * You may obtain a copy of the License at
700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *      http://www.apache.org/licenses/LICENSE-2.0
900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
1000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Unless required by applicable law or agreed to in writing, software
1100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * distributed under the License is distributed on an "AS IS" BASIS,
1200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * See the License for the specific language governing permissions and
1400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * limitations under the License.
1500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */
1600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairpackage org.mockftpserver.fake.filesystem
1700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
1800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair/**
1900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Test-only subclass of UnixFakeFileSystem. Groovy implementation enables access to metaclass.
2000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
2100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @version $Revision$ - $Date$
2200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
2300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @author Chris Mair
2400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */
2500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairclass TestUnixFakeFileSystem extends UnixFakeFileSystem {
2600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
2700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    Throwable addMethodException
2800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    Throwable renameMethodException
2900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    Throwable listNamesMethodException
3000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    Throwable listFilesMethodException
3100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    Throwable deleteMethodException
3200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
3300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    void add(FileSystemEntry entry) {
3400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        if (addMethodException) {
3500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair            throw addMethodException
3600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        }
3700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        super.add(entry)
3800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
3900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
4000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    void rename(String fromPath, String toPath) {
4100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        if (renameMethodException) {
4200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair            throw renameMethodException
4300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        }
4400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        super.rename(fromPath, toPath)
4500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
4600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
4700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    List listNames(String path) {
4800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        if (listNamesMethodException) {
4900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair            throw listNamesMethodException
5000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        }
5100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        super.listNames(path)
5200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
5300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
5400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    List listFiles(String path) {
5500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        if (listFilesMethodException) {
5600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair            throw listFilesMethodException
5700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        }
5800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        super.listFiles(path)
5900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
6000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
6100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    boolean delete(String path) {
6200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        if (deleteMethodException) {
6300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair            throw deleteMethodException
6400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        }
6500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        super.delete(path)
6600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
6700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
6800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair}