// Path: src/main/java/org/grapheco/elfinder/service/FsItem.java
// public interface FsItem
// {
// 	FsVolume getVolume();
// }
// 
// Path: src/main/java/org/grapheco/elfinder/service/FsSecurityChecker.java
// public interface FsSecurityChecker
// {
// 
// 	boolean isLocked(FsService fsService, FsItem fsi) throws IOException;
// 
// 	boolean isReadable(FsService fsService, FsItem fsi) throws IOException;
// 
// 	boolean isWritable(FsService fsService, FsItem fsi) throws IOException;
// 
// }
// 
// Path: src/main/java/org/grapheco/elfinder/service/FsService.java
// public interface FsService
// {
// 	FsItem fromHash(String hash) throws IOException;
// 
// 	String getHash(FsItem item) throws IOException;
// 
// 	FsSecurityChecker getSecurityChecker();
// 
// 	String getVolumeId(FsVolume volume);
// 
// 	FsVolume[] getVolumes();
// 
// 	FsServiceConfig getServiceConfig();
// 
// 	/**
// 	 * find files by name pattern, this provides a simple recursively iteration
// 	 * based method lucene engines can be introduced to improve it! This
// 	 * searches across all volumes.
// 	 *
// 	 * @param filter
// 	 *            The filter to apply to select files.
// 	 * @return A collection of files that match the filter and gave the root as
// 	 *         a parent.
// 	 */
// 	// TODO: bad designs: FsItemEx should not used here top level interfaces
// 	// should only know FsItem instead of FsItemEx
// 	FsItemEx[] find(FsItemFilter filter);
// }


import java.io.IOException;
import java.util.List;
import org.grapheco.elfinder.service.FsItem;
import org.grapheco.elfinder.service.FsSecurityChecker;
import org.grapheco.elfinder.service.FsService;
			{
				return mapping.getChecker();
			}
		}

		return DEFAULT_SECURITY_CHECKER;
	}

	public List<FsSecurityCheckFilterMapping> getFilterMappings()
	{
		return _filterMappings;
	}

	@Override
	public boolean isLocked(FsService fsService, FsItem fsi) throws IOException
	{
		return getChecker(fsService, fsi).isLocked(fsService, fsi);
	}

	@Override
	public boolean isReadable(FsService fsService, FsItem fsi)
			throws IOException
	{
		return getChecker(fsService, fsi).isReadable(fsService, fsi);
	}

	@Override
	public boolean isWritable(FsService fsService, FsItem fsi)
			throws IOException
	{
// Path: src/main/java/org/grapheco/elfinder/service/FsItem.java
// public interface FsItem
// {
// 	FsVolume getVolume();
// }
// 
// Path: src/main/java/org/grapheco/elfinder/service/FsSecurityChecker.java
// public interface FsSecurityChecker
// {
// 
// 	boolean isLocked(FsService fsService, FsItem fsi) throws IOException;
// 
// 	boolean isReadable(FsService fsService, FsItem fsi) throws IOException;
// 
// 	boolean isWritable(FsService fsService, FsItem fsi) throws IOException;
// 
// }
// 
// Path: src/main/java/org/grapheco/elfinder/service/FsService.java
// public interface FsService
// {
// 	FsItem fromHash(String hash) throws IOException;
// 
// 	String getHash(FsItem item) throws IOException;
// 
// 	FsSecurityChecker getSecurityChecker();
// 
// 	String getVolumeId(FsVolume volume);
// 
// 	FsVolume[] getVolumes();
// 
// 	FsServiceConfig getServiceConfig();
// 
// 	/**
// 	 * find files by name pattern, this provides a simple recursively iteration
// 	 * based method lucene engines can be introduced to improve it! This
// 	 * searches across all volumes.
// 	 *
// 	 * @param filter
// 	 *            The filter to apply to select files.
// 	 * @return A collection of files that match the filter and gave the root as
// 	 *         a parent.
// 	 */
// 	// TODO: bad designs: FsItemEx should not used here top level interfaces
// 	// should only know FsItem instead of FsItemEx
// 	FsItemEx[] find(FsItemFilter filter);
// }


// Path: src/main/java/org/grapheco/elfinder/impl/FsSecurityCheckerChain.java
import java.io.IOException;
import java.util.List;
import org.grapheco.elfinder.service.FsItem;
import org.grapheco.elfinder.service.FsSecurityChecker;
import org.grapheco.elfinder.service.FsService;

			{
				return mapping.getChecker();
			}
		}

		return DEFAULT_SECURITY_CHECKER;
	}

	public List<FsSecurityCheckFilterMapping> getFilterMappings()
	{
		return _filterMappings;
	}

	@Override
	public boolean isLocked(FsService fsService, FsItem fsi) throws IOException
	{
		return getChecker(fsService, fsi).isLocked(fsService, fsi);
	}

	@Override
	public boolean isReadable(FsService fsService, FsItem fsi)
			throws IOException
	{
		return getChecker(fsService, fsi).isReadable(fsService, fsi);
	}

	@Override
	public boolean isWritable(FsService fsService, FsItem fsi)
			throws IOException
	{
		return getChecker(fsService, fsi).isWritable(fsService, fsi);