116aada19c3e45891d8f8c75a529e96f5f6cd825echrismair/*
216aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * Copyright 2008 the original author or authors.
316aada19c3e45891d8f8c75a529e96f5f6cd825echrismair *
416aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * Licensed under the Apache License, Version 2.0 (the "License");
516aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * you may not use this file except in compliance with the License.
616aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * You may obtain a copy of the License at
716aada19c3e45891d8f8c75a529e96f5f6cd825echrismair *
816aada19c3e45891d8f8c75a529e96f5f6cd825echrismair *      http://www.apache.org/licenses/LICENSE-2.0
916aada19c3e45891d8f8c75a529e96f5f6cd825echrismair *
1016aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * Unless required by applicable law or agreed to in writing, software
1116aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * distributed under the License is distributed on an "AS IS" BASIS,
1216aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1316aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * See the License for the specific language governing permissions and
1416aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * limitations under the License.
1516aada19c3e45891d8f8c75a529e96f5f6cd825echrismair */
1616aada19c3e45891d8f8c75a529e96f5f6cd825echrismairpackage org.mockftpserver.fake.filesystem
1716aada19c3e45891d8f8c75a529e96f5f6cd825echrismair
1816aada19c3e45891d8f8c75a529e96f5f6cd825echrismair/**
1916aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * Test-only subclass of UnixFakeFileSystem. Groovy implementation enables access to metaclass.
2016aada19c3e45891d8f8c75a529e96f5f6cd825echrismair *
212a0a3f946dba517a01cc26278f905156857c9c91chrismair * @version $Revision$ - $Date$
2216aada19c3e45891d8f8c75a529e96f5f6cd825echrismair *
2316aada19c3e45891d8f8c75a529e96f5f6cd825echrismair * @author Chris Mair
2416aada19c3e45891d8f8c75a529e96f5f6cd825echrismair */
2516aada19c3e45891d8f8c75a529e96f5f6cd825echrismairclass TestUnixFakeFileSystem extends UnixFakeFileSystem {
2616aada19c3e45891d8f8c75a529e96f5f6cd825echrismair
27b0a7b98e6ec500c6e292d8e5aea47d339e656f72chrismair    Throwable addMethodException
28f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    Throwable renameMethodException
29f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    Throwable listNamesMethodException
30ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair    Throwable listFilesMethodException
31f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    Throwable deleteMethodException
32b0a7b98e6ec500c6e292d8e5aea47d339e656f72chrismair
33b0a7b98e6ec500c6e292d8e5aea47d339e656f72chrismair    void add(FileSystemEntry entry) {
34b0a7b98e6ec500c6e292d8e5aea47d339e656f72chrismair        if (addMethodException) {
35b0a7b98e6ec500c6e292d8e5aea47d339e656f72chrismair            throw addMethodException
36b0a7b98e6ec500c6e292d8e5aea47d339e656f72chrismair        }
37b0a7b98e6ec500c6e292d8e5aea47d339e656f72chrismair        super.add(entry)
38b0a7b98e6ec500c6e292d8e5aea47d339e656f72chrismair    }
39f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair
40f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    void rename(String fromPath, String toPath) {
41f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        if (renameMethodException) {
42f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair            throw renameMethodException
43f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        }
44f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        super.rename(fromPath, toPath)
45f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    }
46f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair
47f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    List listNames(String path) {
48f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        if (listNamesMethodException) {
49f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair            throw listNamesMethodException
50f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        }
51f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        super.listNames(path)
52f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    }
53f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair
54ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair    List listFiles(String path) {
55ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair        if (listFilesMethodException) {
56ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair            throw listFilesMethodException
57ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair        }
58ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair        super.listFiles(path)
59ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair    }
60ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair
61f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    boolean delete(String path) {
62f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        if (deleteMethodException) {
63f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair            throw deleteMethodException
64f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        }
65f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair        super.delete(path)
66f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair    }
67f11ac5bf4a82c9be1ccd4933dedf730df3276e01chrismair
6816aada19c3e45891d8f8c75a529e96f5f6cd825echrismair}